refactor: Allow registration at the specified time ($bb_cfg['new_user_reg_restricted'])

This commit is contained in:
Roman Kelesidis 2025-03-13 13:13:41 +03:00
commit 997939d4d1
2 changed files with 23 additions and 5 deletions

View file

@ -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,

View file

@ -59,10 +59,24 @@ 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)) {
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']);
}
}
}
}