Функция cot_shield_protect
/**
* Warn user of shield protection
*/
function cot_shield_protect()
{
global $sys, $shield_limit, $shield_action, $L;
// Проверяем, если текущее время меньше времени, когда защита должна завершиться
if ($shield_limit > $sys['now']) {
// Если защита активна, показываем сообщение об ошибке и прекращаем выполнение
cot_die_message(403, true, $L['shield_title'], cot_rc('shield_protect', array(
'sec' => $shield_limit - $sys['now'], // Показываем, сколько секунд осталось до завершения защиты
'action' => $shield_action // Показываем тип текущего действия, из-за которого активирована защита
)));
}
}
Разбор и комментарии:
Общее описание: Эта функция используется для отображения предупреждения пользователю, если защита (shield protection) активирована. Если защита все еще действует, она блокирует дальнейшие действия пользователя, показывая сообщение об ошибке.
Комментарии и пояснения:
Проверка времени защиты:
if ($shield_limit > $sys['now']) {
Здесь происходит сравнение текущего времени (в Unix timestamp) с временем окончания действия защиты ($shield_limit). Если текущее время меньше, чем время завершения защиты, то защита все еще активна, и нужно показать пользователю предупреждение.
Вывод сообщения и прекращение выполнения:
cot_die_message(403, true, $L['shield_title'], cot_rc('shield_protect', array(
'sec' => $shield_limit - $sys['now'], // Время до окончания защиты
'action' => $shield_action // Тип действия, из-за которого активирована защита
)));
Если защита активна, то вызывается функция cot_die_message, которая выводит сообщение об ошибке с кодом 403 (Forbidden). Сообщение сообщает пользователю, что защита в действии, и также выводится информация о времени до окончания защиты и типе действия, которое привело к активации защиты. С помощью функции cot_rc подставляются переменные в строку сообщения.
Роль функции:
Функция cot_shield_protect отвечает за блокировку пользователя, если защита активирована. Она информирует пользователя о том, сколько времени осталось до завершения защиты, и почему он заблокирован.
Функция cot_shield_update
/**
* Updates shield state
*
* @param int $shield_add Hammer
* @param string $shield_newaction New action type
*/
function cot_shield_update($shield_add, $shield_newaction)
{
global $cfg, $sys;
// Рассчитываем новое время окончания защиты
$shield_newlimit = $sys['now'] + floor($shield_add * $cfg['shieldtadjust'] / 100);
// Обновляем значения в сессии
$_SESSION['online_shield'] = $shield_newlimit; // Обновляем время завершения защиты
$_SESSION['online_action'] = $shield_newaction; // Обновляем тип текущего действия
}
Разбор и комментарии:
Общее описание:
Эта функция обновляет состояние защиты (shield) для текущего пользователя.
Она рассчитывает новое время окончания защиты и обновляет соответствующие данные в сессии.
Комментарии и пояснения:
Расчет нового времени защиты:
$shield_newlimit = $sys['now'] + floor($shield_add * $cfg['shieldtadjust'] / 100);
Здесь происходит расчет нового времени окончания защиты.
Сначала рассчитывается время, которое нужно добавить к текущему времени ($sys['now']).
Значение $shield_add — это количество времени (в секундах), на которое будет продлена защита.
Этот параметр умножается на значение из конфигурации $cfg['shieldtadjust'] (предположительно, коэффициент корректировки), и результат делится на 100 для получения нужного времени.
Функция floor округляет результат в меньшую сторону до целого числа.
Обновление данных в сессии:
$_SESSION['online_shield'] = $shield_newlimit;
$_SESSION['online_action'] = $shield_newaction;
После вычисления нового времени окончания защиты, оно сохраняется в сессию через $_SESSION['online_shield']. Также сохраняется тип текущего действия в $_SESSION['online_action']. Эти данные будут использованы в будущем для проверки состояния защиты.
Роль функции:
Функция cot_shield_update обновляет параметры защиты, устанавливая новое время окончания блокировки и тип действия, которое привело к блокировке. Это необходимо для того, чтобы система могла продолжать контролировать, когда защита завершится, и какие действия пользователей вызывают ее активацию.
Резюме:
Функция cot_shield_protect проверяет, активна ли защита, и, если она активна, блокирует дальнейшие действия пользователя, выводя соответствующее сообщение.
Функция cot_shield_update обновляет данные о времени окончания защиты и типе действия пользователя в сессии, таким образом поддерживая актуальную информацию о состоянии защиты.