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; }
/** * Add User Group memberships to the User * @return array */ public function addUserGroups() { $memberships = array(); $groups = $this->getProperty('groups', null); if ($groups !== null) { $groups = is_array($groups) ? $groups : $this->modx->fromJSON($groups); foreach ($groups as $group) { /** @var modUserGroupMember $membership */ $membership = $this->modx->newObject('modUserGroupMember'); $membership->set('user_group', $group['usergroup']); $membership->set('role', $group['role']); $memberships[] = $membership; } $this->object->addMany($memberships, 'UserGroupMembers'); } return $memberships; }
/** * If user groups were passed, set them here * @param string $userGroups * @return array */ public function setUserGroups($userGroups) { $added = array(); /* if $userGroups set in form, override here; otherwise use snippet property */ $this->userGroups = !empty($userGroups) ? $userGroups : $this->controller->getProperty('usergroups', ''); if (!empty($this->userGroups)) { $this->userGroups = is_array($this->userGroups) ? $this->userGroups : explode(',', $this->userGroups); foreach ($this->userGroups as $userGroupMeta) { $userGroupMeta = explode(':', $userGroupMeta); if (empty($userGroupMeta[0])) { continue; } /* get usergroup */ $pk = array(); $pk[intval($userGroupMeta[0]) > 0 ? 'id' : 'name'] = trim($userGroupMeta[0]); /** @var modUserGroup $userGroup */ $userGroup = $this->modx->getObject('modUserGroup', $pk); if (!$userGroup) { continue; } /* get role */ $rolePk = !empty($userGroupMeta[1]) ? $userGroupMeta[1] : 'Member'; /** @var modUserGroupRole $role */ $role = $this->modx->getObject('modUserGroupRole', array('name' => $rolePk)); /* create membership */ /** @var modUserGroupMember $member */ $member = $this->modx->newObject('modUserGroupMember'); $member->set('member', 0); $member->set('user_group', $userGroup->get('id')); if (!empty($role)) { $member->set('role', $role->get('id')); } else { $member->set('role', 1); } $this->user->addMany($member, 'UserGroupMembers'); $added[] = $userGroup->get('name'); } } return $added; }