Функция cot_getUserGroupIds в Cotonti

Описание функции cot_getUserGroupIds
Функция предназначена для получения всех идентификаторов групп пользователя. Она возвращает список ID групп, в которых состоит пользователь, включая основную группу (если указано). Если основная группа не передана, то она будет извлечена из базы данных.

код функции


/**
 * @return list<int>
 */
function cot_getUserGroupIds($userId, $mainGroup = null, $withMainGroup = true)
{
    $result = [];

    $userId = (int) $userId;
    if (!$userId) {
        return $result;
    }

    if ($withMainGroup) {
        $mainGroup = (int) $mainGroup;
        if ($mainGroup) {
            $result[] = $mainGroup;
        } else {
            $mainGroup = (int) cot::$db->query(
                'SELECT user_maingrp FROM ' . Cot::$db->users . ' WHERE user_id = ?',
                $userId
            )->fetchColumn();
            if ($mainGroup) {
                $result[] = $mainGroup;
            }
        }
    }

    $groups = Cot::$db->query('SELECT gru_groupid FROM ' . Cot::$db->groups_users . ' WHERE gru_userid = ?', $userId)
        ->fetchAll(PDO::FETCH_COLUMN);
    if (!empty($groups)) {
        foreach ($groups as $groupId) {
            $groupId = (int) $groupId;
            if ($groupId > 0) {
                $result[] = $groupId;
            }
        }

        $result = array_unique($result);
    }

    return $result;
}

Подробное описание каждого шага функции
Преобразование идентификатора пользователя:

$userId = (int) $userId;
if (!$userId) {
    return $result;
}


Что проверяется?: Преобразуется идентификатор пользователя в целое число, чтобы исключить потенциальные ошибки типа данных.
Как проверяется?: Если $userId равен 0 или является недопустимым, функция сразу возвращает пустой массив $result, так как запрос к базе данных не имеет смысла.

Добавление основной группы пользователя, если это необходимо:

if ($withMainGroup) {
    $mainGroup = (int) $mainGroup;
    if ($mainGroup) {
        $result[] = $mainGroup;
    } else {
        $mainGroup = (int) cot::$db->query(
            'SELECT user_maingrp FROM ' . Cot::$db->users . ' WHERE user_id = ?',
            $userId
        )->fetchColumn();
        if ($mainGroup) {
            $result[] = $mainGroup;
        }
    }
}


Что проверяется?: Проверяется флаг $withMainGroup. Если он установлен в true, то добавляется основная группа пользователя.
Как проверяется?: Сначала пытается использовать переданное значение основной группы $mainGroup. Если оно отсутствует, делается запрос к базе данных для получения основной группы пользователя по его ID. Если найдено значение, оно добавляется в массив $result.

Получение групп, в которых состоит пользователь:

$groups = Cot::$db->query('SELECT gru_groupid FROM ' . Cot::$db->groups_users . ' WHERE gru_userid = ?', $userId)
    ->fetchAll(PDO::FETCH_COLUMN);
    


    
Что проверяется?: Запрашиваются все группы, в которых состоит пользователь, из таблицы groups_users.
Как проверяется?: Выполняется SQL-запрос, который извлекает все идентификаторы групп пользователя. Используется метод fetchAll с параметром PDO::FETCH_COLUMN, чтобы получить одномерный массив ID групп.


Добавление всех групп в массив:


if (!empty($groups)) {
    foreach ($groups as $groupId) {
        $groupId = (int) $groupId;
        if ($groupId > 0) {
            $result[] = $groupId;
        }
    }

    $result = array_unique($result);
}

Что проверяется?: Если список групп не пуст, то каждый ID группы добавляется в массив $result.
Как проверяется?: Каждый идентификатор группы приводится к целому числу, и если он больше 0, он добавляется в массив $result. Затем применяется функция array_unique, чтобы удалить дубликаты.
Возвращение результата:

return $result;


Что делается?: Возвращается итоговый массив с уникальными идентификаторами групп пользователя.


Список супер глобальных переменных, использованных в функции:

Cot::$db

Это объект базы данных, используемый для выполнения запросов к базе данных. Он обеспечивает доступ к функционалу работы с базой данных через API, предоставляемый фреймворком Cotonti.

Cot::$db->users

Это строковая переменная, которая содержит имя таблицы пользователей в базе данных.

Cot::$db->groups_users

Это строковая переменная, которая содержит имя таблицы, которая связывает пользователей с их группами (группы пользователей).


Краткое описание всех переменных:

$userId: Идентификатор пользователя, для которого нужно получить группы.
$mainGroup: Идентификатор основной группы пользователя (можно передать как параметр или извлечь из базы данных).
$withMainGroup: Флаг, указывающий, нужно ли добавлять основную группу пользователя в результат.
$result: Массив, в который добавляются все идентификаторы групп пользователя.
$groups: Массив, содержащий ID групп пользователя, полученные из базы данных.
$groupId: Индивидуальный ID группы, извлеченный из массива $groups.
Эта функция полезна для получения всех групп, в которых состоит конкретный пользователь, что может быть использовано для проверки прав доступа или настройки отображения информации о пользователе на сайте.

 

 

4 минут чтения Administrator

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 05.07.2026 18:32

  • Страница размещена: 21.01.2025 20:54
  • Последнее обновление: 21.01.2025 20:54