From 997939d4d19d58b2e817bd425ac0fb0ca8176f1f Mon Sep 17 00:00:00 2001 From: Roman Kelesidis Date: Thu, 13 Mar 2025 13:13:41 +0300 Subject: [PATCH] refactor: Allow registration at the specified time ($bb_cfg['new_user_reg_restricted']) --- library/config.php | 8 ++++++-- library/includes/ucp/register.php | 20 +++++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/library/config.php b/library/config.php index d65825adb..fe0b19061 100644 --- a/library/config.php +++ b/library/config.php @@ -417,8 +417,12 @@ $bb_cfg['last_visit_update_intrv'] = 3600; // sec $bb_cfg['invalid_logins'] = 5; // Max incorrect password submits before showing captcha $bb_cfg['new_user_reg_disabled'] = false; // Disable registration of new users $bb_cfg['unique_ip'] = false; // Disallow registration from multiple IP addresses -$bb_cfg['new_user_reg_restricted'] = false; // Disallow registration in below hours -$bb_cfg['new_user_reg_interval'] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]; // Available hours +$bb_cfg['new_user_reg_restricted'] = [ // Allow registration at the time specified below + 'enabled' => false, + 'start_time' => '21:55', + 'end_time' => '07:00', + // Note: Uses board timezone +]; $bb_cfg['reg_email_activation'] = true; // Demand to activate profile by email confirmation $bb_cfg['invites_system'] = [ 'enabled' => false, diff --git a/library/includes/ucp/register.php b/library/includes/ucp/register.php index feaab65df..caf371cc7 100644 --- a/library/includes/ucp/register.php +++ b/library/includes/ucp/register.php @@ -59,9 +59,23 @@ switch ($mode) { if ($bb_cfg['new_user_reg_disabled'] || ($bb_cfg['reg_email_activation'] && !$bb_cfg['emailer']['enabled'])) { bb_die($lang['NEW_USER_REG_DISABLED']); } // Time limit - elseif ($bb_cfg['new_user_reg_restricted']) { - if (in_array(date('G'), $bb_cfg['new_user_reg_interval'], true)) { - bb_die($lang['REGISTERED_IN_TIME']); + elseif ($bb_cfg['new_user_reg_restricted']['enabled']) { + $currentTime = bb_date('H:i', friendly_date: false); + [$startHour, $startMinute] = explode(':', $bb_cfg['new_user_reg_restricted']['start_time']); + [$endHour, $endMinute] = explode(':', $bb_cfg['new_user_reg_restricted']['end_time']); + + $startTimestamp = ((int)$startHour * 3600) + ((int)$startMinute * 60); + $endTimestamp = ((int)$endHour * 3600) + ((int)$endMinute * 60); + $currentTimestamp = (int)bb_date('H', friendly_date: false) * 3600 + (int)bb_date('i', friendly_date: false) * 60; + + if ($startTimestamp <= $endTimestamp) { + if ($currentTimestamp >= $startTimestamp && $currentTimestamp <= $endTimestamp) { + bb_die($lang['REGISTERED_IN_TIME']); + } + } else { + if ($currentTimestamp >= $startTimestamp || $currentTimestamp <= $endTimestamp) { + bb_die($lang['REGISTERED_IN_TIME']); + } } } }