Не запутано, а бессмыслено. Я же сказал: используйте $modx->hasPermission(). Надо пользователю дать более расширенные поля - занесите его еще в одну группу пользователей. Один пользователь может находиться в нескольких группах, права суммируются. Не изобретайте велосипед.

А можно ли сделать разными профили пользователей в зависимости от группы (в принципе сделано) и еще в зависимости от какого-либо второго значения в БД? То есть в БД записано 1 или 0. Если пользователь в группе Новичек и у него в БД значение 1, то его профиль более расширен нежели у Новичка со значением 0 в поле БД. Запутанно может объяснил?

Вы зайдите здесь в чей-нибудь профиль. Увидите емейл? Вряд ли. Думаете из-за того, что вы не в той группе? Отчасти да, но главное - у вас просто нет прав. Смысл политик безопасности должен быть в том, есть у вас права или нет. Не важно в какой вы группе. У анонимуса может быть больше прав, чем у администратора. Все зависит от настроенных политик. К примеру, у меня это так: {if $modx->hasPermission('some_perm')}

Some code...

{/if} И я не парюсь в какой группе пользователь. Или у него есть права, и он увидит, или у него нет прав.

А таким образом можно выводить информацию не для текущего пользователя, который залогинен, а для других пользователей? Например, хочу вывести профили пользователей сайта для просмотра. У в зависимости от группы в профилях разная информация.

А почему я привязался сначала в primary_group? Потому что значения там совпадали со значением id группы. Вот я подумал что таки и задумано))

Вот это я и имею ввиду, когда говорю не использовать - странно. Такого в программировании не должно быть. Работать (или не работать) должно стабильно. Сегодня у вас работает, а завтра у вас не работает. Объяснение конечно можно найти почему оно не работает, но только зачем себе все усложнять?

Да. Но здесь есть два НО, больших и жирных:

  1. Метод modUser::isMember() (а точнее modUser::getUserGroupNames(), вызываемый в modUser::isMember()), получает группы пользователей из сессии пользователя. Это чревато тем, что если пользователь уже был авторизован, а вы ему меняете группу пользователя, изменения возникнут только после уничтожения его сессии.
  2. Метод modUser::isMember() не принимает id группы пользователей, что повлечет за собой понятные последствия в случае переименовывания группы пользователей. Но в целом можно пользоваться. И да - этот метод так же не имеет никакого отношения к primary_group :)

А вообще странно... Раньше работало как надо, поэтому и стал его использовать. Но с какого момента перестало работать не могу выяснить, поэтому и трудно выявить причину...

Вот так можно использовать как замену primary_group? $id = $_GET[id];

$res = $modx->getObject('modUser',$id);

if ($res->isMember('Новичок')) {

$output = $modx->getChunk('user_novichok');

} Ну это на скорую руку, лишь бы работало...