%PDF- %PDF-
| Direktori : /home/lightco1/upgrade.lightco.com.au/libraries/fof30/Form/Field/ |
| Current File : /home/lightco1/upgrade.lightco.com.au/libraries/fof30/Form/Field/UserGroup.php |
<?php
/**
* @package FOF
* @copyright 2010-2017 Nicholas K. Dionysopoulos / Akeeba Ltd
* @license GNU GPL version 2 or later
*/
namespace FOF30\Form\Field;
use FOF30\Form\FieldInterface;
use FOF30\Form\Form;
use FOF30\Model\DataModel;
use \JHtml;
use \JText;
defined('_JEXEC') or die;
\JFormHelper::loadFieldClass('usergroup');
/**
* Form Field class for FOF
* Joomla! user groups
*
* @deprecated 3.1 Support for XML forms will be removed in FOF 4
*/
class UserGroup extends \JFormFieldUsergroup implements FieldInterface
{
/**
* @var string Static field output
*/
protected $static;
/**
* @var string Repeatable field output
*/
protected $repeatable;
/**
* The Form object of the form attached to the form field.
*
* @var Form
*/
protected $form;
/**
* A monotonically increasing number, denoting the row number in a repeatable view
*
* @var int
*/
public $rowid;
/**
* The item being rendered in a repeatable form field
*
* @var DataModel
*/
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()
{
if (isset($this->element['legacy']))
{
return $this->getInput();
}
$class = $this->class ? ' class="' . $this->class . '"' : '';
$params = $this->getOptions();
$db = $this->form->getContainer()->platform->getDbo();
$query = $db->getQuery(true)
->select('a.id AS value, a.title AS text')
->from('#__usergroups AS a')
->group('a.id, a.title')
->order('a.id ASC')
->order($db->qn('title') . ' ASC');
// Get the options.
$options = $db->setQuery($query)->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(GenericList::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()
{
if (isset($this->element['legacy']))
{
return $this->getInput();
}
$class = $this->class ? $this->class : '';
$db = $this->form->getContainer()->platform->getDbo();
$query = $db->getQuery(true)
->select('a.id AS value, a.title AS text')
->from('#__usergroups AS a')
->group('a.id, a.title')
->order('a.id ASC')
->order($db->qn('title') . ' ASC');
// Get the options.
$options = $db->setQuery($query)->loadObjectList();
return '<span class="' . $this->id . ' ' . $class . '">' .
htmlspecialchars(GenericList::getOptionName($options, $this->value), ENT_COMPAT, 'UTF-8') .
'</span>';
}
/**
* Returns the options for this control
*
* Adapted from JHtmlAccess::usergroup
*
* @return \stdClass[]
*/
protected function getOptions()
{
$db = $this->form->getContainer()->platform->getDbo();
$query = $db->getQuery(true)
->select('a.id AS value, a.title AS text, COUNT(DISTINCT b.id) AS level')
->from($db->quoteName('#__usergroups') . ' AS a')
->join('LEFT', $db->quoteName('#__usergroups') . ' AS b ON a.lft > b.lft AND a.rgt < b.rgt')
->group('a.id, a.title, a.lft, a.rgt')
->order('a.lft ASC');
$db->setQuery($query);
$options = $db->loadObjectList();
for ($i = 0, $n = count($options); $i < $n; $i++)
{
$options[$i]->text = str_repeat('- ', $options[$i]->level) . $options[$i]->text;
}
}
}