Еще один кейс: на сайте куча пользователей без какой-либо группы. Надо их всех закинуть в определенную группу.
К слову, это еще один логический минус системы политик безопасности MODX, так как уровни доступов пользователей настраиваются только на основании групп пользователей, а тут получается, что пользователь и не аноним (неавторизованные пользователи в группе анонимов находятся, которой можно задавать права доступов), и ни в какой другой группе. Без группы им вообще нельзя права задать, и получается, что часто такие пользователи вообще прав меньше имеют, чем анонимы даже.
<?php
ini_set('max_execution_time', 0);
ignore_user_abort(true);
print '<pre>';
// Формируем запрос на выборку пользователей, не состоящих ни в одной группе
$q = $modx->newQuery('modUser');
$q->leftJoin('modUserGroupMember', 'UserGroupMembers');
$q->where(array(
"UserGroupMembers.id" => null,
));
// Подсчет количества таких пользователей
// print "<br />". $modx->getCount('modUser', $q);
$groupId = 5; // ID группы пользователей, в которую надо добавить пользователя
$roleId = null; // ID роли
$rank = null;
foreach($modx->getIterator("modUser", $q) as $user){
// Добавляем пользователя в группу
$user->joinGroup($groupId, $roleId, $rank);
}
print "<br />OK";