Функция 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 в реальном сценарии движка.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 03.08.2026 13:51
- Страница размещена: 21.01.2025 22:33
- Последнее обновление: 21.01.2025 22:33