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('plugins');
 12 
 13 /**
 14  * Form Field class for FOF
 15  * Plugins installed on the site
 16  *
 17  * @package  FrameworkOnFramework
 18  * @since    2.0
 19  */
 20 class FOFFormFieldPlugins extends JFormFieldPlugins 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         $class = $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
 79 
 80         return '<span id="' . $this->id . '" ' . $class . '>' .
 81             htmlspecialchars(FOFFormFieldList::getOptionName($this->getOptions(), $this->value), ENT_COMPAT, 'UTF-8') .
 82             '</span>';
 83     }
 84 
 85     /**
 86      * Get the rendering of this field type for a repeatable (grid) display,
 87      * e.g. in a view listing many item (typically a "browse" task)
 88      *
 89      * @since 2.0
 90      *
 91      * @return  string  The field HTML
 92      */
 93     public function getRepeatable()
 94     {
 95         $class = $this->element['class'] ? (string) $this->element['class'] : '';
 96 
 97         return '<span class="' . $this->id . ' ' . $class . '">' .
 98             htmlspecialchars(FOFFormFieldList::getOptionName($this->getOptions(), $this->value), ENT_COMPAT, 'UTF-8') .
 99             '</span>';
100     }
101 }
102