/libraries/cms/form/field/user.php
https://bitbucket.org/eternaware/joomus · PHP · 128 lines · 63 code · 15 blank · 50 comment · 3 complexity · 6333a89ee5725e99a964a5d5f498e030 MD5 · raw file
- <?php
- /**
- * @package Joomla.Libraries
- * @subpackage Form
- *
- * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE
- */
- defined('JPATH_PLATFORM') or die;
- /**
- * Field to select a user id from a modal list.
- *
- * @package Joomla.Libraries
- * @subpackage Form
- * @since 1.6.0
- */
- class JFormFieldUser extends JFormField
- {
- /**
- * The form field type.
- *
- * @var string
- * @since 1.6.0
- */
- public $type = 'User';
- /**
- * Method to get the user field input markup.
- *
- * @return string The field input markup.
- *
- * @since 1.6.0
- */
- protected function getInput()
- {
- $html = array();
- $groups = $this->getGroups();
- $excluded = $this->getExcluded();
- $link = 'index.php?option=com_users&view=users&layout=modal&tmpl=component&field=' . $this->id
- . (isset($groups) ? ('&groups=' . base64_encode(json_encode($groups))) : '')
- . (isset($excluded) ? ('&excluded=' . base64_encode(json_encode($excluded))) : '');
- // Initialize some field attributes.
- $attr = $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
- $attr .= $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : '';
- // Initialize JavaScript field attributes.
- $onchange = (string) $this->element['onchange'];
- // Load the modal behavior script.
- JHtml::_('behavior.modal', 'a.modal_' . $this->id);
- // Build the script.
- $script = array();
- $script[] = ' function jSelectUser_' . $this->id . '(id, title) {';
- $script[] = ' var old_id = document.getElementById("' . $this->id . '_id").value;';
- $script[] = ' if (old_id != id) {';
- $script[] = ' document.getElementById("' . $this->id . '_id").value = id;';
- $script[] = ' document.getElementById("' . $this->id . '_name").value = title;';
- $script[] = ' ' . $onchange;
- $script[] = ' }';
- $script[] = ' SqueezeBox.close();';
- $script[] = ' }';
- // Add the script to the document head.
- JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
- // Load the current username if available.
- $table = JTable::getInstance('user');
- if ($this->value)
- {
- $table->load($this->value);
- }
- else
- {
- $table->username = JText::_('JLIB_FORM_SELECT_USER');
- }
- // Create a dummy text field with the user name.
- $html[] = '<div class="fltlft">';
- $html[] = ' <input type="text" id="' . $this->id . '_name"' . ' value="' . htmlspecialchars($table->name, ENT_COMPAT, 'UTF-8') . '"'
- . ' disabled="disabled"' . $attr . ' />';
- $html[] = '</div>';
- // Create the user select button.
- $html[] = '<div class="button2-left">';
- $html[] = ' <div class="blank">';
- if ($this->element['readonly'] != 'true')
- {
- $html[] = ' <a class="modal_' . $this->id . '" title="' . JText::_('JLIB_FORM_CHANGE_USER') . '"' . ' href="' . $link . '"'
- . ' rel="{handler: \'iframe\', size: {x: 800, y: 500}}">';
- $html[] = ' ' . JText::_('JLIB_FORM_CHANGE_USER') . '</a>';
- }
- $html[] = ' </div>';
- $html[] = '</div>';
- // Create the real field, hidden, that stored the user id.
- $html[] = '<input type="hidden" id="' . $this->id . '_id" name="' . $this->name . '" value="' . (int) $this->value . '" />';
- return implode("\n", $html);
- }
- /**
- * Method to get the filtering groups (null means no filtering)
- *
- * @return mixed array of filtering groups or null.
- *
- * @since 1.6.0
- */
- protected function getGroups()
- {
- return null;
- }
- /**
- * Method to get the users to exclude from the list of users
- *
- * @return mixed Array of users to exclude or null to to not exclude them
- *
- * @since 1.6.0
- */
- protected function getExcluded()
- {
- return null;
- }
- }