1 <?php
  2 /**
  3  * @package    FrameworkOnFramework
  4  * @subpackage form
  5  * @copyright   Copyright (C) 2010-2016 Nicholas K. Dionysopoulos / Akeeba Ltd. All rights reserved.
  6  * @license    GNU General Public License version 2 or later; see LICENSE.txt
  7  */
  8 // Protect from unauthorized access
  9 defined('FOF_INCLUDED') or die;
 10 
 11 JFormHelper::loadFieldClass('media');
 12 
 13 /**
 14  * Form Field class for the FOF framework
 15  * Media selection field.
 16  *
 17  * @package  FrameworkOnFramework
 18  * @since    2.0
 19  */
 20 class FOFFormFieldMedia extends JFormFieldMedia implements FOFFormField
 21 {
 22     protected $static;
 23 
 24     protected $repeatable;
 25 
 26     /** @var   FOFTable  The item being rendered in a repeatable form field */
 27     public $item;
 28 
 29     /** @var int A monotonically increasing number, denoting the row number in a repeatable view */
 30     public $rowid;
 31 
 32     /**
 33      * Method to get certain otherwise inaccessible properties from the form field object.
 34      *
 35      * @param   string  $name  The property name for which to the the value.
 36      *
 37      * @return  mixed  The property value or null.
 38      *
 39      * @since   2.0
 40      */
 41     public function __get($name)
 42     {
 43         switch ($name)
 44         {
 45             case 'static':
 46                 if (empty($this->static))
 47                 {
 48                     $this->static = $this->getStatic();
 49                 }
 50 
 51                 return $this->static;
 52                 break;
 53 
 54             case 'repeatable':
 55                 if (empty($this->repeatable))
 56                 {
 57                     $this->repeatable = $this->getRepeatable();
 58                 }
 59 
 60                 return $this->repeatable;
 61                 break;
 62 
 63             default:
 64                 return parent::__get($name);
 65         }
 66     }
 67 
 68     /**
 69      * Get the rendering of this field type for static display, e.g. in a single
 70      * item view (typically a "read" task).
 71      *
 72      * @since 2.0
 73      *
 74      * @return  string  The field HTML
 75      */
 76     public function getStatic()
 77     {
 78         $imgattr = array(
 79             'id' => $this->id
 80         );
 81 
 82         if ($this->element['class'])
 83         {
 84             $imgattr['class'] = (string) $this->element['class'];
 85         }
 86 
 87         if ($this->element['style'])
 88         {
 89             $imgattr['style'] = (string) $this->element['style'];
 90         }
 91 
 92         if ($this->element['width'])
 93         {
 94             $imgattr['width'] = (string) $this->element['width'];
 95         }
 96 
 97         if ($this->element['height'])
 98         {
 99             $imgattr['height'] = (string) $this->element['height'];
100         }
101 
102         if ($this->element['align'])
103         {
104             $imgattr['align'] = (string) $this->element['align'];
105         }
106 
107         if ($this->element['rel'])
108         {
109             $imgattr['rel'] = (string) $this->element['rel'];
110         }
111 
112         if ($this->element['alt'])
113         {
114             $alt = JText::_((string) $this->element['alt']);
115         }
116         else
117         {
118             $alt = null;
119         }
120 
121         if ($this->element['title'])
122         {
123             $imgattr['title'] = JText::_((string) $this->element['title']);
124         }
125 
126         if ($this->value && file_exists(JPATH_ROOT . '/' . $this->value))
127         {
128             $src = FOFPlatform::getInstance()->URIroot() . $this->value;
129         }
130         else
131         {
132             $src = '';
133         }
134 
135         return JHtml::_('image', $src, $alt, $imgattr);
136     }
137 
138     /**
139      * Get the rendering of this field type for a repeatable (grid) display,
140      * e.g. in a view listing many item (typically a "browse" task)
141      *
142      * @since 2.0
143      *
144      * @return  string  The field HTML
145      */
146     public function getRepeatable()
147     {
148         return $this->getStatic();
149     }
150 }
151