Руководство по пользовательским функциям functions.custom.php в Cotonti

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

Руководство по пользовательским функциям 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() и т.п.

Логика работы

  1. Получает id из GET-параметра id как целое число.
  2. Получает u из GET-параметра u как строку.
  3. Если передан u, но не id — выполняет запрос к таблице пользователей для получения user_id по user_name.
  4. Если не переданы ни id, ни u, но пользователь авторизован (Cot::$usr['id'] > 0) — использует его ID.
  5. Если в итоге id > 0, возвращает строку из таблицы пользователей (SELECT * FROM users WHERE user_id = ?) как ассоциативный массив.
  6. Если пользователь не найден — возвращает 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 существует:

[
    'user_id' => 42,
    'user_name' => 'john_doe',
    'user_email' => '[email protected]',
    'user_maingrp' => 4,
    ...
]

2. cot_customfuncs_isOwnerSuperAdmin()

Назначение

Проверяет, является ли владелец страницы суперадминистратором (группа COT_GROUP_SUPERADMINS, обычно ID 5). Эта функция не проверяет текущего пользователя, а именно владельца, определённого через cot_customfuncs_getUserDataOwner().

Логика работы

  1. Вызывает cot_customfuncs_getUserDataOwner().
  2. Если данные получены и ключ user_maingrp существует, сравнивает его значение с константой COT_GROUP_SUPERADMINS (значение 5) с приведением к целому числу.
  3. Возвращает true или false.

Пример использования в шаблоне

<!-- IF {PHP|cot_customfuncs_isOwnerSuperAdmin()} -->
    <div class="alert alert-danger">Владелец страницы — суперадмин</div>
<!-- ELSE -->
    <div class="alert alert-info">Владелец страницы не суперадмин</div>
<!-- ENDIF -->

Возвращаемое значение

  • true – если владелец найден и его основная группа равна COT_GROUP_SUPERADMINS.
  • false – во всех остальных случаях.

Пример результата

При owner.user_maingrp = 5:

Владелец страницы — суперадмин

При owner.user_maingrp = 4:

Владелец страницы не суперадмин

3. cot_customfuncs_isOwnerAdmin()

Назначение

Проверяет, имеет ли владелец страницы права администратора в области admin. В отличие от isOwnerSuperAdmin(), учитывает не только основную группу COT_GROUP_SUPERADMINS, но и дополнительные группы, которые могут давать административные права (например, группа «Администраторы» с соответствующими правами в таблице cot_auth).

Логика работы

  1. Получает данные владельца через cot_customfuncs_getUserDataOwner().
  2. Если нет user_id — возвращает false.
  3. Извлекает user_id и user_maingrp.
  4. Вызывает cot_auth_build($ownerId, $maingrp) — эта функция строит матрицу прав для указанного пользователя на основе его основной и дополнительных групп.
  5. Проверяет наличие элемента $rights['admin']['a'] (права администратора в области admin).
  6. Получает битовую маску прав и проверяет, установлен ли бит A (значение 128).
  7. Возвращает true, если бит установлен, иначе false.

Пример использования в шаблоне

<!-- IF {PHP|cot_customfuncs_isOwnerAdmin()} -->
    <span class="badge bg-success">Владелец — администратор</span>
<!-- ELSE -->
    <span class="badge bg-secondary">Владелец — обычный пользователь</span>
<!-- ENDIF -->

Возвращаемое значение

  • true – если владелец имеет права администратора (суперадмин или состоит в группе с флагом администратора).
  • false – если владелец не администратор или не найден.

Пример результата

Если владелец состоит в дополнительной группе «Администраторы» (с правами A в области admin), функция вернёт true, и шаблон выведет:

Владелец — администратор

Если владелец — обычный пользователь, результат:

Владелец — обычный пользователь

4. cot_customfuncs_getOwnerGroupId()

Назначение

Возвращает числовой идентификатор основной группы (user_maingrp) владельца страницы. Позволяет проверять принадлежность владельца к конкретной группе без необходимости обращаться к массиву данных напрямую.

Логика работы

  1. Вызывает cot_customfuncs_getUserDataOwner().
  2. Если в массиве есть user_maingrp, возвращает его как int.
  3. Если владелец не найден или ключ пуст — возвращает 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().

Логика работы

  1. Получает данные владельца.
  2. Если данные найдены, текущий пользователь авторизован (Cot::$usr['id'] > 0) и его ID совпадает с user_id владельца, возвращает true.
  3. Иначе false.

Пример использования в шаблоне

<!-- IF {PHP|cot_customfuncs_isOwner()} -->
    <a href="{PHP|cot_url('users', 'm=profile')}">Редактировать профиль</a>
<!-- ENDIF -->

Возвращаемое значение

  • true – если текущий пользователь является владельцем просматриваемой страницы.
  • false – если не владелец или не авторизован.

Пример результата

Если текущий пользователь имеет user_id = 42, а владелец страницы тоже user_id = 42, то ссылка «Редактировать профиль» будет показана.


6. cot_customfuncs_isTopicAuthor()

Назначение

Проверяет, является ли текущий пользователь автором топика форума. ID топика берётся из URL-параметра q. Функция сравнивает ft_firstposterid (ID автора первого сообщения) с ID текущего пользователя.

Логика работы

  1. Получает topicId из GET-параметра q как целое число.
  2. Если пользователь не авторизован или topicId пуст — возвращает false.
  3. Выполняет запрос к таблице cot_forum_topics для получения ft_firstposterid.
  4. Если 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 текущего пользователя.

Логика работы

  1. Получает pageId из GET-параметра id как целое число.
  2. Если пользователь не авторизован или pageId пуст — возвращает false.
  3. Выполняет запрос к таблице cot_pages для получения page_ownerid.
  4. Если 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.

Логика работы

  1. Вызывает cot_customfuncs_getUserDataOwner().
  2. Если в массиве есть 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().

Логика работы

  1. Вызывает cot_customfuncs_getUserDataOwner().
  2. Если в массиве есть user_name, возвращает его после htmlspecialchars().
  3. Если владелец не найден или имя пустое — возвращает пустую строку.

Пример использования в шаблоне

Имя владельца: {PHP|cot_customfuncs_getOwnerName()}

Возвращаемое значение

  • Строка – имя владельца (например, "Alice"), уже экранированное.
  • Пустая строка – если имя не найдено.

Пример результата

При наличии имени:

Имя владельца: Alice

10. cot_customfuncs_getPageOwnerId()

Назначение

Возвращает числовой ID владельца статьи (страницы), основываясь на текущем URL. В отличие от cot_customfuncs_getOwnerId(), эта функция выполняет прямой запрос к таблице cot_pages, а не к пользователям.

Логика работы

  1. Получает pageId из GET-параметра id как целое число.
  2. Выполняет запрос: SELECT page_ownerid FROM cot_pages WHERE page_id = ?.
  3. Если значение получено, возвращает его как 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)

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

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

webitproff

Онлайн

Sodium Carbonate

Последняя авторизация: 03.09.2026 16:47

Обо мне кратко
Поддержка и разработка веб-проектов на CMF Cotonti: приватные мессенджеры через сайт, открытые и закрытые небольшие социальные сети, торговые площадки и маркетплейсы, портал биржи фриланса и услуг, каталоги товаров оптовых поставщиков, дропшиппинг-платформы, интернет-магазины и многое другое.
Смотреть разработки и скачать
Публичное портфолио моих работ и разработок
Телеграм для сообщений
@webitproff
Телеграм-канал
@s/aBuyFILE
  • Страница размещена: 17.08.2026 23:24
  • Последнее обновление: 18.08.2026 00:32
  • Язык:

Связанные статьи

Похожие страницы

Файл functions.custom.php в Cotonti
1 В файл functions.custom.php в Cotonti обычно добавляют дополнительные пользовательские функции, которые не входят в
Тип custom в переменных конфигурации
2 Тип 'custom' в переменных конфигурации Возможности типа 'custom' Новый тип custom предоставляет
Файл admin.functions.php в Cotonti CMF
3 Основное назначение файла admin.functions.php и его место в системе Файл admin.functions.php в системе Cotonti CMF
Extrafields Users Custom - Обзор обновления плагина
4 СодержаниеРуководство и обзор по плагину Extrafields Users Custom (xtradbrowusers)Что умеет плагин «из
Модуль "Users", - users.functions.php в Cotonti CMF
5 Описание файла "users.functions.php" в Cotonti CMF Файл "users.functions.php" в системе управления