/** * Gets all the User Group names of the groups this user belongs to. * * @access public * @return array An array of User Group names. */ public function getUserGroupNames() { $groupNames = array(); $id = $this->get('id') ? (string) $this->get('id') : '0'; if (isset($_SESSION["modx.user.{$id}.userGroupNames"]) && $this->xpdo->user->get('id') == $this->get('id')) { $groupNames = $_SESSION["modx.user.{$id}.userGroupNames"]; } else { $memberGroups = $this->xpdo->getCollectionGraph('modUserGroup', '{"UserGroupMembers":{}}', array('UserGroupMembers.member' => $this->get('id'))); if ($memberGroups) { /** @var modUserGroup $group */ foreach ($memberGroups as $group) { $groupNames[] = $group->get('name'); } } $_SESSION["modx.user.{$id}.userGroupNames"] = $groupNames; } return $groupNames; }