Добавить всех пользователей без группы в группу по умолчанию
Еще один кейс: на сайте куча пользователей без какой-либо группы. Надо их всех закинуть в определенную группу. К слову, это еще один логический минус системы политик безопасности MODX, так как уровни доступов пользователей настраиваются только на основании групп пользователей, а тут получается, что пользователь и не аноним (неавторизованные пользователи в группе анонимов находятся, которой можно задавать права доступов), и ни в какой другой группе. Без группы им вообще нельзя права задать, и получается, что часто такие пользователи вообще прав меньше имеют, чем анонимы даже. Готовый код: <?php
ini_set('max_execution_time', 0); ignore_user_abort(true);
print '
';// Формируем запрос на выборку пользователей, не состоящих ни в одной группе $q = $modx->newQuery('modUser'); $q->leftJoin('modUserGroupMember', 'UserGroupMembers');
$q->where(array( "UserGroupMembers.id" => null, ));
// Подсчет количества таких пользователей // print "
". $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 "
OK";