Функция cot_build_email в Cotonti

Функция cot_build_email идеально вписывается в логику Cotonti, где разработчики могут быстро включить или отключить видимость электронных адресов в зависимости от прав пользователя, используя встроенные механизмы, такие как $usr['isadmin'].

/**
 * Возвращает ссылку на электронную почту пользователя.
 *
 * @param string $email Адрес электронной почты.
 * @param bool $hide Флаг, указывающий на то, нужно ли скрыть электронную почту.
 * @return string HTML-ссылка или текст "Скрыто", если опция скрытия включена.
 */
function cot_build_email($email, $hide = false): string
{
    global $L;

    // Если опция скрытия включена, возвращаем строку "Скрыто".
    if ($hide) {
        return $L['Hidden'];
    }

    // Проверяем, что адрес электронной почты не пуст и валиден.
    if (!empty($email) && cot_check_email($email)) {
        // Создаем HTML-ссылку для электронной почты.
        $link = cot_rc('link_email', ['email' => $email]);
        
        // Если функция cot_obfuscate существует, используем её для обфускации ссылки, иначе возвращаем обычную ссылку.
        return function_exists('cot_obfuscate') ? cot_obfuscate($link) : $link;
    }

    // Если электронная почта не валидна или пустая, возвращаем пустую строку.
    return '';
}


Пояснение:
Параметры функции:

$email — строка, представляющая адрес электронной почты пользователя.
$hide — булево значение, определяющее, нужно ли скрыть адрес электронной почты. Если true, то возвращается строка "Скрыто".
Логика работы:

Скрытие электронной почты:
Если параметр $hide равен true, функция сразу возвращает значение из массива $L с ключом 'Hidden', что соответствует тексту "Скрыто" (обычно это перевод слова "Hidden" в зависимости от языка сайта).
Проверка электронной почты:
Проверяется, что адрес электронной почты не пустой и является валидным с помощью функции cot_check_email.
Создание ссылки:
Если проверка прошла успешно, создаётся HTML-ссылка для электронной почты с помощью cot_rc('link_email', ['email' => $email]).
Обфускация:
Если существует функция cot_obfuscate, она применяется для скрытия (обфускации) электронной почты, чтобы затруднить её чтение для спам-ботов.

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

Если опция скрытия включена, возвращается текст "Скрыто".
Если адрес электронной почты валиден, возвращается HTML-ссылка на этот адрес (с обфускацией, если функция доступна).
Если адрес электронной почты не валиден или пустой, возвращается пустая строка.


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

echo cot_build_email('[email protected]'); // Возвращает HTML-ссылку на '[email protected]'.
echo cot_build_email('[email protected]', true); // Возвращает "Скрыто".


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


Пример использования функции cot_build_email в контексте логики фреймворка Cotonti.


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


1. Отображение списка пользователей с их электронной почтой:

// Подгружаем список пользователей из базы данных.
$users = cot_sql_query("SELECT user_email, user_name FROM cot_users");

// Перебираем каждого пользователя и отображаем его имя и электронную почту.
foreach ($users as $user) {
    echo "<p>";
    echo "Имя пользователя: " . htmlspecialchars($user['user_name']);
    
    // Отображаем электронную почту, используя cot_build_email, без скрытия.
    echo " | Электронная почта: " . cot_build_email($user['user_email']);
    echo "</p>";
}


2. Скрытие электронной почты для обычных пользователей и отображение её только администраторам:
 

// Функция для проверки, является ли текущий пользователь администратором.
function is_admin() {
    global $usr;
    return $usr['isadmin'];
}

// Подгружаем список пользователей из базы данных.
$users = cot_sql_query("SELECT user_email, user_name FROM cot_users");

// Перебираем каждого пользователя и отображаем его имя и электронную почту.
foreach ($users as $user) {
    echo "<p>";
    echo "Имя пользователя: " . htmlspecialchars($user['user_name']);
    
    // Отображаем электронную почту, но скрываем её для неадминистраторов.
    echo " | Электронная почта: " . cot_build_email($user['user_email'], !is_admin());
    echo "</p>";
}


Пояснение:
Отображение списка пользователей:

В первом примере мы просто получаем список пользователей из базы данных с их именами и электронными адресами, используя запрос cot_sql_query.
Затем мы перебираем массив пользователей и отображаем их имена и адреса электронной почты, используя функцию cot_build_email.
Скрытие электронной почты для обычных пользователей:

Во втором примере добавлена проверка, является ли текущий пользователь администратором с помощью функции is_admin.
Если пользователь не администратор, передаём true во второй параметр cot_build_email, чтобы скрыть электронную почту и заменить её текстом "Скрыто".

Как это интегрируется в Cotonti:

В Cotonti часто используются функции для генерации и обработки HTML-вывода, такие как cot_build_email, чтобы легко адаптировать отображение информации в зависимости от прав пользователя или настроек конфиденциальности.

Таким образом, мы адаптировали пример, чтобы он лучше соответствовал работе в Cotonti и демонстрировал, как можно использовать cot_build_email в реальном сценарии движка.

 

4 minutes read Administrator

Comments (0)

No comments yet
Only registered users can post new comments

Article multicategories

Additional categories where this article is shown as similar.

Content author

Administrator

Offline

Administrator

Last logged: 2026-09-13 14:50

  • Page published: 2025-01-21 22:33
  • Last update: 2025-01-21 22:33