From 6e3908893d90d5490ff188de53a8edd73f528606 Mon Sep 17 00:00:00 2001 From: "Paul S. Owen" Date: Mon, 31 Mar 2003 21:47:10 +0000 Subject: [PATCH] Improve feedback for banned users git-svn-id: file:///svn/phpbb/trunk@3769 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/session.php | 32 ++++++++++++++++---------- phpBB/install/schemas/mysql_schema.sql | 3 ++- phpBB/language/en/lang_main.php | 5 +++- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php index 60e28f490e..102ecd46b6 100644 --- a/phpBB/includes/session.php +++ b/phpBB/includes/session.php @@ -181,16 +181,15 @@ class session $autologin = ''; $this->data['user_id'] = $user_id = ANONYMOUS; } - - // Is user banned? Are they excluded? + if (!$this->data['user_founder']) { $banned = false; - $sql = "SELECT ban_ip, ban_userid, ban_email, ban_exclude - FROM " . BANLIST_TABLE . " - WHERE ban_end >= $current_time - OR ban_end = 0"; + $sql = 'SELECT ban_ip, ban_userid, ban_email, ban_exclude, ban_give_reason, ban_end + FROM ' . BANLIST_TABLE . ' + WHERE ban_end >= ' . time() . ' + OR ban_end = 0'; $result = $db->sql_query($sql); if ($row = $db->sql_fetchrow($result)) @@ -218,10 +217,17 @@ class session if ($banned) { - // TODO - // Note that at present this doesn't surround the administrator - // text with an appropriate URL - trigger_error('BOARD_BANNED'); + // Initiate environment ... since it won't be set at this stage + $this->setup(); + + // Determine which message to output + $till_date = (!empty($row['ban_end'])) ? $this->format_date($row['ban_end']) : ''; + $message = (!empty($row['ban_end'])) ? 'BOARD_BAN_TIME' : 'BOARD_BAN_PERM'; + + $message = sprintf($this->lang[$message], $till_date, '', ''); + // More internal HTML ... :D + $message .= (!empty($row['ban_show_reason'])) ? '

' . sprintf($this->lang['BOARD_BAN_REASON'], $row['ban_show_reason']) : ''; + trigger_error($message); } } @@ -390,7 +396,7 @@ class user extends session $this->lang_path = $phpbb_root_path . 'language/' . $this->lang_name . '/'; $this->date_format = $config['default_dateformat']; $this->timezone = $config['board_timezone'] * 3600; - $this->dst = 0; + $this->dst = $config['board_dst'] * 3600; if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { @@ -509,6 +515,8 @@ class auth { global $db, $cache; + $this->founder = ($userdata['user_founder']) ? true : false; + if (!($this->acl_options = $cache->get('acl_options'))) { $sql = "SELECT auth_value, is_global, is_local @@ -577,7 +585,7 @@ class auth } } - return $cache[$f][$opt]; + return ($this->founder) ? true : $cache[$f][$opt]; } function acl_gets() diff --git a/phpBB/install/schemas/mysql_schema.sql b/phpBB/install/schemas/mysql_schema.sql index d367313341..35f8a6d2bd 100644 --- a/phpBB/install/schemas/mysql_schema.sql +++ b/phpBB/install/schemas/mysql_schema.sql @@ -123,7 +123,8 @@ CREATE TABLE phpbb_banlist ( ban_start int(11), ban_end int(11), ban_exclude tinyint(1) DEFAULT '0' NOT NULL, - ban_reason varchar(255), + ban_reason varchar(255), + ban_give_reason varchar(255), PRIMARY KEY (ban_id) ); diff --git a/phpBB/language/en/lang_main.php b/phpBB/language/en/lang_main.php index 30c3655565..869a8c600a 100644 --- a/phpBB/language/en/lang_main.php +++ b/phpBB/language/en/lang_main.php @@ -119,7 +119,10 @@ $lang = array( 'BOARD_DISABLE' => 'Sorry but this board is currently unavailable', 'BOARD_UNAVAILABLE' => 'Sorry but the board is temporarily unavailable, please try again in a few minutes', - 'BOARD_BANNED' => 'You have been banned from this forum
Please contact the %sboard administrator%s for more information', + 'BOARD_BAN_TIME' => 'You have been banned from this board until %1$s.

Please contact the %2$sBoard Administrator%3$s for more information.', + 'BOARD_BAN_PERM' => 'You have been permanently banned from this board.

Please contact the %2$sBoard Administrator%3$s for more information.', + 'BOARD_BAN_REASON' => 'Reason given for ban: %s', + 'EMAIL_DISABLED' => 'Sorry but all emailing functions have been disabled.',