Вывод групп пользователя

Кто знает, подскажите, как вывести названия групп, в которых состоит пользователь? Желательно через fenom.
Evgeny Epifanov
25 марта 2018, 16:06
modx.pro
2 353
0

Комментарии: 7

    Evgeny Epifanov
    25 марта 2018, 20:50
    0
    Спасибо.
    А может есть вариант попроще?
    Нужно вывести список пользователей с группами, в которых они состоят.
      Андрей
      25 марта 2018, 21:25
      0
      Список пользователей можно выводить через pdoUsers, а список групп каждого пользователя получать кодом из коммента выше, его можно оформить в модификатор для удобства.
        Evgeny Epifanov
        25 марта 2018, 22:17
        0
        Спасибо за наводку.
        Немного переделал под себя, может кому пригодится:
        1. Выводим пользователей через pdoUsers, в чанке шаблона выводим сниппет:
        [[!userGroups? &userid=`{$_pls['id']}`]]
        2. Ну сам сниппет userGroups:
        <?php
        $user = $modx->getObject('modUser', $userid);
        if ($user->get('id')) {
        	$q = $modx->newQuery('modUser',array('`modUser`.`id`'=>$user->get('id')));
        	$q->innerJoin('modUserGroupMember','UserGroupMembers');
        	$q->innerJoin('modUserGroup','UserGroup','`UserGroupMembers`.`user_group` = `UserGroup`.`id`');
        	$q->select('UserGroup.description');
        	$groupsArray = array();
        	if ($q->prepare() && $q->stmt->execute()) {
        	    while($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
        		    $groupsArray[] = $row['description'];
        	    }
        	}
        	// Список групп через запятую
        	$userGroups = implode(', ',$groupsArray);
        } else {
        	$userGroups = 'Аноним';
        }
        return $userGroups;
        Я вывожу поле description, т.к. у меня там название гоуппы по-русски.
        Если кто подскажет, как оформить вывод через fenom с модификатором.
          Evgeny Epifanov
          25 марта 2018, 22:54
          0
          Буду благодарен.
            Андрей
            25 марта 2018, 23:03
            0
            {'!pdoUsers' | snippet : ['tpl' => '@INLINE <p>{$fullname}, Группы - {$id | userGroups}</p>']}

            Сниппет userGroups:
            <?php
            
            $q = $modx->newQuery('modUser',array('`modUser`.`id`'=>$input));
            $q->innerJoin('modUserGroupMember','UserGroupMembers');
            $q->innerJoin('modUserGroup','UserGroup','`UserGroupMembers`.`user_group` = `UserGroup`.`id`');
            $q->select('UserGroup.description');
            $groupsArray = array();
            if ($q->prepare() && $q->stmt->execute()) {
                while($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
            	    $groupsArray[] = $row['description'];
                }
            }
            
            if (empty($groupsArray)) {
            	$userGroups = 'Аноним';
            } else {
            	$userGroups = implode(',',$groupsArray);
            }
            
            return $userGroups;
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
7