Доброго времени суток, некоторое время назад столкнулся с необходимостью выводить различный контент разным группам пользователей. Например давать ссылку на просмотр статистики только руководству и админу.

Поскольку в modx не особо силен я написал свой сниппет, который собственно все это и обеспечивал, но я почти уверен, что это можно реализовать и штатными методами и меньшими ресурсами по нагрузке.
вот сам сниппет, в который можно одновременно передать несколько необходимых групп, а так же роль в группе
<?php
$User = $modx->user->get('id');
$query = "SELECT user_group FROM modx_member_groups WHERE member = ".$User;//тут запрашиваем все группы пользователя
if($role){
    $query .= " AND role = $role";//если нужно передаем еще и роль в группе (например member - естесственно в id роли)
}
$res = $modx->query($query);
$groups = $res->fetchAll(PDO::FETCH_ASSOC);
$groupp = array();
foreach ($groups as $group) {
    array_push($groupp,$group['user_group']);//передаем все полученные группы в массив
}
$gr = explode(",", $idGroup);
foreach ($gr as $g){
    if(in_array($g,$groupp)){ // проверяем есть ли пользователь в нужных нам группах
        echo 1;// если есть - возвращаем 1
        break;
    };
}

все это вызывается у меня через сниппет if, короче бардак и костыли…
подскажите более оптимальный вариант решения