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.',