/libraries/fof/form/field/usergroup.php
https://github.com/pjwiseman/joomla-cms · PHP · 143 lines · 73 code · 24 blank · 46 comment · 4 complexity · 2599869befed781fea91e7ba00d9fe03 MD5 · raw file
- <?php
- /**
- * @package FrameworkOnFramework
- * @subpackage form
- * @subpackage form
- * @copyright Copyright (C) 2010 - 2015 Nicholas K. Dionysopoulos / Akeeba Ltd. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
- // Protect from unauthorized access
- defined('_JEXEC') or die;
- JFormHelper::loadFieldClass('usergroup');
- /**
- * Form Field class for FOF
- * Joomla! user groups
- *
- * @package FrameworkOnFramework
- * @since 2.0
- */
- class FOFFormFieldUsergroup extends JFormFieldUsergroup implements FOFFormField
- {
- protected $static;
- protected $repeatable;
- /** @var int A monotonically increasing number, denoting the row number in a repeatable view */
- public $rowid;
- /** @var FOFTable The item being rendered in a repeatable form field */
- public $item;
- /**
- * Method to get certain otherwise inaccessible properties from the form field object.
- *
- * @param string $name The property name for which to the the value.
- *
- * @return mixed The property value or null.
- *
- * @since 2.0
- */
- public function __get($name)
- {
- switch ($name)
- {
- case 'static':
- if (empty($this->static))
- {
- $this->static = $this->getStatic();
- }
- return $this->static;
- break;
- case 'repeatable':
- if (empty($this->repeatable))
- {
- $this->repeatable = $this->getRepeatable();
- }
- return $this->repeatable;
- break;
- default:
- return parent::__get($name);
- }
- }
- /**
- * Get the rendering of this field type for static display, e.g. in a single
- * item view (typically a "read" task).
- *
- * @since 2.0
- *
- * @return string The field HTML
- */
- public function getStatic()
- {
- $class = $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
- $params = $this->getOptions();
- $db = JFactory::getDbo();
- $query = $db->getQuery(true);
- $query->select('a.id AS value, a.title AS text');
- $query->from('#__usergroups AS a');
- $query->group('a.id, a.title');
- $query->order('a.id ASC');
- $query->order($query->qn('title') . ' ASC');
- // Get the options.
- $db->setQuery($query);
- $options = $db->loadObjectList();
- // If params is an array, push these options to the array
- if (is_array($params))
- {
- $options = array_merge($params, $options);
- }
- // If all levels is allowed, push it into the array.
- elseif ($params)
- {
- array_unshift($options, JHtml::_('select.option', '', JText::_('JOPTION_ACCESS_SHOW_ALL_LEVELS')));
- }
- return '<span id="' . $this->id . '" ' . $class . '>' .
- htmlspecialchars(FOFFormFieldList::getOptionName($options, $this->value), ENT_COMPAT, 'UTF-8') .
- '</span>';
- }
- /**
- * Get the rendering of this field type for a repeatable (grid) display,
- * e.g. in a view listing many item (typically a "browse" task)
- *
- * @since 2.0
- *
- * @return string The field HTML
- */
- public function getRepeatable()
- {
- $class = $this->element['class'] ? (string) $this->element['class'] : '';
- $db = JFactory::getDbo();
- $query = $db->getQuery(true);
- $query->select('a.id AS value, a.title AS text');
- $query->from('#__usergroups AS a');
- $query->group('a.id, a.title');
- $query->order('a.id ASC');
- $query->order($query->qn('title') . ' ASC');
- // Get the options.
- $db->setQuery($query);
- $options = $db->loadObjectList();
- return '<span class="' . $this->id . ' ' . $class . '">' .
- htmlspecialchars(FOFFormFieldList::getOptionName($options, $this->value), ENT_COMPAT, 'UTF-8') .
- '</span>';
- }
- }