Добавление пользователя в группу через процессор
        Здравствуйте.
Стоит задача добавить пользователя в определённую группу.
Делаю потомка modUserUpdateProcessor, чтобы права переопределить:
Может кто-то подскажет, где я накосячил.
    
    
                                                                                
            Стоит задача добавить пользователя в определённую группу.
Делаю потомка modUserUpdateProcessor, чтобы права переопределить:
require MODX_CORE_PATH.'model/modx/processors/security/user/update.class.php';
class kurspressUserUpdateProcessor extends modUserUpdateProcessor {
	public $permission = '';
}
return 'kurspressUserUpdateProcessor';Вот кусок кода, которым я хочу это сделать:$groups = array ();
	foreach($_REQUEST['items'] as $v){
		$group['usergroup'] = $v['id'];
		$group['role'] = 'Member';
		$groups[] = $group;
	}
	$options = array(
		'groups'=>$groups,
		'id'=>$user->id,
		'username'=>$user->username,
		'email'=>$email
	);
	// Запускаем кастомный процессор обновления юзера
	$response = $modx->runProcessor('justclick/update', 
		$options,
		array('processors_path' => MODX_CORE_PATH. 'components/kurspress/processors/'));
		
	if ($response->isError()){
		$errors = implode(', ', $response->getAllErrors());
		$this->modx->log(modX::LOG_LEVEL_ERROR, '[Office] Unable to create user '.$email.'. Message: '.$errors);
	}Никаких ошибок не выдаётся, но пользователь в группу не добавляется.Может кто-то подскажет, где я накосячил.
Комментарии: 3
                Office регистрирует юзеров, в группы, которые указаны в параметре &groups сниппета officeAuth.
Посмотри в processors/auth/create.class.php метод setUserGroups() — это то, что тебе нужно.
                    Посмотри в processors/auth/create.class.php метод setUserGroups() — это то, что тебе нужно.
                Да, Василий, я и раньше смотрел твой код HA и office. Более того, когда писал свой процессор create, «стянул» у тебя этот метод. И в create пользователь в группы нормально добавляется. А вот в update почему-то нет, хотя ошибок никаких не выдаёт.            
                    
                Тогда нужно было смотреть родной MODXывый /user/update.class.php. Вот код оттуда:
                    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 */
		$groupsAdded = array();
		$groups = is_array($groups) ? $groups : $this->modx->fromJSON($groups);
		$idx = 0;
		foreach ($groups as $group) {
			if (in_array($group['usergroup'],$groupsAdded)) continue;
			$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',isset($group['rank']) ? $group['rank'] : $idx);
			if (empty($group['rank'])) {
				$primaryGroupId = $group['usergroup'];
			}
			$memberships[] = $membership;
			$groupsAdded[] = $group['usergroup'];
			$idx++;
		}
		$this->object->addMany($memberships,'UserGroupMembers');
		$this->object->set('primary_group',$primaryGroupId);
	}
	return $memberships;
}            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.