public function setUserGroups() { $memberships = array(); $groups = $this->getProperty('groups', null); if ($groups !== null) { $primaryGroupId = 0; /* remove prior user group links */ $oldMemberships = $this->object->getMany('UserGroupMembers'); /** @var modUserGroupMember $membership */ foreach ($oldMemberships as $membership) { $membership->remove(); } /* create user group links */ $groups = is_array($groups) ? $groups : $this->modx->fromJSON($groups); foreach ($groups as $group) { $membership = $this->modx->newObject('modUserGroupMember'); $membership->set('user_group', $group['usergroup']); $membership->set('role', $group['role']); $membership->set('member', $this->object->get('id')); $membership->set('rank', $group['rank']); if (empty($group['rank'])) { $primaryGroupId = $group['usergroup']; } $memberships[] = $membership; } $this->object->addMany($memberships, 'UserGroupMembers'); $this->object->set('primary_group', $primaryGroupId); } return $memberships; }
/** * Called from modx plugin onlogin * @global modx $modx * @param modUser $oUser */ public function onLoggedIn($oUser) { global $modx; FlexiLogger::info(__METHOD__, "user: "******"id"))); $aGroupModel = $oUser->getMany("UserGroupMembers"); $aGroup = array(); FlexiLogger::info(__METHOD__, "Group cnt: " . count($aGroupModel)); foreach ($aGroupModel as $oGroup) { $aDocGroup = $modx->getCollection("modAccessResourceGroup", array('principal_class' => 'modUserGroup', 'principal' => $oGroup->get("user_group"))); //FlexiLogger::info(__METHOD__, "group id: " . $oGroup->get("user_group") . ", doc cnt: " . count($aDocGroup)); foreach ($aDocGroup as $oDocGroup) { FlexiLogger::info(__METHOD__, "group id: " . $oDocGroup->get("target")); $aGroup[] = $docgroupid = $oDocGroup->get("target"); } } $_SESSION['webDocgroups'] = $aGroup; }