/** * @param $row * @return bool|string */ protected function getUserGroups($row) { if (!$row->gug_numgroups) { return false; } $result = $this->mDb->select('global_user_groups', 'gug_group', array('gug_user' => $row->gu_id), __METHOD__); $globalgroups = array(); foreach ($result as $row2) { if (!isset($this->wikiSets[$row2->gug_group])) { // We don't need to get the sets of groups we already know about. $globalgroups[] = $row2->gug_group; } } if (count($globalgroups) != 0) { $wikiSetQuery = $this->mDb->select(array('global_group_restrictions', 'wikiset'), array('ggr_group', 'ws_id', 'ws_name', 'ws_type', 'ws_wikis'), array('ggr_set=ws_id', 'ggr_group' => $globalgroups), __METHOD__); foreach ($wikiSetQuery as $wikiSetRow) { $this->wikiSets[$wikiSetRow->ggr_group] = WikiSet::newFromRow($wikiSetRow); } } $rights = array(); foreach ($result as $row2) { if (isset($this->wikiSets[$row2->gug_group]) && !$this->wikiSets[$row2->gug_group]->inSet()) { $group = User::makeGroupLinkWiki($row2->gug_group, User::getGroupMember($row2->gug_group)); $rights[] = Html::element('span', array('class' => 'groupnotappliedhere'), $group); } else { $rights[] = User::makeGroupLinkWiki($row2->gug_group, User::getGroupMember($row2->gug_group)); } } return $this->getLanguage()->listToText($rights); }
/** * Load user groups and rights from the database. */ protected function loadGroups() { if (isset($this->mGroups)) { // Already loaded return; } // We need the user id from the database, but this should be checked by the getId accessor. wfDebugLog('CentralAuthVerbose', "Loading groups for global user {$this->mName}"); $dbr = self::getCentralDB(); // We need the master. $res = $dbr->select(array('global_group_permissions', 'global_user_groups'), array('ggp_permission', 'ggp_group'), array('ggp_group=gug_group', 'gug_user' => $this->getId()), __METHOD__); $resSets = $dbr->select(array('global_user_groups', 'global_group_restrictions', 'wikiset'), array('ggr_group', 'ws_id', 'ws_name', 'ws_type', 'ws_wikis'), array('ggr_group=gug_group', 'ggr_set=ws_id', 'gug_user' => $this->getId()), __METHOD__); $sets = array(); foreach ($resSets as $row) { /* @var $row object */ $sets[$row->ggr_group] = WikiSet::newFromRow($row); } // Grab the user's rights/groups. $rights = array(); $groups = array(); foreach ($res as $row) { /** @var $set User|bool */ $set = isset($sets[$row->ggp_group]) ? $sets[$row->ggp_group] : ''; $rights[] = array('right' => $row->ggp_permission, 'set' => $set ? $set->getID() : false); $groups[$row->ggp_group] = 1; } $this->mRights = $rights; $this->mGroups = array_keys($groups); }