diff --git a/phpBB/adm/admin_forums.php b/phpBB/adm/admin_forums.php
index 3b61263482..528c124649 100644
--- a/phpBB/adm/admin_forums.php
+++ b/phpBB/adm/admin_forums.php
@@ -210,9 +210,7 @@ switch ($mode)
'forum_name' => $_POST['forum_name'],
'forum_desc' => $_POST['forum_desc'],
'forum_style' => (!empty($_POST['forum_style'])) ? intval($_POST['forum_style']) : 'NULL',
- 'enable_post_count' => (!empty($_POST['disable_post_count'])) ? 0 : 1,
'enable_icons' => (!empty($_POST['enable_icons'])) ? 1 : 0,
- 'enable_moderate' => (!empty($_POST['moderated'])) ? 1 : 0,
'enable_prune' => (!empty($_POST['prune_enable'])) ? 1 : 0,
'prune_days' => intval($_POST['prune_days']),
'prune_freq' => intval($_POST['prune_freq'])
@@ -259,7 +257,6 @@ switch ($mode)
'forum_image' => (!empty($_POST['forum_image'])) ? $_POST['forum_image'] : '',
'display_on_index' => (!empty($_POST['display_on_index'])) ? 1 : 0,
'enable_icons' => (!empty($_POST['enable_icons'])) ? 1 : 0,
- 'enable_moderate' => (!empty($_POST['moderated'])) ? 1 : 0,
'enable_prune' => (!empty($_POST['prune_enable'])) ? 1 : 0,
'prune_days' => intval($_POST['prune_days']),
'prune_freq' => intval($_POST['prune_freq']),
@@ -284,7 +281,7 @@ switch ($mode)
SET ' . $db->sql_build_array('UPDATE', $sql) . "
WHERE forum_id = $forum_id");
- trigger_error($user->lang['Forums_updated']);
+ trigger_error($user->lang['FORUM_UPDATED']);
break;
@@ -421,8 +418,6 @@ switch ($mode)
$forum_status = ITEM_UNLOCKED;
$forum_name = (!empty($_POST['forum_name'])) ? htmlspecialchars($_POST['forum_name']) : '';
- $post_count_inc = TRUE;
- $moderated = FALSE;
$enable_icons = TRUE;
$prune_enabled = '';
@@ -520,15 +515,9 @@ switch ($mode)
lang['OPTIONS'] ?>
-
- /> lang['DISABLE_POST_COUNT'] ?>
-
/> lang['ENABLE_TOPIC_ICONS']; ?>
-
- /> lang['FORUM_MODERATED']; ?>
-
0)
diff --git a/phpBB/adm/index.php b/phpBB/adm/index.php
index 55e024c61f..77433c127a 100644
--- a/phpBB/adm/index.php
+++ b/phpBB/adm/index.php
@@ -606,23 +606,40 @@ else
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-type: text/html; charset=" . $user->lang['ENCODING']);
+ $adm_url = "index.$phpEx$SID&pane=right";
+
+ /*
+ // Allows non-admin pages to link to admin pages
+ // eg: http://forums.foo.com/adm/index.php?sid=&mod=admin_forums&f=1
+ if (!empty($_GET['mod']) && preg_match('/admin_([a-z]+)/', $_GET['mod'], $m))
+ {
+ if (file_exists($phpbb_root_path . 'adm/admin_' . $m[1] . '.' . $phpEx))
+ {
+ $adm_url = 'admin_' . $m[1] . '.' . $phpEx . $SID;
+ $adm_url .= (!empty($_GET['mode'])) ? '&mode=' . htmlspecialchars($_GET['mode']) : '';
+ $adm_url .= (!empty($_GET['f'])) ? '&f=' . intval($_GET['f']) : '';
+ $adm_url .= (!empty($_GET['u'])) ? '&u=' . intval($_GET['u']) : '';
+ $adm_url .= (!empty($_GET['g'])) ? '&g=' . intval($_GET['g']) : '';
+ }
+ }
+ */
?>
-lang['Admin_title']; ?>
+lang['ADMIN_TITLE']; ?>
" name="title" noresize marginwidth="0" marginheight="0" scrolling="NO">
" name="nav" marginwidth="3" marginheight="3" scrolling="yes">
- " name="main" marginwidth="0" marginheight="0" scrolling="auto">
+
- lang['No_frames']; ?>
+ lang['NO_FRAMES']; ?>
diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php
index 017f965907..1b85242572 100644
--- a/phpBB/includes/functions_admin.php
+++ b/phpBB/includes/functions_admin.php
@@ -96,6 +96,7 @@ function get_forum_list($acl_list = 'f_list', $id_only = TRUE, $postable_only =
{
$forum_rows[] = $row;
}
+ $db->sql_freeresult();
}
$rowset = array();
@@ -110,7 +111,6 @@ function get_forum_list($acl_list = 'f_list', $id_only = TRUE, $postable_only =
$rowset[] = ($id_only) ? $row['forum_id'] : $row;
}
}
- $db->sql_freeresult();
return $rowset;
}
@@ -1506,6 +1506,8 @@ function view_log($mode, &$log, &$log_count, $limit = 0, $offset = 0, $forum_id
if (count($topic_id_list))
{
+ $topic_id_list = array_unique($topic_id_list);
+
// This query is not really needed if move_topics() updates the forum_id field, altough it's also used to determine if the topic still exists in the database
$sql = 'SELECT topic_id, forum_id
FROM ' . TOPICS_TABLE . '
diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php
index cddd1a0dda..0955bf677d 100644
--- a/phpBB/includes/functions_posting.php
+++ b/phpBB/includes/functions_posting.php
@@ -193,7 +193,7 @@ function topic_review($topic_id, $is_inline_review = false)
$forum_id = intval($row['forum_id']);
$topic_title = $row['topic_title'];
- if (!$auth->acl_get('f_read', $forum_id))
+ if (!$auth->acl_gets('f_read', 'm_', 'a_', $forum_id))
{
trigger_error($user->lang['SORRY_AUTH_READ']);
}
@@ -251,7 +251,7 @@ function topic_review($topic_id, $is_inline_review = false)
}
$template->assign_block_vars('postrow', array(
- 'MINI_POST_IMG' => $user->img('icon_post', $user->lang['POST']),
+ 'MINI_POST_IMG' => $user->img('goto_post', $user->lang['POST']),
'POSTER_NAME' => $poster,
'POST_DATE' => $user->format_date($row['post_time']),
'POST_SUBJECT' => $post_subject,
diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php
index e18abd6ce1..a8a077f6b3 100644
--- a/phpBB/includes/message_parser.php
+++ b/phpBB/includes/message_parser.php
@@ -23,14 +23,17 @@
// and parses it for attachments, html, bbcode and smilies
class parse_message
{
- var $bbcode_tpl = null;
var $message_mode = 0; // MSG_POST/MSG_PM
+ var $bbcode_tpl = null;
+ var $bbcode_uid = '';
+ var $bbcode_bitfield = 0;
+ var $bbcode_array = array();
function parse_message($message_type)
{
$this->message_mode = $message_type;
}
-
+
function parse(&$message, $html, $bbcode, $uid, $url, $smilies)
{
global $config, $db, $user;
@@ -81,7 +84,10 @@ class parse_message
}
$warn_msg .= (($warn_msg != '') ? ' ' : '') . $this->html($message, $html);
- $warn_msg .= (($warn_msg != '') ? ' ' : '') . $this->bbcode($message, $bbcode, $uid);
+ if ($bbcode)
+ {
+ //$warn_msg .= (($warn_msg != '') ? ' ' : '') . $this->bbcode(&$message);
+ }
$warn_msg .= (($warn_msg != '') ? ' ' : '') . $this->emoticons($message, $smilies);
$warn_msg .= (($warn_msg != '') ? ' ' : '') . $this->magic_url($message, $url);
@@ -109,10 +115,210 @@ class parse_message
return;
}
- function bbcode(&$message, $bbcode, $uid)
+ //
+ // bbcode()
+ //
+ function bbcode(&$message)
{
- global $config;
+ $bbcode_bitfield = str_repeat('0', 32);
+ $this->bbcode_uid = substr(md5(time()), 0, BBCODE_UID_LEN);
+ $this->bbcode_init();
+ foreach ($this->bbcode_array as $offset => $row)
+ {
+ $parse = FALSE;
+ foreach ($row as $regex => $replacement)
+ {
+ $size = strlen($message);
+ $message = preg_replace($regex, $replacement, $message);
+ if ($size != strlen($message))
+ {
+ $parse = TRUE;
+ }
+
+ $bbcode_bitfield{$offset} = ($parse) ? '1' : '0';
+ }
+ }
+ $this->bbcode_bitfield = bindec(strrev($bbcode_bitfield));
+ }
+
+ function bbcode_init()
+ {
+ if (!empty($this->bbcode_array))
+ {
+ return;
+ }
+
+ // always encode the [code] tag first
+ $this->bbcode_array = array(
+ 8 => array('#\[code\](.+\[/code\])#ise' => '$this->bbcode_code("\1")'),
+ 10 => array('#\[email(=.*?)?\](.*?)\[/email\]#ise' => '$this->validate_email("\1", "\2")'),
+ 9 => array('#\[list(=[a-z|0-1]+)?\].*\[/list\]#ise' => '$this->bbcode_list("\0")'),
+ 7 => array('#\[u\](.*?)\[/u\]#is' => '\1 '),
+ 6 => array('!\[color=(#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/color\]!is' => '\2 '),
+ 5 => array('#\[size=([\-\+]?[1-2]?[0-9])\](.*?)\[/size\]#is' => '\2 '),
+ 4 => array('#\[img\](https?://)([a-z0-9\-\.,\?!%\*_:;~\\&$@/=\+]+)\[/img\]#i'
+ => '[img:' . $this->bbcode_uid . ']\1\2[/img:' . $this->bbcode_uid . ']'),
+ 3 => array('#\[url=?(.*?)?\](.*?)\[/url\]#ise' => '$this->validate_url("\1", "\2")'),
+ 2 => array('#\[i\](.*?)\[/i\]#is' => '\1 '),
+ 1 => array('#\[b\](.*?)\[/b\]#is' => '\1 '),
+ 0 => array('#\[quote(=".*?")?\](.*?)\[/quote\]#is' => '[quote:' . $this->bbcode_uid . '\1]\2[/quote:' . $this->bbcode_uid . ']')
+ );
+
+ /*
+ global $db;
+ $result = $db->sql_query('SELECT bbcode_id, first_pass_regexp, first_pass_replacement FROM ' . BBCODES_TABLE);
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $this->bbcode_array[$row['bbcode_id']] = array($row['first_pass_regexp'] => $row['first_pass_replacement']);
+ }
+ */
+ }
+
+ // bbcode_code()
+ function bbcode_code($in)
+ {
+ $str_from = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}', '.', '@');
+ $str_to = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}', '.', '@');
+
+ $in = stripslashes($in);
+ $out = '';
+
+ do
+ {
+// echo "$in ";
+
+ $pos = strpos($in, '[/code]') + 7;
+ $buffer = substr($in, 0, $pos);
+ $in = substr($in, $pos);
+
+ while ($in)
+ {
+ $pos = strpos($in, '[/code]') + 7;
+ $sub_buffer = substr($in, 0, $pos);
+
+ if (preg_match('#\[code\]#i', $sub_buffer))
+ {
+ break;
+ }
+ else
+ {
+ $in = substr($in, $pos);
+ $buffer .= $sub_buffer;
+ }
+ }
+
+ $buffer = substr($buffer, 0, -7);
+ $out .= '[code:' . $this->bbcode_uid . ']' . str_replace($str_from, $str_to, $buffer) . '[/code:' . $this->bbcode_uid . ']';
+
+ $pos = strpos($in, '[code]');
+ if ($pos !== FALSE)
+ {
+ $out .= substr($in, 0, $pos);
+ $in = substr($in, $pos + 6);
+ }
+ }
+ while ($in);
+
+ return $out;
+ }
+
+ //
+ // bbcode_list()
+ //
+ function bbcode_list($in)
+ {
+ $tok = ']';
+ $out = '[';
+ $in = stripslashes($in);
+ $in = substr($in, 1);
+ $close_tags = array();
+
+ do
+ {
+ $pos = strlen($in);
+ for ($i = 0; $i < strlen($tok); ++$i)
+ {
+ $tmp_pos = strpos($in, $tok{$i});
+ if ($tmp_pos !== FALSE && $tmp_pos < $pos)
+ {
+ $pos = $tmp_pos;
+ }
+ }
+
+ $buffer = substr($in, 0, $pos);
+ $tok = $in{$pos};
+ $in = substr($in, $pos + 1);
+
+ //echo "$pos $buffer $tok $in $out \n";
+ if ($tok == ']')
+ {
+ if ($buffer == '/list' && count($close_tags))
+ {
+ $tag = array_pop($close_tags);
+ $out .= $tag;
+ $tok = '[';
+ }
+ elseif (preg_match('/list(=?(?:[0-9]|[a-z]|))/i', $buffer, $m))
+ {
+ array_push($close_tags, (($m[1]) ? '/list:o:' . $this->bbcode_uid . ']' : '/list:u:' . $this->bbcode_uid . ']'));
+ $out .= $buffer . ':' . $this->bbcode_uid . ']';
+ $tok = '[';
+ }
+ else
+ {
+ if ($buffer == '*' && count($close_tags))
+ {
+ $buffer = '*:' . $this->bbcode_uid;
+ }
+
+ $out .= $buffer . $tok;
+ $tok = '[]';
+ }
+ }
+ else
+ {
+ $out .= $buffer . $tok;
+ $tok = ($tok == '[') ? ']' : '[]';
+ }
+ }
+ while ($in);
+
+ // Close tags left = some tags still open
+ if (count($close_tags))
+ {
+ $out .= '[' . implode('[', $close_tags);
+ }
+
+ return $out;
+ }
+
+ //
+ // TODO: validate_email() and validate_url()
+ //
+ function validate_email($var1, $var2)
+ {
+ $retval = '[email' . $var1 . ':' . $this->bbcode_uid . ']' . $var2 . '[/email:' . $this->bbcode_uid . ']';
+ return $retval;
+ }
+
+ function validate_url($var1, $var2)
+ {
+ $url = (empty($var1)) ? stripslashes($var2) : stripslashes($var1);
+
+ //
+ // Put validation regexps here
+ //
+ $valid = FALSE;
+ if (preg_match('!^http://!i', $url))
+ {
+ $valid = TRUE;
+ }
+ if ($valid)
+ {
+ return (empty($var1)) ? '[url:' . $this->bbcode_uid . ']' . $url . '[/url:' . $this->bbcode_uid . ']' : "[url=$url:" . $this->bbcode_uid . ']' . $var2 . '[/url:' . $this->bbcode_uid . ']';
+ }
+ return '[url' . $var1 . ']' . $var2 . '[/url]';
}
// Replace magic urls of form http://xxx.xxx., www.xxx. and xxx@xxx.xxx.
diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php
index 102ecd46b6..50af672441 100644
--- a/phpBB/includes/session.php
+++ b/phpBB/includes/session.php
@@ -181,15 +181,16 @@ 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, ban_give_reason, ban_end
- FROM ' . BANLIST_TABLE . '
- WHERE ban_end >= ' . time() . '
- OR ban_end = 0';
+ $sql = "SELECT ban_ip, ban_userid, ban_email, ban_exclude
+ FROM " . BANLIST_TABLE . "
+ WHERE ban_end >= $current_time
+ OR ban_end = 0";
$result = $db->sql_query($sql);
if ($row = $db->sql_fetchrow($result))
@@ -217,17 +218,10 @@ class session
if ($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);
+ // TODO
+ // Note that at present this doesn't surround the administrator
+ // text with an appropriate URL
+ trigger_error('BOARD_BANNED');
}
}
@@ -396,7 +390,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 = $config['board_dst'] * 3600;
+ $this->dst = 0;
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
@@ -515,8 +509,6 @@ 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
@@ -571,6 +563,7 @@ class auth
// Look up an option
function acl_get($opt, $f = 0)
{
+ return TRUE;
static $cache;
if (!isset($cache[$f][$opt]))
@@ -585,7 +578,7 @@ class auth
}
}
- return ($this->founder) ? true : $cache[$f][$opt];
+ return $cache[$f][$opt];
}
function acl_gets()
diff --git a/phpBB/posting.php b/phpBB/posting.php
index 845411be7f..b3e1f7dcfd 100644
--- a/phpBB/posting.php
+++ b/phpBB/posting.php
@@ -107,6 +107,7 @@ $topic_fields = array('topic_status' => 'i', 'topic_first_post_id' => 'i', 'topi
$post_fields = array('post_time' => 'i', 'poster_id' => 'i', 'post_username' => 's', 'post_text' => 's', 'post_subject' => 's', 'post_checksum' => 's', 'post_attachment' => 'i', 'bbcode_uid' => 's', 'enable_magic_url' => 'i', 'enable_sig' => 'i', 'enable_smilies' => 'i', 'enable_bbcode' => 'i');
+$sql = '';
switch ($mode)
{
case 'post':
diff --git a/phpBB/templates/subSilver/mcp_forum.html b/phpBB/templates/subSilver/mcp_forum.html
index 2ad5b04f3f..09a7734848 100644
--- a/phpBB/templates/subSilver/mcp_forum.html
+++ b/phpBB/templates/subSilver/mcp_forum.html
@@ -1,17 +1,18 @@
+
-
-
-
+
\ No newline at end of file
diff --git a/phpBB/templates/subSilver/mcp_foruminfo.html b/phpBB/templates/subSilver/mcp_foruminfo.html
new file mode 100644
index 0000000000..83ba17b960
--- /dev/null
+++ b/phpBB/templates/subSilver/mcp_foruminfo.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpBB/templates/subSilver/mcp_front.html b/phpBB/templates/subSilver/mcp_front.html
index 8240449ae6..ae7a9d944d 100644
--- a/phpBB/templates/subSilver/mcp_front.html
+++ b/phpBB/templates/subSilver/mcp_front.html
@@ -1,6 +1,7 @@
+
{L_LATEST_UNAPPROVED}
@@ -22,10 +23,10 @@
- {L_UNAPPROVED_TOTAL}
+ {L_UNAPPROVED_POSTS_ZERO_TOTAL}
-
+
{L_UNAPPROVED_TOTAL}
@@ -33,7 +34,9 @@
+
+
{L_LATEST_REPORTED}
@@ -45,28 +48,30 @@
{L_REPORTER}
{L_REPORT_TIME}
-
+
- {reported.FORUM}
- {reported.TOPIC}
- {reported.SUBJECT}
- {reported.REPORTER}
- {reported.REPORT_TIME}
+ {report.FORUM}
+ {report.TOPIC}
+ {report.SUBJECT}
+ {report.REPORTER}
+ {report.REPORT_TIME}
- {L_REPORTED_TOTAL}
+ {L_REPORTS_ZERO_TOTAL}
-
-
+
+
- {L_REPORTED_TOTAL}
+ {L_REPORTS_TOTAL}
+
+
{L_LATEST_LOGS}
@@ -94,6 +99,7 @@
+
diff --git a/phpBB/templates/subSilver/mcp_header.html b/phpBB/templates/subSilver/mcp_header.html
index 0e302a63f0..86958767a7 100644
--- a/phpBB/templates/subSilver/mcp_header.html
+++ b/phpBB/templates/subSilver/mcp_header.html
@@ -6,7 +6,6 @@ function marklist(status)
{
for (i = 0; i < document.forms['main'].length; i++)
{
- // NOTE: all forms in MCP do not have the same name at present
document.forms['main'].elements[i].checked = status;
}
}
diff --git a/phpBB/templates/subSilver/mcp_jumpbox.html b/phpBB/templates/subSilver/mcp_jumpbox.html
new file mode 100644
index 0000000000..8367d2504f
--- /dev/null
+++ b/phpBB/templates/subSilver/mcp_jumpbox.html
@@ -0,0 +1,10 @@
+{L_JUMP_TO}:
+
+{L_ALL_FORUMS}
+
+{L_SELECT_FORUM}
+
+ class="greyed"{options.SELECTED}/>{options.TEXT}
+
+
+
\ No newline at end of file
diff --git a/phpBB/templates/subSilver/mcp_move.html b/phpBB/templates/subSilver/mcp_move.html
index 0bcbdc2e4d..23e30c8cb4 100644
--- a/phpBB/templates/subSilver/mcp_move.html
+++ b/phpBB/templates/subSilver/mcp_move.html
@@ -1,13 +1,15 @@
+
-
+
+{S_HIDDEN_FIELDS}
-
+
- {L_MOVE}
+ {L_MODE_TITLE}
-
+
{L_IP_INFO}
diff --git a/phpBB/templates/subSilver/mcp_viewlogs.html b/phpBB/templates/subSilver/mcp_viewlogs.html
index 9a4e214a63..5a733becb7 100644
--- a/phpBB/templates/subSilver/mcp_viewlogs.html
+++ b/phpBB/templates/subSilver/mcp_viewlogs.html
@@ -1,7 +1,7 @@
-
+