You are viewing the MafiaScum.net Wiki. To play the game, visit the forum.

MafiaWiki:Sandbox: Difference between revisions

From MafiaWiki
Jump to navigation Jump to search
(viewtopic)
(common)
Line 6: Line 6:
/**
/**
*
*
* @package phpBB3
* common [English]
* @version $Id: viewtopic.php 10510 2010-02-20 00:15:35Z toonarmy $
*
* @package language
* @version $Id: common.php 10441 2010-01-25 15:57:10Z nickvergessen $
* @copyright (c) 2005 phpBB Group
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
Line 14: Line 16:


/**
/**
* @ignore
* DO NOT CHANGE
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
 
// Start session management
$user->session_begin();
$auth->acl($user->data);
 
// Initial var setup
$forum_id = request_var('f', 0);
$topic_id = request_var('t', 0);
$post_id = request_var('p', 0);
$voted_id = request_var('vote_id', array('' => 0));
 
$voted_id = (sizeof($voted_id) > 1) ? array_unique($voted_id) : $voted_id;
 
 
$start = request_var('start', 0);
$view = request_var('view', '');
 
$default_sort_days = (!empty($user->data['user_post_show_days'])) ? $user->data['user_post_show_days'] : 0;
$default_sort_key = (!empty($user->data['user_post_sortby_type'])) ? $user->data['user_post_sortby_type'] : 't';
$default_sort_dir = (!empty($user->data['user_post_sortby_dir'])) ? $user->data['user_post_sortby_dir'] : 'a';
 
$sort_days = request_var('st', $default_sort_days);
$sort_key = request_var('sk', $default_sort_key);
$sort_dir = request_var('sd', $default_sort_dir);
 
$update = request_var('update', false);
 
$s_can_vote = false;
/**
* @todo normalize?
*/
*/
$hilit_words = request_var('hilit', '', true);
if (!defined('IN_PHPBB'))
 
// Do we have a topic or post id?
if (!$topic_id && !$post_id)
{
trigger_error('NO_TOPIC');
}
 
// Find topic id if user requested a newer or older topic
if ($view && !$post_id)
{
if (!$forum_id)
{
$sql = 'SELECT forum_id
FROM ' . TOPICS_TABLE . "
WHERE topic_id = $topic_id";
$result = $db->sql_query($sql);
$forum_id = (int) $db->sql_fetchfield('forum_id');
$db->sql_freeresult($result);
 
if (!$forum_id)
{
trigger_error('NO_TOPIC');
}
}
 
if ($view == 'unread')
{
// Get topic tracking info
$topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id);
 
$topic_last_read = (isset($topic_tracking_info[$topic_id])) ? $topic_tracking_info[$topic_id] : 0;
 
$sql = 'SELECT post_id, topic_id, forum_id
FROM ' . POSTS_TABLE . "
WHERE topic_id = $topic_id
" . (($auth->acl_get('m_approve', $forum_id)) ? '' : 'AND post_approved = 1') . "
AND post_time > $topic_last_read
AND forum_id = $forum_id
ORDER BY post_time ASC";
$result = $db->sql_query_limit($sql, 1);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
 
if (!$row)
{
$sql = 'SELECT topic_last_post_id as post_id, topic_id, forum_id
FROM ' . TOPICS_TABLE . '
WHERE topic_id = ' . $topic_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}
 
if (!$row)
{
// Setup user environment so we can process lang string
$user->setup('viewtopic');
 
trigger_error('NO_TOPIC');
}
 
$post_id = $row['post_id'];
$topic_id = $row['topic_id'];
}
else if ($view == 'next' || $view == 'previous')
{
$sql_condition = ($view == 'next') ? '>' : '<';
$sql_ordering = ($view == 'next') ? 'ASC' : 'DESC';
 
$sql = 'SELECT forum_id, topic_last_post_time
FROM ' . TOPICS_TABLE . '
WHERE topic_id = ' . $topic_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
 
if (!$row)
{
$user->setup('viewtopic');
// OK, the topic doesn't exist. This error message is not helpful, but technically correct.
trigger_error(($view == 'next') ? 'NO_NEWER_TOPICS' : 'NO_OLDER_TOPICS');
}
else
{
$sql = 'SELECT topic_id, forum_id
FROM ' . TOPICS_TABLE . '
WHERE forum_id = ' . $row['forum_id'] . "
AND topic_moved_id = 0
AND topic_last_post_time $sql_condition {$row['topic_last_post_time']}
" . (($auth->acl_get('m_approve', $row['forum_id'])) ? '' : 'AND topic_approved = 1') . "
ORDER BY topic_last_post_time $sql_ordering";
$result = $db->sql_query_limit($sql, 1);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
 
if (!$row)
{
$user->setup('viewtopic');
trigger_error(($view == 'next') ? 'NO_NEWER_TOPICS' : 'NO_OLDER_TOPICS');
}
else
{
$topic_id = $row['topic_id'];
 
// Check for global announcement correctness?
if (!$row['forum_id'] && !$forum_id)
{
trigger_error('NO_TOPIC');
}
else if ($row['forum_id'])
{
$forum_id = $row['forum_id'];
}
}
}
}
 
// Check for global announcement correctness?
if ((!isset($row) || !$row['forum_id']) && !$forum_id)
{
trigger_error('NO_TOPIC');
}
else if (isset($row) && $row['forum_id'])
{
$forum_id = $row['forum_id'];
}
}
 
// This rather complex gaggle of code handles querying for topics but
// also allows for direct linking to a post (and the calculation of which
// page the post is on and the correct display of viewtopic)
$sql_array = array(
'SELECT' => 't.*, f.*',
 
'FROM' => array(FORUMS_TABLE => 'f'),
);
 
// Firebird handles two columns of the same name a little differently, this
// addresses that by forcing the forum_id to come from the forums table.
if ($db->sql_layer === 'firebird')
{
{
$sql_array['SELECT'] = 'f.forum_id AS forum_id, ' . $sql_array['SELECT'];
exit;
}
}


// The FROM-Order is quite important here, else t.* columns can not be correctly bound.
if (empty($lang) || !is_array($lang))
if ($post_id)
{
{
$sql_array['SELECT'] .= ', p.post_approved';
$lang = array();
$sql_array['FROM'][POSTS_TABLE] = 'p';
}
}


// Topics table need to be the last in the chain
// DEVELOPERS PLEASE NOTE
$sql_array['FROM'][TOPICS_TABLE] = 't';
//
 
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
if ($user->data['is_registered'])
//
{
// Placeholders can now contain order information, e.g. instead of
$sql_array['SELECT'] .= ', tw.notify_status';
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
$sql_array['LEFT_JOIN'] = array();
// translators to re-order the output of data while ensuring it remains correct
 
//
$sql_array['LEFT_JOIN'][] = array(
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
'FROM' => array(TOPICS_WATCH_TABLE => 'tw'),
// equally where a string contains only two placeholders which are used to wrap text
'ON' => 'tw.user_id = ' . $user->data['user_id'] . ' AND t.topic_id = tw.topic_id'
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
);
//
 
// Some characters you may want to copy&paste:
if ($config['allow_bookmarks'])
// ’ » “ ” …
{
$sql_array['SELECT'] .= ', bm.topic_id as bookmarked';
$sql_array['LEFT_JOIN'][] = array(
'FROM' => array(BOOKMARKS_TABLE => 'bm'),
'ON' => 'bm.user_id = ' . $user->data['user_id'] . ' AND t.topic_id = bm.topic_id'
);
}
 
if ($config['load_db_lastread'])
{
$sql_array['SELECT'] .= ', tt.mark_time, ft.mark_time as forum_mark_time';
 
$sql_array['LEFT_JOIN'][] = array(
'FROM' => array(TOPICS_TRACK_TABLE => 'tt'),
'ON' => 'tt.user_id = ' . $user->data['user_id'] . ' AND t.topic_id = tt.topic_id'
);
 
$sql_array['LEFT_JOIN'][] = array(
'FROM' => array(FORUMS_TRACK_TABLE => 'ft'),
'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND t.forum_id = ft.forum_id'
);
}
}
 
if (!$post_id)
{
$sql_array['WHERE'] = "t.topic_id = $topic_id";
}
else
{
$sql_array['WHERE'] = "p.post_id = $post_id AND t.topic_id = p.topic_id";
}
 
$sql_array['WHERE'] .= ' AND (f.forum_id = t.forum_id';
 
if (!$forum_id)
{
// If it is a global announcement make sure to set the forum id to a postable forum
$sql_array['WHERE'] .= ' OR (t.topic_type = ' . POST_GLOBAL . '
AND f.forum_type = ' . FORUM_POST . ')';
}
else
{
$sql_array['WHERE'] .= ' OR (t.topic_type = ' . POST_GLOBAL . "
AND f.forum_id = $forum_id)";
}
 
$sql_array['WHERE'] .= ')';
 
// Join to forum table on topic forum_id unless topic forum_id is zero
// whereupon we join on the forum_id passed as a parameter ... this
// is done so navigation, forum name, etc. remain consistent with where
// user clicked to view a global topic
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query($sql);
$topic_data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
 
// link to unapproved post or incorrect link
if (!$topic_data)
{
// If post_id was submitted, we try at least to display the topic as a last resort...
if ($post_id && $topic_id)
{
redirect(append_sid("{$phpbb_root_path}viewtopic.$phpEx", "t=$topic_id" . (($forum_id) ? "&amp;f=$forum_id" : '')));
}
 
trigger_error('NO_TOPIC');
}
 
$forum_id = (int) $topic_data['forum_id'];
// This is for determining where we are (page)
if ($post_id)
{
// are we where we are supposed to be?
if (!$topic_data['post_approved'] && !$auth->acl_get('m_approve', $topic_data['forum_id']))
{
// If post_id was submitted, we try at least to display the topic as a last resort...
if ($topic_id)
{
redirect(append_sid("{$phpbb_root_path}viewtopic.$phpEx", "t=$topic_id" . (($forum_id) ? "&amp;f=$forum_id" : '')));
}
 
trigger_error('NO_TOPIC');
}
if ($post_id == $topic_data['topic_first_post_id'] || $post_id == $topic_data['topic_last_post_id'])
{
$check_sort = ($post_id == $topic_data['topic_first_post_id']) ? 'd' : 'a';
 
if ($sort_dir == $check_sort)
{
$topic_data['prev_posts'] = ($auth->acl_get('m_approve', $forum_id)) ? $topic_data['topic_replies_real'] : $topic_data['topic_replies'];
}
else
{
$topic_data['prev_posts'] = 0;
}
}
else
{
$sql = 'SELECT COUNT(p1.post_id) AS prev_posts
FROM ' . POSTS_TABLE . ' p1, ' . POSTS_TABLE . " p2
WHERE p1.topic_id = {$topic_data['topic_id']}
AND p2.post_id = {$post_id}
" . ((!$auth->acl_get('m_approve', $forum_id)) ? 'AND p1.post_approved = 1' : '') . '
AND ' . (($sort_dir == 'd') ? 'p1.post_time >= p2.post_time' : 'p1.post_time <= p2.post_time');
 
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
 
$topic_data['prev_posts'] = $row['prev_posts'] - 1;
}
}
 
$topic_id = (int) $topic_data['topic_id'];
//
//
$topic_replies = ($auth->acl_get('m_approve', $forum_id)) ? $topic_data['topic_replies_real'] : $topic_data['topic_replies'];
// Check sticky/announcement time limit
if (($topic_data['topic_type'] == POST_STICKY || $topic_data['topic_type'] == POST_ANNOUNCE) && $topic_data['topic_time_limit'] && ($topic_data['topic_time'] + $topic_data['topic_time_limit']) < time())
{
$sql = 'UPDATE ' . TOPICS_TABLE . '
SET topic_type = ' . POST_NORMAL . ', topic_time_limit = 0
WHERE topic_id = ' . $topic_id;
$db->sql_query($sql);
$topic_data['topic_type'] = POST_NORMAL;
$topic_data['topic_time_limit'] = 0;
}
// Setup look and feel
$user->setup('viewtopic', $topic_data['forum_style']);
if (!$topic_data['topic_approved'] && !$auth->acl_get('m_approve', $forum_id))
{
trigger_error('NO_TOPIC');
}
// Start auth check
if (!$auth->acl_get('f_read', $forum_id))
{
if ($user->data['user_id'] != ANONYMOUS)
{
trigger_error('SORRY_AUTH_READ');
}


login_box('', $user->lang['LOGIN_VIEWFORUM']);
$lang = array_merge($lang, array(
}
'TRANSLATION_INFO' => '',
 
'DIRECTION' => 'ltr',
// Forum is passworded ... check whether access has been granted to this
'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled)
// user this session, if not show login box
'USER_LANG' => 'en-gb',
if ($topic_data['forum_password'])
{
login_forum_box($topic_data);
}


// Redirect to login or to the correct post upon emailed notification links
'1_DAY' => '1 day',
if (isset($_GET['e']))
'1_MONTH' => '1 month',
{
'1_YEAR' => '1 year',
$jump_to = request_var('e', 0);
'2_WEEKS' => '2 weeks',
'3_MONTHS' => '3 months',
'6_MONTHS' => '6 months',
'7_DAYS' => '7 days',


$redirect_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id");
'ACCOUNT_ALREADY_ACTIVATED' => 'Your account has already been activated.',
'ACCOUNT_DEACTIVATED' => 'Your account has been manually deactivated and is only able to be reactivated by an administrator.',
'ACCOUNT_NOT_ACTIVATED' => 'Your account has not been activated yet.',
'ACP' => 'Administration Control Panel',
'ACTIVE' => 'active',
'ACTIVE_ERROR' => 'The specified username is currently inactive. If you have problems activating your account, please contact a board administrator.',
'ADMINISTRATOR' => 'Administrator',
'ADMINISTRATORS' => 'Administrators',
'AGE' => 'Age',
'AIM' => 'AIM',
'ALLOWED' => 'Allowed',
'ALL_FILES' => 'All files',
'ALL_FORUMS' => 'All forums',
'ALL_MESSAGES' => 'All messages',
'ALL_POSTS' => 'All posts',
'ALL_TIMES' => 'All times are %1$s %2$s',
'ALL_TOPICS' => 'All Topics',
'AND' => 'And',
'ARE_WATCHING_FORUM' => 'You have subscribed to be notified of new posts in this forum.',
'ARE_WATCHING_TOPIC' => 'You have subscribed to be notified of new posts in this topic.',
'ASCENDING' => 'Ascending',
'ATTACHMENTS' => 'Attachments',
'ATTACHED_IMAGE_NOT_IMAGE' => 'The image file you tried to attach is invalid.',
'AUTHOR' => 'Author',
'AUTH_NO_PROFILE_CREATED' => 'The creation of a user profile was unsuccessful.',
'AVATAR_DISALLOWED_CONTENT' => 'The upload was rejected because the uploaded file was identified as a possible attack vector.',
'AVATAR_DISALLOWED_EXTENSION' => 'This file cannot be displayed because the extension <strong>%s</strong> is not allowed.',
'AVATAR_EMPTY_REMOTE_DATA' => 'The specified avatar could not be uploaded because the remote data appears to be invalid or corrupted.',
'AVATAR_EMPTY_FILEUPLOAD' => 'The uploaded avatar file is empty.',
'AVATAR_INVALID_FILENAME' => '%s is an invalid filename.',
'AVATAR_NOT_UPLOADED' => 'Avatar could not be uploaded.',
'AVATAR_NO_SIZE' => 'The width or height of the linked avatar could not be determined. Please enter them manually.',
'AVATAR_PARTIAL_UPLOAD' => 'The specified file was only partially uploaded.',
'AVATAR_PHP_SIZE_NA' => 'The avatar’s filesize is too large.<br />The maximum allowed filesize set in php.ini could not be determined.',
'AVATAR_PHP_SIZE_OVERRUN' => 'The avatar’s filesize is too large. The maximum allowed upload size is %1$d %2$s.<br />Please note this is set in php.ini and cannot be overridden.',
'AVATAR_URL_INVALID' => 'The URL you specified is invalid.',
'AVATAR_URL_NOT_FOUND' => 'The file specified could not be found.',
'AVATAR_WRONG_FILESIZE' => 'The avatar’s filesize must be between 0 and %1d %2s.',
'AVATAR_WRONG_SIZE' => 'The submitted avatar is %5$d pixels wide and %6$d pixels high. Avatars must be at least %1$d pixels wide and %2$d pixels high, but no larger than %3$d pixels wide and %4$d pixels high.',


if ($user->data['user_id'] == ANONYMOUS)
'BACK_TO_TOP' => 'Top',
{
'BACK_TO_PREV' => 'Back to previous page',
login_box($redirect_url . "&amp;p=$post_id&amp;e=$jump_to", $user->lang['LOGIN_NOTIFY_TOPIC']);
'BAN_TRIGGERED_BY_EMAIL'=> 'A ban has been issued on your e-mail address.',
}
'BAN_TRIGGERED_BY_IP' => 'A ban has been issued on your IP address.',
'BAN_TRIGGERED_BY_USER' => 'A ban has been issued on your username.',
'BBCODE_GUIDE' => 'BBCode guide',
'BCC' => 'BCC',
'BIRTHDAYS' => 'Birthdays',
'BOARD_BAN_PERM' => 'You have been <strong>permanently</strong> banned from this board.<br /><br />Please contact the %2$sBoard Administrator%3$s for more information.',
'BOARD_BAN_REASON' => 'Reason given for ban: <strong>%s</strong>',
'BOARD_BAN_TIME' => 'You have been banned from this board until <strong>%1$s</strong>.<br /><br />Please contact the %2$sBoard Administrator%3$s for more information.',
'BOARD_DISABLE' => 'Sorry but this board is currently unavailable.',
'BOARD_DISABLED' => 'This board is currently disabled.',
'BOARD_UNAVAILABLE' => 'Sorry but the board is temporarily unavailable, please try again in a few minutes.',
'BROWSING_FORUM' => 'Users browsing this forum: %1$s',
'BROWSING_FORUM_GUEST' => 'Users browsing this forum: %1$s and %2$d guest',
'BROWSING_FORUM_GUESTS' => 'Users browsing this forum: %1$s and %2$d guests',
'BYTES' => 'Bytes',


if ($jump_to > 0)
'CANCEL' => 'Cancel',
{
'CHANGE' => 'Change',
// We direct the already logged in user to the correct post...
'CHANGE_FONT_SIZE' => 'Change font size',
redirect($redirect_url . ((!$post_id) ? "&amp;p=$jump_to" : "&amp;p=$post_id") . "#p$jump_to");
'CHANGING_PREFERENCES' => 'Changing board preferences',
}
'CHANGING_PROFILE' => 'Changing profile settings',
}
'CLICK_VIEW_PRIVMSG' => '%sGo to your inbox%s',
'COLLAPSE_VIEW' => 'Collapse view',
'CLOSE_WINDOW' => 'Close window',
'COLOUR_SWATCH' => 'Colour swatch',
'COMMA_SEPARATOR' => ', ', // Used in pagination of ACP & prosilver, use localised comma if appropriate, eg: Ideographic or Arabic
'CONFIRM' => 'Confirm',
'CONFIRM_CODE' => 'Confirmation code',
'CONFIRM_CODE_EXPLAIN' => 'Enter the code exactly as it appears. All letters are case insensitive, there is no zero.',
'CONFIRM_CODE_WRONG' => 'The confirmation code you entered was incorrect.',
'CONFIRM_OPERATION' => 'Are you sure you wish to carry out this operation?',
'CONGRATULATIONS' => 'Congratulations to',
'CONNECTION_FAILED' => 'Connection failed.',
'CONNECTION_SUCCESS' => 'Connection was successful!',
'COOKIES_DELETED' => 'All board cookies successfully deleted.',
'CURRENT_TIME' => 'It is currently %s',


// What is start equal to?
'DAY' => 'Day',
if ($post_id)
'DAYS' => 'Days',
{
'DELETE' => 'Delete',
$start = floor(($topic_data['prev_posts']) / $config['posts_per_page']) * $config['posts_per_page'];
'DELETE_ALL' => 'Delete all',
}
'DELETE_COOKIES' => 'Delete all board cookies',
'DELETE_MARKED' => 'Delete marked',
'DELETE_POST' => 'Delete post',
'DELIMITER' => 'Delimiter',
'DESCENDING' => 'Descending',
'DISABLED' => 'Disabled',
'DISPLAY' => 'Display',
'DISPLAY_GUESTS' => 'Display guests',
'DISPLAY_MESSAGES' => 'Display messages from previous',
'DISPLAY_POSTS' => 'Display posts from previous',
'DISPLAY_TOPICS' => 'Display topics from previous',
'DOWNLOADED' => 'Downloaded',
'DOWNLOADING_FILE' => 'Downloading file',
'DOWNLOAD_COUNT' => 'Downloaded %d time',
'DOWNLOAD_COUNTS' => 'Downloaded %d times',
'DOWNLOAD_COUNT_NONE' => 'Not downloaded yet',
'VIEWED_COUNT' => 'Viewed %d time',
'VIEWED_COUNTS' => 'Viewed %d times',
'VIEWED_COUNT_NONE' => 'Not viewed yet',


// Get topic tracking info
'EDIT_POST' => 'Edit post',
if (!isset($topic_tracking_info))
'EMAIL' => 'E-mail', // Short form for EMAIL_ADDRESS
{
'EMAIL_ADDRESS' => 'E-mail address',
$topic_tracking_info = array();
'EMAIL_SMTP_ERROR_RESPONSE' => 'Ran into problems sending e-mail at <strong>Line %1$s</strong>. Response: %2$s.',
'EMPTY_SUBJECT' => 'You must specify a subject when posting a new topic.',
'EMPTY_MESSAGE_SUBJECT' => 'You must specify a subject when composing a new message.',
'ENABLED' => 'Enabled',
'ENCLOSURE' => 'Enclosure',
'ERR_CHANGING_DIRECTORY' => 'Unable to change directory.',
'ERR_CONNECTING_SERVER' => 'Error connecting to the server.',
'ERR_JAB_AUTH' => 'Could not authorise on Jabber server.',
'ERR_JAB_CONNECT' => 'Could not connect to Jabber server.',
'ERR_UNABLE_TO_LOGIN' => 'The specified username or password is incorrect.',
'ERR_UNWATCHING' => 'An error occured while trying to unsubscribe.',
'ERR_WATCHING' => 'An error occured while trying to subscribe.',
'ERR_WRONG_PATH_TO_PHPBB' => 'The phpBB path specified appears to be invalid.',
'EXPAND_VIEW' => 'Expand view',
'EXTENSION' => 'Extension',
'EXTENSION_DISABLED_AFTER_POSTING' => 'The extension <strong>%s</strong> has been deactivated and can no longer be displayed.',


// Get topic tracking info
'FAQ' => 'FAQ',
if ($config['load_db_lastread'] && $user->data['is_registered'])
'FAQ_EXPLAIN' => 'Frequently Asked Questions',
{
'FILENAME' => 'Filename',
$tmp_topic_data = array($topic_id => $topic_data);
'FILESIZE' => 'File size',
$topic_tracking_info = get_topic_tracking($forum_id, $topic_id, $tmp_topic_data, array($forum_id => $topic_data['forum_mark_time']));
'FILEDATE' => 'File date',
unset($tmp_topic_data);
'FILE_COMMENT' => 'File comment',
}
'FILE_NOT_FOUND' => 'The requested file could not be found.',
else if ($config['load_anon_lastread'] || $user->data['is_registered'])
'FIND_USERNAME' => 'Find a member',
{
'FOLDER' => 'Folder',
$topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id);
'FORGOT_PASS' => 'I forgot my password',
}
'FORM_INVALID' => 'The submitted form was invalid. Try submitting again.',
}
'FORUM' => 'Forum',
'FORUMS' => 'Forums',
'FORUMS_MARKED' => 'All forums have been marked read.',
'FORUM_CAT' => 'Forum category',
'FORUM_INDEX' => 'Board index',
'FORUM_LINK' => 'Forum link',
'FORUM_LOCATION' => 'Forum location',
'FORUM_LOCKED' => 'Forum locked',
'FORUM_RULES' => 'Forum rules',
'FORUM_RULES_LINK' => 'Please click here to view the forum rules',
'FROM' => 'from',
'FSOCK_DISABLED' => 'The operation could not be completed because the <var>fsockopen</var> function has been disabled or the server being queried could not be found.',


// Post ordering options
'FTP_FSOCK_HOST' => 'FTP host',
$limit_days = array(0 => $user->lang['ALL_POSTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
'FTP_FSOCK_HOST_EXPLAIN' => 'FTP server used to connect your site.',
'FTP_FSOCK_PASSWORD' => 'FTP password',
'FTP_FSOCK_PASSWORD_EXPLAIN' => 'Password for your FTP username.',
'FTP_FSOCK_PORT' => 'FTP port',
'FTP_FSOCK_PORT_EXPLAIN' => 'Port used to connect to your server.',
'FTP_FSOCK_ROOT_PATH' => 'Path to phpBB',
'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'Path from the root to your phpBB board.',
'FTP_FSOCK_TIMEOUT' => 'FTP timeout',
'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'The amount of time, in seconds, that the system will wait for a reply from your server.',
'FTP_FSOCK_USERNAME' => 'FTP username',
'FTP_FSOCK_USERNAME_EXPLAIN' => 'Username used to connect to your server.',


$sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 's' => $user->lang['SUBJECT']);
'FTP_HOST' => 'FTP host',
$sort_by_sql = array('a' => array('u.username_clean', 'p.post_id'), 't' => 'p.post_time', 's' => array('p.post_subject', 'p.post_id'));
'FTP_HOST_EXPLAIN' => 'FTP server used to connect your site.',
$join_user_sql = array('a' => true, 't' => false, 's' => false);
'FTP_PASSWORD' => 'FTP password',
'FTP_PASSWORD_EXPLAIN' => 'Password for your FTP username.',
'FTP_PORT' => 'FTP port',
'FTP_PORT_EXPLAIN' => 'Port used to connect to your server.',
'FTP_ROOT_PATH' => 'Path to phpBB',
'FTP_ROOT_PATH_EXPLAIN' => 'Path from the root to your phpBB board.',
'FTP_TIMEOUT' => 'FTP timeout',
'FTP_TIMEOUT_EXPLAIN' => 'The amount of time, in seconds, that the system will wait for a reply from your server.',
'FTP_USERNAME' => 'FTP username',
'FTP_USERNAME_EXPLAIN' => 'Username used to connect to your server.',


$s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = '';
'GENERAL_ERROR' => 'General Error',
'GB' => 'GB',
'GIB' => 'GiB',
'GO' => 'Go',
'GOTO_PAGE' => 'Go to page',
'GROUP' => 'Group',
'GROUPS' => 'Groups',
'GROUP_ERR_TYPE' => 'Inappropriate group type specified.',
'GROUP_ERR_USERNAME' => 'No group name specified.',
'GROUP_ERR_USER_LONG' => 'Group names cannot exceed 60 characters. The specified group name is too long.',
'GUEST' => 'Guest',
'GUEST_USERS_ONLINE' => 'There are %d guest users online',
'GUEST_USERS_TOTAL' => '%d guests',
'GUEST_USERS_ZERO_ONLINE' => 'There are 0 guest users online',
'GUEST_USERS_ZERO_TOTAL' => '0 guests',
'GUEST_USER_ONLINE' => 'There is %d guest user online',
'GUEST_USER_TOTAL' => '%d guest',
'G_ADMINISTRATORS' => 'Administrators',
'G_BOTS' => 'Bots',
'G_GUESTS' => 'Guests',
'G_REGISTERED' => 'Registered users',
'G_REGISTERED_COPPA' => 'Registered COPPA users',
'G_GLOBAL_MODERATORS' => 'Global moderators',
'G_NEWLY_REGISTERED' => 'Newly registered users',


gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param, $default_sort_days, $default_sort_key, $default_sort_dir);
'HIDDEN_USERS_ONLINE' => '%d hidden users online',
'HIDDEN_USERS_TOTAL' => '%d hidden',
'HIDDEN_USERS_TOTAL_AND' => '%d hidden and ',
'HIDDEN_USERS_ZERO_ONLINE' => '0 hidden users online',
'HIDDEN_USERS_ZERO_TOTAL' => '0 hidden',
'HIDDEN_USERS_ZERO_TOTAL_AND' => '0 hidden and ',
'HIDDEN_USER_ONLINE' => '%d hidden user online',
'HIDDEN_USER_TOTAL' => '%d hidden',
'HIDDEN_USER_TOTAL_AND' => '%d hidden and ',
'HIDE_GUESTS' => 'Hide guests',
'HIDE_ME' => 'Hide my online status this session',
'HOURS' => 'Hours',
'HOME' => 'Home',


// Obtain correct post count and ordering SQL if user has
'ICQ' => 'ICQ',
// requested anything different
'ICQ_STATUS' => 'ICQ status',
if ($sort_days)
'IF' => 'If',
{
'IMAGE' => 'Image',
$min_post_time = time() - ($sort_days * 86400);
'IMAGE_FILETYPE_INVALID' => 'Image file type %d for mimetype %s not supported.',
'IMAGE_FILETYPE_MISMATCH' => 'Image file type mismatch: expected extension %1$s but extension %2$s given.',
'IN' => 'in',
'INDEX' => 'Index page',
'INFORMATION' => 'Information',
'INTERESTS' => 'Interests',
'INVALID_DIGEST_CHALLENGE' => 'Invalid digest challenge.',
'INVALID_EMAIL_LOG' => '<strong>%s</strong> possibly an invalid e-mail address?',
'IP' => 'IP',
'IP_BLACKLISTED' => 'Your IP %1$s has been blocked because it is blacklisted. For details please see <a href="%2$s">%2$s</a>.',


$sql = 'SELECT COUNT(post_id) AS num_posts
'JABBER' => 'Jabber',
FROM ' . POSTS_TABLE . "
'JOINED' => 'Joined',
WHERE topic_id = $topic_id
'JUMP_PAGE' => 'Enter the page number you wish to go to',
AND post_time >= $min_post_time
'JUMP_TO' => 'Jump to',
" . (($auth->acl_get('m_approve', $forum_id)) ? '' : 'AND post_approved = 1');
'JUMP_TO_PAGE' => 'Click to jump to page…',
$result = $db->sql_query($sql);
$total_posts = (int) $db->sql_fetchfield('num_posts');
$db->sql_freeresult($result);


$limit_posts_time = "AND p.post_time >= $min_post_time ";
'KB' => 'KB',
'KIB' => 'KiB',


if (isset($_POST['sort']))
'LAST_POST' => 'Last post',
{
'LAST_UPDATED' => 'Last updated',
$start = 0;
'LAST_VISIT' => 'Last visit',
}
'LDAP_NO_LDAP_EXTENSION' => 'LDAP extension not available.',
}
'LDAP_NO_SERVER_CONNECTION' => 'Could not connect to LDAP server.',
else
'LEGEND' => 'Legend',
{
'LOCATION' => 'Location',
$total_posts = $topic_replies + 1;
'LOCK_POST' => 'Lock post',
$limit_posts_time = '';
'LOCK_POST_EXPLAIN' => 'Prevent editing',
}
'LOCK_TOPIC' => 'Lock topic',
'LOGIN' => 'Login',
'LOGIN_CHECK_PM' => 'Log in to check your private messages.',
'LOGIN_CONFIRMATION' => 'Confirmation of login',
'LOGIN_CONFIRM_EXPLAIN' => 'To prevent brute forcing accounts the board requires you to enter a confirmation code after a maximum amount of failed logins. The code is displayed in the image you should see below. If you are visually impaired or cannot otherwise read this code please contact the %sBoard Administrator%s.',
'LOGIN_ERROR_ATTEMPTS' => 'You exceeded the maximum allowed number of login attempts. In addition to your username and password you now also have to enter the confirm code from the image you see below.',
'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'You have not been authenticated by Apache.',
'LOGIN_ERROR_PASSWORD' => 'You have specified an incorrect password. Please check your password and try again. If you continue to have problems please contact the %sBoard Administrator%s.',
'LOGIN_ERROR_PASSWORD_CONVERT' => 'It was not possible to convert your password when updating this bulletin board’s software. Please %srequest a new password%s. If you continue to have problems please contact the %sBoard Administrator%s.',
'LOGIN_ERROR_USERNAME' => 'You have specified an incorrect username. Please check your username and try again. If you continue to have problems please contact the %sBoard Administrator%s.',
'LOGIN_FORUM' => 'To view or post in this forum you must enter its password.',
'LOGIN_INFO' => 'In order to login you must be registered. Registering takes only a few moments but gives you increased capabilities. The board administrator may also grant additional permissions to registered users. Before you register please ensure you are familiar with our terms of use and related policies. Please ensure you read any forum rules as you navigate around the board.',
'LOGIN_VIEWFORUM' => 'The board requires you to be registered and logged in to view this forum.',
'LOGIN_EXPLAIN_EDIT' => 'In order to edit posts in this forum you have to be registered and logged in.',
'LOGIN_EXPLAIN_VIEWONLINE' => 'In order to view the online list you have to be registered and logged in.',
'LOGOUT' => 'Logout',
'LOGOUT_USER' => 'Logout [ %s ]',
'LOG_ME_IN' => 'Log me on automatically each visit',


// Was a highlight request part of the URI?
'MARK' => 'Mark',
$highlight_match = $highlight = '';
'MARK_ALL' => 'Mark all',
if ($hilit_words)
'MARK_FORUMS_READ' => 'Mark forums read',
{
'MB' => 'MB',
foreach (explode(' ', trim($hilit_words)) as $word)
'MIB' => 'MiB',
{
'MCP' => 'Moderator Control Panel',
if (trim($word))
'MEMBERLIST' => 'Members',
{
'MEMBERLIST_EXPLAIN' => 'View complete list of members',
$word = str_replace('\*', '\w+?', preg_quote($word, '#'));
'MERGE' => 'Merge',
$word = preg_replace('#(^|\s)\\\\w\*\?(\s|$)#', '$1\w+?$2', $word);
'MERGE_POSTS' => 'Merge posts',
$highlight_match .= (($highlight_match != '') ? '|' : '') . $word;
'MERGE_TOPIC' => 'Merge topic',
}
'MESSAGE' => 'Message',
}
'MESSAGES' => 'Messages',
'MESSAGE_BODY' => 'Message body',
'MINUTES' => 'Minutes',
'MODERATE' => 'Moderate',
'MODERATOR' => 'Moderator',
'MODERATORS' => 'Moderators',
'MONTH' => 'Month',
'MOVE' => 'Move',
'MSNM' => 'MSNM/WLM',


$highlight = urlencode($hilit_words);
'NA' => 'N/A',
}
'NEWEST_USER' => 'Our newest member <strong>%s</strong>',
'NEW_MESSAGE' => 'New message',
'NEW_MESSAGES' => 'New messages',
'NEW_PM' => '<strong>%d</strong> new message',
'NEW_PMS' => '<strong>%d</strong> new messages',
'NEW_POST' => 'New post',
'NEW_POSTS' => 'New posts',
'NEXT' => 'Next', // Used in pagination
'NEXT_STEP' => 'Next',
'NEVER' => 'Never',
'NO' => 'No',
'NOT_ALLOWED_MANAGE_GROUP' => 'You are not allowed to manage this group.',
'NOT_AUTHORISED' => 'You are not authorised to access this area.',
'NOT_WATCHING_FORUM' => 'You are no longer subscribed to updates on this forum.',
'NOT_WATCHING_TOPIC' => 'You are no longer subscribed to this topic.',
'NOTIFY_ADMIN' => 'Please notify the board administrator or webmaster.',
'NOTIFY_ADMIN_EMAIL' => 'Please notify the board administrator or webmaster: <a href="mailto:%1$s">%1$s</a>',
'NO_ACCESS_ATTACHMENT' => 'You are not allowed to access this file.',
'NO_ACTION' => 'No action specified.',
'NO_ADMINISTRATORS' => 'There are no administrators.',
'NO_AUTH_ADMIN' => 'Access to the Administration Control Panel is not allowed as you do not have administrative permissions.',
'NO_AUTH_ADMIN_USER_DIFFER' => 'You are not able to re-authenticate as a different user.',
'NO_AUTH_OPERATION' => 'You do not have the necessary permissions to complete this operation.',
'NO_CONNECT_TO_SMTP_HOST' => 'Could not connect to smtp host : %1$s : %2$s',
'NO_BIRTHDAYS' => 'No birthdays today',
'NO_EMAIL_MESSAGE' => 'E-mail message was blank.',
'NO_EMAIL_RESPONSE_CODE' => 'Could not get mail server response codes.',
'NO_EMAIL_SUBJECT' => 'No e-mail subject specified.',
'NO_FORUM' => 'The forum you selected does not exist.',
'NO_FORUMS' => 'This board has no forums.',
'NO_GROUP' => 'The requested usergroup does not exist.',
'NO_GROUP_MEMBERS' => 'This group currently has no members.',
'NO_IPS_DEFINED' => 'No IP addresses or hostnames defined',
'NO_MEMBERS' => 'No members found for this search criterion.',
'NO_MESSAGES' => 'No messages',
'NO_MODE' => 'No mode specified.',
'NO_MODERATORS' => 'There are no moderators.',
'NO_NEW_MESSAGES' => 'No new messages',
'NO_NEW_PM' => '<strong>0</strong> new messages',
'NO_NEW_POSTS' => 'No new posts',
'NO_ONLINE_USERS' => 'No registered users',
'NO_POSTS' => 'No posts',
'NO_POSTS_TIME_FRAME' => 'No posts exist inside this topic for the selected time frame.',
'NO_FEED_ENABLED' => 'Feeds are not available on this board.',
'NO_FEED' => 'The requested feed is not available.',
'NO_SUBJECT' => 'No subject specified', // Used for posts having no subject defined but displayed within management pages.
'NO_SUCH_SEARCH_MODULE' => 'The specified search backend doesn’t exist.',
'NO_SUPPORTED_AUTH_METHODS' => 'No supported authentication methods.',
'NO_TOPIC' => 'The requested topic does not exist.',
'NO_TOPIC_FORUM' => 'The topic or forum no longer exists.',
'NO_TOPICS' => 'There are no topics or posts in this forum.',
'NO_TOPICS_TIME_FRAME' => 'No topics exist inside this forum for the selected time frame.',
'NO_UNREAD_PM' => '<strong>0</strong> unread messages',
'NO_UPLOAD_FORM_FOUND' => 'Upload initiated but no valid file upload form found.',
'NO_USER' => 'The requested user does not exist.',
'NO_USERS' => 'The requested users do not exist.',
'NO_USER_SPECIFIED' => 'No username was specified.',


// Make sure $start is set to the last page if it exceeds the amount
// Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid.
if ($start < 0 || $start >= $total_posts)
'NUM_POSTS_IN_QUEUE' => array(
{
0 => 'No posts in queue', // 0
$start = ($start < 0) ? 0 : floor(($total_posts - 1) / $config['posts_per_page']) * $config['posts_per_page'];
1 => '1 post in queue', // 1
}
2 => '%d posts in queue', // 2+
),


// General Viewtopic URL for return links
'OCCUPATION' => 'Occupation',
$viewtopic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id&amp;start=$start" . ((strlen($u_sort_param)) ? "&amp;$u_sort_param" : '') . (($highlight_match) ? "&amp;hilit=$highlight" : ''));
'OFFLINE' => 'Offline',
'ONLINE' => 'Online',
'ONLINE_BUDDIES' => 'Online friends',
'ONLINE_USERS_TOTAL' => 'In total there are <strong>%d</strong> users online :: ',
'ONLINE_USERS_ZERO_TOTAL' => 'In total there are <strong>0</strong> users online :: ',
'ONLINE_USER_TOTAL' => 'In total there is <strong>%d</strong> user online :: ',
'OPTIONS' => 'Options',


// Are we watching this topic?
'PAGE_OF' => 'Page <strong>%1$d</strong> of <strong>%2$d</strong>',
$s_watching_topic = array(
'PASSWORD' => 'Password',
'link' => '',
'PIXEL' => 'px',
'title' => '',
'PLAY_QUICKTIME_FILE' => 'Play Quicktime file',
'is_watching' => false,
'PM' => 'PM',
);
'POSTING_MESSAGE' => 'Posting message in %s',
'POSTING_PRIVATE_MESSAGE' => 'Composing private message',
'POST' => 'Post',
'POST_ANNOUNCEMENT' => 'Announce',
'POST_STICKY' => 'Sticky',
'POSTED' => 'Posted',
'POSTED_IN_FORUM' => 'in',
'POSTED_ON_DATE' => 'on',
'POSTS' => 'Posts',
'POSTS_UNAPPROVED' => 'At least one post in this topic has not been approved.',
'POST_BY_AUTHOR' => 'by',
'POST_BY_FOE' => 'This post was made by <strong>%1$s</strong> who is currently on your ignore list. %2$sDisplay this post%3$s.',
'POST_DAY' => '%.2f posts per day',
'POST_DETAILS' => 'Post details',
'POST_NEW_TOPIC' => 'Post new topic',
'POST_PCT' => '%.2f%% of all posts',
'POST_PCT_ACTIVE' => '%.2f%% of user’s posts',
'POST_PCT_ACTIVE_OWN' => '%.2f%% of your posts',
'POST_REPLY' => 'Post a reply',
'POST_REPORTED' => 'Click to view report',
'POST_SUBJECT' => 'Post subject',
'POST_TIME' => 'Post time',
'POST_TOPIC' => 'Post a new topic',
'POST_UNAPPROVED' => 'This post is waiting for approval',
'PREVIEW' => 'Preview',
'PREVIOUS' => 'Previous', // Used in pagination
'PREVIOUS_STEP' => 'Previous',
'PRIVACY' => 'Privacy policy',
'PRIVATE_MESSAGE' => 'Private message',
'PRIVATE_MESSAGES' => 'Private messages',
'PRIVATE_MESSAGING' => 'Private messaging',
'PROFILE' => 'User Control Panel',


if (($config['email_enable'] || $config['jab_enable']) && $config['allow_topic_notify'] && $user->data['is_registered'])
'READING_FORUM' => 'Viewing topics in %s',
{
'READING_GLOBAL_ANNOUNCE' => 'Reading global announcement',
watch_topic_forum('topic', $s_watching_topic, $user->data['user_id'], $forum_id, $topic_id, $topic_data['notify_status'], $start);
'READING_LINK' => 'Following forum link %s',
'READING_TOPIC' => 'Reading topic in %s',
'READ_PROFILE' => 'Profile',
'REASON' => 'Reason',
'RECORD_ONLINE_USERS' => 'Most users ever online was <strong>%1$s</strong> on %2$s',
'REDIRECT' => 'Redirect',
'REDIRECTS' => 'Total redirects',
'REGISTER' => 'Register',
'REGISTERED_USERS' => 'Registered users:',
'REG_USERS_ONLINE' => 'There are %d registered users and ',
'REG_USERS_TOTAL' => '%d registered, ',
'REG_USERS_TOTAL_AND' => '%d registered and ',
'REG_USERS_ZERO_ONLINE' => 'There are 0 registered users and ',
'REG_USERS_ZERO_TOTAL' => '0 registered, ',
'REG_USERS_ZERO_TOTAL_AND' => '0 registered and ',
'REG_USER_ONLINE' => 'There is %d registered user and ',
'REG_USER_TOTAL' => '%d registered, ',
'REG_USER_TOTAL_AND' => '%d registered and ',
'REMOVE' => 'Remove',
'REMOVE_INSTALL' => 'Please delete, move or rename the install directory before you use your board. If this directory is still present, only the Administration Control Panel (ACP) will be accessible.',
'REPLIES' => 'Replies',
'REPLY_WITH_QUOTE' => 'Reply with quote',
'REPLYING_GLOBAL_ANNOUNCE' => 'Replying to global announcement',
'REPLYING_MESSAGE' => 'Replying to message in %s',
'REPORT_BY' => 'Report by',
'REPORT_POST' => 'Report this post',
'REPORTING_POST' => 'Reporting post',
'RESEND_ACTIVATION' => 'Resend activation e-mail',
'RESET' => 'Reset',
'RESTORE_PERMISSIONS' => 'Restore permissions',
'RETURN_INDEX' => '%sReturn to the index page%s',
'RETURN_FORUM' => '%sReturn to the forum last visited%s',
'RETURN_PAGE' => '%sReturn to the previous page%s',
'RETURN_TOPIC' => '%sReturn to the topic last visited%s',
'RETURN_TO' => 'Return to',
'FEED' => 'Feed',
'FEED_NEWS' => 'News',
'FEED_TOPICS_ACTIVE' => 'Active Topics',
'FEED_TOPICS_NEW' => 'New Topics',
'RULES_ATTACH_CAN' => 'You <strong>can</strong> post attachments in this forum',
'RULES_ATTACH_CANNOT' => 'You <strong>cannot</strong> post attachments in this forum',
'RULES_DELETE_CAN' => 'You <strong>can</strong> delete your posts in this forum',
'RULES_DELETE_CANNOT' => 'You <strong>cannot</strong> delete your posts in this forum',
'RULES_DOWNLOAD_CAN' => 'You <strong>can</strong> download attachments in this forum',
'RULES_DOWNLOAD_CANNOT' => 'You <strong>cannot</strong> download attachments in this forum',
'RULES_EDIT_CAN' => 'You <strong>can</strong> edit your posts in this forum',
'RULES_EDIT_CANNOT' => 'You <strong>cannot</strong> edit your posts in this forum',
'RULES_LOCK_CAN' => 'You <strong>can</strong> lock your topics in this forum',
'RULES_LOCK_CANNOT' => 'You <strong>cannot</strong> lock your topics in this forum',
'RULES_POST_CAN' => 'You <strong>can</strong> post new topics in this forum',
'RULES_POST_CANNOT' => 'You <strong>cannot</strong> post new topics in this forum',
'RULES_REPLY_CAN' => 'You <strong>can</strong> reply to topics in this forum',
'RULES_REPLY_CANNOT' => 'You <strong>cannot</strong> reply to topics in this forum',
'RULES_VOTE_CAN' => 'You <strong>can</strong> vote in polls in this forum',
'RULES_VOTE_CANNOT' => 'You <strong>cannot</strong> vote in polls in this forum',


// Reset forum notification if forum notify is set
'SEARCH' => 'Search',
if ($config['allow_forum_notify'] && $auth->acl_get('f_subscribe', $forum_id))
'SEARCH_MINI' => 'Search…',
{
'SEARCH_ADV' => 'Advanced search',
$s_watching_forum = $s_watching_topic;
'SEARCH_ADV_EXPLAIN' => 'View the advanced search options',
watch_topic_forum('forum', $s_watching_forum, $user->data['user_id'], $forum_id, 0);
'SEARCH_KEYWORDS' => 'Search for keywords',
}
'SEARCHING_FORUMS' => 'Searching forums',
}
'SEARCH_ACTIVE_TOPICS' => 'View active topics',
'SEARCH_FOR' => 'Search for',
'SEARCH_FORUM' => 'Search this forum…',
'SEARCH_NEW' => 'View new posts',
'SEARCH_POSTS_BY' => 'Search posts by',
'SEARCH_SELF' => 'View your posts',
'SEARCH_TOPIC' => 'Search this topic…',
'SEARCH_UNANSWERED' => 'View unanswered posts',
'SEARCH_UNREAD' => 'View unread posts',
'SECONDS' => 'Seconds',
'SELECT' => 'Select',
'SELECT_ALL_CODE' => 'Select all',
'SELECT_DESTINATION_FORUM' => 'Please select a destination forum',
'SELECT_FORUM' => 'Select a forum',
'SEND_EMAIL' => 'E-mail', // Used for submit buttons
'SEND_EMAIL_USER' => 'E-mail', // Used as: {L_SEND_EMAIL_USER} {USERNAME} -> E-mail UserX
'SEND_PRIVATE_MESSAGE' => 'Send private message',
'SETTINGS' => 'Settings',
'SIGNATURE' => 'Signature',
'SKIP' => 'Skip to content',
'SMTP_NO_AUTH_SUPPORT' => 'SMTP server does not support authentication.',
'SORRY_AUTH_READ' => 'You are not authorised to read this forum.',
'SORRY_AUTH_VIEW_ATTACH' => 'You are not authorised to download this attachment.',
'SORT_BY' => 'Sort by',
'SORT_JOINED' => 'Joined date',
'SORT_LOCATION' => 'Location',
'SORT_RANK' => 'Rank',
'SORT_POSTS' => 'Posts',
'SORT_TOPIC_TITLE' => 'Topic title',
'SORT_USERNAME' => 'Username',
'SPLIT_TOPIC' => 'Split topic',
'SQL_ERROR_OCCURRED' => 'An SQL error occurred while fetching this page. Please contact the %sBoard Administrator%s if this problem persists.',
'STATISTICS' => 'Statistics',
'START_WATCHING_FORUM' => 'Subscribe forum',
'START_WATCHING_TOPIC' => 'Subscribe topic',
'STOP_WATCHING_FORUM' => 'Unsubscribe forum',
'STOP_WATCHING_TOPIC' => 'Unsubscribe topic',
'SUBFORUM' => 'Subforum',
'SUBFORUMS' => 'Subforums',
'SUBJECT' => 'Subject',
'SUBMIT' => 'Submit',


// Bookmarks
'TERMS_USE' => 'Terms of use',
if ($config['allow_bookmarks'] && $user->data['is_registered'] && request_var('bookmark', 0))
'TEST_CONNECTION' => 'Test connection',
{
'THE_TEAM' => 'The team',
if (check_link_hash(request_var('hash', ''), "topic_$topic_id"))
'TIME' => 'Time',
{
if (!$topic_data['bookmarked'])
{
$sql = 'INSERT INTO ' . BOOKMARKS_TABLE . ' ' . $db->sql_build_array('INSERT', array(
'user_id' => $user->data['user_id'],
'topic_id' => $topic_id,
));
$db->sql_query($sql);
}
else
{
$sql = 'DELETE FROM ' . BOOKMARKS_TABLE . "
WHERE user_id = {$user->data['user_id']}
AND topic_id = $topic_id";
$db->sql_query($sql);
}
$message = (($topic_data['bookmarked']) ? $user->lang['BOOKMARK_REMOVED'] : $user->lang['BOOKMARK_ADDED']) . '<br /><br />' . sprintf($user->lang['RETURN_TOPIC'], '<a href="' . $viewtopic_url . '">', '</a>');
}
else
{
$message = $user->lang['BOOKMARK_ERR'] . '<br /><br />' . sprintf($user->lang['RETURN_TOPIC'], '<a href="' . $viewtopic_url . '">', '</a>');
}
meta_refresh(3, $viewtopic_url);


trigger_error($message);
'TOO_LONG' => 'The value you entered is too long.',
}


// Grab ranks
'TOO_LONG_AIM' => 'The screenname you entered is too long.',
$ranks = $cache->obtain_ranks();
'TOO_LONG_CONFIRM_CODE' => 'The confirm code you entered is too long.',
'TOO_LONG_DATEFORMAT' => 'The date format you entered is too long.',
'TOO_LONG_ICQ' => 'The ICQ number you entered is too long.',
'TOO_LONG_INTERESTS' => 'The interests you entered is too long.',
'TOO_LONG_JABBER' => 'The Jabber account name you entered is too long.',
'TOO_LONG_LOCATION' => 'The location you entered is too long.',
'TOO_LONG_MSN' => 'The MSNM/WLM name you entered is too long.',
'TOO_LONG_NEW_PASSWORD' => 'The password you entered is too long.',
'TOO_LONG_OCCUPATION' => 'The occupation you entered is too long.',
'TOO_LONG_PASSWORD_CONFIRM' => 'The password confirmation you entered is too long.',
'TOO_LONG_USER_PASSWORD' => 'The password you entered is too long.',
'TOO_LONG_USERNAME' => 'The username you entered is too long.',
'TOO_LONG_EMAIL' => 'The e-mail address you entered is too long.',
'TOO_LONG_EMAIL_CONFIRM' => 'The e-mail address confirmation you entered is too long.',
'TOO_LONG_WEBSITE' => 'The website address you entered is too long.',
'TOO_LONG_YIM' => 'The Yahoo! Messenger name you entered is too long.',


// Grab icons
'TOO_MANY_VOTE_OPTIONS' => 'You have tried to vote for too many options.',
$icons = $cache->obtain_icons();


// Grab extensions
'TOO_SHORT' => 'The value you entered is too short.',
$extensions = array();
if ($topic_data['topic_attachment'])
{
$extensions = $cache->obtain_attach_extensions($forum_id);
}


// Forum rules listing
'TOO_SHORT_AIM' => 'The screenname you entered is too short.',
$s_forum_rules = '';
'TOO_SHORT_CONFIRM_CODE' => 'The confirm code you entered is too short.',
gen_forum_auth_level('topic', $forum_id, $topic_data['forum_status']);
'TOO_SHORT_DATEFORMAT' => 'The date format you entered is too short.',
'TOO_SHORT_ICQ' => 'The ICQ number you entered is too short.',
'TOO_SHORT_INTERESTS' => 'The interests you entered is too short.',
'TOO_SHORT_JABBER' => 'The Jabber account name you entered is too short.',
'TOO_SHORT_LOCATION' => 'The location you entered is too short.',
'TOO_SHORT_MSN' => 'The MSNM/WLM name you entered is too short.',
'TOO_SHORT_NEW_PASSWORD' => 'The password you entered is too short.',
'TOO_SHORT_OCCUPATION' => 'The occupation you entered is too short.',
'TOO_SHORT_PASSWORD_CONFIRM' => 'The password confirmation you entered is too short.',
'TOO_SHORT_USER_PASSWORD' => 'The password you entered is too short.',
'TOO_SHORT_USERNAME' => 'The username you entered is too short.',
'TOO_SHORT_EMAIL' => 'The e-mail address you entered is too short.',
'TOO_SHORT_EMAIL_CONFIRM' => 'The e-mail address confirmation you entered is too short.',
'TOO_SHORT_WEBSITE' => 'The website address you entered is too short.',
'TOO_SHORT_YIM' => 'The Yahoo! Messenger name you entered is too short.',


// Quick mod tools
'TOPIC' => 'Topic',
$allow_change_type = ($auth->acl_get('m_', $forum_id) || ($user->data['is_registered'] && $user->data['user_id'] == $topic_data['topic_poster'])) ? true : false;
'TOPICS' => 'Topics',
'TOPICS_UNAPPROVED' => 'At least one topic in this forum has not been approved.',
'TOPIC_ICON' => 'Topic icon',
'TOPIC_LOCKED' => 'This topic is locked, you cannot edit posts or make further replies.',
'TOPIC_LOCKED_SHORT'=> 'Topic locked',
'TOPIC_MOVED' => 'Moved topic',
'TOPIC_REVIEW' => 'Topic review',
'TOPIC_TITLE' => 'Topic title',
'TOPIC_UNAPPROVED' => 'This topic has not been approved',
'TOTAL_ATTACHMENTS' => 'Attachment(s)',
'TOTAL_LOG' => '1 log',
'TOTAL_LOGS' => '%d logs',
'TOTAL_NO_PM' => '0 private messages in total',
'TOTAL_PM' => '1 private message in total',
'TOTAL_PMS' => '%d private messages in total',
'TOTAL_POSTS' => 'Total posts',
'TOTAL_POSTS_OTHER' => 'Total posts <strong>%d</strong>',
'TOTAL_POSTS_ZERO' => 'Total posts <strong>0</strong>',
'TOPIC_REPORTED' => 'This topic has been reported',
'TOTAL_TOPICS_OTHER'=> 'Total topics <strong>%d</strong>',
'TOTAL_TOPICS_ZERO' => 'Total topics <strong>0</strong>',
'TOTAL_USERS_OTHER' => 'Total members <strong>%d</strong>',
'TOTAL_USERS_ZERO' => 'Total members <strong>0</strong>',
'TRACKED_PHP_ERROR' => 'Tracked PHP errors: %s',


$topic_mod = '';
'UNABLE_GET_IMAGE_SIZE' => 'It was not possible to determine the dimensions of the image.',
$topic_mod .= ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && $user->data['user_id'] == $topic_data['topic_poster'] && $topic_data['topic_status'] == ITEM_UNLOCKED)) ? (($topic_data['topic_status'] == ITEM_UNLOCKED) ? '<option value="lock">' . $user->lang['LOCK_TOPIC'] . '</option>' : '<option value="unlock">' . $user->lang['UNLOCK_TOPIC'] . '</option>') : '';
'UNABLE_TO_DELIVER_FILE'=> 'Unable to deliver file.',
$topic_mod .= ($auth->acl_get('m_delete', $forum_id)) ? '<option value="delete_topic">' . $user->lang['DELETE_TOPIC'] . '</option>' : '';
'UNKNOWN_BROWSER' => 'Unknown browser',
$topic_mod .= ($auth->acl_get('m_move', $forum_id) && $topic_data['topic_status'] != ITEM_MOVED) ? '<option value="move">' . $user->lang['MOVE_TOPIC'] . '</option>' : '';
'UNMARK_ALL' => 'Unmark all',
$topic_mod .= ($auth->acl_get('m_split', $forum_id)) ? '<option value="split">' . $user->lang['SPLIT_TOPIC'] . '</option>' : '';
'UNREAD_MESSAGES' => 'Unread messages',
$topic_mod .= ($auth->acl_get('m_merge', $forum_id)) ? '<option value="merge">' . $user->lang['MERGE_POSTS'] . '</option>' : '';
'UNREAD_PM' => '<strong>%d</strong> unread message',
$topic_mod .= ($auth->acl_get('m_merge', $forum_id)) ? '<option value="merge_topic">' . $user->lang['MERGE_TOPIC'] . '</option>' : '';
'UNREAD_PMS' => '<strong>%d</strong> unread messages',
$topic_mod .= ($auth->acl_get('m_move', $forum_id)) ? '<option value="fork">' . $user->lang['FORK_TOPIC'] . '</option>' : '';
'UNWATCHED_FORUMS' => 'You are no longer subscribed to the selected forums.',
$topic_mod .= ($allow_change_type && $auth->acl_gets('f_sticky', 'f_announce', $forum_id) && $topic_data['topic_type'] != POST_NORMAL) ? '<option value="make_normal">' . $user->lang['MAKE_NORMAL'] . '</option>' : '';
'UNWATCHED_TOPICS' => 'You are no longer subscribed to the selected topics.',
$topic_mod .= ($allow_change_type && $auth->acl_get('f_sticky', $forum_id) && $topic_data['topic_type'] != POST_STICKY) ? '<option value="make_sticky">' . $user->lang['MAKE_STICKY'] . '</option>' : '';
'UNWATCHED_FORUMS_TOPICS' => 'You are no longer subscribed to the selected entries.',
$topic_mod .= ($allow_change_type && $auth->acl_get('f_announce', $forum_id) && $topic_data['topic_type'] != POST_ANNOUNCE) ? '<option value="make_announce">' . $user->lang['MAKE_ANNOUNCE'] . '</option>' : '';
'UPDATE' => 'Update',
$topic_mod .= ($allow_change_type && $auth->acl_get('f_announce', $forum_id) && $topic_data['topic_type'] != POST_GLOBAL) ? '<option value="make_global">' . $user->lang['MAKE_GLOBAL'] . '</option>' : '';
'UPLOAD_IN_PROGRESS' => 'The upload is currently in progress.',
$topic_mod .= ($auth->acl_get('m_', $forum_id)) ? '<option value="topic_logs">' . $user->lang['VIEW_TOPIC_LOGS'] . '</option>' : '';
'URL_REDIRECT' => 'If your browser does not support meta redirection %splease click HERE to be redirected%s.',
'USERGROUPS' => 'Groups',
'USERNAME' => 'Username',
'USERNAMES' => 'Usernames',
'USER_AVATAR' => 'User avatar',
'USER_CANNOT_READ' => 'You cannot read posts in this forum.',
'USER_POST' => '%d Post',
'USER_POSTS' => '%d Posts',
'USERS' => 'Users',
'USE_PERMISSIONS' => 'Test out user’s permissions',


// If we've got a hightlight set pass it on to pagination.
'USER_NEW_PERMISSION_DISALLOWED' => 'We are sorry, but you are not authorised to use this feature. You may have just registered here and may need to participate more to be able to use this feature.',
$pagination = generate_pagination(append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id" . ((strlen($u_sort_param)) ? "&amp;$u_sort_param" : '') . (($highlight_match) ? "&amp;hilit=$highlight" : '')), $total_posts, $config['posts_per_page'], $start);


// Navigation links
'VARIANT_DATE_SEPARATOR' => ' / ', // Used in date format dropdown, eg: "Today, 13:37 / 01 Jan 2007, 13:37" ... to join a relative date with calendar date
generate_forum_nav($topic_data);
'VIEWED' => 'Viewed',
'VIEWING_FAQ' => 'Viewing FAQ',
'VIEWING_MEMBERS' => 'Viewing member details',
'VIEWING_ONLINE' => 'Viewing who is online',
'VIEWING_MCP' => 'Viewing moderator control panel',
'VIEWING_MEMBER_PROFILE' => 'Viewing member profile',
'VIEWING_PRIVATE_MESSAGES' => 'Viewing private messages',
'VIEWING_REGISTER' => 'Registering account',
'VIEWING_UCP' => 'Viewing user control panel',
'VIEWS' => 'Views',
'VIEW_BOOKMARKS' => 'View bookmarks',
'VIEW_FORUM_LOGS' => 'View Logs',
'VIEW_LATEST_POST' => 'View the latest post',
'VIEW_NEWEST_POST' => 'View first unread post',
'VIEW_NOTES' => 'View user notes',
'VIEW_ONLINE_TIME' => 'based on users active over the past %d minute',
'VIEW_ONLINE_TIMES' => 'based on users active over the past %d minutes',
'VIEW_TOPIC' => 'View topic',
'VIEW_TOPIC_ANNOUNCEMENT' => 'Announcement: ',
'VIEW_TOPIC_GLOBAL' => 'Global Announcement: ',
'VIEW_TOPIC_LOCKED' => 'Locked: ',
'VIEW_TOPIC_LOGS' => 'View logs',
'VIEW_TOPIC_MOVED' => 'Moved: ',
'VIEW_TOPIC_POLL' => 'Poll: ',
'VIEW_TOPIC_STICKY' => 'Sticky: ',
'VISIT_WEBSITE' => 'Visit website',


// Forum Rules
'WARNINGS' => 'Warnings',
generate_forum_rules($topic_data);
'WARN_USER' => 'Warn user',
'WELCOME_SUBJECT' => 'Welcome to %s forums',
'WEBSITE' => 'Website',
'WHOIS' => 'Whois',
'WHO_IS_ONLINE' => 'Who is online',
'WRONG_PASSWORD' => 'You entered an incorrect password.',


// Moderators
'WRONG_DATA_ICQ' => 'The number you entered is not a valid ICQ number.',
$forum_moderators = array();
'WRONG_DATA_JABBER' => 'The name you entered is not a valid Jabber account name.',
if ($config['load_moderators'])
'WRONG_DATA_LANG' => 'The language you specified is not valid.',
{
'WRONG_DATA_WEBSITE' => 'The website address has to be a valid URL, including the protocol. For example http://www.example.com/.',
get_moderators($forum_moderators, $forum_id);
'WROTE' => 'wrote',
}


// This is only used for print view so ...
'YEAR' => 'Year',
$server_path = (!$view) ? $phpbb_root_path : generate_board_url() . '/';
'YEAR_MONTH_DAY' => '(YYYY-MM-DD)',
'YES' => 'Yes',
'YIM' => 'YIM',
'YOU_LAST_VISIT' => 'Last visit was: %s',
'YOU_NEW_PM' => 'A new private message is waiting for you in your Inbox.',
'YOU_NEW_PMS' => 'New private messages are waiting for you in your Inbox.',
'YOU_NO_NEW_PM' => 'No new private messages are waiting for you.',


// Replace naughty words in title
'datetime' => array(
$topic_data['topic_title'] = censor_text($topic_data['topic_title']);
'TODAY' => 'Today',
'TOMORROW' => 'Tomorrow',
'YESTERDAY' => 'Yesterday',
'AGO' => array(
0 => 'less than a minute ago',
1 => '%d minute ago',
2 => '%d minutes ago',
60 => '1 hour ago',
),


// Send vars to template
'Sunday' => 'Sunday',
$template->assign_vars(array(
'Monday' => 'Monday',
'FORUM_ID' => $forum_id,
'Tuesday' => 'Tuesday',
'FORUM_NAME' => $topic_data['forum_name'],
'Wednesday' => 'Wednesday',
'FORUM_DESC' => generate_text_for_display($topic_data['forum_desc'], $topic_data['forum_desc_uid'], $topic_data['forum_desc_bitfield'], $topic_data['forum_desc_options']),
'Thursday' => 'Thursday',
'TOPIC_ID' => $topic_id,
'Friday' => 'Friday',
'TOPIC_TITLE' => $topic_data['topic_title'],
'Saturday' => 'Saturday',
'TOPIC_POSTER' => $topic_data['topic_poster'],


'TOPIC_AUTHOR_FULL' => get_username_string('full', $topic_data['topic_poster'], $topic_data['topic_first_poster_name'], $topic_data['topic_first_poster_colour']),
'Sun' => 'Sun',
'TOPIC_AUTHOR_COLOUR' => get_username_string('colour', $topic_data['topic_poster'], $topic_data['topic_first_poster_name'], $topic_data['topic_first_poster_colour']),
'Mon' => 'Mon',
'TOPIC_AUTHOR' => get_username_string('username', $topic_data['topic_poster'], $topic_data['topic_first_poster_name'], $topic_data['topic_first_poster_colour']),
'Tue' => 'Tue',
'Wed' => 'Wed',
'Thu' => 'Thu',
'Fri' => 'Fri',
'Sat' => 'Sat',


'PAGINATION' => $pagination,
'January' => 'January',
'PAGE_NUMBER' => on_page($total_posts, $config['posts_per_page'], $start),
'February' => 'February',
'TOTAL_POSTS' => ($total_posts == 1) ? $user->lang['VIEW_TOPIC_POST'] : sprintf($user->lang['VIEW_TOPIC_POSTS'], $total_posts),
'March' => 'March',
'U_MCP' => ($auth->acl_get('m_', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", "i=main&amp;mode=topic_view&amp;f=$forum_id&amp;t=$topic_id&amp;start=$start" . ((strlen($u_sort_param)) ? "&amp;$u_sort_param" : ''), true, $user->session_id) : '',
'April' => 'April',
'MODERATORS' => (isset($forum_moderators[$forum_id]) && sizeof($forum_moderators[$forum_id])) ? implode(', ', $forum_moderators[$forum_id]) : '',
'May' => 'May',
'June' => 'June',
'July' => 'July',
'August' => 'August',
'September' => 'September',
'October' => 'October',
'November' => 'November',
'December' => 'December',


'POST_IMG' => ($topic_data['forum_status'] == ITEM_LOCKED) ? $user->img('button_topic_locked', 'FORUM_LOCKED') : $user->img('button_topic_new', 'POST_NEW_TOPIC'),
'Jan' => 'Jan',
'QUOTE_IMG' => $user->img('icon_post_quote', 'REPLY_WITH_QUOTE'),
'Feb' => 'Feb',
'REPLY_IMG' => ($topic_data['forum_status'] == ITEM_LOCKED || $topic_data['topic_status'] == ITEM_LOCKED) ? $user->img('button_topic_locked', 'TOPIC_LOCKED') : $user->img('button_topic_reply', 'REPLY_TO_TOPIC'),
'Mar' => 'Mar',
'EDIT_IMG' => $user->img('icon_post_edit', 'EDIT_POST'),
'Apr' => 'Apr',
'DELETE_IMG' => $user->img('icon_post_delete', 'DELETE_POST'),
'May_short' => 'May', // Short representation of "May". May_short used because in English the short and long date are the same for May.
'INFO_IMG' => $user->img('icon_post_info', 'VIEW_INFO'),
'Jun' => 'Jun',
'PROFILE_IMG' => $user->img('icon_user_profile', 'READ_PROFILE'),
'Jul' => 'Jul',
'SEARCH_IMG' => $user->img('icon_user_search', 'SEARCH_USER_POSTS'),
'Aug' => 'Aug',
'PM_IMG' => $user->img('icon_contact_pm', 'SEND_PRIVATE_MESSAGE'),
'Sep' => 'Sep',
'EMAIL_IMG' => $user->img('icon_contact_email', 'SEND_EMAIL'),
'Oct' => 'Oct',
'WWW_IMG' => $user->img('icon_contact_www', 'VISIT_WEBSITE'),
'Nov' => 'Nov',
'ICQ_IMG' => $user->img('icon_contact_icq', 'ICQ'),
'Dec' => 'Dec',
'AIM_IMG' => $user->img('icon_contact_aim', 'AIM'),
),
'MSN_IMG' => $user->img('icon_contact_msnm', 'MSNM'),
'YIM_IMG' => $user->img('icon_contact_yahoo', 'YIM'),
'JABBER_IMG' => $user->img('icon_contact_jabber', 'JABBER') ,
'REPORT_IMG' => $user->img('icon_post_report', 'REPORT_POST'),
'REPORTED_IMG' => $user->img('icon_topic_reported', 'POST_REPORTED'),
'UNAPPROVED_IMG' => $user->img('icon_topic_unapproved', 'POST_UNAPPROVED'),
'WARN_IMG' => $user->img('icon_user_warn', 'WARN_USER'),


'S_IS_LOCKED' => ($topic_data['topic_status'] == ITEM_UNLOCKED && $topic_data['forum_status'] == ITEM_UNLOCKED) ? false : true,
'tz' => array(
'S_SELECT_SORT_DIR' => $s_sort_dir,
'-12' => 'UTC - 12 hours',
'S_SELECT_SORT_KEY' => $s_sort_key,
'-11' => 'UTC - 11 hours',
'S_SELECT_SORT_DAYS' => $s_limit_days,
'-10' => 'UTC - 10 hours',
'S_SINGLE_MODERATOR' => (!empty($forum_moderators[$forum_id]) && sizeof($forum_moderators[$forum_id]) > 1) ? false : true,
'-9.5' => 'UTC - 9:30 hours',
'S_TOPIC_ACTION' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id&amp;start=$start"),
'-9' => 'UTC - 9 hours',
'S_TOPIC_MOD' => ($topic_mod != '') ? '<select name="action" id="quick-mod-select">' . $topic_mod . '</select>' : '',
'-8' => 'UTC - 8 hours',
'S_MOD_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "f=$forum_id&amp;t=$topic_id&amp;start=$start&amp;quickmod=1&amp;redirect=" . urlencode(str_replace('&amp;', '&', $viewtopic_url)), true, $user->session_id),
'-7' => 'UTC - 7 hours',
'-6' => 'UTC - 6 hours',
'-5' => 'UTC - 5 hours',
'-4.5' => 'UTC - 4:30 hours',
'-4' => 'UTC - 4 hours',
'-3.5' => 'UTC - 3:30 hours',
'-3' => 'UTC - 3 hours',
'-2' => 'UTC - 2 hours',
'-1' => 'UTC - 1 hour',
'0' => 'UTC',
'1' => 'UTC + 1 hour',
'2' => 'UTC + 2 hours',
'3' => 'UTC + 3 hours',
'3.5' => 'UTC + 3:30 hours',
'4' => 'UTC + 4 hours',
'4.5' => 'UTC + 4:30 hours',
'5' => 'UTC + 5 hours',
'5.5' => 'UTC + 5:30 hours',
'5.75' => 'UTC + 5:45 hours',
'6' => 'UTC + 6 hours',
'6.5' => 'UTC + 6:30 hours',
'7' => 'UTC + 7 hours',
'8' => 'UTC + 8 hours',
'8.75' => 'UTC + 8:45 hours',
'9' => 'UTC + 9 hours',
'9.5' => 'UTC + 9:30 hours',
'10' => 'UTC + 10 hours',
'10.5' => 'UTC + 10:30 hours',
'11' => 'UTC + 11 hours',
'11.5' => 'UTC + 11:30 hours',
'12' => 'UTC + 12 hours',
'12.75' => 'UTC + 12:45 hours',
'13' => 'UTC + 13 hours',
'14' => 'UTC + 14 hours',
'dst' => '[ <abbr title="Daylight Saving Time">DST</abbr> ]',
),


'S_VIEWTOPIC' => true,
'tz_zones' => array(
'S_DISPLAY_SEARCHBOX' => ($auth->acl_get('u_search') && $auth->acl_get('f_search', $forum_id) && $config['load_search']) ? true : false,
'-12' => '[UTC - 12] Baker Island Time',
'S_SEARCHBOX_ACTION' => append_sid("{$phpbb_root_path}search.$phpEx", 't=' . $topic_id),
'-11' => '[UTC - 11] Niue Time, Samoa Standard Time',
 
'-10' => '[UTC - 10] Hawaii-Aleutian Standard Time, Cook Island Time',
'S_DISPLAY_POST_INFO' => ($topic_data['forum_type'] == FORUM_POST && ($auth->acl_get('f_post', $forum_id) || $user->data['user_id'] == ANONYMOUS)) ? true : false,
'-9.5' => '[UTC - 9:30] Marquesas Islands Time',
'S_DISPLAY_REPLY_INFO' => ($topic_data['forum_type'] == FORUM_POST && ($auth->acl_get('f_reply', $forum_id) || $user->data['user_id'] == ANONYMOUS)) ? true : false,
'-9' => '[UTC - 9] Alaska Standard Time, Gambier Island Time',
'S_ENABLE_FEEDS_TOPIC' => ($config['feed_topic'] && !phpbb_optionget(FORUM_OPTION_FEED_EXCLUDE, $topic_data['forum_options'])) ? true : false,
'-8' => '[UTC - 8] Pacific Standard Time',
 
'-7' => '[UTC - 7] Mountain Standard Time',
'U_TOPIC' => "{$server_path}viewtopic.$phpEx?f=$forum_id&amp;t=$topic_id",
'-6' => '[UTC - 6] Central Standard Time',
'U_FORUM' => $server_path,
'-5' => '[UTC - 5] Eastern Standard Time',
'U_VIEW_TOPIC' => $viewtopic_url,
'-4.5' => '[UTC - 4:30] Venezuelan Standard Time',
'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id),
'-4' => '[UTC - 4] Atlantic Standard Time',
'U_VIEW_OLDER_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id&amp;view=previous"),
'-3.5' => '[UTC - 3:30] Newfoundland Standard Time',
'U_VIEW_NEWER_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id&amp;view=next"),
'-3' => '[UTC - 3] Amazon Standard Time, Central Greenland Time',
'U_PRINT_TOPIC' => ($auth->acl_get('f_print', $forum_id)) ? $viewtopic_url . '&amp;view=print' : '',
'-2' => '[UTC - 2] Fernando de Noronha Time, South Georgia &amp; the South Sandwich Islands Time',
'U_EMAIL_TOPIC' => ($auth->acl_get('f_email', $forum_id) && $config['email_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=email&amp;t=$topic_id") : '',
'-1' => '[UTC - 1] Azores Standard Time, Cape Verde Time, Eastern Greenland Time',
 
'0' => '[UTC] Western European Time, Greenwich Mean Time',
'U_WATCH_TOPIC' => $s_watching_topic['link'],
'1' => '[UTC + 1] Central European Time, West African Time',
'L_WATCH_TOPIC' => $s_watching_topic['title'],
'2' => '[UTC + 2] Eastern European Time, Central African Time',
'S_WATCHING_TOPIC' => $s_watching_topic['is_watching'],
'3' => '[UTC + 3] Moscow Standard Time, Eastern African Time',
 
'3.5' => '[UTC + 3:30] Iran Standard Time',
'U_BOOKMARK_TOPIC' => ($user->data['is_registered'] && $config['allow_bookmarks']) ? $viewtopic_url . '&amp;bookmark=1&amp;hash=' . generate_link_hash("topic_$topic_id") : '',
'4' => '[UTC + 4] Gulf Standard Time, Samara Standard Time',
'L_BOOKMARK_TOPIC' => ($user->data['is_registered'] && $config['allow_bookmarks'] && $topic_data['bookmarked']) ? $user->lang['BOOKMARK_TOPIC_REMOVE'] : $user->lang['BOOKMARK_TOPIC'],
'4.5' => '[UTC + 4:30] Afghanistan Time',
 
'5' => '[UTC + 5] Pakistan Standard Time, Yekaterinburg Standard Time',
'U_POST_NEW_TOPIC' => ($auth->acl_get('f_post', $forum_id) || $user->data['user_id'] == ANONYMOUS) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=post&amp;f=$forum_id") : '',
'5.5' => '[UTC + 5:30] Indian Standard Time, Sri Lanka Time',
'U_POST_REPLY_TOPIC' => ($auth->acl_get('f_reply', $forum_id) || $user->data['user_id'] == ANONYMOUS) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=reply&amp;f=$forum_id&amp;t=$topic_id") : '',
'5.75' => '[UTC + 5:45] Nepal Time',
'U_BUMP_TOPIC' => (bump_topic_allowed($forum_id, $topic_data['topic_bumped'], $topic_data['topic_last_post_time'], $topic_data['topic_poster'], $topic_data['topic_last_poster_id'])) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=bump&amp;f=$forum_id&amp;t=$topic_id&amp;hash=" . generate_link_hash("topic_$topic_id")) : '')
'6' => '[UTC + 6] Bangladesh Time, Bhutan Time, Novosibirsk Standard Time',
);
'6.5' => '[UTC + 6:30] Cocos Islands Time, Myanmar Time',
 
'7' => '[UTC + 7] Indochina Time, Krasnoyarsk Standard Time',
// Does this topic contain a poll?
'8' => '[UTC + 8] Chinese Standard Time, Australian Western Standard Time, Irkutsk Standard Time',
if (!empty($topic_data['poll_start']))
'8.75' => '[UTC + 8:45] Southeastern Western Australia Standard Time',
{
'9' => '[UTC + 9] Japan Standard Time, Korea Standard Time, Chita Standard Time',
$sql = 'SELECT o.*, p.bbcode_bitfield, p.bbcode_uid
'9.5' => '[UTC + 9:30] Australian Central Standard Time',
FROM ' . POLL_OPTIONS_TABLE . ' o, ' . POSTS_TABLE . " p
'10' => '[UTC + 10] Australian Eastern Standard Time, Vladivostok Standard Time',
WHERE o.topic_id = $topic_id
'10.5' => '[UTC + 10:30] Lord Howe Standard Time',
AND p.post_id = {$topic_data['topic_first_post_id']}
'11' => '[UTC + 11] Solomon Island Time, Magadan Standard Time',
AND p.topic_id = o.topic_id
'11.5' => '[UTC + 11:30] Norfolk Island Time',
ORDER BY o.poll_option_id";
'12' => '[UTC + 12] New Zealand Time, Fiji Time, Kamchatka Standard Time',
$result = $db->sql_query($sql);
'12.75' => '[UTC + 12:45] Chatham Islands Time',
 
'13' => '[UTC + 13] Tonga Time, Phoenix Islands Time',
$poll_info = array();
'14' => '[UTC + 14] Line Island Time',
while ($row = $db->sql_fetchrow($result))
),
{
$poll_info[] = $row;
}
$db->sql_freeresult($result);
 
$cur_voted_id = array();
if ($user->data['is_registered'])
{
$sql = 'SELECT poll_option_id
FROM ' . POLL_VOTES_TABLE . '
WHERE topic_id = ' . $topic_id . '
AND vote_user_id = ' . $user->data['user_id'];
$result = $db->sql_query($sql);
 
while ($row = $db->sql_fetchrow($result))
{
$cur_voted_id[] = $row['poll_option_id'];
}
$db->sql_freeresult($result);
}
else
{
// Cookie based guest tracking ... I don't like this but hum ho
// it's oft requested. This relies on "nice" users who don't feel
// the need to delete cookies to mess with results.
if (isset($_COOKIE[$config['cookie_name'] . '_poll_' . $topic_id]))
{
$cur_voted_id = explode(',', $_COOKIE[$config['cookie_name'] . '_poll_' . $topic_id]);
$cur_voted_id = array_map('intval', $cur_voted_id);
}
}
 
// Can not vote at all if no vote permission
$s_can_vote = ($auth->acl_get('f_vote', $forum_id) &&
(($topic_data['poll_length'] != 0 && $topic_data['poll_start'] + $topic_data['poll_length'] > time()) || $topic_data['poll_length'] == 0) &&
$topic_data['topic_status'] != ITEM_LOCKED &&
$topic_data['forum_status'] != ITEM_LOCKED &&
(!sizeof($cur_voted_id) ||
($auth->acl_get('f_votechg', $forum_id) && $topic_data['poll_vote_change']))) ? true : false;
$s_display_results = (!$s_can_vote || ($s_can_vote && sizeof($cur_voted_id)) || $view == 'viewpoll') ? true : false;
 
if ($update && $s_can_vote)
{
 
if (!sizeof($voted_id) || sizeof($voted_id) > $topic_data['poll_max_options'] || in_array(VOTE_CONVERTED, $cur_voted_id) || !check_form_key('posting'))
{
$redirect_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id&amp;start=$start");
 
meta_refresh(5, $redirect_url);
if (!sizeof($voted_id))
{
$message = 'NO_VOTE_OPTION';
}
else if (sizeof($voted_id) > $topic_data['poll_max_options'])
{
$message = 'TOO_MANY_VOTE_OPTIONS';
}
else if (in_array(VOTE_CONVERTED, $cur_voted_id))
{
$message = 'VOTE_CONVERTED';
}
else
{
$message = 'FORM_INVALID';
}
 
$message = $user->lang[$message] . '<br /><br />' . sprintf($user->lang['RETURN_TOPIC'], '<a href="' . $redirect_url . '">', '</a>');
trigger_error($message);
}
 
foreach ($voted_id as $option)
{
if (in_array($option, $cur_voted_id))
{
continue;
}
 
$sql = 'UPDATE ' . POLL_OPTIONS_TABLE . '
SET poll_option_total = poll_option_total + 1
WHERE poll_option_id = ' . (int) $option . '
AND topic_id = ' . (int) $topic_id;
$db->sql_query($sql);
 
if ($user->data['is_registered'])
{
$sql_ary = array(
'topic_id' => (int) $topic_id,
'poll_option_id' => (int) $option,
'vote_user_id' => (int) $user->data['user_id'],
'vote_user_ip' => (string) $user->ip,
);
 
$sql = 'INSERT INTO ' . POLL_VOTES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
$db->sql_query($sql);
}
}
 
foreach ($cur_voted_id as $option)
{
if (!in_array($option, $voted_id))
{
$sql = 'UPDATE ' . POLL_OPTIONS_TABLE . '
SET poll_option_total = poll_option_total - 1
WHERE poll_option_id = ' . (int) $option . '
AND topic_id = ' . (int) $topic_id;
$db->sql_query($sql);
 
if ($user->data['is_registered'])
{
$sql = 'DELETE FROM ' . POLL_VOTES_TABLE . '
WHERE topic_id = ' . (int) $topic_id . '
AND poll_option_id = ' . (int) $option . '
AND vote_user_id = ' . (int) $user->data['user_id'];
$db->sql_query($sql);
}
}
}
 
if ($user->data['user_id'] == ANONYMOUS && !$user->data['is_bot'])
{
$user->set_cookie('poll_' . $topic_id, implode(',', $voted_id), time() + 31536000);
}
 
$sql = 'UPDATE ' . TOPICS_TABLE . '
SET poll_last_vote = ' . time() . "
WHERE topic_id = $topic_id";
//, topic_last_post_time = ' . time() . " -- for bumping topics with new votes, ignore for now
$db->sql_query($sql);
 
$redirect_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id&amp;start=$start");
 
meta_refresh(5, $redirect_url);
trigger_error($user->lang['VOTE_SUBMITTED'] . '<br /><br />' . sprintf($user->lang['RETURN_TOPIC'], '<a href="' . $redirect_url . '">', '</a>'));
}
 
$poll_total = 0;
foreach ($poll_info as $poll_option)
{
$poll_total += $poll_option['poll_option_total'];
}
 
if ($poll_info[0]['bbcode_bitfield'])
{
$poll_bbcode = new bbcode();
}
else
{
$poll_bbcode = false;
}
 
for ($i = 0, $size = sizeof($poll_info); $i < $size; $i++)
{
$poll_info[$i]['poll_option_text'] = censor_text($poll_info[$i]['poll_option_text']);
 
if ($poll_bbcode !== false)
{
$poll_bbcode->bbcode_second_pass($poll_info[$i]['poll_option_text'], $poll_info[$i]['bbcode_uid'], $poll_option['bbcode_bitfield']);
}
 
$poll_info[$i]['poll_option_text'] = bbcode_nl2br($poll_info[$i]['poll_option_text']);
$poll_info[$i]['poll_option_text'] = smiley_text($poll_info[$i]['poll_option_text']);
}
 
$topic_data['poll_title'] = censor_text($topic_data['poll_title']);
 
if ($poll_bbcode !== false)
{
$poll_bbcode->bbcode_second_pass($topic_data['poll_title'], $poll_info[0]['bbcode_uid'], $poll_info[0]['bbcode_bitfield']);
}
 
$topic_data['poll_title'] = bbcode_nl2br($topic_data['poll_title']);
$topic_data['poll_title'] = smiley_text($topic_data['poll_title']);
 
unset($poll_bbcode);
 
foreach ($poll_info as $poll_option)
{
$option_pct = ($poll_total > 0) ? $poll_option['poll_option_total'] / $poll_total : 0;
$option_pct_txt = sprintf("%.1d%%", round($option_pct * 100));
 
$template->assign_block_vars('poll_option', array(
'POLL_OPTION_ID' => $poll_option['poll_option_id'],
'POLL_OPTION_CAPTION' => $poll_option['poll_option_text'],
'POLL_OPTION_RESULT' => $poll_option['poll_option_total'],
'POLL_OPTION_PERCENT' => $option_pct_txt,
'POLL_OPTION_PCT' => round($option_pct * 100),
'POLL_OPTION_IMG' => $user->img('poll_center', $option_pct_txt, round($option_pct * 250)),
'POLL_OPTION_VOTED' => (in_array($poll_option['poll_option_id'], $cur_voted_id)) ? true : false)
);
}
 
$poll_end = $topic_data['poll_length'] + $topic_data['poll_start'];
 
$template->assign_vars(array(
'POLL_QUESTION' => $topic_data['poll_title'],
'TOTAL_VOTES' => $poll_total,
'POLL_LEFT_CAP_IMG' => $user->img('poll_left'),
'POLL_RIGHT_CAP_IMG'=> $user->img('poll_right'),
 
'L_MAX_VOTES' => ($topic_data['poll_max_options'] == 1) ? $user->lang['MAX_OPTION_SELECT'] : sprintf($user->lang['MAX_OPTIONS_SELECT'], $topic_data['poll_max_options']),
'L_POLL_LENGTH' => ($topic_data['poll_length']) ? sprintf($user->lang[($poll_end > time()) ? 'POLL_RUN_TILL' : 'POLL_ENDED_AT'], $user->format_date($poll_end)) : '',
 
'S_HAS_POLL' => true,
'S_CAN_VOTE' => $s_can_vote,
'S_DISPLAY_RESULTS' => $s_display_results,
'S_IS_MULTI_CHOICE' => ($topic_data['poll_max_options'] > 1) ? true : false,
'S_POLL_ACTION' => $viewtopic_url,
 
'U_VIEW_RESULTS' => $viewtopic_url . '&amp;view=viewpoll')
);
 
unset($poll_end, $poll_info, $voted_id);
}
 
// If the user is trying to reach the second half of the topic, fetch it starting from the end
$store_reverse = false;
$sql_limit = $config['posts_per_page'];
$sql_sort_order = $direction = '';
 
if ($start > $total_posts / 2)
{
$store_reverse = true;


if ($start + $config['posts_per_page'] > $total_posts)
// The value is only an example and will get replaced by the current time on view
{
'dateformats' => array(
$sql_limit = min($config['posts_per_page'], max(1, $total_posts - $start));
'd M Y, H:i' => '01 Jan 2007, 13:37',
}
'd M Y H:i' => '01 Jan 2007 13:37',
 
'M jS, \'y, H:i' => 'Jan 1st, \'07, 13:37',
// Select the sort order
'D M d, Y g:i a' => 'Mon Jan 01, 2007 1:37 pm',
$direction = (($sort_dir == 'd') ? 'ASC' : 'DESC');
'F jS, Y, g:i a' => 'January 1st, 2007, 1:37 pm',
$sql_start = max(0, $total_posts - $sql_limit - $start);
'|d M Y|, H:i' => 'Today, 13:37 / 01 Jan 2007, 13:37',
}
'|F jS, Y|, g:i a' => 'Today, 1:37 pm / January 1st, 2007, 1:37 pm'
else
{
// Select the sort order
$direction = (($sort_dir == 'd') ? 'DESC' : 'ASC');
$sql_start = $start;
}
 
if (is_array($sort_by_sql[$sort_key]))
{
$sql_sort_order = implode(' ' . $direction . ', ', $sort_by_sql[$sort_key]) . ' ' . $direction;
}
else
{
$sql_sort_order = $sort_by_sql[$sort_key] . ' ' . $direction;
}
 
// Container for user details, only process once
$post_list = $user_cache = $id_cache = $attachments = $attach_list = $rowset = $update_count = $post_edit_list = array();
$has_attachments = $display_notice = false;
$bbcode_bitfield = '';
$i = $i_total = 0;
 
// Go ahead and pull all data for this topic
$sql = 'SELECT p.post_id
FROM ' . POSTS_TABLE . ' p' . (($join_user_sql[$sort_key]) ? ', ' . USERS_TABLE . ' u': '') . "
WHERE p.topic_id = $topic_id
" . ((!$auth->acl_get('m_approve', $forum_id)) ? 'AND p.post_approved = 1' : '') . "
" . (($join_user_sql[$sort_key]) ? 'AND u.user_id = p.poster_id': '') . "
$limit_posts_time
ORDER BY $sql_sort_order";
$result = $db->sql_query_limit($sql, $sql_limit, $sql_start);
 
$i = ($store_reverse) ? $sql_limit - 1 : 0;
while ($row = $db->sql_fetchrow($result))
{
$post_list[$i] = (int) $row['post_id'];
($store_reverse) ? $i-- : $i++;
}
$db->sql_freeresult($result);
 
if (!sizeof($post_list))
{
if ($sort_days)
{
trigger_error('NO_POSTS_TIME_FRAME');
}
else
{
trigger_error('NO_TOPIC');
}
}
 
// Holding maximum post time for marking topic read
// We need to grab it because we do reverse ordering sometimes
$max_post_time = 0;
 
$sql = $db->sql_build_query('SELECT', array(
'SELECT' => 'u.*, z.friend, z.foe, p.*',
 
'FROM' => array(
USERS_TABLE => 'u',
POSTS_TABLE => 'p',
),
),


'LEFT_JOIN' => array(
// The default dateformat which will be used on new installs in this language
array(
// Translators should change this if a the usual date format is different
'FROM' => array(ZEBRA_TABLE => 'z'),
'default_dateformat' => 'D M d, Y g:i a', // Mon Jan 01, 2007 1:37 pm
'ON' => 'z.user_id = ' . $user->data['user_id'] . ' AND z.zebra_id = p.poster_id'
)
),


'WHERE' => $db->sql_in_set('p.post_id', $post_list) . '
AND u.user_id = p.poster_id'
));
));
$result = $db->sql_query($sql);
$now = getdate(time() + $user->timezone + $user->dst - date('Z'));
// Posts are stored in the $rowset array while $attach_list, $user_cache
// and the global bbcode_bitfield are built
while ($row = $db->sql_fetchrow($result))
{
// Set max_post_time
if ($row['post_time'] > $max_post_time)
{
$max_post_time = $row['post_time'];
}
$poster_id = (int) $row['poster_id'];
// Does post have an attachment? If so, add it to the list
if ($row['post_attachment'] && $config['allow_attachments'])
{
$attach_list[] = (int) $row['post_id'];
if ($row['post_approved'])
{
$has_attachments = true;
}
}
$rowset[$row['post_id']] = array(
'hide_post' => ($row['foe'] && ($view != 'show' || $post_id != $row['post_id'])) ? true : false,
'post_id' => $row['post_id'],
'post_time' => $row['post_time'],
'user_id' => $row['user_id'],
'username' => $row['username'],
'user_colour' => $row['user_colour'],
'topic_id' => $row['topic_id'],
'forum_id' => $row['forum_id'],
'post_subject' => $row['post_subject'],
'post_edit_count' => $row['post_edit_count'],
'post_edit_time' => $row['post_edit_time'],
'post_edit_reason' => $row['post_edit_reason'],
'post_edit_user' => $row['post_edit_user'],
'post_edit_locked' => $row['post_edit_locked'],
// Make sure the icon actually exists
'icon_id' => (isset($icons[$row['icon_id']]['img'], $icons[$row['icon_id']]['height'], $icons[$row['icon_id']]['width'])) ? $row['icon_id'] : 0,
'post_attachment' => $row['post_attachment'],
'post_approved' => $row['post_approved'],
'post_reported' => $row['post_reported'],
'post_username' => $row['post_username'],
'post_text' => $row['post_text'],
'bbcode_uid' => $row['bbcode_uid'],
'bbcode_bitfield' => $row['bbcode_bitfield'],
'enable_smilies' => $row['enable_smilies'],
'enable_sig' => $row['enable_sig'],
'friend' => $row['friend'],
'foe' => $row['foe'],
);
// Define the global bbcode bitfield, will be used to load bbcodes
$bbcode_bitfield = $bbcode_bitfield | base64_decode($row['bbcode_bitfield']);
// Is a signature attached? Are we going to display it?
if ($row['enable_sig'] && $config['allow_sig'] && $user->optionget('viewsigs'))
{
$bbcode_bitfield = $bbcode_bitfield | base64_decode($row['user_sig_bbcode_bitfield']);
}
// Cache various user specific data ... so we don't have to recompute
// this each time the same user appears on this page
if (!isset($user_cache[$poster_id]))
{
if ($poster_id == ANONYMOUS)
{
$user_cache[$poster_id] = array(
'joined' => '',
'posts' => '',
'from' => '',
'sig' => '',
'sig_bbcode_uid' => '',
'sig_bbcode_bitfield' => '',
'online' => false,
'avatar' => ($user->optionget('viewavatars')) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height']) : '',
'rank_title' => '',
'rank_image' => '',
'rank_image_src' => '',
'sig' => '',
'profile' => '',
'pm' => '',
'email' => '',
'www' => '',
'icq_status_img' => '',
'icq' => '',
'aim' => '',
'msn' => '',
'yim' => '',
'jabber' => '',
'search' => '',
'age' => '',
'username' => $row['username'],
'user_colour' => $row['user_colour'],
'warnings' => 0,
'allow_pm' => 0,
);
get_user_rank($row['user_rank'], false, $user_cache[$poster_id]['rank_title'], $user_cache[$poster_id]['rank_image'], $user_cache[$poster_id]['rank_image_src']);
}
else
{
$user_sig = '';
// We add the signature to every posters entry because enable_sig is post dependant
if ($row['user_sig'] && $config['allow_sig'] && $user->optionget('viewsigs'))
{
$user_sig = $row['user_sig'];
}
$id_cache[] = $poster_id;
$user_cache[$poster_id] = array(
'joined' => $user->format_date($row['user_regdate']),
'posts' => $row['user_posts'],
'warnings' => (isset($row['user_warnings'])) ? $row['user_warnings'] : 0,
'from' => (!empty($row['user_from'])) ? $row['user_from'] : '',
'sig' => $user_sig,
'sig_bbcode_uid' => (!empty($row['user_sig_bbcode_uid'])) ? $row['user_sig_bbcode_uid'] : '',
'sig_bbcode_bitfield' => (!empty($row['user_sig_bbcode_bitfield'])) ? $row['user_sig_bbcode_bitfield'] : '',
'viewonline' => $row['user_allow_viewonline'],
'allow_pm' => $row['user_allow_pm'],
'avatar' => ($user->optionget('viewavatars')) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height']) : '',
'age' => '',
'rank_title' => '',
'rank_image' => '',
'rank_image_src' => '',
'username' => $row['username'],
'user_colour' => $row['user_colour'],
'online' => false,
'profile' => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=viewprofile&amp;u=$poster_id"),
'www' => $row['user_website'],
'aim' => ($row['user_aim'] && $auth->acl_get('u_sendim')) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=contact&amp;action=aim&amp;u=$poster_id") : '',
'msn' => ($row['user_msnm'] && $auth->acl_get('u_sendim')) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=contact&amp;action=msnm&amp;u=$poster_id") : '',
'yim' => ($row['user_yim']) ? 'http://edit.yahoo.com/config/send_webmesg?.target=' . urlencode($row['user_yim']) . '&amp;.src=pg' : '',
'jabber' => ($row['user_jabber'] && $auth->acl_get('u_sendim')) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=contact&amp;action=jabber&amp;u=$poster_id") : '',
'search' => ($auth->acl_get('u_search')) ? append_sid("{$phpbb_root_path}search.$phpEx", "author_id=$poster_id&amp;sr=posts") : '',
'author_full' => get_username_string('full', $poster_id, $row['username'], $row['user_colour']),
'author_colour' => get_username_string('colour', $poster_id, $row['username'], $row['user_colour']),
'author_username' => get_username_string('username', $poster_id, $row['username'], $row['user_colour']),
'author_profile' => get_username_string('profile', $poster_id, $row['username'], $row['user_colour']),
);
get_user_rank($row['user_rank'], $row['user_posts'], $user_cache[$poster_id]['rank_title'], $user_cache[$poster_id]['rank_image'], $user_cache[$poster_id]['rank_image_src']);
if (!empty($row['user_allow_viewemail']) || $auth->acl_get('a_email'))
{
$user_cache[$poster_id]['email'] = ($config['board_email_form'] && $config['email_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=email&amp;u=$poster_id") : (($config['board_hide_emails'] && !$auth->acl_get('a_email')) ? '' : 'mailto:' . $row['user_email']);
}
else
{
$user_cache[$poster_id]['email'] = '';
}
if (!empty($row['user_icq']))
{
$user_cache[$poster_id]['icq'] = 'http://www.icq.com/people/webmsg.php?to=' . $row['user_icq'];
$user_cache[$poster_id]['icq_status_img'] = '<img src="http://web.icq.com/whitepages/online?icq=' . $row['user_icq'] . '&amp;img=5" width="18" height="18" alt="" />';
}
else
{
$user_cache[$poster_id]['icq_status_img'] = '';
$user_cache[$poster_id]['icq'] = '';
}
if ($config['allow_birthdays'] && !empty($row['user_birthday']))
{
list($bday_day, $bday_month, $bday_year) = array_map('intval', explode('-', $row['user_birthday']));
if ($bday_year)
{
$diff = $now['mon'] - $bday_month;
if ($diff == 0)
{
$diff = ($now['mday'] - $bday_day < 0) ? 1 : 0;
}
else
{
$diff = ($diff < 0) ? 1 : 0;
}
$user_cache[$poster_id]['age'] = (int) ($now['year'] - $bday_year - $diff);
}
}
}
}
}
$db->sql_freeresult($result);
// Load custom profile fields
if ($config['load_cpf_viewtopic'])
{
if (!class_exists('custom_profile'))
{
include($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx);
}
$cp = new custom_profile();
// Grab all profile fields from users in id cache for later use - similar to the poster cache
$profile_fields_tmp = $cp->generate_profile_fields_template('grab', $id_cache);
// filter out fields not to be displayed on viewtopic. Yes, it's a hack, but this shouldn't break any MODs.
$profile_fields_cache = array();
foreach ($profile_fields_tmp as $profile_user_id => $profile_fields)
{
$profile_fields_cache[$profile_user_id] = array();
foreach ($profile_fields as $used_ident => $profile_field)
{
if ($profile_field['data']['field_show_on_vt'])
{
$profile_fields_cache[$profile_user_id][$used_ident] = $profile_field;
}
}
}
unset($profile_fields_tmp);
}
// Generate online information for user
if ($config['load_onlinetrack'] && sizeof($id_cache))
{
$sql = 'SELECT session_user_id, MAX(session_time) as online_time, MIN(session_viewonline) AS viewonline
FROM ' . SESSIONS_TABLE . '
WHERE ' . $db->sql_in_set('session_user_id', $id_cache) . '
GROUP BY session_user_id';
$result = $db->sql_query($sql);
$update_time = $config['load_online_time'] * 60;
while ($row = $db->sql_fetchrow($result))
{
$user_cache[$row['session_user_id']]['online'] = (time() - $update_time < $row['online_time'] && (($row['viewonline']) || $auth->acl_get('u_viewonline'))) ? true : false;
}
$db->sql_freeresult($result);
}
unset($id_cache);
// Pull attachment data
if (sizeof($attach_list))
{
if ($auth->acl_get('u_download') && $auth->acl_get('f_download', $forum_id))
{
$sql = 'SELECT *
FROM ' . ATTACHMENTS_TABLE . '
WHERE ' . $db->sql_in_set('post_msg_id', $attach_list) . '
AND in_message = 0
ORDER BY filetime DESC, post_msg_id ASC';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$attachments[$row['post_msg_id']][] = $row;
}
$db->sql_freeresult($result);
// No attachments exist, but post table thinks they do so go ahead and reset post_attach flags
if (!sizeof($attachments))
{
$sql = 'UPDATE ' . POSTS_TABLE . '
SET post_attachment = 0
WHERE ' . $db->sql_in_set('post_id', $attach_list);
$db->sql_query($sql);
// We need to update the topic indicator too if the complete topic is now without an attachment
if (sizeof($rowset) != $total_posts)
{
// Not all posts are displayed so we query the db to find if there's any attachment for this topic
$sql = 'SELECT a.post_msg_id as post_id
FROM ' . ATTACHMENTS_TABLE . ' a, ' . POSTS_TABLE . " p
WHERE p.topic_id = $topic_id
AND p.post_approved = 1
AND p.topic_id = a.topic_id";
$result = $db->sql_query_limit($sql, 1);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if (!$row)
{
$sql = 'UPDATE ' . TOPICS_TABLE . "
SET topic_attachment = 0
WHERE topic_id = $topic_id";
$db->sql_query($sql);
}
}
else
{
$sql = 'UPDATE ' . TOPICS_TABLE . "
SET topic_attachment = 0
WHERE topic_id = $topic_id";
$db->sql_query($sql);
}
}
else if ($has_attachments && !$topic_data['topic_attachment'])
{
// Topic has approved attachments but its flag is wrong
$sql = 'UPDATE ' . TOPICS_TABLE . "
SET topic_attachment = 1
WHERE topic_id = $topic_id";
$db->sql_query($sql);
$topic_data['topic_attachment'] = 1;
}
}
else
{
$display_notice = true;
}
}
// Instantiate BBCode if need be
if ($bbcode_bitfield !== '')
{
$bbcode = new bbcode(base64_encode($bbcode_bitfield));
}
$i_total = sizeof($rowset) - 1;
$prev_post_id = '';
$template->assign_vars(array(
'S_NUM_POSTS' => sizeof($post_list))
);
// Output the posts
$first_unread = $post_unread = false;
for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i)
{
// A non-existing rowset only happens if there was no user present for the entered poster_id
// This could be a broken posts table.
if (!isset($rowset[$post_list[$i]]))
{
continue;
}
$row =& $rowset[$post_list[$i]];
$poster_id = $row['user_id'];
// End signature parsing, only if needed
if ($user_cache[$poster_id]['sig'] && $row['enable_sig'] && empty($user_cache[$poster_id]['sig_parsed']))
{
$user_cache[$poster_id]['sig'] = censor_text($user_cache[$poster_id]['sig']);
if ($user_cache[$poster_id]['sig_bbcode_bitfield'])
{
$bbcode->bbcode_second_pass($user_cache[$poster_id]['sig'], $user_cache[$poster_id]['sig_bbcode_uid'], $user_cache[$poster_id]['sig_bbcode_bitfield']);
}
$user_cache[$poster_id]['sig'] = bbcode_nl2br($user_cache[$poster_id]['sig']);
$user_cache[$poster_id]['sig'] = smiley_text($user_cache[$poster_id]['sig']);
$user_cache[$poster_id]['sig_parsed'] = true;
}
// Parse the message and subject
$message = censor_text($row['post_text']);
// Second parse bbcode here
if ($row['bbcode_bitfield'])
{
$bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']);
}
$message = bbcode_nl2br($message);
$message = smiley_text($message);
if (!empty($attachments[$row['post_id']]))
{
parse_attachments($forum_id, $message, $attachments[$row['post_id']], $update_count);
}
// Replace naughty words such as farty pants
$row['post_subject'] = censor_text($row['post_subject']);
// Highlight active words (primarily for search)
if ($highlight_match)
{
$message = preg_replace('#(?!<.*)(?<!\w)(' . $highlight_match . ')(?!\w|[^<>]*(?:</s(?:cript|tyle))?>)#is', '<span class="posthilit">\1</span>', $message);
$row['post_subject'] = preg_replace('#(?!<.*)(?<!\w)(' . $highlight_match . ')(?!\w|[^<>]*(?:</s(?:cript|tyle))?>)#is', '<span class="posthilit">\1</span>', $row['post_subject']);
}
// Editing information
if (($row['post_edit_count'] && $config['display_last_edited']) || $row['post_edit_reason'])
{
// Get usernames for all following posts if not already stored
if (!sizeof($post_edit_list) && ($row['post_edit_reason'] || ($row['post_edit_user'] && !isset($user_cache[$row['post_edit_user']]))))
{
// Remove all post_ids already parsed (we do not have to check them)
$post_storage_list = (!$store_reverse) ? array_slice($post_list, $i) : array_slice(array_reverse($post_list), $i);
$sql = 'SELECT DISTINCT u.user_id, u.username, u.user_colour
FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u
WHERE ' . $db->sql_in_set('p.post_id', $post_storage_list) . '
AND p.post_edit_count <> 0
AND p.post_edit_user <> 0
AND p.post_edit_user = u.user_id';
$result2 = $db->sql_query($sql);
while ($user_edit_row = $db->sql_fetchrow($result2))
{
$post_edit_list[$user_edit_row['user_id']] = $user_edit_row;
}
$db->sql_freeresult($result2);
unset($post_storage_list);
}
$l_edit_time_total = ($row['post_edit_count'] == 1) ? $user->lang['EDITED_TIME_TOTAL'] : $user->lang['EDITED_TIMES_TOTAL'];
if ($row['post_edit_reason'])
{
// User having edited the post also being the post author?
if (!$row['post_edit_user'] || $row['post_edit_user'] == $poster_id)
{
$display_username = get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']);
}
else
{
$display_username = get_username_string('full', $row['post_edit_user'], $post_edit_list[$row['post_edit_user']]['username'], $post_edit_list[$row['post_edit_user']]['user_colour']);
}
$l_edited_by = sprintf($l_edit_time_total, $display_username, $user->format_date($row['post_edit_time'], false, true), $row['post_edit_count']);
}
else
{
if ($row['post_edit_user'] && !isset($user_cache[$row['post_edit_user']]))
{
$user_cache[$row['post_edit_user']] = $post_edit_list[$row['post_edit_user']];
}
// User having edited the post also being the post author?
if (!$row['post_edit_user'] || $row['post_edit_user'] == $poster_id)
{
$display_username = get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']);
}
else
{
$display_username = get_username_string('full', $row['post_edit_user'], $user_cache[$row['post_edit_user']]['username'], $user_cache[$row['post_edit_user']]['user_colour']);
}
$l_edited_by = sprintf($l_edit_time_total, $display_username, $user->format_date($row['post_edit_time'], false, true), $row['post_edit_count']);
}
}
else
{
$l_edited_by = '';
}
// Bump information
if ($topic_data['topic_bumped'] && $row['post_id'] == $topic_data['topic_last_post_id'] && isset($user_cache[$topic_data['topic_bumper']]) )
{
// It is safe to grab the username from the user cache array, we are at the last
// post and only the topic poster and last poster are allowed to bump.
// Admins and mods are bound to the above rules too...
$l_bumped_by = sprintf($user->lang['BUMPED_BY'], $user_cache[$topic_data['topic_bumper']]['username'], $user->format_date($topic_data['topic_last_post_time'], false, true));
}
else
{
$l_bumped_by = '';
}
$cp_row = array();
//
if ($config['load_cpf_viewtopic'])
{
$cp_row = (isset($profile_fields_cache[$poster_id])) ? $cp->generate_profile_fields_template('show', false, $profile_fields_cache[$poster_id]) : array();
}
$post_unread = (isset($topic_tracking_info[$topic_id]) && $row['post_time'] > $topic_tracking_info[$topic_id]) ? true : false;
$s_first_unread = false;
if (!$first_unread && $post_unread)
{
$s_first_unread = $first_unread = true;
}
$edit_allowed = ($user->data['is_registered'] && ($auth->acl_get('m_edit', $forum_id) || (
$user->data['user_id'] == $poster_id &&
$auth->acl_get('f_edit', $forum_id) &&
!$row['post_edit_locked'] &&
($row['post_time'] > time() - ($config['edit_time'] * 60) || !$config['edit_time'])
)));
$delete_allowed = ($user->data['is_registered'] && ($auth->acl_get('m_delete', $forum_id) || (
$user->data['user_id'] == $poster_id &&
$auth->acl_get('f_delete', $forum_id) &&
$topic_data['topic_last_post_id'] == $row['post_id'] &&
($row['post_time'] > time() - ($config['delete_time'] * 60) || !$config['delete_time']) &&
// we do not want to allow removal of the last post if a moderator locked it!
!$row['post_edit_locked']
)));
//
$postrow = array(
'POST_AUTHOR_FULL' => ($poster_id != ANONYMOUS) ? $user_cache[$poster_id]['author_full'] : get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
'POST_AUTHOR_COLOUR' => ($poster_id != ANONYMOUS) ? $user_cache[$poster_id]['author_colour'] : get_username_string('colour', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
'POST_AUTHOR' => ($poster_id != ANONYMOUS) ? $user_cache[$poster_id]['author_username'] : get_username_string('username', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
'U_POST_AUTHOR' => ($poster_id != ANONYMOUS) ? $user_cache[$poster_id]['author_profile'] : get_username_string('profile', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
'RANK_TITLE' => $user_cache[$poster_id]['rank_title'],
'RANK_IMG' => $user_cache[$poster_id]['rank_image'],
'RANK_IMG_SRC' => $user_cache[$poster_id]['rank_image_src'],
'POSTER_JOINED' => $user_cache[$poster_id]['joined'],
'POSTER_POSTS' => $user_cache[$poster_id]['posts'],
'POSTER_FROM' => $user_cache[$poster_id]['from'],
'POSTER_AVATAR' => $user_cache[$poster_id]['avatar'],
'POSTER_WARNINGS' => $user_cache[$poster_id]['warnings'],
'POSTER_AGE' => $user_cache[$poster_id]['age'],
'POST_DATE' => $user->format_date($row['post_time'], false, ($view == 'print') ? true : false),
'POST_SUBJECT' => $row['post_subject'],
'MESSAGE' => $message,
'SIGNATURE' => ($row['enable_sig']) ? $user_cache[$poster_id]['sig'] : '',
'EDITED_MESSAGE' => $l_edited_by,
'EDIT_REASON' => $row['post_edit_reason'],
'BUMPED_MESSAGE' => $l_bumped_by,
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'NEW_POST') : $user->img('icon_post_target', 'POST'),
'POST_ICON_IMG' => ($topic_data['enable_icons'] && !empty($row['icon_id'])) ? $icons[$row['icon_id']]['img'] : '',
'POST_ICON_IMG_WIDTH' => ($topic_data['enable_icons'] && !empty($row['icon_id'])) ? $icons[$row['icon_id']]['width'] : '',
'POST_ICON_IMG_HEIGHT' => ($topic_data['enable_icons'] && !empty($row['icon_id'])) ? $icons[$row['icon_id']]['height'] : '',
'ICQ_STATUS_IMG' => $user_cache[$poster_id]['icq_status_img'],
'ONLINE_IMG' => ($poster_id == ANONYMOUS || !$config['load_onlinetrack']) ? '' : (($user_cache[$poster_id]['online']) ? $user->img('icon_user_online', 'ONLINE') : $user->img('icon_user_offline', 'OFFLINE')),
'S_ONLINE' => ($poster_id == ANONYMOUS || !$config['load_onlinetrack']) ? false : (($user_cache[$poster_id]['online']) ? true : false),
'U_EDIT' => ($edit_allowed) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=edit&amp;f=$forum_id&amp;p={$row['post_id']}") : '',
'U_QUOTE' => ($auth->acl_get('f_reply', $forum_id)) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=quote&amp;f=$forum_id&amp;p={$row['post_id']}") : '',
'U_INFO' => ($auth->acl_get('m_info', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", "i=main&amp;mode=post_details&amp;f=$forum_id&amp;p=" . $row['post_id'], true, $user->session_id) : '',
'U_DELETE' => ($delete_allowed) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=delete&amp;f=$forum_id&amp;p={$row['post_id']}") : '',
'U_PROFILE' => $user_cache[$poster_id]['profile'],
'U_SEARCH' => $user_cache[$poster_id]['search'],
'U_PM' => ($poster_id != ANONYMOUS && $config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($user_cache[$poster_id]['allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&amp;mode=compose&amp;action=quotepost&amp;p=' . $row['post_id']) : '',
'U_EMAIL' => $user_cache[$poster_id]['email'],
'U_WWW' => $user_cache[$poster_id]['www'],
'U_ICQ' => $user_cache[$poster_id]['icq'],
'U_AIM' => $user_cache[$poster_id]['aim'],
'U_MSN' => $user_cache[$poster_id]['msn'],
'U_YIM' => $user_cache[$poster_id]['yim'],
'U_JABBER' => $user_cache[$poster_id]['jabber'],
'U_REPORT' => ($auth->acl_get('f_report', $forum_id)) ? append_sid("{$phpbb_root_path}report.$phpEx", 'f=' . $forum_id . '&amp;p=' . $row['post_id']) : '',
'U_MCP_REPORT' => ($auth->acl_get('m_report', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&amp;mode=report_details&amp;f=' . $forum_id . '&amp;p=' . $row['post_id'], true, $user->session_id) : '',
'U_MCP_APPROVE' => ($auth->acl_get('m_approve', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&amp;mode=approve_details&amp;f=' . $forum_id . '&amp;p=' . $row['post_id'], true, $user->session_id) : '',
'U_MINI_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'p=' . $row['post_id']) . (($topic_data['topic_type'] == POST_GLOBAL) ? '&amp;f=' . $forum_id : '') . '#p' . $row['post_id'],
'U_NEXT_POST_ID' => ($i < $i_total && isset($rowset[$post_list[$i + 1]])) ? $rowset[$post_list[$i + 1]]['post_id'] : '',
'U_PREV_POST_ID' => $prev_post_id,
'U_NOTES' => ($auth->acl_getf_global('m_')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&amp;mode=user_notes&amp;u=' . $poster_id, true, $user->session_id) : '',
'U_WARN' => ($auth->acl_get('m_warn') && $poster_id != $user->data['user_id'] && $poster_id != ANONYMOUS) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=warn&amp;mode=warn_post&amp;f=' . $forum_id . '&amp;p=' . $row['post_id'], true, $user->session_id) : '',
'POST_ID' => $row['post_id'],
'POSTER_ID' => $poster_id,
'S_HAS_ATTACHMENTS' => (!empty($attachments[$row['post_id']])) ? true : false,
'S_POST_UNAPPROVED' => ($row['post_approved']) ? false : true,
'S_POST_REPORTED' => ($row['post_reported'] && $auth->acl_get('m_report', $forum_id)) ? true : false,
'S_DISPLAY_NOTICE' => $display_notice && $row['post_attachment'],
'S_FRIEND' => ($row['friend']) ? true : false,
'S_UNREAD_POST' => $post_unread,
'S_FIRST_UNREAD' => $s_first_unread,
'S_CUSTOM_FIELDS' => (isset($cp_row['row']) && sizeof($cp_row['row'])) ? true : false,
'S_TOPIC_POSTER' => ($topic_data['topic_poster'] == $poster_id) ? true : false,
'S_IGNORE_POST' => ($row['hide_post']) ? true : false,
'L_IGNORE_POST' => ($row['hide_post']) ? sprintf($user->lang['POST_BY_FOE'], get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']), '<a href="' . $viewtopic_url . "&amp;p={$row['post_id']}&amp;view=show#p{$row['post_id']}" . '">', '</a>') : '',
);
if (isset($cp_row['row']) && sizeof($cp_row['row']))
{
$postrow = array_merge($postrow, $cp_row['row']);
}
// Dump vars into template
$template->assign_block_vars('postrow', $postrow);
if (!empty($cp_row['blockrow']))
{
foreach ($cp_row['blockrow'] as $field_data)
{
$template->assign_block_vars('postrow.custom_fields', $field_data);
}
}
// Display not already displayed Attachments for this post, we already parsed them. ;)
if (!empty($attachments[$row['post_id']]))
{
foreach ($attachments[$row['post_id']] as $attachment)
{
$template->assign_block_vars('postrow.attachment', array(
'DISPLAY_ATTACHMENT' => $attachment)
);
}
}
$prev_post_id = $row['post_id'];
unset($rowset[$post_list[$i]]);
unset($attachments[$row['post_id']]);
}
unset($rowset, $user_cache);
// Update topic view and if necessary attachment view counters ... but only for humans and if this is the first 'page view'
if (isset($user->data['session_page']) && !$user->data['is_bot'] && (strpos($user->data['session_page'], '&t=' . $topic_id) === false || isset($user->data['session_created'])))
{
$sql = 'UPDATE ' . TOPICS_TABLE . '
SET topic_views = topic_views + 1, topic_last_view_time = ' . time() . "
WHERE topic_id = $topic_id";
$db->sql_query($sql);
// Update the attachment download counts
if (sizeof($update_count))
{
$sql = 'UPDATE ' . ATTACHMENTS_TABLE . '
SET download_count = download_count + 1
WHERE ' . $db->sql_in_set('attach_id', array_unique($update_count));
$db->sql_query($sql);
}
}
// Get last post time for all global announcements
// to keep proper forums tracking
if ($topic_data['topic_type'] == POST_GLOBAL)
{
$sql = 'SELECT topic_last_post_time as forum_last_post_time
FROM ' . TOPICS_TABLE . '
WHERE forum_id = 0
ORDER BY topic_last_post_time DESC';
$result = $db->sql_query_limit($sql, 1);
$topic_data['forum_last_post_time'] = (int) $db->sql_fetchfield('forum_last_post_time');
$db->sql_freeresult($result);
$sql = 'SELECT mark_time as forum_mark_time
FROM ' . FORUMS_TRACK_TABLE . '
WHERE forum_id = 0
AND user_id = ' . $user->data['user_id'];
$result = $db->sql_query($sql);
$topic_data['forum_mark_time'] = (int) $db->sql_fetchfield('forum_mark_time');
$db->sql_freeresult($result);
}
// Only mark topic if it's currently unread. Also make sure we do not set topic tracking back if earlier pages are viewed.
if (isset($topic_tracking_info[$topic_id]) && $topic_data['topic_last_post_time'] > $topic_tracking_info[$topic_id] && $max_post_time > $topic_tracking_info[$topic_id])
{
markread('topic', (($topic_data['topic_type'] == POST_GLOBAL) ? 0 : $forum_id), $topic_id, $max_post_time);
// Update forum info
$all_marked_read = update_forum_tracking_info((($topic_data['topic_type'] == POST_GLOBAL) ? 0 : $forum_id), $topic_data['forum_last_post_time'], (isset($topic_data['forum_mark_time'])) ? $topic_data['forum_mark_time'] : false, false);
}
else
{
$all_marked_read = true;
}
// If there are absolutely no more unread posts in this forum and unread posts shown, we can savely show the #unread link
if ($all_marked_read)
{
if ($post_unread)
{
$template->assign_vars(array(
'U_VIEW_UNREAD_POST' => '#unread',
));
}
else if (isset($topic_tracking_info[$topic_id]) && $topic_data['topic_last_post_time'] > $topic_tracking_info[$topic_id])
{
$template->assign_vars(array(
'U_VIEW_UNREAD_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id&amp;view=unread") . '#unread',
));
}
}
else if (!$all_marked_read)
{
$last_page = ((floor($start / $config['posts_per_page']) + 1) == max(ceil($total_posts / $config['posts_per_page']), 1)) ? true : false;
// What can happen is that we are at the last displayed page. If so, we also display the #unread link based in $post_unread
if ($last_page && $post_unread)
{
$template->assign_vars(array(
'U_VIEW_UNREAD_POST' => '#unread',
));
}
else if (!$last_page)
{
$template->assign_vars(array(
'U_VIEW_UNREAD_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;t=$topic_id&amp;view=unread") . '#unread',
));
}
}
// let's set up quick_reply
$s_quick_reply = false;
if ($user->data['is_registered'] && $config['allow_quick_reply'] && ($topic_data['forum_flags'] & FORUM_FLAG_QUICK_REPLY) && $auth->acl_get('f_reply', $forum_id))
{
// Quick reply enabled forum
$s_quick_reply = (($topic_data['forum_status'] == ITEM_UNLOCKED && $topic_data['topic_status'] == ITEM_UNLOCKED) || $auth->acl_get('m_edit', $forum_id)) ? true : false;
}
if ($s_can_vote || $s_quick_reply)
{
add_form_key('posting');
if ($s_quick_reply)
{
$s_attach_sig = $config['allow_sig'] && $user->optionget('attachsig') && $auth->acl_get('f_sigs', $forum_id) && $auth->acl_get('u_sig');
$s_smilies = $config['allow_smilies'] && $user->optionget('smilies') && $auth->acl_get('f_smilies', $forum_id);
$s_bbcode = $config['allow_bbcode'] && $user->optionget('bbcode') && $auth->acl_get('f_bbcode', $forum_id);
$s_notify = $config['allow_topic_notify'] && ($user->data['user_notify'] || $s_watching_topic['is_watching']);
$qr_hidden_fields = array(
'topic_cur_post_id' => (int) $topic_data['topic_last_post_id'],
'lastclick' => (int) time(),
'topic_id' => (int) $topic_data['topic_id'],
'forum_id' => (int) $forum_id,
);
// Originally we use checkboxes and check with isset(), so we only provide them if they would be checked
(!$s_bbcode) ? $qr_hidden_fields['disable_bbcode'] = 1 : true;
(!$s_smilies) ? $qr_hidden_fields['disable_smilies'] = 1 : true;
(!$config['allow_post_links']) ? $qr_hidden_fields['disable_magic_url'] = 1 : true;
($s_attach_sig) ? $qr_hidden_fields['attach_sig'] = 1 : true;
($s_notify) ? $qr_hidden_fields['notify'] = 1 : true;
($topic_data['topic_status'] == ITEM_LOCKED) ? $qr_hidden_fields['lock_topic'] = 1 : true;
$template->assign_vars(array(
'S_QUICK_REPLY' => true,
'U_QR_ACTION' => append_sid("{$phpbb_root_path}posting.$phpEx", "mode=reply&amp;f=$forum_id&amp;t=$topic_id"),
'QR_HIDDEN_FIELDS' => build_hidden_fields($qr_hidden_fields),
'SUBJECT' => 'Re: ' . censor_text($topic_data['topic_title']),
));
}
}
// now I have the urge to wash my hands :(
// We overwrite $_REQUEST['f'] if there is no forum specified
// to be able to display the correct online list.
// One downside is that the user currently viewing this topic/post is not taken into account.
if (empty($_REQUEST['f']))
{
$_REQUEST['f'] = $forum_id;
}
// We need to do the same with the topic_id. See #53025.
if (empty($_REQUEST['t']) && !empty($topic_id))
{
$_REQUEST['t'] = $topic_id;
}
// Output the page
page_header($user->lang['VIEW_TOPIC'] . ' - ' . $topic_data['topic_title'], true, $forum_id);
$template->set_filenames(array(
'body' => ($view == 'print') ? 'viewtopic_print.html' : 'viewtopic_body.html')
);
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"), $forum_id);
page_footer();


?>
?>

Revision as of 02:33, 18 June 2010

Please feel free to use this page to test edits and practice your Mad Wiki skillz. If you'd replace this message or something like it when you are done, it would be greatly appreciated. Thanks, The Mgmt.


<?php /**

/**

  • DO NOT CHANGE
  • /

if (!defined('IN_PHPBB')) { exit; }

if (empty($lang) || !is_array($lang)) { $lang = array(); }

// DEVELOPERS PLEASE NOTE // // All language files should use UTF-8 as their encoding and the files must not contain a BOM. // // Placeholders can now contain order information, e.g. instead of // 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows // translators to re-order the output of data while ensuring it remains correct // // You do not need this where single placeholders are used, e.g. 'Message %d' is fine // equally where a string contains only two placeholders which are used to wrap text // in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine // // Some characters you may want to copy&paste: // ’ » “ ” … //

$lang = array_merge($lang, array( 'TRANSLATION_INFO' => , 'DIRECTION' => 'ltr', 'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled) 'USER_LANG' => 'en-gb',

'1_DAY' => '1 day', '1_MONTH' => '1 month', '1_YEAR' => '1 year', '2_WEEKS' => '2 weeks', '3_MONTHS' => '3 months', '6_MONTHS' => '6 months', '7_DAYS' => '7 days',

'ACCOUNT_ALREADY_ACTIVATED' => 'Your account has already been activated.', 'ACCOUNT_DEACTIVATED' => 'Your account has been manually deactivated and is only able to be reactivated by an administrator.', 'ACCOUNT_NOT_ACTIVATED' => 'Your account has not been activated yet.', 'ACP' => 'Administration Control Panel', 'ACTIVE' => 'active', 'ACTIVE_ERROR' => 'The specified username is currently inactive. If you have problems activating your account, please contact a board administrator.', 'ADMINISTRATOR' => 'Administrator', 'ADMINISTRATORS' => 'Administrators', 'AGE' => 'Age', 'AIM' => 'AIM', 'ALLOWED' => 'Allowed', 'ALL_FILES' => 'All files', 'ALL_FORUMS' => 'All forums', 'ALL_MESSAGES' => 'All messages', 'ALL_POSTS' => 'All posts', 'ALL_TIMES' => 'All times are %1$s %2$s', 'ALL_TOPICS' => 'All Topics', 'AND' => 'And', 'ARE_WATCHING_FORUM' => 'You have subscribed to be notified of new posts in this forum.', 'ARE_WATCHING_TOPIC' => 'You have subscribed to be notified of new posts in this topic.', 'ASCENDING' => 'Ascending', 'ATTACHMENTS' => 'Attachments', 'ATTACHED_IMAGE_NOT_IMAGE' => 'The image file you tried to attach is invalid.', 'AUTHOR' => 'Author', 'AUTH_NO_PROFILE_CREATED' => 'The creation of a user profile was unsuccessful.', 'AVATAR_DISALLOWED_CONTENT' => 'The upload was rejected because the uploaded file was identified as a possible attack vector.', 'AVATAR_DISALLOWED_EXTENSION' => 'This file cannot be displayed because the extension %s is not allowed.', 'AVATAR_EMPTY_REMOTE_DATA' => 'The specified avatar could not be uploaded because the remote data appears to be invalid or corrupted.', 'AVATAR_EMPTY_FILEUPLOAD' => 'The uploaded avatar file is empty.', 'AVATAR_INVALID_FILENAME' => '%s is an invalid filename.', 'AVATAR_NOT_UPLOADED' => 'Avatar could not be uploaded.', 'AVATAR_NO_SIZE' => 'The width or height of the linked avatar could not be determined. Please enter them manually.', 'AVATAR_PARTIAL_UPLOAD' => 'The specified file was only partially uploaded.', 'AVATAR_PHP_SIZE_NA' => 'The avatar’s filesize is too large.
The maximum allowed filesize set in php.ini could not be determined.', 'AVATAR_PHP_SIZE_OVERRUN' => 'The avatar’s filesize is too large. The maximum allowed upload size is %1$d %2$s.
Please note this is set in php.ini and cannot be overridden.', 'AVATAR_URL_INVALID' => 'The URL you specified is invalid.', 'AVATAR_URL_NOT_FOUND' => 'The file specified could not be found.', 'AVATAR_WRONG_FILESIZE' => 'The avatar’s filesize must be between 0 and %1d %2s.', 'AVATAR_WRONG_SIZE' => 'The submitted avatar is %5$d pixels wide and %6$d pixels high. Avatars must be at least %1$d pixels wide and %2$d pixels high, but no larger than %3$d pixels wide and %4$d pixels high.',

'BACK_TO_TOP' => 'Top', 'BACK_TO_PREV' => 'Back to previous page', 'BAN_TRIGGERED_BY_EMAIL'=> 'A ban has been issued on your e-mail address.', 'BAN_TRIGGERED_BY_IP' => 'A ban has been issued on your IP address.', 'BAN_TRIGGERED_BY_USER' => 'A ban has been issued on your username.', 'BBCODE_GUIDE' => 'BBCode guide', 'BCC' => 'BCC', 'BIRTHDAYS' => 'Birthdays', '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', '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_DISABLE' => 'Sorry but this board is currently unavailable.', 'BOARD_DISABLED' => 'This board is currently disabled.', 'BOARD_UNAVAILABLE' => 'Sorry but the board is temporarily unavailable, please try again in a few minutes.', 'BROWSING_FORUM' => 'Users browsing this forum: %1$s', 'BROWSING_FORUM_GUEST' => 'Users browsing this forum: %1$s and %2$d guest', 'BROWSING_FORUM_GUESTS' => 'Users browsing this forum: %1$s and %2$d guests', 'BYTES' => 'Bytes',

'CANCEL' => 'Cancel', 'CHANGE' => 'Change', 'CHANGE_FONT_SIZE' => 'Change font size', 'CHANGING_PREFERENCES' => 'Changing board preferences', 'CHANGING_PROFILE' => 'Changing profile settings', 'CLICK_VIEW_PRIVMSG' => '%sGo to your inbox%s', 'COLLAPSE_VIEW' => 'Collapse view', 'CLOSE_WINDOW' => 'Close window', 'COLOUR_SWATCH' => 'Colour swatch', 'COMMA_SEPARATOR' => ', ', // Used in pagination of ACP & prosilver, use localised comma if appropriate, eg: Ideographic or Arabic 'CONFIRM' => 'Confirm', 'CONFIRM_CODE' => 'Confirmation code', 'CONFIRM_CODE_EXPLAIN' => 'Enter the code exactly as it appears. All letters are case insensitive, there is no zero.', 'CONFIRM_CODE_WRONG' => 'The confirmation code you entered was incorrect.', 'CONFIRM_OPERATION' => 'Are you sure you wish to carry out this operation?', 'CONGRATULATIONS' => 'Congratulations to', 'CONNECTION_FAILED' => 'Connection failed.', 'CONNECTION_SUCCESS' => 'Connection was successful!', 'COOKIES_DELETED' => 'All board cookies successfully deleted.', 'CURRENT_TIME' => 'It is currently %s',

'DAY' => 'Day', 'DAYS' => 'Days', 'DELETE' => 'Delete', 'DELETE_ALL' => 'Delete all', 'DELETE_COOKIES' => 'Delete all board cookies', 'DELETE_MARKED' => 'Delete marked', 'DELETE_POST' => 'Delete post', 'DELIMITER' => 'Delimiter', 'DESCENDING' => 'Descending', 'DISABLED' => 'Disabled', 'DISPLAY' => 'Display', 'DISPLAY_GUESTS' => 'Display guests', 'DISPLAY_MESSAGES' => 'Display messages from previous', 'DISPLAY_POSTS' => 'Display posts from previous', 'DISPLAY_TOPICS' => 'Display topics from previous', 'DOWNLOADED' => 'Downloaded', 'DOWNLOADING_FILE' => 'Downloading file', 'DOWNLOAD_COUNT' => 'Downloaded %d time', 'DOWNLOAD_COUNTS' => 'Downloaded %d times', 'DOWNLOAD_COUNT_NONE' => 'Not downloaded yet', 'VIEWED_COUNT' => 'Viewed %d time', 'VIEWED_COUNTS' => 'Viewed %d times', 'VIEWED_COUNT_NONE' => 'Not viewed yet',

'EDIT_POST' => 'Edit post', 'EMAIL' => 'E-mail', // Short form for EMAIL_ADDRESS 'EMAIL_ADDRESS' => 'E-mail address', 'EMAIL_SMTP_ERROR_RESPONSE' => 'Ran into problems sending e-mail at Line %1$s. Response: %2$s.', 'EMPTY_SUBJECT' => 'You must specify a subject when posting a new topic.', 'EMPTY_MESSAGE_SUBJECT' => 'You must specify a subject when composing a new message.', 'ENABLED' => 'Enabled', 'ENCLOSURE' => 'Enclosure', 'ERR_CHANGING_DIRECTORY' => 'Unable to change directory.', 'ERR_CONNECTING_SERVER' => 'Error connecting to the server.', 'ERR_JAB_AUTH' => 'Could not authorise on Jabber server.', 'ERR_JAB_CONNECT' => 'Could not connect to Jabber server.', 'ERR_UNABLE_TO_LOGIN' => 'The specified username or password is incorrect.', 'ERR_UNWATCHING' => 'An error occured while trying to unsubscribe.', 'ERR_WATCHING' => 'An error occured while trying to subscribe.', 'ERR_WRONG_PATH_TO_PHPBB' => 'The phpBB path specified appears to be invalid.', 'EXPAND_VIEW' => 'Expand view', 'EXTENSION' => 'Extension', 'EXTENSION_DISABLED_AFTER_POSTING' => 'The extension %s has been deactivated and can no longer be displayed.',

'FAQ' => 'FAQ', 'FAQ_EXPLAIN' => 'Frequently Asked Questions', 'FILENAME' => 'Filename', 'FILESIZE' => 'File size', 'FILEDATE' => 'File date', 'FILE_COMMENT' => 'File comment', 'FILE_NOT_FOUND' => 'The requested file could not be found.', 'FIND_USERNAME' => 'Find a member', 'FOLDER' => 'Folder', 'FORGOT_PASS' => 'I forgot my password', 'FORM_INVALID' => 'The submitted form was invalid. Try submitting again.', 'FORUM' => 'Forum', 'FORUMS' => 'Forums', 'FORUMS_MARKED' => 'All forums have been marked read.', 'FORUM_CAT' => 'Forum category', 'FORUM_INDEX' => 'Board index', 'FORUM_LINK' => 'Forum link', 'FORUM_LOCATION' => 'Forum location', 'FORUM_LOCKED' => 'Forum locked', 'FORUM_RULES' => 'Forum rules', 'FORUM_RULES_LINK' => 'Please click here to view the forum rules', 'FROM' => 'from', 'FSOCK_DISABLED' => 'The operation could not be completed because the fsockopen function has been disabled or the server being queried could not be found.',

'FTP_FSOCK_HOST' => 'FTP host', 'FTP_FSOCK_HOST_EXPLAIN' => 'FTP server used to connect your site.', 'FTP_FSOCK_PASSWORD' => 'FTP password', 'FTP_FSOCK_PASSWORD_EXPLAIN' => 'Password for your FTP username.', 'FTP_FSOCK_PORT' => 'FTP port', 'FTP_FSOCK_PORT_EXPLAIN' => 'Port used to connect to your server.', 'FTP_FSOCK_ROOT_PATH' => 'Path to phpBB', 'FTP_FSOCK_ROOT_PATH_EXPLAIN' => 'Path from the root to your phpBB board.', 'FTP_FSOCK_TIMEOUT' => 'FTP timeout', 'FTP_FSOCK_TIMEOUT_EXPLAIN' => 'The amount of time, in seconds, that the system will wait for a reply from your server.', 'FTP_FSOCK_USERNAME' => 'FTP username', 'FTP_FSOCK_USERNAME_EXPLAIN' => 'Username used to connect to your server.',

'FTP_HOST' => 'FTP host', 'FTP_HOST_EXPLAIN' => 'FTP server used to connect your site.', 'FTP_PASSWORD' => 'FTP password', 'FTP_PASSWORD_EXPLAIN' => 'Password for your FTP username.', 'FTP_PORT' => 'FTP port', 'FTP_PORT_EXPLAIN' => 'Port used to connect to your server.', 'FTP_ROOT_PATH' => 'Path to phpBB', 'FTP_ROOT_PATH_EXPLAIN' => 'Path from the root to your phpBB board.', 'FTP_TIMEOUT' => 'FTP timeout', 'FTP_TIMEOUT_EXPLAIN' => 'The amount of time, in seconds, that the system will wait for a reply from your server.', 'FTP_USERNAME' => 'FTP username', 'FTP_USERNAME_EXPLAIN' => 'Username used to connect to your server.',

'GENERAL_ERROR' => 'General Error', 'GB' => 'GB', 'GIB' => 'GiB', 'GO' => 'Go', 'GOTO_PAGE' => 'Go to page', 'GROUP' => 'Group', 'GROUPS' => 'Groups', 'GROUP_ERR_TYPE' => 'Inappropriate group type specified.', 'GROUP_ERR_USERNAME' => 'No group name specified.', 'GROUP_ERR_USER_LONG' => 'Group names cannot exceed 60 characters. The specified group name is too long.', 'GUEST' => 'Guest', 'GUEST_USERS_ONLINE' => 'There are %d guest users online', 'GUEST_USERS_TOTAL' => '%d guests', 'GUEST_USERS_ZERO_ONLINE' => 'There are 0 guest users online', 'GUEST_USERS_ZERO_TOTAL' => '0 guests', 'GUEST_USER_ONLINE' => 'There is %d guest user online', 'GUEST_USER_TOTAL' => '%d guest', 'G_ADMINISTRATORS' => 'Administrators', 'G_BOTS' => 'Bots', 'G_GUESTS' => 'Guests', 'G_REGISTERED' => 'Registered users', 'G_REGISTERED_COPPA' => 'Registered COPPA users', 'G_GLOBAL_MODERATORS' => 'Global moderators', 'G_NEWLY_REGISTERED' => 'Newly registered users',

'HIDDEN_USERS_ONLINE' => '%d hidden users online', 'HIDDEN_USERS_TOTAL' => '%d hidden', 'HIDDEN_USERS_TOTAL_AND' => '%d hidden and ', 'HIDDEN_USERS_ZERO_ONLINE' => '0 hidden users online', 'HIDDEN_USERS_ZERO_TOTAL' => '0 hidden', 'HIDDEN_USERS_ZERO_TOTAL_AND' => '0 hidden and ', 'HIDDEN_USER_ONLINE' => '%d hidden user online', 'HIDDEN_USER_TOTAL' => '%d hidden', 'HIDDEN_USER_TOTAL_AND' => '%d hidden and ', 'HIDE_GUESTS' => 'Hide guests', 'HIDE_ME' => 'Hide my online status this session', 'HOURS' => 'Hours', 'HOME' => 'Home',

'ICQ' => 'ICQ', 'ICQ_STATUS' => 'ICQ status', 'IF' => 'If', 'IMAGE' => 'Image', 'IMAGE_FILETYPE_INVALID' => 'Image file type %d for mimetype %s not supported.', 'IMAGE_FILETYPE_MISMATCH' => 'Image file type mismatch: expected extension %1$s but extension %2$s given.', 'IN' => 'in', 'INDEX' => 'Index page', 'INFORMATION' => 'Information', 'INTERESTS' => 'Interests', 'INVALID_DIGEST_CHALLENGE' => 'Invalid digest challenge.', 'INVALID_EMAIL_LOG' => '%s possibly an invalid e-mail address?', 'IP' => 'IP', 'IP_BLACKLISTED' => 'Your IP %1$s has been blocked because it is blacklisted. For details please see <a href="%2$s">%2$s</a>.',

'JABBER' => 'Jabber', 'JOINED' => 'Joined', 'JUMP_PAGE' => 'Enter the page number you wish to go to', 'JUMP_TO' => 'Jump to', 'JUMP_TO_PAGE' => 'Click to jump to page…',

'KB' => 'KB', 'KIB' => 'KiB',

'LAST_POST' => 'Last post', 'LAST_UPDATED' => 'Last updated', 'LAST_VISIT' => 'Last visit', 'LDAP_NO_LDAP_EXTENSION' => 'LDAP extension not available.', 'LDAP_NO_SERVER_CONNECTION' => 'Could not connect to LDAP server.', 'LEGEND' => 'Legend', 'LOCATION' => 'Location', 'LOCK_POST' => 'Lock post', 'LOCK_POST_EXPLAIN' => 'Prevent editing', 'LOCK_TOPIC' => 'Lock topic', 'LOGIN' => 'Login', 'LOGIN_CHECK_PM' => 'Log in to check your private messages.', 'LOGIN_CONFIRMATION' => 'Confirmation of login', 'LOGIN_CONFIRM_EXPLAIN' => 'To prevent brute forcing accounts the board requires you to enter a confirmation code after a maximum amount of failed logins. The code is displayed in the image you should see below. If you are visually impaired or cannot otherwise read this code please contact the %sBoard Administrator%s.', 'LOGIN_ERROR_ATTEMPTS' => 'You exceeded the maximum allowed number of login attempts. In addition to your username and password you now also have to enter the confirm code from the image you see below.', 'LOGIN_ERROR_EXTERNAL_AUTH_APACHE' => 'You have not been authenticated by Apache.', 'LOGIN_ERROR_PASSWORD' => 'You have specified an incorrect password. Please check your password and try again. If you continue to have problems please contact the %sBoard Administrator%s.', 'LOGIN_ERROR_PASSWORD_CONVERT' => 'It was not possible to convert your password when updating this bulletin board’s software. Please %srequest a new password%s. If you continue to have problems please contact the %sBoard Administrator%s.', 'LOGIN_ERROR_USERNAME' => 'You have specified an incorrect username. Please check your username and try again. If you continue to have problems please contact the %sBoard Administrator%s.', 'LOGIN_FORUM' => 'To view or post in this forum you must enter its password.', 'LOGIN_INFO' => 'In order to login you must be registered. Registering takes only a few moments but gives you increased capabilities. The board administrator may also grant additional permissions to registered users. Before you register please ensure you are familiar with our terms of use and related policies. Please ensure you read any forum rules as you navigate around the board.', 'LOGIN_VIEWFORUM' => 'The board requires you to be registered and logged in to view this forum.', 'LOGIN_EXPLAIN_EDIT' => 'In order to edit posts in this forum you have to be registered and logged in.', 'LOGIN_EXPLAIN_VIEWONLINE' => 'In order to view the online list you have to be registered and logged in.', 'LOGOUT' => 'Logout', 'LOGOUT_USER' => 'Logout [ %s ]', 'LOG_ME_IN' => 'Log me on automatically each visit',

'MARK' => 'Mark', 'MARK_ALL' => 'Mark all', 'MARK_FORUMS_READ' => 'Mark forums read', 'MB' => 'MB', 'MIB' => 'MiB', 'MCP' => 'Moderator Control Panel', 'MEMBERLIST' => 'Members', 'MEMBERLIST_EXPLAIN' => 'View complete list of members', 'MERGE' => 'Merge', 'MERGE_POSTS' => 'Merge posts', 'MERGE_TOPIC' => 'Merge topic', 'MESSAGE' => 'Message', 'MESSAGES' => 'Messages', 'MESSAGE_BODY' => 'Message body', 'MINUTES' => 'Minutes', 'MODERATE' => 'Moderate', 'MODERATOR' => 'Moderator', 'MODERATORS' => 'Moderators', 'MONTH' => 'Month', 'MOVE' => 'Move', 'MSNM' => 'MSNM/WLM',

'NA' => 'N/A', 'NEWEST_USER' => 'Our newest member %s', 'NEW_MESSAGE' => 'New message', 'NEW_MESSAGES' => 'New messages', 'NEW_PM' => '%d new message', 'NEW_PMS' => '%d new messages', 'NEW_POST' => 'New post', 'NEW_POSTS' => 'New posts', 'NEXT' => 'Next', // Used in pagination 'NEXT_STEP' => 'Next', 'NEVER' => 'Never', 'NO' => 'No', 'NOT_ALLOWED_MANAGE_GROUP' => 'You are not allowed to manage this group.', 'NOT_AUTHORISED' => 'You are not authorised to access this area.', 'NOT_WATCHING_FORUM' => 'You are no longer subscribed to updates on this forum.', 'NOT_WATCHING_TOPIC' => 'You are no longer subscribed to this topic.', 'NOTIFY_ADMIN' => 'Please notify the board administrator or webmaster.', 'NOTIFY_ADMIN_EMAIL' => 'Please notify the board administrator or webmaster: <a href="mailto:%1$s">%1$s</a>', 'NO_ACCESS_ATTACHMENT' => 'You are not allowed to access this file.', 'NO_ACTION' => 'No action specified.', 'NO_ADMINISTRATORS' => 'There are no administrators.', 'NO_AUTH_ADMIN' => 'Access to the Administration Control Panel is not allowed as you do not have administrative permissions.', 'NO_AUTH_ADMIN_USER_DIFFER' => 'You are not able to re-authenticate as a different user.', 'NO_AUTH_OPERATION' => 'You do not have the necessary permissions to complete this operation.', 'NO_CONNECT_TO_SMTP_HOST' => 'Could not connect to smtp host : %1$s : %2$s', 'NO_BIRTHDAYS' => 'No birthdays today', 'NO_EMAIL_MESSAGE' => 'E-mail message was blank.', 'NO_EMAIL_RESPONSE_CODE' => 'Could not get mail server response codes.', 'NO_EMAIL_SUBJECT' => 'No e-mail subject specified.', 'NO_FORUM' => 'The forum you selected does not exist.', 'NO_FORUMS' => 'This board has no forums.', 'NO_GROUP' => 'The requested usergroup does not exist.', 'NO_GROUP_MEMBERS' => 'This group currently has no members.', 'NO_IPS_DEFINED' => 'No IP addresses or hostnames defined', 'NO_MEMBERS' => 'No members found for this search criterion.', 'NO_MESSAGES' => 'No messages', 'NO_MODE' => 'No mode specified.', 'NO_MODERATORS' => 'There are no moderators.', 'NO_NEW_MESSAGES' => 'No new messages', 'NO_NEW_PM' => '0 new messages', 'NO_NEW_POSTS' => 'No new posts', 'NO_ONLINE_USERS' => 'No registered users', 'NO_POSTS' => 'No posts', 'NO_POSTS_TIME_FRAME' => 'No posts exist inside this topic for the selected time frame.', 'NO_FEED_ENABLED' => 'Feeds are not available on this board.', 'NO_FEED' => 'The requested feed is not available.', 'NO_SUBJECT' => 'No subject specified', // Used for posts having no subject defined but displayed within management pages. 'NO_SUCH_SEARCH_MODULE' => 'The specified search backend doesn’t exist.', 'NO_SUPPORTED_AUTH_METHODS' => 'No supported authentication methods.', 'NO_TOPIC' => 'The requested topic does not exist.', 'NO_TOPIC_FORUM' => 'The topic or forum no longer exists.', 'NO_TOPICS' => 'There are no topics or posts in this forum.', 'NO_TOPICS_TIME_FRAME' => 'No topics exist inside this forum for the selected time frame.', 'NO_UNREAD_PM' => '0 unread messages', 'NO_UPLOAD_FORM_FOUND' => 'Upload initiated but no valid file upload form found.', 'NO_USER' => 'The requested user does not exist.', 'NO_USERS' => 'The requested users do not exist.', 'NO_USER_SPECIFIED' => 'No username was specified.',

// Nullar/Singular/Plural language entry. The key numbers define the number range in which a certain grammatical expression is valid. 'NUM_POSTS_IN_QUEUE' => array( 0 => 'No posts in queue', // 0 1 => '1 post in queue', // 1 2 => '%d posts in queue', // 2+ ),

'OCCUPATION' => 'Occupation', 'OFFLINE' => 'Offline', 'ONLINE' => 'Online', 'ONLINE_BUDDIES' => 'Online friends', 'ONLINE_USERS_TOTAL' => 'In total there are %d users online :: ', 'ONLINE_USERS_ZERO_TOTAL' => 'In total there are 0 users online :: ', 'ONLINE_USER_TOTAL' => 'In total there is %d user online :: ', 'OPTIONS' => 'Options',

'PAGE_OF' => 'Page %1$d of %2$d', 'PASSWORD' => 'Password', 'PIXEL' => 'px', 'PLAY_QUICKTIME_FILE' => 'Play Quicktime file', 'PM' => 'PM', 'POSTING_MESSAGE' => 'Posting message in %s', 'POSTING_PRIVATE_MESSAGE' => 'Composing private message', 'POST' => 'Post', 'POST_ANNOUNCEMENT' => 'Announce', 'POST_STICKY' => 'Sticky', 'POSTED' => 'Posted', 'POSTED_IN_FORUM' => 'in', 'POSTED_ON_DATE' => 'on', 'POSTS' => 'Posts', 'POSTS_UNAPPROVED' => 'At least one post in this topic has not been approved.', 'POST_BY_AUTHOR' => 'by', 'POST_BY_FOE' => 'This post was made by %1$s who is currently on your ignore list. %2$sDisplay this post%3$s.', 'POST_DAY' => '%.2f posts per day', 'POST_DETAILS' => 'Post details', 'POST_NEW_TOPIC' => 'Post new topic', 'POST_PCT' => '%.2f%% of all posts', 'POST_PCT_ACTIVE' => '%.2f%% of user’s posts', 'POST_PCT_ACTIVE_OWN' => '%.2f%% of your posts', 'POST_REPLY' => 'Post a reply', 'POST_REPORTED' => 'Click to view report', 'POST_SUBJECT' => 'Post subject', 'POST_TIME' => 'Post time', 'POST_TOPIC' => 'Post a new topic', 'POST_UNAPPROVED' => 'This post is waiting for approval', 'PREVIEW' => 'Preview', 'PREVIOUS' => 'Previous', // Used in pagination 'PREVIOUS_STEP' => 'Previous', 'PRIVACY' => 'Privacy policy', 'PRIVATE_MESSAGE' => 'Private message', 'PRIVATE_MESSAGES' => 'Private messages', 'PRIVATE_MESSAGING' => 'Private messaging', 'PROFILE' => 'User Control Panel',

'READING_FORUM' => 'Viewing topics in %s', 'READING_GLOBAL_ANNOUNCE' => 'Reading global announcement', 'READING_LINK' => 'Following forum link %s', 'READING_TOPIC' => 'Reading topic in %s', 'READ_PROFILE' => 'Profile', 'REASON' => 'Reason', 'RECORD_ONLINE_USERS' => 'Most users ever online was %1$s on %2$s', 'REDIRECT' => 'Redirect', 'REDIRECTS' => 'Total redirects', 'REGISTER' => 'Register', 'REGISTERED_USERS' => 'Registered users:', 'REG_USERS_ONLINE' => 'There are %d registered users and ', 'REG_USERS_TOTAL' => '%d registered, ', 'REG_USERS_TOTAL_AND' => '%d registered and ', 'REG_USERS_ZERO_ONLINE' => 'There are 0 registered users and ', 'REG_USERS_ZERO_TOTAL' => '0 registered, ', 'REG_USERS_ZERO_TOTAL_AND' => '0 registered and ', 'REG_USER_ONLINE' => 'There is %d registered user and ', 'REG_USER_TOTAL' => '%d registered, ', 'REG_USER_TOTAL_AND' => '%d registered and ', 'REMOVE' => 'Remove', 'REMOVE_INSTALL' => 'Please delete, move or rename the install directory before you use your board. If this directory is still present, only the Administration Control Panel (ACP) will be accessible.', 'REPLIES' => 'Replies', 'REPLY_WITH_QUOTE' => 'Reply with quote', 'REPLYING_GLOBAL_ANNOUNCE' => 'Replying to global announcement', 'REPLYING_MESSAGE' => 'Replying to message in %s', 'REPORT_BY' => 'Report by', 'REPORT_POST' => 'Report this post', 'REPORTING_POST' => 'Reporting post', 'RESEND_ACTIVATION' => 'Resend activation e-mail', 'RESET' => 'Reset', 'RESTORE_PERMISSIONS' => 'Restore permissions', 'RETURN_INDEX' => '%sReturn to the index page%s', 'RETURN_FORUM' => '%sReturn to the forum last visited%s', 'RETURN_PAGE' => '%sReturn to the previous page%s', 'RETURN_TOPIC' => '%sReturn to the topic last visited%s', 'RETURN_TO' => 'Return to', 'FEED' => 'Feed', 'FEED_NEWS' => 'News', 'FEED_TOPICS_ACTIVE' => 'Active Topics', 'FEED_TOPICS_NEW' => 'New Topics', 'RULES_ATTACH_CAN' => 'You can post attachments in this forum', 'RULES_ATTACH_CANNOT' => 'You cannot post attachments in this forum', 'RULES_DELETE_CAN' => 'You can delete your posts in this forum', 'RULES_DELETE_CANNOT' => 'You cannot delete your posts in this forum', 'RULES_DOWNLOAD_CAN' => 'You can download attachments in this forum', 'RULES_DOWNLOAD_CANNOT' => 'You cannot download attachments in this forum', 'RULES_EDIT_CAN' => 'You can edit your posts in this forum', 'RULES_EDIT_CANNOT' => 'You cannot edit your posts in this forum', 'RULES_LOCK_CAN' => 'You can lock your topics in this forum', 'RULES_LOCK_CANNOT' => 'You cannot lock your topics in this forum', 'RULES_POST_CAN' => 'You can post new topics in this forum', 'RULES_POST_CANNOT' => 'You cannot post new topics in this forum', 'RULES_REPLY_CAN' => 'You can reply to topics in this forum', 'RULES_REPLY_CANNOT' => 'You cannot reply to topics in this forum', 'RULES_VOTE_CAN' => 'You can vote in polls in this forum', 'RULES_VOTE_CANNOT' => 'You cannot vote in polls in this forum',

'SEARCH' => 'Search', 'SEARCH_MINI' => 'Search…', 'SEARCH_ADV' => 'Advanced search', 'SEARCH_ADV_EXPLAIN' => 'View the advanced search options', 'SEARCH_KEYWORDS' => 'Search for keywords', 'SEARCHING_FORUMS' => 'Searching forums', 'SEARCH_ACTIVE_TOPICS' => 'View active topics', 'SEARCH_FOR' => 'Search for', 'SEARCH_FORUM' => 'Search this forum…', 'SEARCH_NEW' => 'View new posts', 'SEARCH_POSTS_BY' => 'Search posts by', 'SEARCH_SELF' => 'View your posts', 'SEARCH_TOPIC' => 'Search this topic…', 'SEARCH_UNANSWERED' => 'View unanswered posts', 'SEARCH_UNREAD' => 'View unread posts', 'SECONDS' => 'Seconds', 'SELECT' => 'Select', 'SELECT_ALL_CODE' => 'Select all', 'SELECT_DESTINATION_FORUM' => 'Please select a destination forum', 'SELECT_FORUM' => 'Select a forum', 'SEND_EMAIL' => 'E-mail', // Used for submit buttons 'SEND_EMAIL_USER' => 'E-mail', // Used as: {L_SEND_EMAIL_USER} {USERNAME} -> E-mail UserX 'SEND_PRIVATE_MESSAGE' => 'Send private message', 'SETTINGS' => 'Settings', 'SIGNATURE' => 'Signature', 'SKIP' => 'Skip to content', 'SMTP_NO_AUTH_SUPPORT' => 'SMTP server does not support authentication.', 'SORRY_AUTH_READ' => 'You are not authorised to read this forum.', 'SORRY_AUTH_VIEW_ATTACH' => 'You are not authorised to download this attachment.', 'SORT_BY' => 'Sort by', 'SORT_JOINED' => 'Joined date', 'SORT_LOCATION' => 'Location', 'SORT_RANK' => 'Rank', 'SORT_POSTS' => 'Posts', 'SORT_TOPIC_TITLE' => 'Topic title', 'SORT_USERNAME' => 'Username', 'SPLIT_TOPIC' => 'Split topic', 'SQL_ERROR_OCCURRED' => 'An SQL error occurred while fetching this page. Please contact the %sBoard Administrator%s if this problem persists.', 'STATISTICS' => 'Statistics', 'START_WATCHING_FORUM' => 'Subscribe forum', 'START_WATCHING_TOPIC' => 'Subscribe topic', 'STOP_WATCHING_FORUM' => 'Unsubscribe forum', 'STOP_WATCHING_TOPIC' => 'Unsubscribe topic', 'SUBFORUM' => 'Subforum', 'SUBFORUMS' => 'Subforums', 'SUBJECT' => 'Subject', 'SUBMIT' => 'Submit',

'TERMS_USE' => 'Terms of use', 'TEST_CONNECTION' => 'Test connection', 'THE_TEAM' => 'The team', 'TIME' => 'Time',

'TOO_LONG' => 'The value you entered is too long.',

'TOO_LONG_AIM' => 'The screenname you entered is too long.', 'TOO_LONG_CONFIRM_CODE' => 'The confirm code you entered is too long.', 'TOO_LONG_DATEFORMAT' => 'The date format you entered is too long.', 'TOO_LONG_ICQ' => 'The ICQ number you entered is too long.', 'TOO_LONG_INTERESTS' => 'The interests you entered is too long.', 'TOO_LONG_JABBER' => 'The Jabber account name you entered is too long.', 'TOO_LONG_LOCATION' => 'The location you entered is too long.', 'TOO_LONG_MSN' => 'The MSNM/WLM name you entered is too long.', 'TOO_LONG_NEW_PASSWORD' => 'The password you entered is too long.', 'TOO_LONG_OCCUPATION' => 'The occupation you entered is too long.', 'TOO_LONG_PASSWORD_CONFIRM' => 'The password confirmation you entered is too long.', 'TOO_LONG_USER_PASSWORD' => 'The password you entered is too long.', 'TOO_LONG_USERNAME' => 'The username you entered is too long.', 'TOO_LONG_EMAIL' => 'The e-mail address you entered is too long.', 'TOO_LONG_EMAIL_CONFIRM' => 'The e-mail address confirmation you entered is too long.', 'TOO_LONG_WEBSITE' => 'The website address you entered is too long.', 'TOO_LONG_YIM' => 'The Yahoo! Messenger name you entered is too long.',

'TOO_MANY_VOTE_OPTIONS' => 'You have tried to vote for too many options.',

'TOO_SHORT' => 'The value you entered is too short.',

'TOO_SHORT_AIM' => 'The screenname you entered is too short.', 'TOO_SHORT_CONFIRM_CODE' => 'The confirm code you entered is too short.', 'TOO_SHORT_DATEFORMAT' => 'The date format you entered is too short.', 'TOO_SHORT_ICQ' => 'The ICQ number you entered is too short.', 'TOO_SHORT_INTERESTS' => 'The interests you entered is too short.', 'TOO_SHORT_JABBER' => 'The Jabber account name you entered is too short.', 'TOO_SHORT_LOCATION' => 'The location you entered is too short.', 'TOO_SHORT_MSN' => 'The MSNM/WLM name you entered is too short.', 'TOO_SHORT_NEW_PASSWORD' => 'The password you entered is too short.', 'TOO_SHORT_OCCUPATION' => 'The occupation you entered is too short.', 'TOO_SHORT_PASSWORD_CONFIRM' => 'The password confirmation you entered is too short.', 'TOO_SHORT_USER_PASSWORD' => 'The password you entered is too short.', 'TOO_SHORT_USERNAME' => 'The username you entered is too short.', 'TOO_SHORT_EMAIL' => 'The e-mail address you entered is too short.', 'TOO_SHORT_EMAIL_CONFIRM' => 'The e-mail address confirmation you entered is too short.', 'TOO_SHORT_WEBSITE' => 'The website address you entered is too short.', 'TOO_SHORT_YIM' => 'The Yahoo! Messenger name you entered is too short.',

'TOPIC' => 'Topic', 'TOPICS' => 'Topics', 'TOPICS_UNAPPROVED' => 'At least one topic in this forum has not been approved.', 'TOPIC_ICON' => 'Topic icon', 'TOPIC_LOCKED' => 'This topic is locked, you cannot edit posts or make further replies.', 'TOPIC_LOCKED_SHORT'=> 'Topic locked', 'TOPIC_MOVED' => 'Moved topic', 'TOPIC_REVIEW' => 'Topic review', 'TOPIC_TITLE' => 'Topic title', 'TOPIC_UNAPPROVED' => 'This topic has not been approved', 'TOTAL_ATTACHMENTS' => 'Attachment(s)', 'TOTAL_LOG' => '1 log', 'TOTAL_LOGS' => '%d logs', 'TOTAL_NO_PM' => '0 private messages in total', 'TOTAL_PM' => '1 private message in total', 'TOTAL_PMS' => '%d private messages in total', 'TOTAL_POSTS' => 'Total posts', 'TOTAL_POSTS_OTHER' => 'Total posts %d', 'TOTAL_POSTS_ZERO' => 'Total posts 0', 'TOPIC_REPORTED' => 'This topic has been reported', 'TOTAL_TOPICS_OTHER'=> 'Total topics %d', 'TOTAL_TOPICS_ZERO' => 'Total topics 0', 'TOTAL_USERS_OTHER' => 'Total members %d', 'TOTAL_USERS_ZERO' => 'Total members 0', 'TRACKED_PHP_ERROR' => 'Tracked PHP errors: %s',

'UNABLE_GET_IMAGE_SIZE' => 'It was not possible to determine the dimensions of the image.', 'UNABLE_TO_DELIVER_FILE'=> 'Unable to deliver file.', 'UNKNOWN_BROWSER' => 'Unknown browser', 'UNMARK_ALL' => 'Unmark all', 'UNREAD_MESSAGES' => 'Unread messages', 'UNREAD_PM' => '%d unread message', 'UNREAD_PMS' => '%d unread messages', 'UNWATCHED_FORUMS' => 'You are no longer subscribed to the selected forums.', 'UNWATCHED_TOPICS' => 'You are no longer subscribed to the selected topics.', 'UNWATCHED_FORUMS_TOPICS' => 'You are no longer subscribed to the selected entries.', 'UPDATE' => 'Update', 'UPLOAD_IN_PROGRESS' => 'The upload is currently in progress.', 'URL_REDIRECT' => 'If your browser does not support meta redirection %splease click HERE to be redirected%s.', 'USERGROUPS' => 'Groups', 'USERNAME' => 'Username', 'USERNAMES' => 'Usernames', 'USER_AVATAR' => 'User avatar', 'USER_CANNOT_READ' => 'You cannot read posts in this forum.', 'USER_POST' => '%d Post', 'USER_POSTS' => '%d Posts', 'USERS' => 'Users', 'USE_PERMISSIONS' => 'Test out user’s permissions',

'USER_NEW_PERMISSION_DISALLOWED' => 'We are sorry, but you are not authorised to use this feature. You may have just registered here and may need to participate more to be able to use this feature.',

'VARIANT_DATE_SEPARATOR' => ' / ', // Used in date format dropdown, eg: "Today, 13:37 / 01 Jan 2007, 13:37" ... to join a relative date with calendar date 'VIEWED' => 'Viewed', 'VIEWING_FAQ' => 'Viewing FAQ', 'VIEWING_MEMBERS' => 'Viewing member details', 'VIEWING_ONLINE' => 'Viewing who is online', 'VIEWING_MCP' => 'Viewing moderator control panel', 'VIEWING_MEMBER_PROFILE' => 'Viewing member profile', 'VIEWING_PRIVATE_MESSAGES' => 'Viewing private messages', 'VIEWING_REGISTER' => 'Registering account', 'VIEWING_UCP' => 'Viewing user control panel', 'VIEWS' => 'Views', 'VIEW_BOOKMARKS' => 'View bookmarks', 'VIEW_FORUM_LOGS' => 'View Logs', 'VIEW_LATEST_POST' => 'View the latest post', 'VIEW_NEWEST_POST' => 'View first unread post', 'VIEW_NOTES' => 'View user notes', 'VIEW_ONLINE_TIME' => 'based on users active over the past %d minute', 'VIEW_ONLINE_TIMES' => 'based on users active over the past %d minutes', 'VIEW_TOPIC' => 'View topic', 'VIEW_TOPIC_ANNOUNCEMENT' => 'Announcement: ', 'VIEW_TOPIC_GLOBAL' => 'Global Announcement: ', 'VIEW_TOPIC_LOCKED' => 'Locked: ', 'VIEW_TOPIC_LOGS' => 'View logs', 'VIEW_TOPIC_MOVED' => 'Moved: ', 'VIEW_TOPIC_POLL' => 'Poll: ', 'VIEW_TOPIC_STICKY' => 'Sticky: ', 'VISIT_WEBSITE' => 'Visit website',

'WARNINGS' => 'Warnings', 'WARN_USER' => 'Warn user', 'WELCOME_SUBJECT' => 'Welcome to %s forums', 'WEBSITE' => 'Website', 'WHOIS' => 'Whois', 'WHO_IS_ONLINE' => 'Who is online', 'WRONG_PASSWORD' => 'You entered an incorrect password.',

'WRONG_DATA_ICQ' => 'The number you entered is not a valid ICQ number.', 'WRONG_DATA_JABBER' => 'The name you entered is not a valid Jabber account name.', 'WRONG_DATA_LANG' => 'The language you specified is not valid.', 'WRONG_DATA_WEBSITE' => 'The website address has to be a valid URL, including the protocol. For example http://www.example.com/.', 'WROTE' => 'wrote',

'YEAR' => 'Year', 'YEAR_MONTH_DAY' => '(YYYY-MM-DD)', 'YES' => 'Yes', 'YIM' => 'YIM', 'YOU_LAST_VISIT' => 'Last visit was: %s', 'YOU_NEW_PM' => 'A new private message is waiting for you in your Inbox.', 'YOU_NEW_PMS' => 'New private messages are waiting for you in your Inbox.', 'YOU_NO_NEW_PM' => 'No new private messages are waiting for you.',

'datetime' => array( 'TODAY' => 'Today', 'TOMORROW' => 'Tomorrow', 'YESTERDAY' => 'Yesterday', 'AGO' => array( 0 => 'less than a minute ago', 1 => '%d minute ago', 2 => '%d minutes ago', 60 => '1 hour ago', ),

'Sunday' => 'Sunday', 'Monday' => 'Monday', 'Tuesday' => 'Tuesday', 'Wednesday' => 'Wednesday', 'Thursday' => 'Thursday', 'Friday' => 'Friday', 'Saturday' => 'Saturday',

'Sun' => 'Sun', 'Mon' => 'Mon', 'Tue' => 'Tue', 'Wed' => 'Wed', 'Thu' => 'Thu', 'Fri' => 'Fri', 'Sat' => 'Sat',

'January' => 'January', 'February' => 'February', 'March' => 'March', 'April' => 'April', 'May' => 'May', 'June' => 'June', 'July' => 'July', 'August' => 'August', 'September' => 'September', 'October' => 'October', 'November' => 'November', 'December' => 'December',

'Jan' => 'Jan', 'Feb' => 'Feb', 'Mar' => 'Mar', 'Apr' => 'Apr', 'May_short' => 'May', // Short representation of "May". May_short used because in English the short and long date are the same for May. 'Jun' => 'Jun', 'Jul' => 'Jul', 'Aug' => 'Aug', 'Sep' => 'Sep', 'Oct' => 'Oct', 'Nov' => 'Nov', 'Dec' => 'Dec', ),

'tz' => array( '-12' => 'UTC - 12 hours', '-11' => 'UTC - 11 hours', '-10' => 'UTC - 10 hours', '-9.5' => 'UTC - 9:30 hours', '-9' => 'UTC - 9 hours', '-8' => 'UTC - 8 hours', '-7' => 'UTC - 7 hours', '-6' => 'UTC - 6 hours', '-5' => 'UTC - 5 hours', '-4.5' => 'UTC - 4:30 hours', '-4' => 'UTC - 4 hours', '-3.5' => 'UTC - 3:30 hours', '-3' => 'UTC - 3 hours', '-2' => 'UTC - 2 hours', '-1' => 'UTC - 1 hour', '0' => 'UTC', '1' => 'UTC + 1 hour', '2' => 'UTC + 2 hours', '3' => 'UTC + 3 hours', '3.5' => 'UTC + 3:30 hours', '4' => 'UTC + 4 hours', '4.5' => 'UTC + 4:30 hours', '5' => 'UTC + 5 hours', '5.5' => 'UTC + 5:30 hours', '5.75' => 'UTC + 5:45 hours', '6' => 'UTC + 6 hours', '6.5' => 'UTC + 6:30 hours', '7' => 'UTC + 7 hours', '8' => 'UTC + 8 hours', '8.75' => 'UTC + 8:45 hours', '9' => 'UTC + 9 hours', '9.5' => 'UTC + 9:30 hours', '10' => 'UTC + 10 hours', '10.5' => 'UTC + 10:30 hours', '11' => 'UTC + 11 hours', '11.5' => 'UTC + 11:30 hours', '12' => 'UTC + 12 hours', '12.75' => 'UTC + 12:45 hours', '13' => 'UTC + 13 hours', '14' => 'UTC + 14 hours', 'dst' => '[ DST ]', ),

'tz_zones' => array( '-12' => '[UTC - 12] Baker Island Time', '-11' => '[UTC - 11] Niue Time, Samoa Standard Time', '-10' => '[UTC - 10] Hawaii-Aleutian Standard Time, Cook Island Time', '-9.5' => '[UTC - 9:30] Marquesas Islands Time', '-9' => '[UTC - 9] Alaska Standard Time, Gambier Island Time', '-8' => '[UTC - 8] Pacific Standard Time', '-7' => '[UTC - 7] Mountain Standard Time', '-6' => '[UTC - 6] Central Standard Time', '-5' => '[UTC - 5] Eastern Standard Time', '-4.5' => '[UTC - 4:30] Venezuelan Standard Time', '-4' => '[UTC - 4] Atlantic Standard Time', '-3.5' => '[UTC - 3:30] Newfoundland Standard Time', '-3' => '[UTC - 3] Amazon Standard Time, Central Greenland Time', '-2' => '[UTC - 2] Fernando de Noronha Time, South Georgia & the South Sandwich Islands Time', '-1' => '[UTC - 1] Azores Standard Time, Cape Verde Time, Eastern Greenland Time', '0' => '[UTC] Western European Time, Greenwich Mean Time', '1' => '[UTC + 1] Central European Time, West African Time', '2' => '[UTC + 2] Eastern European Time, Central African Time', '3' => '[UTC + 3] Moscow Standard Time, Eastern African Time', '3.5' => '[UTC + 3:30] Iran Standard Time', '4' => '[UTC + 4] Gulf Standard Time, Samara Standard Time', '4.5' => '[UTC + 4:30] Afghanistan Time', '5' => '[UTC + 5] Pakistan Standard Time, Yekaterinburg Standard Time', '5.5' => '[UTC + 5:30] Indian Standard Time, Sri Lanka Time', '5.75' => '[UTC + 5:45] Nepal Time', '6' => '[UTC + 6] Bangladesh Time, Bhutan Time, Novosibirsk Standard Time', '6.5' => '[UTC + 6:30] Cocos Islands Time, Myanmar Time', '7' => '[UTC + 7] Indochina Time, Krasnoyarsk Standard Time', '8' => '[UTC + 8] Chinese Standard Time, Australian Western Standard Time, Irkutsk Standard Time', '8.75' => '[UTC + 8:45] Southeastern Western Australia Standard Time', '9' => '[UTC + 9] Japan Standard Time, Korea Standard Time, Chita Standard Time', '9.5' => '[UTC + 9:30] Australian Central Standard Time', '10' => '[UTC + 10] Australian Eastern Standard Time, Vladivostok Standard Time', '10.5' => '[UTC + 10:30] Lord Howe Standard Time', '11' => '[UTC + 11] Solomon Island Time, Magadan Standard Time', '11.5' => '[UTC + 11:30] Norfolk Island Time', '12' => '[UTC + 12] New Zealand Time, Fiji Time, Kamchatka Standard Time', '12.75' => '[UTC + 12:45] Chatham Islands Time', '13' => '[UTC + 13] Tonga Time, Phoenix Islands Time', '14' => '[UTC + 14] Line Island Time', ),

// The value is only an example and will get replaced by the current time on view 'dateformats' => array( 'd M Y, H:i' => '01 Jan 2007, 13:37', 'd M Y H:i' => '01 Jan 2007 13:37', 'M jS, \'y, H:i' => 'Jan 1st, \'07, 13:37', 'D M d, Y g:i a' => 'Mon Jan 01, 2007 1:37 pm', 'F jS, Y, g:i a' => 'January 1st, 2007, 1:37 pm', '|d M Y|, H:i' => 'Today, 13:37 / 01 Jan 2007, 13:37', '|F jS, Y|, g:i a' => 'Today, 1:37 pm / January 1st, 2007, 1:37 pm' ),

// The default dateformat which will be used on new installs in this language // Translators should change this if a the usual date format is different 'default_dateformat' => 'D M d, Y g:i a', // Mon Jan 01, 2007 1:37 pm

));

?>