Функция 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.
Эта функция полезна для получения всех групп, в которых состоит конкретный пользователь, что может быть использовано для проверки прав доступа или настройки отображения информации о пользователе на сайте.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 05.07.2026 18:32
- Страница размещена: 21.01.2025 20:54
- Последнее обновление: 21.01.2025 20:54