Функция 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

Content author

Administrator

Offline

Administrator

Last logged: 2026-08-03 13:51

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