Руководство по пользовательским функциям functions.custom.php в Cotonti
подробное описание четырех функций как пример, предназначенных для определения владельца или автора контента. Каждая функция снабжена примерами кода и инструкциями по использованию.
Это руководство содержит подробное описание четырех функций, предназначенных для определения владельца или автора контента. Каждая функция снабжена примерами кода и инструкциями по использованию.
Активация файла с функциями
Прежде чем использовать функции, вам необходимо убедиться, что файл /system/functions.custom.php включен в конфигурации сайта.
Откройте файл /datas/config.php.
Найдите строку:
$cfg['customfuncs'] = false;
И измените её на:
$cfg['customfuncs'] = true;
Теперь Cotonti будет автоматически загружать ваши пользовательские функции из /system/functions.custom.php.
Размещение кода функций
в один файл: /system/functions.custom.php.
Обзор функций cot_customfuncs_* для работы с владельцем страницы и автором контента
В этой статье подробно рассматриваются десять пользовательских функций с префиксом cot_customfuncs_, предназначенных для определения владельца страницы, проверки прав администратора и авторства в шаблонах Cotonti. Каждая функция снабжена описанием, примерами вызова в шаблонах и ожидаемым результатом.
Все функции используют штатные механизмы Cotonti: cot_import(), Cot::$db->query(), cot_auth_build() и глобальные переменные. Примеры вызова в шаблонах приведены в синтаксисе, поддерживаемом Cotonti: {PHP|имя_функции()} или <!-- IF {PHP|...} -->.
1. cot_customfuncs_getUserDataOwner()
Назначение
Возвращает массив данных пользователя-владельца страницы. Владелец определяется по URL-параметрам id (числовой ID пользователя) или u (имя пользователя). Если ни один из них не передан, используется ID текущего авторизованного пользователя.
Важно: эту функцию не следует вызывать в шаблонах напрямую, так как она возвращает массив, который неудобно выводить без дополнительной обработки. Вместо неё используйте обёртки: cot_customfuncs_getOwnerId(), cot_customfuncs_getOwnerName() и т.п.
Логика работы
Получает id из GET-параметра id как целое число.
Получает u из GET-параметра u как строку.
Если передан u, но не id — выполняет запрос к таблице пользователей для получения user_id по user_name.
Если не переданы ни id, ни u, но пользователь авторизован (Cot::$usr['id'] > 0) — использует его ID.
Если в итоге id > 0, возвращает строку из таблицы пользователей (SELECT * FROM users WHERE user_id = ?) как ассоциативный массив.
Если пользователь не найден — возвращает null.
Пример вызова в PHP
$owner = cot_customfuncs_getUserDataOwner();
if (!empty($owner)) {
echo $owner['user_id']; // 123
echo $owner['user_name']; // Alice
echo $owner['user_email']; // [email protected]
}
Пример использования в шаблоне (через обёртки)
<!-- IF {PHP|cot_customfuncs_getOwnerId()} > 0 -->
Профиль принадлежит зарегистрированному пользователю.
<!-- ENDIF -->
Возвращаемое значение
Массивarray – данные пользователя, если он найден. Содержит все поля таблицы cot_users, включая user_id, user_name, user_email, user_maingrp и т.д.
null – если пользователь не найден или параметры отсутствуют и текущий пользователь не авторизован.
Пример возвращаемого результата
При открытии страницы с URL ?id=42, где пользователь с user_id=42 существует:
Проверяет, является ли владелец страницы суперадминистратором (группа COT_GROUP_SUPERADMINS, обычно ID 5). Эта функция не проверяет текущего пользователя, а именно владельца, определённого через cot_customfuncs_getUserDataOwner().
Логика работы
Вызывает cot_customfuncs_getUserDataOwner().
Если данные получены и ключ user_maingrp существует, сравнивает его значение с константой COT_GROUP_SUPERADMINS (значение 5) с приведением к целому числу.
true – если владелец найден и его основная группа равна COT_GROUP_SUPERADMINS.
false – во всех остальных случаях.
Пример результата
При owner.user_maingrp = 5:
Владелец страницы — суперадмин
При owner.user_maingrp = 4:
Владелец страницы не суперадмин
3. cot_customfuncs_isOwnerAdmin()
Назначение
Проверяет, имеет ли владелец страницы права администратора в области admin. В отличие от isOwnerSuperAdmin(), учитывает не только основную группу COT_GROUP_SUPERADMINS, но и дополнительные группы, которые могут давать административные права (например, группа «Администраторы» с соответствующими правами в таблице cot_auth).
Логика работы
Получает данные владельца через cot_customfuncs_getUserDataOwner().
Если нет user_id — возвращает false.
Извлекает user_id и user_maingrp.
Вызывает cot_auth_build($ownerId, $maingrp) — эта функция строит матрицу прав для указанного пользователя на основе его основной и дополнительных групп.
Проверяет наличие элемента $rights['admin']['a'] (права администратора в области admin).
Получает битовую маску прав и проверяет, установлен ли бит A (значение 128).
Возвращает true, если бит установлен, иначе false.
true – если владелец имеет права администратора (суперадмин или состоит в группе с флагом администратора).
false – если владелец не администратор или не найден.
Пример результата
Если владелец состоит в дополнительной группе «Администраторы» (с правами A в области admin), функция вернёт true, и шаблон выведет:
Владелец — администратор
Если владелец — обычный пользователь, результат:
Владелец — обычный пользователь
4. cot_customfuncs_getOwnerGroupId()
Назначение
Возвращает числовой идентификатор основной группы (user_maingrp) владельца страницы. Позволяет проверять принадлежность владельца к конкретной группе без необходимости обращаться к массиву данных напрямую.
Логика работы
Вызывает cot_customfuncs_getUserDataOwner().
Если в массиве есть user_maingrp, возвращает его как int.
Если владелец не найден или ключ пуст — возвращает 0.
Пример использования в шаблоне
<!-- IF {PHP|cot_customfuncs_getOwnerGroupId()} == 5 -->
Владелец — суперадмин
<!-- ELSE -->
<!-- IF {PHP|cot_customfuncs_getOwnerGroupId()} == 6 -->
Владелец — модератор
<!-- ELSE -->
Владелец — другая группа
<!-- ENDIF -->
<!-- ENDIF -->
Возвращаемое значение
Целое число – ID основной группы владельца (например, 4, 5, 6).
0 – если владелец не найден.
Пример результата
Если владелец имеет user_maingrp = 5, то:
Владелец — суперадмин
5. cot_customfuncs_isOwner()
Назначение
Проверяет, является ли текущий авторизованный пользователь владельцем страницы. Сравнивает ID текущего пользователя с ID владельца, полученного через cot_customfuncs_getUserDataOwner().
Логика работы
Получает данные владельца.
Если данные найдены, текущий пользователь авторизован (Cot::$usr['id'] > 0) и его ID совпадает с user_id владельца, возвращает true.
true – если текущий пользователь является владельцем просматриваемой страницы.
false – если не владелец или не авторизован.
Пример результата
Если текущий пользователь имеет user_id = 42, а владелец страницы тоже user_id = 42, то ссылка «Редактировать профиль» будет показана.
6. cot_customfuncs_isTopicAuthor()
Назначение
Проверяет, является ли текущий пользователь автором топика форума. ID топика берётся из URL-параметра q. Функция сравнивает ft_firstposterid (ID автора первого сообщения) с ID текущего пользователя.
Логика работы
Получает topicId из GET-параметра q как целое число.
Если пользователь не авторизован или topicId пуст — возвращает false.
Выполняет запрос к таблице cot_forum_topics для получения ft_firstposterid.
Если posterId > 0 и совпадает с ID текущего пользователя — возвращает true, иначе false.
Пример использования в шаблоне
<!-- IF {PHP|cot_customfuncs_isTopicAuthor()} -->
<button>Удалить тему</button>
<!-- ENDIF -->
Возвращаемое значение
true – если текущий пользователь автор топика.
false – если не автор, не авторизован или параметр q отсутствует.
Пример результата
При URL ?q=15, где топик ft_id=15 создан пользователем с ID 42, и текущий пользователь имеет ID 42, кнопка «Удалить тему» будет показана.
7. cot_customfuncs_isPageAuthor()
Назначение
Проверяет, является ли текущий пользователь автором статьи (страницы). ID статьи берётся из URL-параметра id. Сравнивает page_ownerid с ID текущего пользователя.
Логика работы
Получает pageId из GET-параметра id как целое число.
Если пользователь не авторизован или pageId пуст — возвращает false.
Выполняет запрос к таблице cot_pages для получения page_ownerid.
Если ownerId > 0 и совпадает с ID текущего пользователя — возвращает true, иначе false.
Пример использования в шаблоне
<!-- IF {PHP|cot_customfuncs_isPageAuthor()} -->
<div>Вы автор этой статьи.</div>
<!-- ELSE -->
<div>Вы не являетесь автором.</div>
<!-- ENDIF -->
Возвращаемое значение
true – если текущий пользователь автор статьи.
false – если не автор или параметр id отсутствует.
Пример результата
При URL ?id=99, где страница page_id=99 принадлежит пользователю с ID 42, и текущий пользователь ID 42, выведется «Вы автор этой статьи».
8. cot_customfuncs_getOwnerId()
Назначение
Возвращает числовой ID пользователя-владельца страницы. Это обёртка над cot_customfuncs_getUserDataOwner(), извлекающая только user_id.
Логика работы
Вызывает cot_customfuncs_getUserDataOwner().
Если в массиве есть user_id, возвращает его как int, иначе 0.
Пример использования в шаблоне
ID владельца: {PHP|cot_customfuncs_getOwnerId()}
Возвращаемое значение
Целое число – ID владельца (например, 42).
0 – если владелец не найден.
Пример результата
Если владелец найден:
ID владельца: 42
9. cot_customfuncs_getOwnerName()
Назначение
Возвращает имя владельца страницы в экранированном виде (для безопасного вывода в HTML). Это обёртка над cot_customfuncs_getUserDataOwner(), извлекающая user_name и применяющая htmlspecialchars().
Логика работы
Вызывает cot_customfuncs_getUserDataOwner().
Если в массиве есть user_name, возвращает его после htmlspecialchars().
Если владелец не найден или имя пустое — возвращает пустую строку.
Пример использования в шаблоне
Имя владельца: {PHP|cot_customfuncs_getOwnerName()}
Возвращаемое значение
Строка – имя владельца (например, "Alice"), уже экранированное.
Пустая строка – если имя не найдено.
Пример результата
При наличии имени:
Имя владельца: Alice
10. cot_customfuncs_getPageOwnerId()
Назначение
Возвращает числовой ID владельца статьи (страницы), основываясь на текущем URL. В отличие от cot_customfuncs_getOwnerId(), эта функция выполняет прямой запрос к таблице cot_pages, а не к пользователям.
Логика работы
Получает pageId из GET-параметра id как целое число.
Выполняет запрос: SELECT page_ownerid FROM cot_pages WHERE page_id = ?.
Если значение получено, возвращает его как int, иначе 0.
Пример использования в шаблоне
ID автора статьи: {PHP|cot_customfuncs_getPageOwnerId()}
Возвращаемое значение
Целое число – ID владельца статьи.
0 – если статья не найдена или ownerid пуст.
Пример результата
При URL ?id=99, где page_ownerid=42:
ID автора статьи: 42
Сводная таблица функций
Функция
Назначение
Возвращает
cot_customfuncs_getUserDataOwner()
Полный массив данных владельца
array или null
cot_customfuncs_isOwnerSuperAdmin()
Владелец — суперадмин?
bool
cot_customfuncs_isOwnerAdmin()
Владелец — администратор (включая доп. группы)?
bool
cot_customfuncs_getOwnerGroupId()
Основная группа владельца
int
cot_customfuncs_isOwner()
Текущий пользователь — владелец?
bool
cot_customfuncs_isTopicAuthor()
Текущий пользователь — автор топика?
bool
cot_customfuncs_isPageAuthor()
Текущий пользователь — автор статьи?
bool
cot_customfuncs_getOwnerId()
ID владельца страницы
int
cot_customfuncs_getOwnerName()
Имя владельца страницы
string
cot_customfuncs_getPageOwnerId()
ID владельца статьи (прямой запрос)
int
Заключение
Набор функций cot_customfuncs_* предоставляет удобный интерфейс для работы с владельцем страницы и проверки авторства в шаблонах Cotonti. Используйте их в соответствии с конкретной задачей:
Для проверки прав текущего пользователя на владение контентом используйте cot_customfuncs_isOwner(), cot_customfuncs_isPageAuthor() или cot_customfuncs_isTopicAuthor().
Для получения информации о владельце страницы применяйте cot_customfuncs_getOwnerId(), cot_customfuncs_getOwnerName(), cot_customfuncs_getOwnerGroupId().
Для проверки административных прав владельца используйте cot_customfuncs_isOwnerAdmin() (учитывает дополнительные группы) или cot_customfuncs_isOwnerSuperAdmin() (только суперадмин).
Все функции строятся на штатных механизмах Cotonti и безопасны для использования в шаблонах.
7 минут чтения Sodium Carbonate
Комментарии (0)
Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям
Автор контента
Онлайн
Sodium Carbonate
Последняя авторизация: 03.09.2026 16:47
Обо мне кратко
Поддержка и разработка веб-проектов на CMF Cotonti: приватные мессенджеры через сайт, открытые и закрытые небольшие социальные сети, торговые площадки и маркетплейсы, портал биржи фриланса и услуг, каталоги товаров оптовых поставщиков, дропшиппинг-платформы, интернет-магазины и многое другое.