Пример #1
0
 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;
 }
Пример #2
0
 /**
  * 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;
 }