Пример #1
0
 /**
  * Get a list of the user groups for filtering.
  *
  * @return  array  An array of JHtmlOption elements.
  *
  * @since   1.6
  */
 public static function getGroups()
 {
     $options = JHelperUsergroups::getInstance()->getAll();
     foreach ($options as &$option) {
         $option->value = $option->id;
         $option->text = str_repeat('- ', $option->level) . $option->title;
     }
     return $options;
 }
 /**
  * Method to get the options to populate list
  *
  * @return  array  The field option objects.
  *
  * @since   3.2
  */
 protected function getOptions()
 {
     // Hash for caching
     $hash = md5($this->element);
     if (!isset(static::$options[$hash])) {
         static::$options[$hash] = parent::getOptions();
         $groups = JHelperUsergroups::getInstance()->getAll();
         $options = array();
         foreach ($groups as $group) {
             $options[] = (object) array('text' => str_repeat('- ', $group->level) . $group->title, 'value' => $group->id, 'level' => $group->level);
         }
         static::$options[$hash] = array_merge(static::$options[$hash], $options);
     }
     return static::$options[$hash];
 }
 /**
  * Displays a list of user groups.
  *
  * @param   boolean  $includeSuperAdmin  true to include super admin groups, false to exclude them
  *
  * @return  array  An array containing a list of user groups.
  *
  * @since   2.5
  */
 public static function groups($includeSuperAdmin = false)
 {
     $options = array_values(JHelperUsergroups::getInstance()->getAll());
     for ($i = 0, $n = count($options); $i < $n; $i++) {
         $options[$i]->value = $options[$i]->id;
         $options[$i]->text = str_repeat('- ', $options[$i]->level) . $options[$i]->title;
         $groups[] = JHtml::_('select.option', $options[$i]->value, $options[$i]->text);
     }
     // Exclude super admin groups if requested
     if (!$includeSuperAdmin) {
         $filteredGroups = array();
         foreach ($groups as $group) {
             if (!JAccess::checkGroup($group->value, 'core.admin')) {
                 $filteredGroups[] = $group;
             }
         }
         $groups = $filteredGroups;
     }
     return $groups;
 }
Пример #4
0
 /**
  * Method to get the options to populate list
  *
  * @return  array  The field option objects.
  *
  * @since   3.2
  */
 protected function getOptions()
 {
     // Hash for caching
     $hash = md5($this->element);
     if (!isset(static::$options[$hash])) {
         static::$options[$hash] = parent::getOptions();
         $groups = JHelperUsergroups::getInstance()->getAll();
         $checkSuperUser = (int) $this->getAttribute('checksuperusergroup', 0);
         $isSuperUser = JFactory::getUser()->authorise('core.admin');
         $options = array();
         foreach ($groups as $group) {
             // Don't show super user groups to non super users.
             if ($checkSuperUser && !$isSuperUser && JAccess::checkGroup($group->id, 'core.admin')) {
                 continue;
             }
             $options[] = (object) array('text' => str_repeat('- ', $group->level) . $group->title, 'value' => $group->id, 'level' => $group->level);
         }
         static::$options[$hash] = array_merge(static::$options[$hash], $options);
     }
     return static::$options[$hash];
 }
 /**
  * Method to get the field options.
  *
  * @return  array  The field option objects
  *
  * @since   1.6
  */
 protected function getOptions()
 {
     $options = JHelperUsergroups::getInstance()->getAll();
     $user = JFactory::getUser();
     // Prevent parenting to children of this item.
     if ($id = $this->form->getValue('id')) {
         unset($options[$id]);
     }
     $options = array_values($options);
     // Pad the option text with spaces using depth level as a multiplier.
     for ($i = 0, $n = count($options); $i < $n; $i++) {
         // Show groups only if user is super admin or group is not super admin
         if ($user->authorise('core.admin') || !JAccess::checkGroup($options[$i]->value, 'core.admin')) {
             $options[$i]->value = $options[$i]->id;
             $options[$i]->text = str_repeat('- ', $options[$i]->level) . $options[$i]->title;
         } else {
             unset($options[$i]);
         }
     }
     // Merge any additional options in the XML definition.
     $options = array_merge(parent::getOptions(), $options);
     return $options;
 }
 /**
  * Returns a UL list of user groups with checkboxes
  *
  * @param   string   $name             The name of the checkbox controls array
  * @param   array    $selected         An array of the checked boxes
  * @param   boolean  $checkSuperAdmin  If false only super admins can add to super admin groups
  *
  * @return  string
  *
  * @since   1.6
  */
 public static function usergroups($name, $selected, $checkSuperAdmin = false)
 {
     static $count;
     $count++;
     $isSuperAdmin = JFactory::getUser()->authorise('core.admin');
     $groups = array_values(JHelperUsergroups::getInstance()->getAll());
     $html = array();
     for ($i = 0, $n = count($groups); $i < $n; $i++) {
         $item =& $groups[$i];
         // If checkSuperAdmin is true, only add item if the user is superadmin or the group is not super admin
         if (!$checkSuperAdmin || $isSuperAdmin || !JAccess::checkGroup($item->id, 'core.admin')) {
             // Setup  the variable attributes.
             $eid = $count . 'group_' . $item->id;
             // Don't call in_array unless something is selected
             $checked = '';
             if ($selected) {
                 $checked = in_array($item->id, $selected) ? ' checked="checked"' : '';
             }
             $rel = $item->parent_id > 0 ? ' rel="' . $count . 'group_' . $item->parent_id . '"' : '';
             // Build the HTML for the item.
             $html[] = '	<div class="control-group">';
             $html[] = '		<div class="controls">';
             $html[] = '			<label class="checkbox" for="' . $eid . '">';
             $html[] = '			<input type="checkbox" name="' . $name . '[]" value="' . $item->id . '" id="' . $eid . '"';
             $html[] = '					' . $checked . $rel . ' />';
             $html[] = '			' . JLayoutHelper::render('joomla.html.treeprefix', array('level' => $item->level + 1)) . $item->title;
             $html[] = '			</label>';
             $html[] = '		</div>';
             $html[] = '	</div>';
         }
     }
     return implode("\n", $html);
 }
Пример #7
0
 /**
  * Gets the parent groups that a leaf group belongs to in its branch back to the root of the tree
  * (including the leaf group id).
  *
  * @param   mixed  $groupId  An integer or array of integers representing the identities to check.
  *
  * @return  mixed  True if allowed, false for an explicit deny, null for an implicit deny.
  *
  * @since   11.1
  */
 protected static function getGroupPath($groupId)
 {
     // Load all the groups to improve performance on intensive groups checks
     $groups = JHelperUsergroups::getInstance()->getAll();
     if (!isset($groups[$groupId])) {
         return array();
     }
     return $groups[$groupId]->path;
 }
Пример #8
0
 /**
  * Populate level & path for items.
  *
  * @param   array  $items  Array of stdClass objects
  *
  * @return  array
  *
  * @since   3.6.3
  */
 private function populateExtraData(array $items)
 {
     // First pass: get list of the group id's and reset the counts.
     $groupsByKey = array();
     foreach ($items as $item) {
         $groupsByKey[(int) $item->id] = $item;
     }
     $groupIds = array_keys($groupsByKey);
     $db = $this->getDbo();
     // Get total enabled users in group.
     $query = $db->getQuery(true);
     // Count the objects in the user group.
     $query->select('map.group_id, COUNT(DISTINCT map.user_id) AS user_count')->from($db->quoteName('#__user_usergroup_map', 'map'))->join('LEFT', $db->quoteName('#__users', 'u') . ' ON ' . $db->quoteName('u.id') . ' = ' . $db->quoteName('map.user_id'))->where($db->quoteName('map.group_id') . ' IN (' . implode(',', $groupIds) . ')')->where($db->quoteName('u.block') . ' = 0')->group($db->quoteName('map.group_id'));
     $db->setQuery($query);
     try {
         $countEnabled = $db->loadAssocList('group_id', 'count_enabled');
     } catch (RuntimeException $e) {
         $this->setError($e->getMessage());
         return false;
     }
     // Get total disabled users in group.
     $query->clear('where')->where('map.group_id IN (' . implode(',', $groupIds) . ')')->where('u.block = 1');
     $db->setQuery($query);
     try {
         $countDisabled = $db->loadAssocList('group_id', 'count_disabled');
     } catch (RuntimeException $e) {
         $this->setError($e->getMessage());
         return false;
     }
     // Inject the values back into the array.
     foreach ($groupsByKey as &$item) {
         $item->count_enabled = isset($countEnabled[$item->id]) ? (int) $countEnabled[$item->id]['user_count'] : 0;
         $item->count_disabled = isset($countDisabled[$item->id]) ? (int) $countDisabled[$item->id]['user_count'] : 0;
         $item->user_count = $item->count_enabled + $item->count_disabled;
     }
     $groups = new JHelperUsergroups($groupsByKey);
     return array_values($groups->getAll());
 }
 /**
  * Get a list of the user groups.
  *
  * @return  array
  *
  * @since   11.1
  */
 protected function getUserGroups()
 {
     $options = JHelperUsergroups::getInstance()->getAll();
     foreach ($options as &$option) {
         $option->value = $option->id;
         $option->text = $option->title;
     }
     return array_values($options);
 }