From beeb2281cd3c4c20ae960a1ebbe19e0d0b5a4b92 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Mon, 21 May 2007 12:15:16 +0000 Subject: [PATCH 001/136] 99 bugs on the wall ... #11339 #11283 ... 97 bugs on the wall ... git-svn-id: file:///svn/phpbb/trunk@7658 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 2 +- phpBB/install/convertors/functions_phpbb20.php | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index cab9d8bc25..3c01186528 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1381,7 +1381,7 @@ function validate_username($username, $allowed_username = false) foreach ($bad_usernames as $bad_username) { - if (preg_match('#^' . $bad_username . '#', $clean_username)) + if (preg_match('#^' . str_replace('#', '\#', $bad_username) . '#', $clean_username)) { return 'USERNAME_DISALLOWED'; } diff --git a/phpBB/install/convertors/functions_phpbb20.php b/phpBB/install/convertors/functions_phpbb20.php index 6788ecd900..a350ee8f4e 100644 --- a/phpBB/install/convertors/functions_phpbb20.php +++ b/phpBB/install/convertors/functions_phpbb20.php @@ -533,6 +533,14 @@ function phpbb_convert_authentication($mode) ORDER BY user_regdate ASC"; $result = $src_db->sql_query($sql); + + $sql = 'SELECT group_id + FROM ' . GROUPS_TABLE . " + WHERE group_name = '" . $db->sql_escape('BOTS') . "'"; + $result = $db->sql_query($sql); + $bot_group_id = (int) $db->sql_fetchfield('group_id'); + $db->sql_freeresult($result); + while ($row = $src_db->sql_fetchrow($result)) { $user_id = (int) phpbb_user_id($row['user_id']); @@ -710,7 +718,7 @@ function phpbb_convert_authentication($mode) if ($mode == 'start') { user_group_auth('guests', 'SELECT user_id, {GUESTS} FROM ' . USERS_TABLE . ' WHERE user_id = ' . ANONYMOUS, false); - user_group_auth('registered', 'SELECT user_id, {REGISTERED} FROM ' . USERS_TABLE . ' WHERE user_id <> ' . ANONYMOUS, false); + user_group_auth('registered', 'SELECT user_id, {REGISTERED} FROM ' . USERS_TABLE . ' WHERE user_id <> ' . ANONYMOUS . " AND group_id <> $bot_group_id", false); // Selecting from old table if (!empty($config['increment_user_id'])) From 93c91c4a91bebc81424b5a4244f7129ab119c6c9 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Mon, 21 May 2007 12:30:14 +0000 Subject: [PATCH 002/136] #11257 ... 96 bugs on the wall ... git-svn-id: file:///svn/phpbb/trunk@7659 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/posting.php | 1 + 1 file changed, 1 insertion(+) diff --git a/phpBB/posting.php b/phpBB/posting.php index 77f8aa720d..599b7ddae7 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -1249,6 +1249,7 @@ $template->assign_vars(array( 'S_BBCODE_ALLOWED' => $bbcode_status, 'S_BBCODE_CHECKED' => ($bbcode_checked) ? ' checked="checked"' : '', 'S_SMILIES_ALLOWED' => $smilies_status, + 'S_SHOW_SMILEY_LINK' => $smilies_status, 'S_SMILIES_CHECKED' => ($smilies_checked) ? ' checked="checked"' : '', 'S_SIG_ALLOWED' => ($auth->acl_get('f_sigs', $forum_id) && $config['allow_sig'] && $user->data['is_registered']) ? true : false, 'S_SIGNATURE_CHECKED' => ($sig_checked) ? ' checked="checked"' : '', From c7853e2a4e5782309d9da0db3a890233a8684389 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Mon, 21 May 2007 17:50:12 +0000 Subject: [PATCH 003/136] Better this way :D git-svn-id: file:///svn/phpbb/trunk@7660 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/cache.php | 2 +- phpBB/includes/functions_user.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/includes/cache.php b/phpBB/includes/cache.php index 1f22d60a7f..d021aac507 100644 --- a/phpBB/includes/cache.php +++ b/phpBB/includes/cache.php @@ -394,7 +394,7 @@ class cache extends acm $usernames = array(); while ($row = $db->sql_fetchrow($result)) { - $usernames[] = utf8_clean_string(str_replace('%', '.*?', preg_quote($row['disallow_username'], '$#'))); + $usernames[] = str_replace('%', '.*?', preg_quote(utf8_clean_string($row['disallow_username']), '#')); } $db->sql_freeresult($result); diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 3c01186528..cab9d8bc25 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1381,7 +1381,7 @@ function validate_username($username, $allowed_username = false) foreach ($bad_usernames as $bad_username) { - if (preg_match('#^' . str_replace('#', '\#', $bad_username) . '#', $clean_username)) + if (preg_match('#^' . $bad_username . '#', $clean_username)) { return 'USERNAME_DISALLOWED'; } From 34f183217b13f992f894f20b84001af080a8041b Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Mon, 21 May 2007 19:34:30 +0000 Subject: [PATCH 004/136] *** empty log message *** git-svn-id: file:///svn/phpbb/trunk@7661 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/install/schemas/schema_data.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/install/schemas/schema_data.sql b/phpBB/install/schemas/schema_data.sql index 7122daa8a4..5e7d69b38e 100644 --- a/phpBB/install/schemas/schema_data.sql +++ b/phpBB/install/schemas/schema_data.sql @@ -204,7 +204,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('topics_per_page', INSERT INTO phpbb_config (config_name, config_value) VALUES ('tpl_allow_php', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_icons_path', 'images/upload_icons'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_path', 'files'); -INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.0.RC1'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.0.RC2-dev'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400'); From 648399cff3da5528dd747e7bbf0c57b0e7552da9 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Tue, 22 May 2007 14:08:48 +0000 Subject: [PATCH 005/136] Changed the way we assemble user_group entries during cross-DB conversion. The old way produced many invalid entries for admins. git-svn-id: file:///svn/phpbb/trunk@7662 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_convert.php | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php index 22323a803a..98c1452c23 100644 --- a/phpBB/includes/functions_convert.php +++ b/phpBB/includes/functions_convert.php @@ -1137,21 +1137,12 @@ function user_group_auth($group, $select_query, $use_src_db) } else { - $result = $src_db->sql_query(str_replace('{' . strtoupper($group) . '}', $group_id . ', 0', $select_query)); + $result = $src_db->sql_query(str_replace('{' . strtoupper($group) . '}', $group_id . ' ', $select_query)); while ($row = $src_db->sql_fetchrow($result)) { - // make sure it's exactly 3 ints that were returned - $data = array(); - reset($row); - for ($i = 0; $i < 3; $i++) - { - $data[] = (int) current($row); - next($row); - } - // this might become quite a lot of INSERTS unfortunately - $sql = 'INSERT INTO ' . USER_GROUP_TABLE . ' (user_id, group_id, user_pending) - VALUES (' . implode(', ', $data) . ')'; + $sql = 'INSERT INTO ' . USER_GROUP_TABLE . " (user_id, group_id, user_pending) + VALUES ({$row['user_id']}, $group_id, 0)"; $db->sql_query($sql); } $src_db->sql_freeresult($result); From 3899e337e6c089b8399c7d3f8609bc467c64ab74 Mon Sep 17 00:00:00 2001 From: David M Date: Tue, 22 May 2007 21:32:26 +0000 Subject: [PATCH 006/136] #11255 #11259 #11291 #11335 #11457 #11473 #11475 #11511 #11523 #11527 git-svn-id: file:///svn/phpbb/trunk@7663 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/style/acp_styles.html | 6 ++--- phpBB/adm/style/permission_trace.html | 4 +-- phpBB/docs/CHANGELOG.html | 10 ++++++- phpBB/includes/acp/acp_bbcodes.php | 7 +++++ phpBB/includes/acp/acp_styles.php | 27 ++++++++++--------- phpBB/includes/auth.php | 2 +- phpBB/includes/db/oracle.php | 3 ++- phpBB/includes/mcp/mcp_main.php | 4 +-- phpBB/language/en/acp/posting.php | 1 + phpBB/language/en/mcp.php | 2 +- phpBB/language/en/posting.php | 2 +- phpBB/mcp.php | 9 ++++++- .../prosilver/template/login_forum.html | 2 +- .../styles/prosilver/template/mcp_queue.html | 2 +- .../prosilver/template/memberlist_im.html | 1 + .../subsilver2/template/login_forum.html | 2 +- .../styles/subsilver2/template/mcp_queue.html | 2 +- 17 files changed, 56 insertions(+), 30 deletions(-) diff --git a/phpBB/adm/style/acp_styles.html b/phpBB/adm/style/acp_styles.html index 2b067cb292..26d0a6af4a 100644 --- a/phpBB/adm/style/acp_styles.html +++ b/phpBB/adm/style/acp_styles.html @@ -65,8 +65,8 @@ {L_SELECT_IMAGE} {L_SELECT_IMAGE}:   @@ -80,7 +80,7 @@
-
+
diff --git a/phpBB/adm/style/permission_trace.html b/phpBB/adm/style/permission_trace.html index 96e18c396a..7f7079cc8f 100644 --- a/phpBB/adm/style/permission_trace.html +++ b/phpBB/adm/style/permission_trace.html @@ -46,6 +46,6 @@
- - + + diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 28e8cd63db..c56fa29653 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -185,7 +185,15 @@ p a {
diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php index ee1decea1c..2fdbdbdbd1 100644 --- a/phpBB/includes/acp/acp_bbcodes.php +++ b/phpBB/includes/acp/acp_bbcodes.php @@ -383,6 +383,13 @@ class acp_bbcodes // Lowercase tags $bbcode_tag = preg_replace('/.*?\[([a-z0-9_-]+=?).*/i', '$1', $bbcode_match); + + if (!preg_match('/^[a-zA-Z0-9_-]+=?$/', $bbcode_tag)) + { + global $user; + trigger_error($user->lang['BBCODE_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING); + } + $fp_match = preg_replace('#\[/?' . $bbcode_tag . '#ie', "strtolower('\$0')", $fp_match); $fp_replace = preg_replace('#\[/?' . $bbcode_tag . '#ie', "strtolower('\$0')", $fp_replace); $sp_match = preg_replace('#\[/?' . $bbcode_tag . '#ie', "strtolower('\$0')", $sp_match); diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php index b876cc2d65..582b25f5c5 100644 --- a/phpBB/includes/acp/acp_styles.php +++ b/phpBB/includes/acp/acp_styles.php @@ -1355,19 +1355,17 @@ parse_css_file = {PARSE_CSS_FILE} { $dp2 = @opendir("$dir/$imgnamelang"); - if (!$dp2) + if ($dp2) { - continue; - } - - while (($file2 = readdir($dp2)) !== false) - { - if (preg_match('#\.(?:gif|jpg|png)$#', $file2)) + while (($file2 = readdir($dp2)) !== false) { - $imagesetlist['lang'][] = "$imgnamelang/$file2"; + if (preg_match('#\.(?:gif|jpg|png)$#', $file2)) + { + $imagesetlist['lang'][] = "$imgnamelang/$file2"; + } } + closedir($dp2); } - closedir($dp2); } closedir($dp); } @@ -1408,7 +1406,8 @@ parse_css_file = {PARSE_CSS_FILE} sort($imagesetlist['lang']); sort($imagesetlist['nolang']); - $imagesetlist_options = ''; + $image_found = false; + $img_val = ''; foreach ($imagesetlist as $type => $img_ary) { if ($type !== 'lang' || $sql_extra) @@ -1424,7 +1423,8 @@ parse_css_file = {PARSE_CSS_FILE} $selected = (!empty($imgname) && strpos($image_filename, $imgtext) !== false); if ($selected) { - $template->assign_var('IMAGE_SELECT', true); + $image_found = true; + $img_val = htmlspecialchars($img); } $template->assign_block_vars('imagesetlist.images', array( 'SELECTED' => $selected, @@ -1442,13 +1442,14 @@ parse_css_file = {PARSE_CSS_FILE} 'L_TITLE' => $user->lang[$this->page_title], 'L_EXPLAIN' => $user->lang[$this->page_title . '_EXPLAIN'], 'IMAGE_OPTIONS' => $img_options, - 'IMAGELIST_OPTIONS' => $imagesetlist_options, 'IMAGE_SIZE' => $imgsize_bool, 'IMAGE_REQUEST' => $image_request, 'U_ACTION' => $this->u_action . "&action=edit&id=$imageset_id", 'U_BACK' => $this->u_action, 'NAME' => $imageset_name, - 'ERROR' => !$valid_name + 'ERROR' => !$valid_name, + 'IMG_SRC' => ($image_found) ? '../styles/' . $imageset_path . '/imageset/' . $img_val : 'images/no_image.png', + 'IMAGE_SELECT' => $image_found )); } diff --git a/phpBB/includes/auth.php b/phpBB/includes/auth.php index 3b05652a87..0f0349a6f3 100644 --- a/phpBB/includes/auth.php +++ b/phpBB/includes/auth.php @@ -127,7 +127,7 @@ class auth } } } - + return !$negate; // Founder always has all global options set to true... return ($negate) ? !$this->cache[$f][$opt] : $this->cache[$f][$opt]; } diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php index 9c0491d8c8..1d2a097e04 100644 --- a/phpBB/includes/db/oracle.php +++ b/phpBB/includes/db/oracle.php @@ -110,10 +110,11 @@ class dbal_oracle extends dbal $in_transaction = true; } + $array = array(); + // We overcome Oracle's 4000 char limit by binding vars if (strlen($query) > 4000) { - $array = array(); if (preg_match('/^(INSERT INTO[^(]+)\\(([^()]+)\\) VALUES[^(]+\\((.*?)\\)$/s', $query, $regs)) { diff --git a/phpBB/includes/mcp/mcp_main.php b/phpBB/includes/mcp/mcp_main.php index 687900e646..758c0b22c2 100644 --- a/phpBB/includes/mcp/mcp_main.php +++ b/phpBB/includes/mcp/mcp_main.php @@ -1146,7 +1146,7 @@ function mcp_fork_topic($topic_ids) } // Sync new topics, parent forums and board stats - sync('topic', 'topic_id', $new_topic_id_list, true); + sync('topic', 'topic_id', $new_topic_id_list); $sync_sql = array(); @@ -1162,7 +1162,7 @@ function mcp_fork_topic($topic_ids) $db->sql_query($sql); } - sync('forum', 'forum_id', $to_forum_id, true); + sync('forum', 'forum_id', $to_forum_id); set_config('num_topics', $config['num_topics'] + sizeof($new_topic_id_list), true); set_config('num_posts', $config['num_posts'] + $total_posts, true); diff --git a/phpBB/language/en/acp/posting.php b/phpBB/language/en/acp/posting.php index c543c5f246..ebed47b56d 100644 --- a/phpBB/language/en/acp/posting.php +++ b/phpBB/language/en/acp/posting.php @@ -43,6 +43,7 @@ $lang = array_merge($lang, array( 'BBCODE_HELPLINE_EXPLAIN' => 'This field contains the mouse over text of the BBCode.', 'BBCODE_HELPLINE_TEXT' => 'Help line text', 'BBCODE_INVALID_TAG_NAME' => 'The BBCode tag name that you selected already exists.', + 'BBCODE_INVALID' => 'Your BBCode is constructed in an invalid form.', 'BBCODE_OPEN_ENDED_TAG' => 'Your custom BBCode must contain both an opening and a closing tag.', 'BBCODE_TAG' => 'Tag', 'BBCODE_TAG_TOO_LONG' => 'The tag name you selected is too long.', diff --git a/phpBB/language/en/mcp.php b/phpBB/language/en/mcp.php index 89b57d5d65..33e626f452 100644 --- a/phpBB/language/en/mcp.php +++ b/phpBB/language/en/mcp.php @@ -222,7 +222,7 @@ $lang = array_merge($lang, array( 'NO_REPORT_SELECTED' => 'You must select at least one report to perform this action.', 'NO_TOPIC_ICON' => 'None', 'NO_TOPIC_SELECTED' => 'You must select at least one topic to perform this action.', - 'NO_TOPICS_QUEUE' => 'No topics', + 'NO_TOPICS_QUEUE' => 'There are no topics waiting for approval.', 'ONLY_TOPIC' => 'Only topic "%s"', 'OTHER_USERS' => 'Other users posting from this IP', diff --git a/phpBB/language/en/posting.php b/phpBB/language/en/posting.php index 480a95c392..edba14a434 100644 --- a/phpBB/language/en/posting.php +++ b/phpBB/language/en/posting.php @@ -49,7 +49,7 @@ $lang = array_merge($lang, array( 'BBCODE_IS_ON' => '%sBBCode%s is ON', 'BBCODE_I_HELP' => 'Italic text: [i]text[/i]', 'BBCODE_L_HELP' => 'List: [list]text[/list]', - 'BBCODE_LISTITEM_HELP' => 'List item: [*]text[/*]', + 'BBCODE_LISTITEM_HELP' => 'List item: [*]text[/*]', 'BBCODE_O_HELP' => 'Ordered list: [list=]text[/list]', 'BBCODE_P_HELP' => 'Insert image: [img]http://image_url[/img]', 'BBCODE_Q_HELP' => 'Quote text: [quote]text[/quote]', diff --git a/phpBB/mcp.php b/phpBB/mcp.php index a8042c5b57..8874ef7f33 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -267,7 +267,9 @@ function _module_warn_url($mode, &$module_row) { if ($mode == 'front' || $mode == 'list') { - return ''; + global $forum_id; + + return ($forum_id) ? "&f=$forum_id" : ''; } if ($mode == 'warn_post') @@ -307,6 +309,11 @@ function _module_queue_url($mode, &$module_row) return extra_url(); } +function _module_reports_url($mode, &$module_row) +{ + return extra_url(); +} + function extra_url() { global $forum_id, $topic_id, $post_id, $user_id; diff --git a/phpBB/styles/prosilver/template/login_forum.html b/phpBB/styles/prosilver/template/login_forum.html index f47586f469..46544339f5 100644 --- a/phpBB/styles/prosilver/template/login_forum.html +++ b/phpBB/styles/prosilver/template/login_forum.html @@ -2,7 +2,7 @@

{L_LOGIN} {FORUM_NAME}

-
+
diff --git a/phpBB/styles/prosilver/template/mcp_queue.html b/phpBB/styles/prosilver/template/mcp_queue.html index 096ed8243a..2db8f88640 100644 --- a/phpBB/styles/prosilver/template/mcp_queue.html +++ b/phpBB/styles/prosilver/template/mcp_queue.html @@ -77,7 +77,7 @@ -

{L_NO_TOPICS_QUEUE}{L_NO_POSTS}

+

{L_NO_TOPICS_QUEUE}{L_UNAPPROVED_POSTS_ZERO_TOTAL}

diff --git a/phpBB/styles/prosilver/template/memberlist_im.html b/phpBB/styles/prosilver/template/memberlist_im.html index 7ebe1e3472..96d165228e 100644 --- a/phpBB/styles/prosilver/template/memberlist_im.html +++ b/phpBB/styles/prosilver/template/memberlist_im.html @@ -49,6 +49,7 @@
{L_IM_ADD_CONTACT}
{L_IM_SEND_MESSAGE}
+ diff --git a/phpBB/styles/subsilver2/template/login_forum.html b/phpBB/styles/subsilver2/template/login_forum.html index 5a194d209d..06a26666e7 100644 --- a/phpBB/styles/subsilver2/template/login_forum.html +++ b/phpBB/styles/subsilver2/template/login_forum.html @@ -2,7 +2,7 @@
- + diff --git a/phpBB/styles/subsilver2/template/mcp_queue.html b/phpBB/styles/subsilver2/template/mcp_queue.html index d85f0c3b49..65c8adbbc8 100644 --- a/phpBB/styles/subsilver2/template/mcp_queue.html +++ b/phpBB/styles/subsilver2/template/mcp_queue.html @@ -27,7 +27,7 @@ - + From 2a7186898d152ffe6b0084be216c17f3a55cc3f4 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Tue, 22 May 2007 21:49:45 +0000 Subject: [PATCH 007/136] oops. git-svn-id: file:///svn/phpbb/trunk@7664 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/install/convertors/functions_phpbb20.php | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/phpBB/install/convertors/functions_phpbb20.php b/phpBB/install/convertors/functions_phpbb20.php index a350ee8f4e..246316513d 100644 --- a/phpBB/install/convertors/functions_phpbb20.php +++ b/phpBB/install/convertors/functions_phpbb20.php @@ -533,18 +533,9 @@ function phpbb_convert_authentication($mode) ORDER BY user_regdate ASC"; $result = $src_db->sql_query($sql); - - $sql = 'SELECT group_id - FROM ' . GROUPS_TABLE . " - WHERE group_name = '" . $db->sql_escape('BOTS') . "'"; - $result = $db->sql_query($sql); - $bot_group_id = (int) $db->sql_fetchfield('group_id'); - $db->sql_freeresult($result); - while ($row = $src_db->sql_fetchrow($result)) { $user_id = (int) phpbb_user_id($row['user_id']); - // Set founder admin... $sql = 'UPDATE ' . USERS_TABLE . ' SET user_type = ' . USER_FOUNDER . " @@ -552,6 +543,13 @@ function phpbb_convert_authentication($mode) $db->sql_query($sql); } $src_db->sql_freeresult($result); + + $sql = 'SELECT group_id + FROM ' . GROUPS_TABLE . " + WHERE group_name = '" . $db->sql_escape('BOTS') . "'"; + $result = $db->sql_query($sql); + $bot_group_id = (int) $db->sql_fetchfield('group_id'); + $db->sql_freeresult($result); } // Grab forum auth information From f34547cad7cab847c8ac6aa327573e7cf0b2005d Mon Sep 17 00:00:00 2001 From: David M Date: Wed, 23 May 2007 02:01:21 +0000 Subject: [PATCH 008/136] erm... um... NOBODY SAW THIS :P git-svn-id: file:///svn/phpbb/trunk@7665 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/auth.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/auth.php b/phpBB/includes/auth.php index 0f0349a6f3..3b05652a87 100644 --- a/phpBB/includes/auth.php +++ b/phpBB/includes/auth.php @@ -127,7 +127,7 @@ class auth } } } - return !$negate; + // Founder always has all global options set to true... return ($negate) ? !$this->cache[$f][$opt] : $this->cache[$f][$opt]; } From 7cffec58d0db3cbed6f6e55785d3accd89efe8aa Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Wed, 23 May 2007 15:05:46 +0000 Subject: [PATCH 009/136] This probably broke things :| #10697 #11421 #11555 #11421 git-svn-id: file:///svn/phpbb/trunk@7666 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 6 ++ phpBB/includes/functions_convert.php | 21 +++++ .../install/convertors/functions_phpbb20.php | 10 +- phpBB/install/database_update.php | 34 ++++++- phpBB/install/install_convert.php | 91 ++++++++++++++++++- phpBB/language/en/install.php | 2 + 6 files changed, 159 insertions(+), 5 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index c56fa29653..eaad188e45 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -194,6 +194,12 @@ p a {
  • [Fix] Imageset editor more friendly (Bug #11511)
  • [Fix] Made Custom BBCode validation more strict (Bug #11335)
  • [Fix] Proper sync of data on topic copy (Bug #11335)
  • +
  • [Fix] Introduced ORDER BY clauses to converter queries (Bug #10697)
  • +
  • [Fix] added a sync to post counts during conversion (Bug #11421)
  • +
  • [Fix] Stopped bots from getting added to the registered users group during conversion(Bug #11283)
  • +
  • [Fix] Filled "SMILIEYS_DISABLED" template variable (Bug #11257)
  • +
  • [Fix] Properly escaped the delimiter in disallowed username comparisons (Bug #11339)
  • +
  • [Fix] Check global purge setting (Bug #11555)
  • diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php index 98c1452c23..5da10236c2 100644 --- a/phpBB/includes/functions_convert.php +++ b/phpBB/includes/functions_convert.php @@ -1707,6 +1707,27 @@ function add_default_groups() } } + +/** +* Sync post count. We might need to do this in batches. +*/ +function sync_post_count($offset, $limit) +{ + global $db; + $sql = 'SELECT COUNT(post_id) AS num_posts, poster_id + FROM ' . POSTS_TABLE . ' + WHERE post_postcount = 1 + GROUP BY poster_id + ORDER BY poster_id'; + $result = $db->sql_query_limit($sql, $limit, $offset); + + while ($row = $db->sql_fetchrow($result)) + { + $db->sql_query('UPDATE ' . USERS_TABLE . " SET user_posts = {$row['num_posts']} WHERE user_id = {$row['poster_id']}"); + } + $db->sql_freeresult($result); +} + /** * Add the search bots into the database * This code should be used in execute_last if the source database did not have bots diff --git a/phpBB/install/convertors/functions_phpbb20.php b/phpBB/install/convertors/functions_phpbb20.php index 246316513d..badac08999 100644 --- a/phpBB/install/convertors/functions_phpbb20.php +++ b/phpBB/install/convertors/functions_phpbb20.php @@ -83,6 +83,14 @@ function phpbb_insert_forums() $db->sql_query('SET IDENTITY_INSERT ' . FORUMS_TABLE . ' ON'); break; } + + // pruning disabled globally? + $sql = "SELECT config_value + FROM {$convert->src_table_prefix}config + WHERE config_name = 'prune_enable'"; + $result = $src_db->sql_query($sql); + $prune_enabled = (int) $src_db->sql_fetchfield('config_value'); + $src_db->sql_freeresult($result); $cats_added = array(); while ($row = $src_db->sql_fetchrow($result)) @@ -206,7 +214,7 @@ function phpbb_insert_forums() 'forum_desc' => htmlspecialchars(phpbb_set_default_encoding($row['forum_desc']), ENT_COMPAT, 'UTF-8'), 'forum_type' => FORUM_POST, 'forum_status' => is_item_locked($row['forum_status']), - 'enable_prune' => $row['prune_enable'], + 'enable_prune' => ($prune_enabled) ? $row['prune_enable'] : 0, 'prune_next' => null_to_zero($row['prune_next']), 'prune_days' => null_to_zero($row['prune_days']), 'prune_viewed' => 0, diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 194bb5600a..9996d0ce96 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -8,7 +8,7 @@ * */ -$updates_to_version = '3.0.RC1'; +$updates_to_version = '3.0.RC2'; if (defined('IN_PHPBB') && defined('IN_INSTALL')) { @@ -1151,6 +1151,38 @@ if (version_compare($current_version, '3.0.b5', '<=')) $no_updates = false; } +if (version_compare($current_version, '3.0.RC1', '<=')) +{ + // we have to remove a few extra entries from converted boards. + $sql = 'SELECT group_id + FROM ' . GROUPS_TABLE . " + WHERE group_name = '" . $db->sql_escape('BOTS') . "'"; + $result = $db->sql_query($sql); + $bot_group_id = (int) $db->sql_fetchfield('group_id'); + $db->sql_freeresult($result); + + $bots = array(); + $sql = 'SELECT u.user_id + FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . ' ug + WHERE ug.group_id = ' . $bot_group_id . ' + AND ug.user_id = u.user_id'; + $result = $db->sql_query($sql); + + + while ($row = $db->sql_fetchrow($result)) + { + $bots[] = (int)$row['user_id']; + } + $db->sql_freeresult($result); + + if (sizeof($bots)) + { + $sql = 'DELETE FROM ' . USER_GROUP_TABLE . " + WHERE group_id <> $bot_group_id + AND " . $db->sql_in_set('user_id', $bots); + $db->sql_query($sql); + } +} _write_result($no_updates, $errored, $error_ary); diff --git a/phpBB/install/install_convert.php b/phpBB/install/install_convert.php index c0129e3c29..69ca75c9da 100644 --- a/phpBB/install/install_convert.php +++ b/phpBB/install/install_convert.php @@ -783,8 +783,16 @@ class install_convert extends module $jump = request_var('jump', 0); $final_jump = request_var('final_jump', 0); $sync_batch = request_var('sync_batch', -1); + $sync_post_count = request_var('sync_post_count', -1); $last_statement = request_var('last', 0); + // We are running sync... + if ($sync_post_count >= 0) + { + $this->sync_user_posts($sync_post_count); + return; + } + // We are running sync... if ($sync_batch >= 0) { @@ -1163,6 +1171,12 @@ class install_convert extends module $sql .= (!empty($schema['having'])) ? "\nHAVING " . $schema['having'] : ''; // Order By + + if (empty($schema['order_by']) && !empty($schema['primary'])) + { + $schema['order_by'] = $schema['primary']; + } + $sql .= (!empty($schema['order_by'])) ? "\nORDER BY " . $schema['order_by'] : ''; // Counting basically holds the amount of rows processed. @@ -1398,6 +1412,78 @@ class install_convert extends module return; } + /** + * Sync function being executed at the middle, some functions need to be executed after a successful sync. + */ + function sync_user_posts($sync_batch) + { + global $db, $template, $user; + global $convert; + + $template->assign_block_vars('checks', array( + 'S_LEGEND' => true, + 'LEGEND' => $user->lang['SYNC_POST_COUNT'], + )); + + $batch_size = $convert->batch_size; + + $sql = 'SELECT COUNT(user_id) AS max_value + FROM ' . USERS_TABLE; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + // Set values of minimum/maximum primary value for this table. + $primary_min = 0; + $primary_max = $row['max_value']; + + if ($sync_batch == 1) + { + $sync_batch = (int) $primary_min; + } + // Fetch a batch of rows, process and insert them. + while ($sync_batch <= $primary_max && still_on_time()) + { + $end = ($sync_batch + $batch_size - 1); + + + $template->assign_block_vars('checks', array( + 'TITLE' => sprintf($user->lang['SYNC_POST_COUNT_ID'], $sync_batch, ($sync_batch + $batch_size)) . ((defined('DEBUG_EXTRA') && function_exists('memory_get_usage')) ? ' [' . ceil(memory_get_usage()/1024) . ' KB]' : ''), + 'RESULT' => $user->lang['DONE'], + )); + + $sync_batch += $batch_size; + } + + if ($sync_batch >= $primary_max) + { + sync_post_count($sync_batch, $batch_size); + $url = $this->save_convert_progress('&sync_batch=0'); + + $template->assign_vars(array( + 'L_SUBMIT' => $user->lang['CONTINUE_CONVERT'], + 'U_ACTION' => $url, + )); + + $this->meta_refresh($url); + return; + } + else + { + $sync_batch--; + } + + $url = $this->save_convert_progress('&sync_post_count=' . $sync_batch); + + $template->assign_vars(array( + 'L_SUBMIT' => $user->lang['CONTINUE_CONVERT'], + 'U_ACTION' => $url, + )); + + $this->meta_refresh($url); + return; + } + /** * Sync function being executed at the middle, some functions need to be executed after a successful sync. */ @@ -1715,9 +1801,8 @@ class install_convert extends module 'RESULT' => $user->lang['DONE'], )); - // Continue with synchronizing the forums... - $url = $this->save_convert_progress('&sync_batch=0'); - + // Continue with synchronizing the post counts... + $url = $this->save_convert_progress('&sync_post_count=0'); $template->assign_vars(array( 'L_SUBMIT' => $user->lang['CONTINUE_CONVERT'], 'U_ACTION' => $url, diff --git a/phpBB/language/en/install.php b/phpBB/language/en/install.php index fa176cbaea..32a66ba62b 100755 --- a/phpBB/language/en/install.php +++ b/phpBB/language/en/install.php @@ -330,6 +330,8 @@ $lang = array_merge($lang, array( // TODO: Write some text on obtaining support 'SUPPORT_BODY' => 'During the release candidate phase full support will be given at the phpBB 3.0.x support forums. We will provide answers to general setup questions, configuration problems, conversion problems and support for determining common problems mostly related to bugs. We also allow discussions about modifications and custom code/style additions.

    For additional assistance, please refer to our Quick Start Guide and the online documentation.

    To ensure you stay up to date with the latest news and releases, why not subscribe to our mailing list?', 'SYNC_FORUMS' => 'Starting to sync forums', + 'SYNC_POST_COUNT' => 'Synchronising post_counts', + 'SYNC_POST_COUNT_ID' => 'Synchronising post_counts from entry %1$s to %2$s.', 'SYNC_TOPICS' => 'Starting to sync topics', 'SYNC_TOPIC_ID' => 'Synchronising topics from topic_id %1$s to %2$s.', From 905beaa3984ca0d1fe0923a655f1d65ffac4bc80 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Wed, 23 May 2007 15:47:10 +0000 Subject: [PATCH 010/136] cleanup ;) git-svn-id: file:///svn/phpbb/trunk@7667 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/install/database_update.php | 606 +----------------------------- 1 file changed, 9 insertions(+), 597 deletions(-) diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 9996d0ce96..1f0773eeaf 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -311,171 +311,8 @@ $unsigned_types = array('UINT', 'UINT:', 'USINT', 'BOOL', 'TIMESTAMP'); // Only an example, but also commented out $database_update_info = array( - // Changes from 3.0.b5 to the next version - '3.0.b5' => array( - // Add the following columns - 'add_columns' => array( - SEARCH_WORDLIST_TABLE => array( - 'word_count' => array('UINT', 0), - ), - ), - // Change the following columns... - 'change_columns' => array( - TOPICS_TABLE => array( - 'poll_title' => array('STEXT_UNI', ''), - ), - SESSIONS_TABLE => array( - 'session_forwarded_for' => array('VCHAR:255', ''), - ), - ), - // Remove the following keys - 'drop_keys' => array( - USERS_TABLE => array( - 'username_clean', - ), - STYLES_IMAGESET_TABLE => array( - 'imgset_nm', - ), - BOOKMARKS_TABLE => array( - 'order_id', - 'topic_user_id', - ), - ), - 'add_index' => array( - SEARCH_WORDLIST_TABLE => array( - 'wrd_cnt' => array('word_count'), - ), - ACL_GROUPS_TABLE => array( - 'auth_role_id' => array('auth_role_id'), - ), - ACL_USERS_TABLE => array( - 'auth_role_id' => array('auth_role_id'), - ), - ACL_ROLES_DATA_TABLE => array( - 'ath_opt_id' => array('auth_option_id'), - ), - TOPICS_TABLE => array( - 'forum_appr_last' => array('forum_id', 'topic_approved', 'topic_last_post_id'), - ), - ), - // Add the following unique indexes - 'add_unique_index' => array( - SEARCH_WORDMATCH_TABLE => array( - 'unq_mtch' => array('word_id', 'post_id', 'title_match'), - ), - USERS_TABLE => array( - 'username_clean' => array('username_clean'), - ), - ), - // Drop the following columns - 'drop_columns' => array( - STYLES_IMAGESET_TABLE => array( - 'site_logo', - 'upload_bar', - 'poll_left', - 'poll_center', - 'poll_right', - 'icon_friend', - 'icon_foe', - 'forum_link', - 'forum_read', - 'forum_read_locked', - 'forum_read_subforum', - 'forum_unread', - 'forum_unread_locked', - 'forum_unread_subforum', - 'topic_moved', - 'topic_read', - 'topic_read_mine', - 'topic_read_hot', - 'topic_read_hot_mine', - 'topic_read_locked', - 'topic_read_locked_mine', - 'topic_unread', - 'topic_unread_mine', - 'topic_unread_hot', - 'topic_unread_hot_mine', - 'topic_unread_locked', - 'topic_unread_locked_mine', - 'sticky_read', - 'sticky_read_mine', - 'sticky_read_locked', - 'sticky_read_locked_mine', - 'sticky_unread', - 'sticky_unread_mine', - 'sticky_unread_locked', - 'sticky_unread_locked_mine', - 'announce_read', - 'announce_read_mine', - 'announce_read_locked', - 'announce_read_locked_mine', - 'announce_unread', - 'announce_unread_mine', - 'announce_unread_locked', - 'announce_unread_locked_mine', - 'global_read', - 'global_read_mine', - 'global_read_locked', - 'global_read_locked_mine', - 'global_unread', - 'global_unread_mine', - 'global_unread_locked', - 'global_unread_locked_mine', - 'pm_read', - 'pm_unread', - 'icon_contact_aim', - 'icon_contact_email', - 'icon_contact_icq', - 'icon_contact_jabber', - 'icon_contact_msnm', - 'icon_contact_pm', - 'icon_contact_yahoo', - 'icon_contact_www', - 'icon_post_delete', - 'icon_post_edit', - 'icon_post_info', - 'icon_post_quote', - 'icon_post_report', - 'icon_post_target', - 'icon_post_target_unread', - 'icon_topic_attach', - 'icon_topic_latest', - 'icon_topic_newest', - 'icon_topic_reported', - 'icon_topic_unapproved', - 'icon_user_online', - 'icon_user_offline', - 'icon_user_profile', - 'icon_user_search', - 'icon_user_warn', - 'button_pm_forward', - 'button_pm_new', - 'button_pm_reply', - 'button_topic_locked', - 'button_topic_new', - 'button_topic_reply', - 'user_icon1', - 'user_icon2', - 'user_icon3', - 'user_icon4', - 'user_icon5', - 'user_icon6', - 'user_icon7', - 'user_icon8', - 'user_icon9', - 'user_icon10' - ), - BOOKMARKS_TABLE => array( - 'order_id', - ), - ), - // Adding primary key - 'add_primary_keys' => array( - BOOKMARKS_TABLE => array( - 'topic_id', 'user_id', - ), - ), - ), + // Changes from 3.0.RC1 to the next version +// '3.0.RC1' => array(), ); // Determine mapping database type @@ -719,438 +556,6 @@ flush(); $no_updates = true; // some code magic -if (version_compare($current_version, '3.0.b5', '<=')) -{ - switch ($map_dbms) - { - case 'sqlite': - case 'firebird': - $db->sql_query('DELETE FROM ' . STYLES_IMAGESET_TABLE); - $db->sql_query('DELETE FROM ' . STYLES_TEMPLATE_TABLE); - $db->sql_query('DELETE FROM ' . STYLES_TABLE); - $db->sql_query('DELETE FROM ' . STYLES_THEME_TABLE); - -// $db->sql_query('DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE); - break; - - default: - $db->sql_query('TRUNCATE TABLE ' . STYLES_IMAGESET_TABLE); - $db->sql_query('TRUNCATE TABLE ' . STYLES_TEMPLATE_TABLE); - $db->sql_query('TRUNCATE TABLE ' . STYLES_TABLE); - $db->sql_query('TRUNCATE TABLE ' . STYLES_THEME_TABLE); - -// This table does not exist, as well as the constant not exist... -// $db->sql_query('TRUNCATE TABLE ' . STYLES_IMAGESET_DATA_TABLE); - break; - } - - $tablename = $table_prefix . 'styles_imageset_data'; - switch ($map_dbms) - { - case 'mysql_41': - $sql_ary = array( - "CREATE TABLE $tablename ( - image_id smallint(4) UNSIGNED NOT NULL auto_increment, - image_name varchar(200) DEFAULT '' NOT NULL, - image_filename varchar(200) DEFAULT '' NOT NULL, - image_lang varchar(30) DEFAULT '' NOT NULL, - image_height smallint(4) UNSIGNED DEFAULT '0' NOT NULL, - image_width smallint(4) UNSIGNED DEFAULT '0' NOT NULL, - imageset_id tinyint(4) DEFAULT '0' NOT NULL, - PRIMARY KEY (image_id), - KEY i_id (imageset_id) - ) CHARACTER SET `utf8` COLLATE `utf8_bin`"); - break; - - case 'mysql_40': - $sql_ary = array( - "CREATE TABLE $tablename ( - image_id smallint(4) UNSIGNED NOT NULL auto_increment, - image_name varbinary(200) DEFAULT '' NOT NULL, - image_filename varbinary(200) DEFAULT '' NOT NULL, - image_lang varbinary(30) DEFAULT '' NOT NULL, - image_height smallint(4) UNSIGNED DEFAULT '0' NOT NULL, - image_width smallint(4) UNSIGNED DEFAULT '0' NOT NULL, - imageset_id tinyint(4) DEFAULT '0' NOT NULL, - PRIMARY KEY (image_id), - KEY i_id (imageset_id) - );"); - break; - - case 'mssql': - $sql_ary = array( - "CREATE TABLE [$tablename] ( - [image_id] [int] IDENTITY (1, 1) NOT NULL , - [image_name] [varchar] (200) DEFAULT ('') NOT NULL , - [image_filename] [varchar] (200) DEFAULT ('') NOT NULL , - [image_lang] [varchar] (30) DEFAULT ('') NOT NULL , - [image_height] [int] DEFAULT (0) NOT NULL , - [image_width] [int] DEFAULT (0) NOT NULL , - [imageset_id] [int] DEFAULT (0) NOT NULL - ) ON [PRIMARY]", - - "ALTER TABLE [$tablename] WITH NOCHECK ADD - CONSTRAINT [PK_$tablename] PRIMARY KEY CLUSTERED - ( - [image_id] - ) ON [PRIMARY]", - - "CREATE INDEX [i_id] ON [$tablename]([imageset_id]) ON [PRIMARY]", - ); - break; - - case 'oracle': - $sql_ary = array( - "CREATE TABLE $tablename ( - image_id number(4) NOT NULL, - image_name varchar2(200) DEFAULT '' , - image_filename varchar2(200) DEFAULT '' , - image_lang varchar2(30) DEFAULT '' , - image_height number(4) DEFAULT '0' NOT NULL, - image_width number(4) DEFAULT '0' NOT NULL, - imageset_id number(4) DEFAULT '0' NOT NULL, - CONSTRAINT pk_phpbb_styles_imageset_data PRIMARY KEY (image_id) - )", - - "CREATE INDEX {$tablename}_i_id ON $tablename (imageset_id)", - - "CREATE SEQUENCE {$tablename}_imgset_id_seq", - - "CREATE OR REPLACE TRIGGER t_$tablename - BEFORE INSERT ON $tablename - FOR EACH ROW WHEN ( - new.image_id IS NULL OR new.image_id = 0 - ) - BEGIN - SELECT {$tablename}_seq.nextval - INTO :new.image_id - FROM dual; - END", - ); - break; - - case 'postgres': - $sql_ary = array( - "CREATE SEQUENCE {$tablename}_seq;", - - "CREATE TABLE $tablename ( - image_id INT2 DEFAULT nextval('{$tablename}_seq'), - image_name varchar(200) DEFAULT '' NOT NULL, - image_filename varchar(200) DEFAULT '' NOT NULL, - image_lang varchar(30) DEFAULT '' NOT NULL, - image_height INT2 DEFAULT '0' NOT NULL CHECK (image_height >= 0), - image_width INT2 DEFAULT '0' NOT NULL CHECK (image_width >= 0), - imageset_id INT2 DEFAULT '0' NOT NULL, - PRIMARY KEY (image_id) - );", - - "CREATE INDEX {$tablename}_i_id ON $tablename (imageset_id);" - ); - break; - - case 'sqlite': - $sql_ary = array( - "CREATE TABLE $tablename ( - image_id INTEGER PRIMARY KEY NOT NULL , - image_name varchar(200) NOT NULL DEFAULT '', - image_filename varchar(200) NOT NULL DEFAULT '', - image_lang varchar(30) NOT NULL DEFAULT '', - image_height INTEGER UNSIGNED NOT NULL DEFAULT '0', - image_width INTEGER UNSIGNED NOT NULL DEFAULT '0', - imageset_id tinyint(4) NOT NULL DEFAULT '0' - );", - - "CREATE INDEX {$tablename}_i_id ON $tablename (imageset_id);" - ); - break; - - case 'firebird': - $sql_ary = array( - "CREATE TABLE $tablename ( - image_id INTEGER NOT NULL, - image_name VARCHAR(200) CHARACTER SET NONE DEFAULT '' NOT NULL, - image_filename VARCHAR(200) CHARACTER SET NONE DEFAULT '' NOT NULL, - image_lang VARCHAR(30) CHARACTER SET NONE DEFAULT '' NOT NULL, - image_height INTEGER DEFAULT 0 NOT NULL, - image_width INTEGER DEFAULT 0 NOT NULL, - imageset_id INTEGER DEFAULT 0 NOT NULL - );", - - "ALTER TABLE $tablename ADD PRIMARY KEY (image_id);", - - "CREATE INDEX {$tablename}_i_id ON $tablename(imageset_id);", - - "CREATE GENERATOR {$tablename}_gen;", - - "SET GENERATOR {$tablename}_gen TO 0;", - - "CREATE TRIGGER t_$tablename FOR $tablename - BEFORE INSERT - AS - BEGIN - NEW.image_id = GEN_ID({$tablename}_gen, 1); - END" - ); - break; - } - - // add the various statements - foreach ($sql_ary as $sql) - { - $db->sql_query($sql); - } - - $data = "INSERT INTO phpbb_styles (style_name, style_copyright, style_active, template_id, theme_id, imageset_id) VALUES ('prosilver', '© phpBB Group', 1, 1, 1, 1); - INSERT INTO phpbb_styles (style_name, style_copyright, style_active, template_id, theme_id, imageset_id) VALUES ('subsilver2', '© phpBB Group', 1, 2, 2, 2); - INSERT INTO phpbb_styles_imageset (imageset_name, imageset_copyright, imageset_path) VALUES ('prosilver', '© phpBB Group', 'prosilver'); - INSERT INTO phpbb_styles_imageset (imageset_name, imageset_copyright, imageset_path) VALUES ('subsilver2', '© phpBB Group', 'subsilver2'); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('site_logo', 'site_logo.gif', '', 94, 170, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('upload_bar', 'upload_bar.gif', '', 16, 280, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('poll_left', 'poll_left.gif', '', 12, 4, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('poll_center', 'poll_center.gif', '', 12, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('poll_right', 'poll_right.gif', '', 12, 4, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_link', 'forum_link.gif', '', 25, 46, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_read', 'forum_read.gif', '', 25, 46, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_read_locked', 'forum_read_locked.gif', '', 25, 46, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_read_subforum', 'forum_read_subforum.gif', '', 25, 46, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_unread', 'forum_unread.gif', '', 25, 46, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_unread_locked', 'forum_unread_locked.gif', '', 25, 46, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_unread_subforum', 'forum_unread_subforum.gif', '', 25, 46, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_moved', 'topic_moved.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read', 'topic_read.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_mine', 'topic_read_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_hot', 'topic_read_hot.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_hot_mine', 'topic_read_hot_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_locked', 'topic_read_locked.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_locked_mine', 'topic_read_locked_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread', 'topic_unread.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_mine', 'topic_unread_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_hot', 'topic_unread_hot.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_hot_mine', 'topic_unread_hot_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_locked', 'topic_unread_locked.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_locked_mine', 'topic_unread_locked_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_read', 'sticky_read.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_read_mine', 'sticky_read_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_read_locked', 'sticky_read_locked.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_read_locked_mine', 'sticky_read_locked_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_unread', 'sticky_unread.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_unread_mine', 'sticky_unread_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_unread_locked', 'sticky_unread_locked.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_unread_locked_mine', 'sticky_unread_locked_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_read', 'announce_read.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_read_mine', 'announce_read_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_read_locked', 'announce_read_locked.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_read_locked_mine', 'announce_read_locked_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_unread', 'announce_unread.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_unread_mine', 'announce_unread_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_unread_locked', 'announce_unread_locked.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_unread_locked_mine', 'announce_unread_locked_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_read', 'announce_read.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_read_mine', 'announce_read_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_read_locked', 'announce_read_locked.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_read_locked_mine', 'announce_read_locked_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_unread', 'announce_unread.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_unread_mine', 'announce_unread_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_unread_locked', 'announce_unread_locked.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_unread_locked_mine', 'announce_unread_locked_mine.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('pm_read', 'topic_read.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('pm_unread', 'topic_unread.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_target', 'icon_post_target.gif', '', 9, 12, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_target_unread', 'icon_post_target_unread.gif', '', 9, 12, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_attach', 'icon_topic_attach.gif', '', 18, 14, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_latest', 'icon_topic_latest.gif', '', 9, 18, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_newest', 'icon_topic_newest.gif', '', 9, 18, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_reported', 'icon_topic_reported.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_unapproved', 'icon_topic_unapproved.gif', '', 18, 19, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_aim', 'icon_contact_aim.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_email', 'icon_contact_email.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_icq', 'icon_contact_icq.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_jabber', 'icon_contact_jabber.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_msnm', 'icon_contact_msnm.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_pm', 'icon_contact_pm.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_yahoo', 'icon_contact_yahoo.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_www', 'icon_contact_www.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_delete', 'icon_post_delete.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_edit', 'icon_post_edit.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_info', 'icon_post_info.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_quote', 'icon_post_quote.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_report', 'icon_post_report.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_user_online', 'icon_user_online.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_user_offline', 'icon_user_offline.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_user_profile', 'icon_user_profile.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_user_search', 'icon_user_search.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_user_warn', 'icon_user_warn.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('button_pm_new', 'button_pm_new.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('button_pm_reply', 'button_pm_reply.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('button_topic_locked', 'button_topic_locked.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('button_topic_new', 'button_topic_new.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('button_topic_reply', 'button_topic_reply.gif', 'en', 0, 0, 2); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('site_logo', 'site_logo.gif', '', 52, 139, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_link', 'forum_link.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_read', 'forum_read.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_read_locked', 'forum_read_locked.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_read_subforum', 'forum_read_subforum.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_unread', 'forum_unread.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_unread_locked', 'forum_unread_locked.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('forum_unread_subforum', 'forum_unread_subforum.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_moved', 'topic_moved.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read', 'topic_read.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_mine', 'topic_read_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_hot', 'topic_read_hot.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_hot_mine', 'topic_read_hot_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_locked', 'topic_read_locked.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_read_locked_mine', 'topic_read_locked_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread', 'topic_unread.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_mine', 'topic_unread_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_hot', 'topic_unread_hot.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_hot_mine', 'topic_unread_hot_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_locked', 'topic_unread_locked.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('topic_unread_locked_mine', 'topic_unread_locked_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_read', 'sticky_read.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_read_mine', 'sticky_read_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_read_locked', 'sticky_read_locked.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_read_locked_mine', 'sticky_read_locked_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_unread', 'sticky_unread.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_unread_mine', 'sticky_unread_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_unread_locked', 'sticky_unread_locked.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('sticky_unread_locked_mine', 'sticky_unread_locked_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_read', 'announce_read.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_read_mine', 'announce_read_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_read_locked', 'announce_read_locked.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_read_locked_mine', 'announce_read_locked_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_unread', 'announce_unread.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_unread_mine', 'announce_unread_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_unread_locked', 'announce_unread_locked.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('announce_unread_locked_mine', 'announce_unread_locked_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_read', 'announce_read.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_read_mine', 'announce_read_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_read_locked', 'announce_read_locked.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_read_locked_mine', 'announce_read_locked_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_unread', 'announce_unread.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_unread_mine', 'announce_unread_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_unread_locked', 'announce_unread_locked.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('global_unread_locked_mine', 'announce_unread_locked_mine.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('pm_read', 'topic_read.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('pm_unread', 'topic_unread.gif', '', 27, 27, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_back_top', 'icon_back_top.gif', '', 11, 11, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_aim', 'icon_contact_aim.gif', '', 20, 20, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_email', 'icon_contact_email.gif', '', 20, 20, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_icq', 'icon_contact_icq.gif', '', 20, 20, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_jabber', 'icon_contact_jabber.gif', '', 20, 20, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_msnm', 'icon_contact_msnm.gif', '', 20, 20, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_www', 'icon_contact_www.gif', '', 20, 20, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_yahoo', 'icon_contact_yahoo.gif', '', 20, 20, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_delete', 'icon_post_delete.gif', '', 20, 20, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_info', 'icon_post_info.gif', '', 20, 20, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_report', 'icon_post_report.gif', '', 20, 20, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_target', 'icon_post_target.gif', '', 9, 11, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_target_unread', 'icon_post_target_unread.gif', '', 9, 11, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_attach', 'icon_topic_attach.gif', '', 10, 7, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_latest', 'icon_topic_latest.gif', '', 9, 11, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_newest', 'icon_topic_newest.gif', '', 9, 11, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_reported', 'icon_topic_reported.gif', '', 14, 16, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_topic_unapproved', 'icon_topic_unapproved.gif', '', 14, 16, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_user_profile', 'icon_user_profile.gif', '', 11, 11, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_user_warn', 'icon_user_warn.gif', '', 20, 20, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('subforum_read', 'subforum_read.gif', '', 9, 11, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('subforum_unread', 'subforum_unread.gif', '', 9, 11, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_contact_pm', 'icon_contact_pm.gif', 'en', 20, 28, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_edit', 'icon_post_edit.gif', 'en', 20, 42, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_post_quote', 'icon_post_quote.gif', 'en', 20, 54, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_user_online', 'icon_user_online.gif', 'en', 58, 58, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_user_offline', 'icon_user_offline.gif', 'en', 0, 0, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('icon_user_search', 'icon_user_search.gif', 'en', 0, 0, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('button_pm_forward', 'button_pm_forward.gif', 'en', 25, 96, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('button_pm_new', 'button_pm_new.gif', 'en', 25, 84, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('button_pm_reply', 'button_pm_reply.gif', 'en', 25, 96, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('button_topic_locked', 'button_topic_locked.gif', 'en', 25, 88, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('button_topic_new', 'button_topic_new.gif', 'en', 25, 96, 1); - INSERT INTO phpbb_styles_imageset_data (image_name, image_filename, image_lang, image_height, image_width, imageset_id) VALUES ('button_topic_reply', 'button_topic_reply.gif', 'en', 25, 96, 1);"; - - $data = str_replace('phpbb_', $table_prefix, $data); - $sql_ary = explode("\n", $data); - - foreach ($sql_ary as $sql) - { - $db->sql_query($sql); - } - - $user_char_ary = array('.*' => 'USERNAME_CHARS_ANY', '[a-z]+' => 'USERNAME_ALPHA_ONLY', '[-\]_+ [a-z]+' => 'USERNAME_ALPHA_SPACERS', '\w+' => 'USERNAME_LETTER_NUM', '[-\]_+ [\w]+' => 'USERNAME_LETTER_NUM_SPACERS', '[\x01-\x7F]+' => 'USERNAME_ASCII'); - - set_config('allow_name_chars', $config['allow_name_chars']); - - // sorting thang - if ($map_dbms === 'mysql_41') - { - sql_column_change($map_dbms, TOPICS_TABLE, 'topic_title', array('XSTEXT_UNI', '', 'true_sort')); - } - - if ($config['fulltext_native_common_thres'] == 20) - { - set_config('fulltext_native_common_thres', '5'); - } - - set_config('default_style', '1'); - - $sql = 'SELECT m.word_id, COUNT(m.word_id) as word_count - FROM ' . SEARCH_WORDMATCH_TABLE . ' m, ' . SEARCH_WORDLIST_TABLE . ' w - WHERE m.word_id = w.word_id - AND w.word_common = 0 - GROUP BY m.word_id - ORDER BY word_count ASC'; - $result = $db->sql_query($sql); - - $value = 0; - $sql_in = array(); - while ($row = $db->sql_fetchrow($result)) - { - if ($value != $row['word_count'] && $value != 0 || sizeof($sql_in) > 500) - { - $sql = 'UPDATE ' . SEARCH_WORDLIST_TABLE . ' - SET word_count = ' . $value . ' - WHERE ' . $db->sql_in_set('word_id', $sql_in); - $db->sql_query($sql); - $sql_in = array(); - } - $value = $row['word_count']; - $sql_in[] = $row['word_id']; - } - - if (sizeof($sql_in)) - { - $sql = 'UPDATE ' . SEARCH_WORDLIST_TABLE . ' - SET word_count = ' . $value . ' - WHERE ' . $db->sql_in_set('word_id', $sql_in); - $db->sql_query($sql); - } - unset($sql_in); - - set_config('avatar_salt', md5(mt_rand())); - set_config('captcha_gd_x_grid', 25); - set_config('captcha_gd_y_grid', 25); - set_config('captcha_gd_foreground_noise', 1); - - $sql = 'UPDATE ' . ACL_OPTIONS_TABLE . " - SET is_local = 0 - WHERE auth_option = 'm_warn'"; - $db->sql_query($sql); - - $cache->destroy('_acl_options'); - - $sql = 'UPDATE ' . MODULES_TABLE . ' - SET module_auth = \'acl_m_warn && acl_f_read,$id\' - WHERE module_basename = \'warn\' - AND module_mode = \'warn_post\' - AND module_class = \'mcp\''; - $db->sql_query($sql); - - $cache->destroy('_modules_mcp'); - - $sql = 'UPDATE ' . USERS_TABLE . " SET user_permissions = ''"; - $db->sql_query($sql); - - $no_updates = false; -} if (version_compare($current_version, '3.0.RC1', '<=')) { // we have to remove a few extra entries from converted boards. @@ -1182,8 +587,15 @@ if (version_compare($current_version, '3.0.RC1', '<=')) AND " . $db->sql_in_set('user_id', $bots); $db->sql_query($sql); } + + $no_updates = false; } +//if (version_compare($current_version, '3.0.RC2', '<=')) +//{ +// $no_updates = false; +//} + _write_result($no_updates, $errored, $error_ary); $error_ary = array(); From d180ac3d02d0b3fc6abb79b66cd4b4cc691c1656 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Wed, 23 May 2007 18:30:41 +0000 Subject: [PATCH 011/136] #11429 git-svn-id: file:///svn/phpbb/trunk@7668 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 3 ++- phpBB/includes/message_parser.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index eaad188e45..275707cce2 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -196,10 +196,11 @@ p a {

  • [Fix] Proper sync of data on topic copy (Bug #11335)
  • [Fix] Introduced ORDER BY clauses to converter queries (Bug #10697)
  • [Fix] added a sync to post counts during conversion (Bug #11421)
  • -
  • [Fix] Stopped bots from getting added to the registered users group during conversion(Bug #11283)
  • +
  • [Fix] Stopped bots from getting added to the registered users group during conversion (Bug #11283)
  • [Fix] Filled "SMILIEYS_DISABLED" template variable (Bug #11257)
  • [Fix] Properly escaped the delimiter in disallowed username comparisons (Bug #11339)
  • [Fix] Check global purge setting (Bug #11555)
  • +
  • [Fix] Improper magic url parsing applied to already parsed [url=] bbcode tag (Bug #11429)
  • diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index b8f00d71ee..a593dffec6 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -905,7 +905,7 @@ class bbcode_firstpass extends bbcode $url = append_sid($url); } - return ($var1) ? '[url=' . $this->bbcode_specialchars($url) . ':' . $this->bbcode_uid . ']' . $var2 . '[/url:' . $this->bbcode_uid . ']' : '[url:' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($url) . '[/url:' . $this->bbcode_uid . ']'; + return ($var1) ? '[url=' . $this->bbcode_specialchars($url) . ':' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($var2) . '[/url:' . $this->bbcode_uid . ']' : '[url:' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($url) . '[/url:' . $this->bbcode_uid . ']'; } return '[url' . (($var1) ? '=' . $var1 : '') . ']' . $var2 . '[/url]'; From e4de958704bbb4b0a4adbecc3a9360aae5d73ef5 Mon Sep 17 00:00:00 2001 From: David M Date: Wed, 23 May 2007 23:37:04 +0000 Subject: [PATCH 012/136] - Handle ISO-8859-8-i - Renamed two indicies for Oracle support #11457 git-svn-id: file:///svn/phpbb/trunk@7669 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/develop/create_schema_files.php | 4 ++-- phpBB/includes/utf/utf_tools.php | 6 ++++++ phpBB/install/database_update.php | 21 ++++++++++++++++++++- phpBB/install/schemas/firebird_schema.sql | 4 ++-- phpBB/install/schemas/mssql_schema.sql | 4 ++-- phpBB/install/schemas/mysql_40_schema.sql | 4 ++-- phpBB/install/schemas/mysql_41_schema.sql | 4 ++-- phpBB/install/schemas/oracle_schema.sql | 4 ++-- phpBB/install/schemas/postgres_schema.sql | 4 ++-- phpBB/install/schemas/sqlite_schema.sql | 4 ++-- 10 files changed, 42 insertions(+), 17 deletions(-) diff --git a/phpBB/develop/create_schema_files.php b/phpBB/develop/create_schema_files.php index d3efdc45f2..e89f009242 100644 --- a/phpBB/develop/create_schema_files.php +++ b/phpBB/develop/create_schema_files.php @@ -858,7 +858,7 @@ function get_schema_struct() ), 'PRIMARY_KEY' => array('role_id', 'auth_option_id'), 'KEYS' => array( - 'ath_opt_id' => array('INDEX', 'auth_option_id'), + 'ath_op_id' => array('INDEX', 'auth_option_id'), ), ); @@ -1643,7 +1643,7 @@ function get_schema_struct() ), 'PRIMARY_KEY' => 'image_id', 'KEYS' => array( - 'i_id' => array('INDEX', 'imageset_id'), + 'i_d' => array('INDEX', 'imageset_id'), ), ); diff --git a/phpBB/includes/utf/utf_tools.php b/phpBB/includes/utf/utf_tools.php index f6ed6c3ed5..5a3a22d2ac 100644 --- a/phpBB/includes/utf/utf_tools.php +++ b/phpBB/includes/utf/utf_tools.php @@ -713,6 +713,12 @@ function utf8_recode($string, $encoding) { $encoding = 'cp1252'; } + // convert iso-8859-8-i to iso-8859-8 + else if ($encoding == 'iso-8859-8-i') + { + $encoding = 'iso-8859-8'; + $string = strrev($string); + } // First, try iconv() if (function_exists('iconv')) diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 1f0773eeaf..6002f3e556 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -312,7 +312,26 @@ $unsigned_types = array('UINT', 'UINT:', 'USINT', 'BOOL', 'TIMESTAMP'); // Only an example, but also commented out $database_update_info = array( // Changes from 3.0.RC1 to the next version -// '3.0.RC1' => array(), + '3.0.RC1' => array( + // Remove the following keys + 'drop_keys' => array( + STYLES_IMAGESET_DATA_TABLE => array( + 'i_id', + ), + ACL_ROLES_DATA_TABLE => array( + 'ath_opt_id', + ), + ), + // Add the following keys + 'add_index' => array( + STYLES_IMAGESET_DATA_TABLE => array( + 'i_d' => array('imageset_id'), + ), + ACL_ROLES_DATA_TABLE => array( + 'ath_opt_id' => array('auth_option_id'), + ), + ), + ), ); // Determine mapping database type diff --git a/phpBB/install/schemas/firebird_schema.sql b/phpBB/install/schemas/firebird_schema.sql index f815449d19..f1c74512eb 100644 --- a/phpBB/install/schemas/firebird_schema.sql +++ b/phpBB/install/schemas/firebird_schema.sql @@ -112,7 +112,7 @@ CREATE TABLE phpbb_acl_roles_data ( ALTER TABLE phpbb_acl_roles_data ADD PRIMARY KEY (role_id, auth_option_id);; -CREATE INDEX phpbb_acl_roles_data_ath_opt_id ON phpbb_acl_roles_data(auth_option_id);; +CREATE INDEX phpbb_acl_roles_data_ath_op_id ON phpbb_acl_roles_data(auth_option_id);; # Table: 'phpbb_acl_users' CREATE TABLE phpbb_acl_users ( @@ -1176,7 +1176,7 @@ CREATE TABLE phpbb_styles_imageset_data ( ALTER TABLE phpbb_styles_imageset_data ADD PRIMARY KEY (image_id);; -CREATE INDEX phpbb_styles_imageset_data_i_id ON phpbb_styles_imageset_data(imageset_id);; +CREATE INDEX phpbb_styles_imageset_data_i_d ON phpbb_styles_imageset_data(imageset_id);; CREATE GENERATOR phpbb_styles_imageset_data_gen;; SET GENERATOR phpbb_styles_imageset_data_gen TO 0;; diff --git a/phpBB/install/schemas/mssql_schema.sql b/phpBB/install/schemas/mssql_schema.sql index 3e58881427..6c2e2ee24d 100644 --- a/phpBB/install/schemas/mssql_schema.sql +++ b/phpBB/install/schemas/mssql_schema.sql @@ -141,7 +141,7 @@ ALTER TABLE [phpbb_acl_roles_data] WITH NOCHECK ADD ) ON [PRIMARY] GO -CREATE INDEX [ath_opt_id] ON [phpbb_acl_roles_data]([auth_option_id]) ON [PRIMARY] +CREATE INDEX [ath_op_id] ON [phpbb_acl_roles_data]([auth_option_id]) ON [PRIMARY] GO @@ -1392,7 +1392,7 @@ ALTER TABLE [phpbb_styles_imageset_data] WITH NOCHECK ADD ) ON [PRIMARY] GO -CREATE INDEX [i_id] ON [phpbb_styles_imageset_data]([imageset_id]) ON [PRIMARY] +CREATE INDEX [i_d] ON [phpbb_styles_imageset_data]([imageset_id]) ON [PRIMARY] GO diff --git a/phpBB/install/schemas/mysql_40_schema.sql b/phpBB/install/schemas/mysql_40_schema.sql index db814a3613..b0aed4d177 100644 --- a/phpBB/install/schemas/mysql_40_schema.sql +++ b/phpBB/install/schemas/mysql_40_schema.sql @@ -72,7 +72,7 @@ CREATE TABLE phpbb_acl_roles_data ( auth_option_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, auth_setting tinyint(2) DEFAULT '0' NOT NULL, PRIMARY KEY (role_id, auth_option_id), - KEY ath_opt_id (auth_option_id) + KEY ath_op_id (auth_option_id) ); @@ -788,7 +788,7 @@ CREATE TABLE phpbb_styles_imageset_data ( image_width smallint(4) UNSIGNED DEFAULT '0' NOT NULL, imageset_id tinyint(4) DEFAULT '0' NOT NULL, PRIMARY KEY (image_id), - KEY i_id (imageset_id) + KEY i_d (imageset_id) ); diff --git a/phpBB/install/schemas/mysql_41_schema.sql b/phpBB/install/schemas/mysql_41_schema.sql index dee258d888..a4eb2519aa 100644 --- a/phpBB/install/schemas/mysql_41_schema.sql +++ b/phpBB/install/schemas/mysql_41_schema.sql @@ -72,7 +72,7 @@ CREATE TABLE phpbb_acl_roles_data ( auth_option_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, auth_setting tinyint(2) DEFAULT '0' NOT NULL, PRIMARY KEY (role_id, auth_option_id), - KEY ath_opt_id (auth_option_id) + KEY ath_op_id (auth_option_id) ) CHARACTER SET `utf8` COLLATE `utf8_bin`; @@ -788,7 +788,7 @@ CREATE TABLE phpbb_styles_imageset_data ( image_width smallint(4) UNSIGNED DEFAULT '0' NOT NULL, imageset_id tinyint(4) DEFAULT '0' NOT NULL, PRIMARY KEY (image_id), - KEY i_id (imageset_id) + KEY i_d (imageset_id) ) CHARACTER SET `utf8` COLLATE `utf8_bin`; diff --git a/phpBB/install/schemas/oracle_schema.sql b/phpBB/install/schemas/oracle_schema.sql index 9660dbf386..489c7e7bc5 100644 --- a/phpBB/install/schemas/oracle_schema.sql +++ b/phpBB/install/schemas/oracle_schema.sql @@ -187,7 +187,7 @@ CREATE TABLE phpbb_acl_roles_data ( ) / -CREATE INDEX phpbb_acl_roles_data_ath_opt_id ON phpbb_acl_roles_data (auth_option_id) +CREATE INDEX phpbb_acl_roles_data_ath_op_id ON phpbb_acl_roles_data (auth_option_id) / /* @@ -1560,7 +1560,7 @@ CREATE TABLE phpbb_styles_imageset_data ( ) / -CREATE INDEX phpbb_styles_imageset_data_i_id ON phpbb_styles_imageset_data (imageset_id) +CREATE INDEX phpbb_styles_imageset_data_i_d ON phpbb_styles_imageset_data (imageset_id) / CREATE SEQUENCE phpbb_styles_imageset_data_seq diff --git a/phpBB/install/schemas/postgres_schema.sql b/phpBB/install/schemas/postgres_schema.sql index c976a2a157..b1ff1d1d11 100644 --- a/phpBB/install/schemas/postgres_schema.sql +++ b/phpBB/install/schemas/postgres_schema.sql @@ -169,7 +169,7 @@ CREATE TABLE phpbb_acl_roles_data ( PRIMARY KEY (role_id, auth_option_id) ); -CREATE INDEX phpbb_acl_roles_data_ath_opt_id ON phpbb_acl_roles_data (auth_option_id); +CREATE INDEX phpbb_acl_roles_data_ath_op_id ON phpbb_acl_roles_data (auth_option_id); /* Table: 'phpbb_acl_users' @@ -1039,7 +1039,7 @@ CREATE TABLE phpbb_styles_imageset_data ( PRIMARY KEY (image_id) ); -CREATE INDEX phpbb_styles_imageset_data_i_id ON phpbb_styles_imageset_data (imageset_id); +CREATE INDEX phpbb_styles_imageset_data_i_d ON phpbb_styles_imageset_data (imageset_id); /* Table: 'phpbb_topics' diff --git a/phpBB/install/schemas/sqlite_schema.sql b/phpBB/install/schemas/sqlite_schema.sql index 9f48115874..70b4f8de22 100644 --- a/phpBB/install/schemas/sqlite_schema.sql +++ b/phpBB/install/schemas/sqlite_schema.sql @@ -73,7 +73,7 @@ CREATE TABLE phpbb_acl_roles_data ( PRIMARY KEY (role_id, auth_option_id) ); -CREATE INDEX phpbb_acl_roles_data_ath_opt_id ON phpbb_acl_roles_data (auth_option_id); +CREATE INDEX phpbb_acl_roles_data_ath_op_id ON phpbb_acl_roles_data (auth_option_id); # Table: 'phpbb_acl_users' CREATE TABLE phpbb_acl_users ( @@ -761,7 +761,7 @@ CREATE TABLE phpbb_styles_imageset_data ( imageset_id tinyint(4) NOT NULL DEFAULT '0' ); -CREATE INDEX phpbb_styles_imageset_data_i_id ON phpbb_styles_imageset_data (imageset_id); +CREATE INDEX phpbb_styles_imageset_data_i_d ON phpbb_styles_imageset_data (imageset_id); # Table: 'phpbb_topics' CREATE TABLE phpbb_topics ( From bc90e825eef87b2572903d70d24a94df7d365ff2 Mon Sep 17 00:00:00 2001 From: David M Date: Wed, 23 May 2007 23:38:45 +0000 Subject: [PATCH 013/136] changelog git-svn-id: file:///svn/phpbb/trunk@7670 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 275707cce2..4c9d6376e2 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -201,6 +201,8 @@ p a {
  • [Fix] Properly escaped the delimiter in disallowed username comparisons (Bug #11339)
  • [Fix] Check global purge setting (Bug #11555)
  • [Fix] Improper magic url parsing applied to already parsed [url=] bbcode tag (Bug #11429)
  • +
  • [Fix] Renamed two indicies for Oracle support (Bug #11457)
  • +
  • [Fix] Added support for ISO-8859-8-i in the character set convertor
  • From 49d351be1d3ac82b352767e966400fc23a5cfb4b Mon Sep 17 00:00:00 2001 From: David M Date: Wed, 23 May 2007 23:47:59 +0000 Subject: [PATCH 014/136] - added support for Oracle's easy connect naming git-svn-id: file:///svn/phpbb/trunk@7671 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/db/oracle.php | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 4c9d6376e2..a7f84091fc 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -203,6 +203,7 @@ p a {
  • [Fix] Improper magic url parsing applied to already parsed [url=] bbcode tag (Bug #11429)
  • [Fix] Renamed two indicies for Oracle support (Bug #11457)
  • [Fix] Added support for ISO-8859-8-i in the character set convertor
  • +
  • [Fix] Added support for Oracle's "easy connect naming"
  • diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php index 1d2a097e04..f6456a17ad 100644 --- a/phpBB/includes/db/oracle.php +++ b/phpBB/includes/db/oracle.php @@ -35,8 +35,21 @@ class dbal_oracle extends dbal $this->user = $sqluser; $this->server = $sqlserver . (($port) ? ':' . $port : ''); $this->dbname = $database; - - $this->db_connect_id = ($new_link) ? @ocinlogon($this->user, $sqlpassword, $this->dbname, 'UTF8') : (($this->persistency) ? @ociplogon($this->user, $sqlpassword, $this->dbname, 'UTF8') : @ocinlogon($this->user, $sqlpassword, $this->dbname, 'UTF8')); + + $connect = $database; + + // support for "easy connect naming" + if ($sqlserver !== '' && $sqlserver !== '/') + { + if (substr($sqlserver, -1, 1) == '/') + { + $sqlserver == substr($sqlserver, 0, -1); + } + $connect = $sqlserver . (($port) ? ':' . $port : '') . '/' . $dbname; + $this->dbname = $connect; + } + + $this->db_connect_id = ($new_link) ? @ocinlogon($this->user, $sqlpassword, $connect, 'UTF8') : (($this->persistency) ? @ociplogon($this->user, $sqlpassword, $connect, 'UTF8') : @ocinlogon($this->user, $sqlpassword, $connect, 'UTF8')); return ($this->db_connect_id) ? $this->db_connect_id : $this->sql_error(''); } From 60000cec97aa54169c215df7683e76157b3bbcf7 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Thu, 24 May 2007 16:18:04 +0000 Subject: [PATCH 015/136] Some fixes... @translators: please note the split of SEND_EMAIL ;) git-svn-id: file:///svn/phpbb/trunk@7672 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/style/acp_users.html | 2 +- phpBB/docs/CHANGELOG.html | 9 +++++++-- phpBB/language/en/acp/board.php | 2 +- phpBB/language/en/acp/styles.php | 2 +- phpBB/language/en/acp/users.php | 1 + phpBB/language/en/common.php | 3 ++- phpBB/language/en/email/coppa_resend_inactive.txt | 2 +- phpBB/language/en/email/coppa_welcome_inactive.txt | 2 +- phpBB/language/en/help_faq.php | 2 +- phpBB/language/en/mcp.php | 4 ++-- phpBB/styles/prosilver/template/mcp_front.html | 2 +- phpBB/styles/prosilver/template/memberlist_email.html | 2 +- phpBB/styles/prosilver/template/memberlist_view.html | 2 +- phpBB/styles/prosilver/template/overall_footer.html | 2 +- phpBB/styles/prosilver/template/posting_editor.html | 2 +- phpBB/styles/prosilver/template/ucp_main_drafts.html | 2 +- phpBB/styles/prosilver/template/viewtopic_print.html | 4 ++-- phpBB/styles/subsilver2/template/index_body.html | 2 +- phpBB/styles/subsilver2/template/memberlist_email.html | 2 +- 19 files changed, 28 insertions(+), 21 deletions(-) diff --git a/phpBB/adm/style/acp_users.html b/phpBB/adm/style/acp_users.html index eda5a416f4..a7bde1e77a 100644 --- a/phpBB/adm/style/acp_users.html +++ b/phpBB/adm/style/acp_users.html @@ -184,7 +184,7 @@
    {L_NO_TOPICS_QUEUE}{L_NO_POSTS}{L_NO_TOPICS_QUEUE}{L_UNAPPROVED_POSTS_ZERO_TOTAL}
    -

    {L_NO_ENTRIES}

    +

    {L_USER_NO_ATTACHMENTS}

    diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index a7f84091fc..e86fe1430d 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -185,9 +185,10 @@ p a {
    diff --git a/phpBB/language/en/acp/board.php b/phpBB/language/en/acp/board.php index 32ef227377..77aa273251 100644 --- a/phpBB/language/en/acp/board.php +++ b/phpBB/language/en/acp/board.php @@ -193,7 +193,7 @@ $lang = array_merge($lang, array( 'COPPA_MAIL' => 'COPPA mailing address', 'COPPA_MAIL_EXPLAIN' => 'This is the mailing address where parents will send COPPA registration forms.', 'ENABLE_COPPA' => 'Enable COPPA', - 'ENABLE_COPPA_EXPLAIN' => 'This requires users to declare whether they are 13 or over for compliance with the U.S. COPPA Act. If this is disabled the COPPA specific groups will no longer be displayed.', + 'ENABLE_COPPA_EXPLAIN' => 'This requires users to declare whether they are 13 or over for compliance with the U.S. COPPA. If this is disabled the COPPA specific groups will no longer be displayed.', 'MAX_CHARS' => 'Max', 'MIN_CHARS' => 'Min', 'NO_AUTH_PLUGIN' => 'No suitable auth plugin found.', diff --git a/phpBB/language/en/acp/styles.php b/phpBB/language/en/acp/styles.php index df14105eb2..33ad3354d8 100644 --- a/phpBB/language/en/acp/styles.php +++ b/phpBB/language/en/acp/styles.php @@ -32,7 +32,7 @@ if (empty($lang) || !is_array($lang)) $lang = array_merge($lang, array( 'ACP_IMAGESETS_EXPLAIN' => 'Imagesets comprise all the button, forum, folder, etc. and other non-style specific images used by the board. Here you can edit, export or delete existing imagesets and import or activate new sets.', - 'ACP_STYLES_EXPLAIN' => 'Here you can manage the available styles on your board. A style consists off a template, theme and imageset. You may alter existing styles, delete, deactivate, reactivate, create or import new ones. You can also see what a style will look like using the preview function. The current default style is noted by the presence of an asterisk (*). Also listed is the total user count for each style, note that overriding user styles will not be reflected here.', + 'ACP_STYLES_EXPLAIN' => 'Here you can manage the available styles on your board. A style consists of a template, theme and imageset. You may alter existing styles, delete, deactivate, reactivate, create or import new ones. You can also see what a style will look like using the preview function. The current default style is noted by the presence of an asterisk (*). Also listed is the total user count for each style, note that overriding user styles will not be reflected here.', 'ACP_TEMPLATES_EXPLAIN' => 'A template set comprises all the markup used to generate the layout of your board. Here you can edit existing template sets, delete, export, import and preview sets. You can also modify the templating code used to generate BBCode.', 'ACP_THEMES_EXPLAIN' => 'From here you can create, install, edit, delete and export themes. A theme is the combination of colours and images that are applied to your templates to define the basic look of your board. The range of options open to you depends on the configuration of your server and phpBB installation, see the manual for further details. Please note that when creating new themes the use of an existing theme as a basis is optional.', 'ADD_IMAGESET' => 'Create imageset', diff --git a/phpBB/language/en/acp/users.php b/phpBB/language/en/acp/users.php index 7c09a99c42..eabdd93d22 100644 --- a/phpBB/language/en/acp/users.php +++ b/phpBB/language/en/acp/users.php @@ -111,6 +111,7 @@ $lang = array_merge($lang, array( 'USER_GROUP_NORMAL' => 'Normal groups user is a member of', 'USER_GROUP_PENDING' => 'Groups user is in pending mode', 'USER_GROUP_SPECIAL' => 'Special groups user is a member of', + 'USER_NO_ATTACHMENTS' => 'There are no attached files to display.', 'USER_OVERVIEW_UPDATED' => 'User details updated.', 'USER_POSTS_DELETED' => 'Successfully removed all posts made by this user.', 'USER_POSTS_MOVED' => 'Successfully moved users posts to target forum.', diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php index 029f63e1c0..e81d75325c 100644 --- a/phpBB/language/en/common.php +++ b/phpBB/language/en/common.php @@ -84,7 +84,7 @@ $lang = array_merge($lang, array( 'AVATAR_PHP_SIZE_OVERRUN' => 'The avatar’s filesize is too large. The maximum allowed upload size is %d MB.
    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 must be between 0 and %1d %2s.', + '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', @@ -490,6 +490,7 @@ $lang = array_merge($lang, array( 'SELECT_DESTINATION_FORUM' => 'Please select a destination forum', 'SELECT_FORUM' => 'Select a forum', 'SEND_EMAIL' => 'E-mail', + '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', diff --git a/phpBB/language/en/email/coppa_resend_inactive.txt b/phpBB/language/en/email/coppa_resend_inactive.txt index b1e45213e9..ab8363b350 100644 --- a/phpBB/language/en/email/coppa_resend_inactive.txt +++ b/phpBB/language/en/email/coppa_resend_inactive.txt @@ -2,7 +2,7 @@ Subject: Welcome to "{SITENAME}" - {U_BOARD} {WELCOME_MSG} -In compliance with the COPPA act your account is currently inactive. +In compliance with the COPPA your account is currently inactive. Please print this message out and have your parent or guardian sign and date it. Then fax it to: diff --git a/phpBB/language/en/email/coppa_welcome_inactive.txt b/phpBB/language/en/email/coppa_welcome_inactive.txt index 1167502c8a..f34479a6fe 100644 --- a/phpBB/language/en/email/coppa_welcome_inactive.txt +++ b/phpBB/language/en/email/coppa_welcome_inactive.txt @@ -2,7 +2,7 @@ Subject: Welcome to "{SITENAME}" - {U_BOARD} {WELCOME_MSG} -In compliance with the COPPA act your account is currently inactive. +In compliance with the COPPA your account is currently inactive. Please print this message out and have your parent or guardian sign and date it. Then fax it to: diff --git a/phpBB/language/en/help_faq.php b/phpBB/language/en/help_faq.php index e37efbba6c..a407f7f4d0 100644 --- a/phpBB/language/en/help_faq.php +++ b/phpBB/language/en/help_faq.php @@ -68,7 +68,7 @@ $help = array( ), array( 0 => 'What does the “Delete all board cookies” do?', - 1 => '“Delete all board cookies”deletes the cookies created by phpBB which keep you authenticated and logged into the board. It also provides functions such as read tracking if they have been enabled by the board owner. If you are having login or logout problems, deleting board cookies may help.', + 1 => '“Delete all board cookies” deletes the cookies created by phpBB which keep you authenticated and logged into the board. It also provides functions such as read tracking if they have been enabled by the board owner. If you are having login or logout problems, deleting board cookies may help.', ), array( 0 => '--', diff --git a/phpBB/language/en/mcp.php b/phpBB/language/en/mcp.php index 33e626f452..26f0c54e2d 100644 --- a/phpBB/language/en/mcp.php +++ b/phpBB/language/en/mcp.php @@ -218,7 +218,7 @@ $lang = array_merge($lang, array( 'NO_POST_SELECTED' => 'You must select at least one post to perform this action.', 'NO_REASON_DISAPPROVAL' => 'Please give an appropriate reason for disapproval.', 'NO_REPORT' => 'No report found', - 'NO_REPORTS' => 'No reports', + 'NO_REPORTS' => 'No reports found', 'NO_REPORT_SELECTED' => 'You must select at least one report to perform this action.', 'NO_TOPIC_ICON' => 'None', 'NO_TOPIC_SELECTED' => 'You must select at least one topic to perform this action.', @@ -326,7 +326,7 @@ $lang = array_merge($lang, array( 'UNAPPROVED_POST_TOTAL' => 'In total there is 1 post waiting for approval.', 'UNLOCK' => 'Unlock', 'UNLOCK_POST' => 'Unlock post', - 'UNLOCK_POST_EXPLAIN' => 'Allow editing.', + 'UNLOCK_POST_EXPLAIN' => 'Allow editing', 'UNLOCK_POST_POST' => 'Unlock post', 'UNLOCK_POST_POST_CONFIRM' => 'Are you sure you want to allow editing this post?', 'UNLOCK_POST_POSTS' => 'Unlock selected posts', diff --git a/phpBB/styles/prosilver/template/mcp_front.html b/phpBB/styles/prosilver/template/mcp_front.html index 722f4d59f5..71126aab01 100644 --- a/phpBB/styles/prosilver/template/mcp_front.html +++ b/phpBB/styles/prosilver/template/mcp_front.html @@ -123,7 +123,7 @@ {log.ACTION} {log.USERNAME} {log.IP} - {L_VIEW_TOPIC} + {L_VIEW_TOPIC}  {L_VIEW_TOPIC_LOGS}  {log.TIME} diff --git a/phpBB/styles/prosilver/template/memberlist_email.html b/phpBB/styles/prosilver/template/memberlist_email.html index 614efa73ee..137c4939f4 100644 --- a/phpBB/styles/prosilver/template/memberlist_email.html +++ b/phpBB/styles/prosilver/template/memberlist_email.html @@ -28,7 +28,7 @@ function checkForm(formObj) //--> -

    {L_SEND_EMAIL} {USERNAME}

    +

    {L_SEND_EMAIL_USER} {USERNAME}

    diff --git a/phpBB/styles/prosilver/template/memberlist_view.html b/phpBB/styles/prosilver/template/memberlist_view.html index 5b50f74689..cd1f90d2c0 100644 --- a/phpBB/styles/prosilver/template/memberlist_view.html +++ b/phpBB/styles/prosilver/template/memberlist_view.html @@ -44,7 +44,7 @@

    {L_CONTACT_USER} {USERNAME}

    -
    {L_EMAIL_ADDRESS}:
    {L_SEND_EMAIL} {USERNAME}
    +
    {L_EMAIL_ADDRESS}:
    {L_SEND_EMAIL_USER} {USERNAME}
    {L_WEBSITE}:
    {U_WWW}
    {L_PM}:
    {L_SEND_PRIVATE_MESSAGE}
    diff --git a/phpBB/styles/prosilver/template/overall_footer.html b/phpBB/styles/prosilver/template/overall_footer.html index 05fc5087bd..d56102f0bf 100644 --- a/phpBB/styles/prosilver/template/overall_footer.html +++ b/phpBB/styles/prosilver/template/overall_footer.html @@ -15,7 +15,7 @@ {L_BUMP_TOPIC} -
  • {L_THE_TEAM}{L_DELETE_COOKIES}{S_TIMEZONE}
  • +
  • {L_THE_TEAM}{L_DELETE_COOKIES}{S_TIMEZONE}
  • diff --git a/phpBB/styles/prosilver/template/posting_editor.html b/phpBB/styles/prosilver/template/posting_editor.html index 0cf67c300b..4e988903c0 100644 --- a/phpBB/styles/prosilver/template/posting_editor.html +++ b/phpBB/styles/prosilver/template/posting_editor.html @@ -30,7 +30,7 @@
    -
    +
    {L_FIND_USERNAME}
    diff --git a/phpBB/styles/prosilver/template/ucp_main_drafts.html b/phpBB/styles/prosilver/template/ucp_main_drafts.html index b60e478ce3..a7a952fa02 100644 --- a/phpBB/styles/prosilver/template/ucp_main_drafts.html +++ b/phpBB/styles/prosilver/template/ucp_main_drafts.html @@ -60,7 +60,7 @@
    - +
    diff --git a/phpBB/styles/prosilver/template/viewtopic_print.html b/phpBB/styles/prosilver/template/viewtopic_print.html index c9fb542eb4..db6a5c7648 100644 --- a/phpBB/styles/prosilver/template/viewtopic_print.html +++ b/phpBB/styles/prosilver/template/viewtopic_print.html @@ -23,10 +23,10 @@
    diff --git a/phpBB/styles/subsilver2/template/index_body.html b/phpBB/styles/subsilver2/template/index_body.html index 894549fe08..1a78fff7c7 100644 --- a/phpBB/styles/subsilver2/template/index_body.html +++ b/phpBB/styles/subsilver2/template/index_body.html @@ -10,7 +10,7 @@ -{L_DELETE_COOKIES} | {L_THE_TEAM}
    +{L_DELETE_COOKIES} | {L_THE_TEAM}

    diff --git a/phpBB/styles/subsilver2/template/memberlist_email.html b/phpBB/styles/subsilver2/template/memberlist_email.html index ebea654f58..92df7910a5 100644 --- a/phpBB/styles/subsilver2/template/memberlist_email.html +++ b/phpBB/styles/subsilver2/template/memberlist_email.html @@ -33,7 +33,7 @@ function checkForm(formObj) - + From bd2f26a1862ae7737d830b41adb6f75e7ce1143e Mon Sep 17 00:00:00 2001 From: David M Date: Fri, 25 May 2007 05:12:34 +0000 Subject: [PATCH 016/136] #11583 git-svn-id: file:///svn/phpbb/trunk@7673 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/language/en/acp/database.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/language/en/acp/database.php b/phpBB/language/en/acp/database.php index e776b13024..dc40657649 100644 --- a/phpBB/language/en/acp/database.php +++ b/phpBB/language/en/acp/database.php @@ -33,7 +33,7 @@ if (empty($lang) || !is_array($lang)) // Database Backup/Restore $lang = array_merge($lang, array( 'ACP_BACKUP_EXPLAIN' => 'Here you can backup all your phpBB related data. You may store the resulting archive in your store/ folder or download it directly. Depending on your server configuration you may be able to compress the file in a number of formats.', - 'ACP_RESTORE_EXPLAIN' => 'This will perform a full restore of all phpBB tables from a saved file. If your server supports it you may use a gzip or bzip2 compressed text file and it will automatically be decompressed. WARNING This will overwrite any existing data. The restore may take a long time to process please do not move from this page till it is complete.', + 'ACP_RESTORE_EXPLAIN' => 'This will perform a full restore of all phpBB tables from a saved file. If your server supports it you may use a gzip or bzip2 compressed text file and it will automatically be decompressed. WARNING This will overwrite any existing data. The restore may take a long time to process please do not move from this page till it is complete. Backups are stored in the store/ folder and are assumed to be generated by phpBB\'s backup functionality. Restoring backups that were not created by the built in system may or may not work.', 'BACKUP_DELETE' => 'The backup file has been deleted successfully.', 'BACKUP_INVALID' => 'The selected file to backup is invalid.', From e45c503bde5df9583dde575bec2fe3ff406ac071 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 25 May 2007 09:34:05 +0000 Subject: [PATCH 017/136] undoing the fix for #11421 - correcting post counts was not well liked. #11665 git-svn-id: file:///svn/phpbb/trunk@7674 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 - .../install/convertors/functions_phpbb20.php | 17 ++-- phpBB/install/install_convert.php | 87 +------------------ 3 files changed, 13 insertions(+), 92 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index e86fe1430d..bfac176f73 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -196,7 +196,6 @@ p a {
  • [Fix] Made Custom BBCode validation more strict (Bug #11335)
  • [Fix] Proper sync of data on topic copy (Bug #11335)
  • [Fix] Introduced ORDER BY clauses to converter queries (Bug #10697)
  • -
  • [Fix] added a sync to post counts during conversion (Bug #11421)
  • [Fix] Stopped bots from getting added to the registered users group during conversion (Bug #11283)
  • [Fix] Filled "SMILIEYS_DISABLED" template variable (Bug #11257)
  • [Fix] Properly escaped the delimiter in disallowed username comparisons (Bug #11339)
  • diff --git a/phpBB/install/convertors/functions_phpbb20.php b/phpBB/install/convertors/functions_phpbb20.php index badac08999..4346c6f4d1 100644 --- a/phpBB/install/convertors/functions_phpbb20.php +++ b/phpBB/install/convertors/functions_phpbb20.php @@ -59,6 +59,15 @@ function phpbb_insert_forums() $max_forum_id++; + // pruning disabled globally? + $sql = "SELECT config_value + FROM {$convert->src_table_prefix}config + WHERE config_name = 'prune_enable'"; + $result = $src_db->sql_query($sql); + $prune_enabled = (int) $src_db->sql_fetchfield('config_value'); + $src_db->sql_freeresult($result); + + // Insert categories $sql = 'SELECT cat_id, cat_title FROM ' . $convert->src_table_prefix . 'categories @@ -84,13 +93,7 @@ function phpbb_insert_forums() break; } - // pruning disabled globally? - $sql = "SELECT config_value - FROM {$convert->src_table_prefix}config - WHERE config_name = 'prune_enable'"; - $result = $src_db->sql_query($sql); - $prune_enabled = (int) $src_db->sql_fetchfield('config_value'); - $src_db->sql_freeresult($result); + $cats_added = array(); while ($row = $src_db->sql_fetchrow($result)) diff --git a/phpBB/install/install_convert.php b/phpBB/install/install_convert.php index 69ca75c9da..0ef32b1921 100644 --- a/phpBB/install/install_convert.php +++ b/phpBB/install/install_convert.php @@ -783,16 +783,8 @@ class install_convert extends module $jump = request_var('jump', 0); $final_jump = request_var('final_jump', 0); $sync_batch = request_var('sync_batch', -1); - $sync_post_count = request_var('sync_post_count', -1); $last_statement = request_var('last', 0); - // We are running sync... - if ($sync_post_count >= 0) - { - $this->sync_user_posts($sync_post_count); - return; - } - // We are running sync... if ($sync_batch >= 0) { @@ -1171,12 +1163,10 @@ class install_convert extends module $sql .= (!empty($schema['having'])) ? "\nHAVING " . $schema['having'] : ''; // Order By - if (empty($schema['order_by']) && !empty($schema['primary'])) { $schema['order_by'] = $schema['primary']; } - $sql .= (!empty($schema['order_by'])) ? "\nORDER BY " . $schema['order_by'] : ''; // Counting basically holds the amount of rows processed. @@ -1412,78 +1402,6 @@ class install_convert extends module return; } - /** - * Sync function being executed at the middle, some functions need to be executed after a successful sync. - */ - function sync_user_posts($sync_batch) - { - global $db, $template, $user; - global $convert; - - $template->assign_block_vars('checks', array( - 'S_LEGEND' => true, - 'LEGEND' => $user->lang['SYNC_POST_COUNT'], - )); - - $batch_size = $convert->batch_size; - - $sql = 'SELECT COUNT(user_id) AS max_value - FROM ' . USERS_TABLE; - $result = $db->sql_query($sql); - $row = $db->sql_fetchrow($result); - $db->sql_freeresult($result); - - // Set values of minimum/maximum primary value for this table. - $primary_min = 0; - $primary_max = $row['max_value']; - - if ($sync_batch == 1) - { - $sync_batch = (int) $primary_min; - } - // Fetch a batch of rows, process and insert them. - while ($sync_batch <= $primary_max && still_on_time()) - { - $end = ($sync_batch + $batch_size - 1); - - - $template->assign_block_vars('checks', array( - 'TITLE' => sprintf($user->lang['SYNC_POST_COUNT_ID'], $sync_batch, ($sync_batch + $batch_size)) . ((defined('DEBUG_EXTRA') && function_exists('memory_get_usage')) ? ' [' . ceil(memory_get_usage()/1024) . ' KB]' : ''), - 'RESULT' => $user->lang['DONE'], - )); - - $sync_batch += $batch_size; - } - - if ($sync_batch >= $primary_max) - { - sync_post_count($sync_batch, $batch_size); - $url = $this->save_convert_progress('&sync_batch=0'); - - $template->assign_vars(array( - 'L_SUBMIT' => $user->lang['CONTINUE_CONVERT'], - 'U_ACTION' => $url, - )); - - $this->meta_refresh($url); - return; - } - else - { - $sync_batch--; - } - - $url = $this->save_convert_progress('&sync_post_count=' . $sync_batch); - - $template->assign_vars(array( - 'L_SUBMIT' => $user->lang['CONTINUE_CONVERT'], - 'U_ACTION' => $url, - )); - - $this->meta_refresh($url); - return; - } - /** * Sync function being executed at the middle, some functions need to be executed after a successful sync. */ @@ -1801,8 +1719,9 @@ class install_convert extends module 'RESULT' => $user->lang['DONE'], )); - // Continue with synchronizing the post counts... - $url = $this->save_convert_progress('&sync_post_count=0'); + // Continue with synchronizing the forums... + $url = $this->save_convert_progress('&sync_batch=0'); + $template->assign_vars(array( 'L_SUBMIT' => $user->lang['CONTINUE_CONVERT'], 'U_ACTION' => $url, From b4b9f7fee276d147b14f9415a24184e5c95fc8e5 Mon Sep 17 00:00:00 2001 From: David M Date: Fri, 25 May 2007 12:22:04 +0000 Subject: [PATCH 018/136] #11637 git-svn-id: file:///svn/phpbb/trunk@7675 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/develop/create_schema_files.php | 2 +- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/search/fulltext_mysql.php | 2 +- phpBB/install/database_update.php | 5 +++++ phpBB/install/schemas/mysql_41_schema.sql | 2 +- 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/phpBB/develop/create_schema_files.php b/phpBB/develop/create_schema_files.php index e89f009242..d4821d0d5d 100644 --- a/phpBB/develop/create_schema_files.php +++ b/phpBB/develop/create_schema_files.php @@ -1256,7 +1256,7 @@ function get_schema_struct() 'enable_magic_url' => array('BOOL', 1), 'enable_sig' => array('BOOL', 1), 'post_username' => array('VCHAR_UNI:255', ''), - 'post_subject' => array('XSTEXT_UNI', ''), + 'post_subject' => array('XSTEXT_UNI', '', 'true_sort'), 'post_text' => array('MTEXT_UNI', ''), 'post_checksum' => array('VCHAR:32', ''), 'post_attachment' => array('BOOL', 0), diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index bfac176f73..214829722b 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -208,6 +208,7 @@ p a {
  • [Fix] Display correct message if no attachments found in user administration (Bug #11629)
  • [Fix] Let the "Delete all board cookies" being displayed for guests too (only prosilver) (Bug #11603)
  • [Fix] Do not display view topic link in MCP while there is no link present (Bug #11573)
  • +
  • [Fix] MySQL now properly sorts by post_subject (Bug #11637)
  • diff --git a/phpBB/includes/search/fulltext_mysql.php b/phpBB/includes/search/fulltext_mysql.php index 67f3258087..0344eb3085 100644 --- a/phpBB/includes/search/fulltext_mysql.php +++ b/phpBB/includes/search/fulltext_mysql.php @@ -698,7 +698,7 @@ class fulltext_mysql extends search_backend { if ($db->sql_layer == 'mysqli' || version_compare($db->mysql_version, '4.1.3', '>=')) { - $alter[] = 'MODIFY post_subject varchar(100) COLLATE utf8_unicode_ci DEFAULT \'\' NOT NULL'; + //$alter[] = 'MODIFY post_subject varchar(100) COLLATE utf8_unicode_ci DEFAULT \'\' NOT NULL'; } else { diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 6002f3e556..5ba0c9f50f 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -607,6 +607,11 @@ if (version_compare($current_version, '3.0.RC1', '<=')) $db->sql_query($sql); } + if ($map_dbms === 'mysql_41') + { + sql_column_change($map_dbms, POSTS_TABLE, 'post_subject', array('XSTEXT_UNI', '', 'true_sort')); + } + $no_updates = false; } diff --git a/phpBB/install/schemas/mysql_41_schema.sql b/phpBB/install/schemas/mysql_41_schema.sql index a4eb2519aa..0838947c76 100644 --- a/phpBB/install/schemas/mysql_41_schema.sql +++ b/phpBB/install/schemas/mysql_41_schema.sql @@ -243,7 +243,7 @@ CREATE TABLE phpbb_forums ( forum_topics_real mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, forum_last_post_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, forum_last_poster_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, - forum_last_post_subject varchar(100) DEFAULT '' NOT NULL, + forum_last_post_subject varchar(100) DEFAULT '' NOT NULL COLLATE utf8_unicode_ci, forum_last_post_time int(11) UNSIGNED DEFAULT '0' NOT NULL, forum_last_poster_name varchar(255) DEFAULT '' NOT NULL, forum_last_poster_colour varchar(6) DEFAULT '' NOT NULL, From 17315b69c69fba5bad5f78bc1d38c301692f9904 Mon Sep 17 00:00:00 2001 From: David M Date: Fri, 25 May 2007 12:25:46 +0000 Subject: [PATCH 019/136] d'oh! git-svn-id: file:///svn/phpbb/trunk@7676 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/db/oracle.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php index f6456a17ad..360928e96d 100644 --- a/phpBB/includes/db/oracle.php +++ b/phpBB/includes/db/oracle.php @@ -45,8 +45,7 @@ class dbal_oracle extends dbal { $sqlserver == substr($sqlserver, 0, -1); } - $connect = $sqlserver . (($port) ? ':' . $port : '') . '/' . $dbname; - $this->dbname = $connect; + $connect = $sqlserver . (($port) ? ':' . $port : '') . '/' . $database; } $this->db_connect_id = ($new_link) ? @ocinlogon($this->user, $sqlpassword, $connect, 'UTF8') : (($this->persistency) ? @ociplogon($this->user, $sqlpassword, $connect, 'UTF8') : @ocinlogon($this->user, $sqlpassword, $connect, 'UTF8')); From 20993d5cf1abdb448eb57c8b0de6c0f36bfc6f70 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 25 May 2007 16:03:40 +0000 Subject: [PATCH 020/136] Introduced checks to stop negative postcounts (Bug #11561, #11421) Allow IP v4/v6 urls for remote avatars (Bug #11633) Delete avatar files automatically (Bug #11631) Automatically add selected columsn to group by statements in the converter (Bug #11465) git-svn-id: file:///svn/phpbb/trunk@7677 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 9 +++++++-- phpBB/includes/acp/acp_forums.php | 8 +++++++- phpBB/includes/functions_admin.php | 8 +++++++- phpBB/includes/functions_user.php | 6 +++--- phpBB/includes/mcp/mcp_post.php | 3 ++- phpBB/install/install_convert.php | 15 +++++++++++++-- 6 files changed, 39 insertions(+), 10 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 214829722b..514fbdfec3 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -202,14 +202,19 @@ p a {
  • [Fix] Check global purge setting (Bug #11555)
  • [Fix] Improper magic url parsing applied to already parsed [url=] bbcode tag (Bug #11429)
  • [Fix] Renamed two indicies for Oracle support (Bug #11457)
  • -
  • [Fix] Added support for ISO-8859-8-i in the character set convertor
  • +
  • [Fix] Added support for ISO-8859-8-i in the character set convertor (Bug #11265)
  • [Fix] Added support for Oracle's "easy connect naming"
  • [Fix] Let Mark/Unmark All work in Manage Drafts (Bug #11679)
  • [Fix] Display correct message if no attachments found in user administration (Bug #11629)
  • [Fix] Let the "Delete all board cookies" being displayed for guests too (only prosilver) (Bug #11603)
  • [Fix] Do not display view topic link in MCP while there is no link present (Bug #11573)
  • [Fix] MySQL now properly sorts by post_subject (Bug #11637)
  • - +
  • [Fix] Introduced checks to stop negative postcounts (Bug #11561, #11421)
  • +
  • [Fix] Allow IP v4/v6 urls for remote avatars (Bug #11633)
  • +
  • [Fix] Delete avatar files automatically (Bug #11631)
  • +
  • [Fix] Automatically add selected columsn to group by statements in the converter (Bug #11465)
  • + + Top diff --git a/phpBB/includes/acp/acp_forums.php b/phpBB/includes/acp/acp_forums.php index 0f38d6663b..3e5ca705da 100644 --- a/phpBB/includes/acp/acp_forums.php +++ b/phpBB/includes/acp/acp_forums.php @@ -1709,9 +1709,15 @@ class acp_forums { foreach ($post_counts as $poster_id => $substract) { + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_posts = 0 + WHERE user_id = ' . $poster_id . ' + AND user_posts < ' . $substract; + $db->sql_query($sql); $sql = 'UPDATE ' . USERS_TABLE . ' SET user_posts = user_posts - ' . $substract . ' - WHERE user_id = ' . $poster_id; + WHERE user_id = ' . $poster_id . ' + AND user_posts >= ' . $substract; $db->sql_query($sql); } } diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index 97fc9ba73b..042e0bae03 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -658,9 +658,15 @@ function delete_posts($where_type, $where_ids, $auto_sync = true, $posted_sync = { foreach ($post_counts as $poster_id => $substract) { + $sql = 'UPDATE ' . USERS_TABLE . ' + SET user_posts = 0 + WHERE user_id = ' . $poster_id . ' + AND user_posts < ' . $substract; + $db->sql_query($sql); $sql = 'UPDATE ' . USERS_TABLE . ' SET user_posts = user_posts - ' . $substract . ' - WHERE user_id = ' . $poster_id; + WHERE user_id = ' . $poster_id . ' + AND user_posts >= ' . $substract; $db->sql_query($sql); } } diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index cab9d8bc25..2c733a9ebd 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1595,8 +1595,7 @@ function avatar_remote($data, &$error) { $data['remotelink'] = 'http://' . $data['remotelink']; } - - if (!preg_match('#^(http|https|ftp)://(.*?\.)*?[a-z0-9\-]+?\.[a-z]{2,4}:?([0-9]*?).*?\.(gif|jpg|jpeg|png)$#i', $data['remotelink'])) + if (!preg_match('#^(http|https|ftp)://(?:(.*?\.)*?[a-z0-9\-]+?\.[a-z]{2,4}|(?:\d{1,3}\.){3,5}\d{1,3}):?([0-9]*?).*?\.(gif|jpg|jpeg|png)$#i', $data['remotelink'])) { $error[] = $user->lang['AVATAR_URL_INVALID']; return false; @@ -2023,7 +2022,8 @@ function avatar_process_user(&$error, $custom_userdata = false) $userdata = ($custom_userdata === false) ? $user->data : $custom_userdata; // Delete old avatar if present - if ($userdata['user_avatar'] && empty($sql_ary['user_avatar']) && $userdata['user_avatar_type'] != AVATAR_GALLERY) + if ((!empty($userdata['user_avatar']) && empty($sql_ary['user_avatar']) && $userdata['user_avatar_type'] == AVATAR_UPLOAD) + || ( !empty($userdata['user_avatar']) && !empty($sql_ary['user_avatar']) && $userdata['user_avatar_type'] == AVATAR_UPLOAD && $sql_ary['user_avatar_type'] != AVATAR_UPLOAD)) { avatar_delete('user', $userdata); } diff --git a/phpBB/includes/mcp/mcp_post.php b/phpBB/includes/mcp/mcp_post.php index 8dbbdba92e..7556f3270d 100644 --- a/phpBB/includes/mcp/mcp_post.php +++ b/phpBB/includes/mcp/mcp_post.php @@ -403,7 +403,8 @@ function change_poster(&$post_info, $userdata) { $sql = 'UPDATE ' . USERS_TABLE . ' SET user_posts = user_posts - 1 - WHERE user_id = ' . $post_info['user_id']; + WHERE user_id = ' . $post_info['user_id'] .' + AND user_posts > 0'; $db->sql_query($sql); $sql = 'UPDATE ' . USERS_TABLE . ' diff --git a/phpBB/install/install_convert.php b/phpBB/install/install_convert.php index 0ef32b1921..7c95c3ef05 100644 --- a/phpBB/install/install_convert.php +++ b/phpBB/install/install_convert.php @@ -1157,7 +1157,18 @@ class install_convert extends module $sql .= (!empty($schema['where'])) ? "\nWHERE (" . $schema['where'] . ')' : ''; // Group By - $sql .= (!empty($schema['group_by'])) ? "\nGROUP BY " . $schema['group_by'] : ''; + if (!empty($schema['group_by'])) + { + $schema['group_by'] = array($schema['group_by']); + foreach($sql_data['select_fields'] as $select) + { + if (!in_array($select, $schema['group_by'])) + { + $schema['group_by'][] = $select; + } + } + } + $sql .= (!empty($schema['group_by'])) ? "\nGROUP BY " . implode(', ', $schema['group_by']) : ''; // Having $sql .= (!empty($schema['having'])) ? "\nHAVING " . $schema['having'] : ''; @@ -1168,7 +1179,7 @@ class install_convert extends module $schema['order_by'] = $schema['primary']; } $sql .= (!empty($schema['order_by'])) ? "\nORDER BY " . $schema['order_by'] : ''; - + // Counting basically holds the amount of rows processed. $counting = -1; $batch_time = 0; From 650f5a529cd47fa0c9b0cfc60c17f7375c4d7122 Mon Sep 17 00:00:00 2001 From: David M Date: Fri, 25 May 2007 17:16:48 +0000 Subject: [PATCH 021/136] #11483 git-svn-id: file:///svn/phpbb/trunk@7678 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 4 ++-- phpBB/includes/mcp/mcp_reports.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 514fbdfec3..fa40caa7d5 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -213,8 +213,8 @@ p a {
  • [Fix] Allow IP v4/v6 urls for remote avatars (Bug #11633)
  • [Fix] Delete avatar files automatically (Bug #11631)
  • [Fix] Automatically add selected columsn to group by statements in the converter (Bug #11465)
  • - - +
  • [Fix] Allow posts without subjects to be clicked in the MCP (Bug #11483)
  • + Top diff --git a/phpBB/includes/mcp/mcp_reports.php b/phpBB/includes/mcp/mcp_reports.php index c318472b7d..7d8ccd32d9 100755 --- a/phpBB/includes/mcp/mcp_reports.php +++ b/phpBB/includes/mcp/mcp_reports.php @@ -378,7 +378,7 @@ class mcp_reports 'FORUM_NAME' => (!$global_topic) ? $forum_data[$row['forum_id']]['forum_name'] : $user->lang['GLOBAL_ANNOUNCEMENT'], 'POST_ID' => $row['post_id'], - 'POST_SUBJECT' => $row['post_subject'], + 'POST_SUBJECT' => ($row['post_subject']) ? $row['post_subject'] : $user->lang['NO_SUBJECT'], 'POST_TIME' => $user->format_date($row['post_time']), 'REPORT_ID' => $row['report_id'], 'REPORT_TIME' => $user->format_date($row['report_time']), From a1ae65368ec9a9b8fefa456aaee568587cfe1021 Mon Sep 17 00:00:00 2001 From: David M Date: Fri, 25 May 2007 17:42:32 +0000 Subject: [PATCH 022/136] we forgot to sync the forums that shadow topics reside in when the topic that they point to is deleted git-svn-id: file:///svn/phpbb/trunk@7679 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_admin.php | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index 042e0bae03..3a24c5db1c 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -559,15 +559,33 @@ function delete_topics($where_type, $where_ids, $auto_sync = true, $post_count_s } unset($table_ary); - $sql = 'DELETE FROM ' . TOPICS_TABLE . ' + $moved_topic_ids = array(); + + // update the other forums + $sql = 'SELECT topic_id, forum_id + FROM ' . TOPICS_TABLE . ' WHERE ' . $db->sql_in_set('topic_moved_id', $topic_ids); - $db->sql_query($sql); + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $forum_ids[] = $row['forum_id']; + $moved_topic_ids[] = $row['topic_id']; + } + $db->sql_freeresult($result); + + if (sizeof($moved_topic_ids)) + { + $sql = 'DELETE FROM ' . TOPICS_TABLE . ' + WHERE ' . $db->sql_in_set('topic_id', $moved_topic_ids); + $db->sql_query($sql); + } $db->sql_transaction('commit'); if ($auto_sync) { - sync('forum', 'forum_id', $forum_ids, true, true); + sync('forum', 'forum_id', array_unique($forum_ids), true, true); sync('topic_reported', $where_type, $where_ids); } From 79600289e72eb5c2af615abbc983cac7e912eb5b Mon Sep 17 00:00:00 2001 From: David M Date: Fri, 25 May 2007 17:43:16 +0000 Subject: [PATCH 023/136] changelog git-svn-id: file:///svn/phpbb/trunk@7680 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + 1 file changed, 1 insertion(+) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index fa40caa7d5..117e3322c2 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -214,6 +214,7 @@ p a {
  • [Fix] Delete avatar files automatically (Bug #11631)
  • [Fix] Automatically add selected columsn to group by statements in the converter (Bug #11465)
  • [Fix] Allow posts without subjects to be clicked in the MCP (Bug #11483)
  • +
  • [Fix] Sync the forums that shadow topics reside in when the topic that they point to is deleted
  • From e6f46e65a7a8d55e771fcfe0f3ab853ed3411214 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Fri, 25 May 2007 18:00:22 +0000 Subject: [PATCH 024/136] fix an improper fix. - generally, sorry, but direct url parsing after ] will no longer work... - try to eliminate the most common "bug" for placing urls within the [url=][/url] part (the text). This will trigger make_clickable and render the url invalid (doubled url), moreso if other text is involved too. This is still te case if the url is not written directly after the [url=] part. This is nearly the best we can get within 3.0.x - and every report about [url=], [url] and make_clickable and it's non-parsing or parsing will be closed with "will not fix", except it is a critical bug resulting in the non-functioning of the board. We may adjust this later to our own liking while we try to find different ways to face these problems. git-svn-id: file:///svn/phpbb/trunk@7681 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions.php | 10 ++++++---- phpBB/includes/message_parser.php | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index fee5f49cc1..b4d954c908 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -2613,6 +2613,7 @@ function make_clickable_callback($type, $whitespace, $url, $relative_url, $class // make sure no HTML entities were matched $chars = array('<', '>', '"'); $split = false; + foreach ($chars as $char) { $next_split = strpos($url, $char); @@ -2668,6 +2669,7 @@ function make_clickable_callback($type, $whitespace, $url, $relative_url, $class { $url = substr($url, 0, -1); } + break; } switch ($type) @@ -2734,19 +2736,19 @@ function make_clickable($text, $server_url = false, $class = 'postlink') // Be sure to not let the matches cross over. ;) // relative urls for this board - $magic_url_match[] = '#(^|[\n\t (>\]])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#ie'; + $magic_url_match[] = '#(^|[\n\t (>])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#ie'; $magic_url_replace[] = "make_clickable_callback(MAGIC_URL_LOCAL, '\$1', '\$2', '\$3', '$local_class')"; // matches a xxxx://aaaaa.bbb.cccc. ... - $magic_url_match[] = '#(^|[\n\t (>\]])(' . get_preg_expression('url_inline') . ')#ie'; + $magic_url_match[] = '#(^|[\n\t (>])(' . get_preg_expression('url_inline') . ')#ie'; $magic_url_replace[] = "make_clickable_callback(MAGIC_URL_FULL, '\$1', '\$2', '', '$class')"; // matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing - $magic_url_match[] = '#(^|[\n\t (>\]])(' . get_preg_expression('www_url_inline') . ')#ie'; + $magic_url_match[] = '#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#ie'; $magic_url_replace[] = "make_clickable_callback(MAGIC_URL_WWW, '\$1', '\$2', '', '$class')"; // matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode. - $magic_url_match[] = '/(^|[\n\t (>\]])(' . get_preg_expression('email') . ')/ie'; + $magic_url_match[] = '/(^|[\n\t (>])(' . get_preg_expression('email') . ')/ie'; $magic_url_replace[] = "make_clickable_callback(MAGIC_URL_EMAIL, '\$1', '\$2', '', '')"; } diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index a593dffec6..b8f00d71ee 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -905,7 +905,7 @@ class bbcode_firstpass extends bbcode $url = append_sid($url); } - return ($var1) ? '[url=' . $this->bbcode_specialchars($url) . ':' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($var2) . '[/url:' . $this->bbcode_uid . ']' : '[url:' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($url) . '[/url:' . $this->bbcode_uid . ']'; + return ($var1) ? '[url=' . $this->bbcode_specialchars($url) . ':' . $this->bbcode_uid . ']' . $var2 . '[/url:' . $this->bbcode_uid . ']' : '[url:' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($url) . '[/url:' . $this->bbcode_uid . ']'; } return '[url' . (($var1) ? '=' . $var1 : '') . ']' . $var2 . '[/url]'; From cd7efa78a4968ff2bd6de276a81e6ea593950a50 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Fri, 25 May 2007 18:06:09 +0000 Subject: [PATCH 025/136] tiny stylistic change to blockquote layout git-svn-id: file:///svn/phpbb/trunk@7682 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/styles/prosilver/theme/content.css | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/phpBB/styles/prosilver/theme/content.css b/phpBB/styles/prosilver/theme/content.css index 2affe2a89d..9245127553 100644 --- a/phpBB/styles/prosilver/theme/content.css +++ b/phpBB/styles/prosilver/theme/content.css @@ -402,22 +402,19 @@ ul.searchresults { ----------------------------------------*/ /* Quote block */ blockquote { - /* Also see tweaks.css */ - margin: 1em 1px 1em 25px; - padding: 5px; background: #ebebeb none 6px 8px no-repeat; - border:1px solid #dbdbdb; - font-size:0.95em; - margin:1em 1px 1em 25px; - overflow:hidden; - padding:5px; + border: 1px solid #dbdbdb; + font-size: 0.95em; + margin: 0.5em 1px 0 25px; + overflow: hidden; + padding: 5px; } blockquote blockquote { /* Nested quotes */ - background-color:#bababa; - font-size:1em; - margin:0.5em 1px 0pt 15px; + background-color: #bababa; + font-size: 1em; + margin: 0.5em 1px 0 15px; } blockquote blockquote blockquote { From ffb1366af8ca6ac3f4c05966bd3d367bc0357dfb Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Fri, 25 May 2007 19:01:04 +0000 Subject: [PATCH 026/136] wrong position. ;) git-svn-id: file:///svn/phpbb/trunk@7683 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/install/schemas/mysql_41_schema.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/install/schemas/mysql_41_schema.sql b/phpBB/install/schemas/mysql_41_schema.sql index 0838947c76..44b292b7e7 100644 --- a/phpBB/install/schemas/mysql_41_schema.sql +++ b/phpBB/install/schemas/mysql_41_schema.sql @@ -243,7 +243,7 @@ CREATE TABLE phpbb_forums ( forum_topics_real mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, forum_last_post_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, forum_last_poster_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, - forum_last_post_subject varchar(100) DEFAULT '' NOT NULL COLLATE utf8_unicode_ci, + forum_last_post_subject varchar(100) DEFAULT '' NOT NULL, forum_last_post_time int(11) UNSIGNED DEFAULT '0' NOT NULL, forum_last_poster_name varchar(255) DEFAULT '' NOT NULL, forum_last_poster_colour varchar(6) DEFAULT '' NOT NULL, @@ -436,7 +436,7 @@ CREATE TABLE phpbb_posts ( enable_magic_url tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, enable_sig tinyint(1) UNSIGNED DEFAULT '1' NOT NULL, post_username varchar(255) DEFAULT '' NOT NULL, - post_subject varchar(100) DEFAULT '' NOT NULL, + post_subject varchar(100) DEFAULT '' NOT NULL COLLATE utf8_unicode_ci, post_text mediumtext NOT NULL, post_checksum varchar(32) DEFAULT '' NOT NULL, post_attachment tinyint(1) UNSIGNED DEFAULT '0' NOT NULL, From 62be0ed93ae02260d96dffa3f0fe82bf0dde6ffd Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Sat, 26 May 2007 12:44:17 +0000 Subject: [PATCH 027/136] #11431 git-svn-id: file:///svn/phpbb/trunk@7684 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 9 +++++---- phpBB/install/install_install.php | 5 ++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 117e3322c2..9f77c8bebb 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -33,8 +33,8 @@ p { font-size: 8pt; } -hr { - height: 0; +hr { + height: 0; border: solid #D1D7DC 0; border-top-width: 1px; } @@ -93,7 +93,7 @@ h3 { } code { - color: #006600; + color: #006600; font-weight: normal; font-family: 'Courier New', monospace; border-color: #D1D7DC; @@ -212,9 +212,10 @@ p a {
  • [Fix] Introduced checks to stop negative postcounts (Bug #11561, #11421)
  • [Fix] Allow IP v4/v6 urls for remote avatars (Bug #11633)
  • [Fix] Delete avatar files automatically (Bug #11631)
  • -
  • [Fix] Automatically add selected columsn to group by statements in the converter (Bug #11465)
  • +
  • [Fix] Automatically add selected columns to group by statements in the converter (Bug #11465)
  • [Fix] Allow posts without subjects to be clicked in the MCP (Bug #11483)
  • [Fix] Sync the forums that shadow topics reside in when the topic that they point to is deleted
  • +
  • [Fix] Do not use the gen_random_string function to create cookie names during install (Bug #11431)
  • diff --git a/phpBB/install/install_install.php b/phpBB/install/install_install.php index ef04a1e3b9..1bf86318c8 100755 --- a/phpBB/install/install_install.php +++ b/phpBB/install/install_install.php @@ -1359,7 +1359,10 @@ class install_install extends module // We set a (semi-)unique cookie name to bypass login issues related to the cookie name. $cookie_name = 'phpbb3_'; - $cookie_name .= strtolower(gen_rand_string(5)); + $rand_str = md5(mt_rand()); + $rand_str = str_replace('0', 'z', base_convert($rand_str, 16, 35)); + $rand_str = substr($rand_str, 0, 5); + $cookie_name .= strtolower($rand_str); $sql_ary[] = 'UPDATE ' . $table_prefix . "config SET config_value = '" . $db->sql_escape($cookie_name) . "' From a69e12e3ab9e549adb7a33faee6c72b080167454 Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Sat, 26 May 2007 14:23:00 +0000 Subject: [PATCH 028/136] - Send stylesheet in style.php even without a valid session id [Bug #11531] - request_var should strictly return the requested number of dimensions - corrected a character mapping in the search indexing character list, people might want to reindex after this change if they use fulltext_native git-svn-id: file:///svn/phpbb/trunk@7685 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 2 + phpBB/includes/functions.php | 25 +- phpBB/includes/functions_privmsgs.php | 2 +- phpBB/includes/utf/data/search_indexer_0.php | 2 +- phpBB/style.php | 335 ++++++++++--------- 5 files changed, 196 insertions(+), 170 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 9f77c8bebb..c21a5e4170 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -216,6 +216,8 @@ p a {
  • [Fix] Allow posts without subjects to be clicked in the MCP (Bug #11483)
  • [Fix] Sync the forums that shadow topics reside in when the topic that they point to is deleted
  • [Fix] Do not use the gen_random_string function to create cookie names during install (Bug #11431)
  • +
  • [Fix] Send stylesheet in style.php even without a valid session id (Bug #11531)
  • +
  • [Fix] request_var should strictly return the requested number of dimensions
  • diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index b4d954c908..8ac603fb11 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -78,6 +78,14 @@ function request_var($var_name, $default, $multibyte = false, $cookie = false) list($key_type, $type) = each($default); $type = gettype($type); $key_type = gettype($key_type); + if ($type == 'array') + { + reset($default); + list($sub_key_type, $sub_type) = each(current($default)); + $sub_type = gettype($sub_type); + $sub_type = ($sub_type == 'array') ? 'NULL' : $sub_type; + $sub_key_type = gettype($sub_key_type); + } } if (is_array($var)) @@ -87,18 +95,25 @@ function request_var($var_name, $default, $multibyte = false, $cookie = false) foreach ($_var as $k => $v) { - if (is_array($v)) + set_var($k, $k, $key_type); + if ($type == 'array' && is_array($v)) { foreach ($v as $_k => $_v) { - set_var($k, $k, $key_type); - set_var($_k, $_k, $key_type); - set_var($var[$k][$_k], $_v, $type, $multibyte); + if (is_array($_v)) + { + $_v = null; + } + set_var($_k, $_k, $sub_key_type); + set_var($var[$k][$_k], $_v, $sub_type, $multibyte); } } else { - set_var($k, $k, $key_type); + if ($type == 'array' || is_array($v)) + { + $v = null; + } set_var($var[$k], $v, $type, $multibyte); } } diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php index 7f2e3e4c12..9ce281ba12 100644 --- a/phpBB/includes/functions_privmsgs.php +++ b/phpBB/includes/functions_privmsgs.php @@ -875,7 +875,7 @@ function update_unread_status($unread, $msg_id, $user_id, $folder_id) */ function handle_mark_actions($user_id, $mark_action) { - global $db, $user, $_POST, $phpbb_root_path, $phpEx; + global $db, $user, $phpbb_root_path, $phpEx; $msg_ids = request_var('marked_msg_id', array(0)); $cur_folder_id = request_var('cur_folder_id', PRIVMSGS_NO_BOX); diff --git a/phpBB/includes/utf/data/search_indexer_0.php b/phpBB/includes/utf/data/search_indexer_0.php index 3bf2f68838..076787e94b 100644 --- a/phpBB/includes/utf/data/search_indexer_0.php +++ b/phpBB/includes/utf/data/search_indexer_0.php @@ -1 +1 @@ -'0',1=>'1',2=>'2',3=>'3',4=>'4',5=>'5',6=>'6',7=>'7',8=>'8',9=>'9','A'=>'a','B'=>'b','C'=>'c','D'=>'d','E'=>'e','F'=>'f','G'=>'g','H'=>'h','I'=>'i','J'=>'j','K'=>'k','L'=>'l','M'=>'m','N'=>'n','O'=>'o','P'=>'p','Q'=>'q','R'=>'r','S'=>'s','T'=>'t','U'=>'u','V'=>'v','W'=>'w','X'=>'x','Y'=>'y','Z'=>'z','a'=>'a','b'=>'b','c'=>'c','d'=>'d','e'=>'e','f'=>'f','g'=>'g','h'=>'h','i'=>'i','j'=>'j','k'=>'k','l'=>'l','m'=>'m','n'=>'n','o'=>'o','p'=>'p','q'=>'q','r'=>'r','s'=>'s','t'=>'t','u'=>'u','v'=>'v','w'=>'w','x'=>'x','y'=>'y','z'=>'z','ª'=>'ª','²'=>'2','³'=>'3','µ'=>'µ','¹'=>'1','º'=>'º','¼'=>'1/4','½'=>'1/2','¾'=>'3/4','À'=>'à','Á'=>'á','Â'=>'â','Ã'=>'ã','Ä'=>'ä','Å'=>'å','Æ'=>'ae','Ç'=>'ç','È'=>'è','É'=>'é','Ê'=>'ê','Ë'=>'ë','Ì'=>'ì','Í'=>'í','Î'=>'î','Ï'=>'ï','Ð'=>'ð','Ñ'=>'ñ','Ò'=>'ò','Ó'=>'ó','Ô'=>'ô','Õ'=>'õ','Ö'=>'oe','Ø'=>'ø','Ù'=>'ù','Ú'=>'ú','Û'=>'û','Ü'=>'ü','Ý'=>'ý','Þ'=>'þ','ß'=>'ss','à'=>'à','á'=>'á','â'=>'â','ã'=>'ã','ä'=>'ä','å'=>'å','æ'=>'ae','ç'=>'ç','è'=>'è','é'=>'é','ê'=>'ê','ë'=>'ë','ì'=>'ì','í'=>'í','î'=>'î','ï'=>'ï','ð'=>'ð','ñ'=>'ñ','ò'=>'ò','ó'=>'ó','ô'=>'ô','õ'=>'õ','ö'=>'oe','ø'=>'ø','ù'=>'ù','ú'=>'ú','û'=>'û','ü'=>'ü','ý'=>'ý','þ'=>'þ','ÿ'=>'ÿ','Ā'=>'ā','ā'=>'ā','Ă'=>'ă','ă'=>'ă','Ą'=>'ą','ą'=>'ą','Ć'=>'ć','ć'=>'ć','Ĉ'=>'ĉ','ĉ'=>'ĉ','Ċ'=>'ċ','ċ'=>'ċ','Č'=>'č','č'=>'č','Ď'=>'ď','ď'=>'ď','Đ'=>'đ','đ'=>'đ','Ē'=>'ē','ē'=>'ē','Ĕ'=>'ĕ','ĕ'=>'ĕ','Ė'=>'ė','ė'=>'ė','Ę'=>'ę','ę'=>'ę','Ě'=>'ě','ě'=>'ě','Ĝ'=>'ĝ','ĝ'=>'ĝ','Ğ'=>'ğ','ğ'=>'ğ','Ġ'=>'ġ','ġ'=>'ġ','Ģ'=>'ģ','ģ'=>'ģ','Ĥ'=>'ĥ','ĥ'=>'ĥ','Ħ'=>'ħ','ħ'=>'ħ','Ĩ'=>'ĩ','ĩ'=>'ĩ','Ī'=>'ī','ī'=>'ī','Ĭ'=>'ĭ','ĭ'=>'ĭ','Į'=>'į','į'=>'į','İ'=>'i','ı'=>'ı','IJ'=>'ij','ij'=>'ij','Ĵ'=>'ĵ','ĵ'=>'ĵ','Ķ'=>'ķ','ķ'=>'ķ','ĸ'=>'ĸ','Ĺ'=>'ĺ','ĺ'=>'ĺ','Ļ'=>'ļ','ļ'=>'ļ','Ľ'=>'ľ','ľ'=>'ľ','Ŀ'=>'ŀ','ŀ'=>'ŀ','Ł'=>'ł','ł'=>'ł','Ń'=>'ń','ń'=>'ń','Ņ'=>'ņ','ņ'=>'ņ','Ň'=>'ň','ň'=>'ň','ʼn'=>'ʼn','Ŋ'=>'ŋ','ŋ'=>'ŋ','Ō'=>'ō','ō'=>'ō','Ŏ'=>'ŏ','ŏ'=>'ŏ','Ő'=>'ő','ő'=>'ő','Œ'=>'oe','œ'=>'oe','Ŕ'=>'ŕ','ŕ'=>'ŕ','Ŗ'=>'ŗ','ŗ'=>'ŗ','Ř'=>'ř','ř'=>'ř','Ś'=>'ś','ś'=>'ś','Ŝ'=>'ŝ','ŝ'=>'ŝ','Ş'=>'ş','ş'=>'ş','Š'=>'š','š'=>'š','Ţ'=>'ţ','ţ'=>'ţ','Ť'=>'ť','ť'=>'ť','Ŧ'=>'ŧ','ŧ'=>'ŧ','Ũ'=>'ũ','ũ'=>'ũ','Ū'=>'ū','ū'=>'ū','Ŭ'=>'ŭ','ŭ'=>'ŭ','Ů'=>'ů','ů'=>'ů','Ű'=>'ű','ű'=>'ű','Ų'=>'ų','ų'=>'ų','Ŵ'=>'ŵ','ŵ'=>'ŵ','Ŷ'=>'ŷ','ŷ'=>'ŷ','Ÿ'=>'ÿ','Ź'=>'ź','ź'=>'ź','Ż'=>'ż','ż'=>'ż','Ž'=>'ž','ž'=>'ž','ſ'=>'ſ','ƀ'=>'ƀ','Ɓ'=>'ɓ','Ƃ'=>'ƃ','ƃ'=>'ƃ','Ƅ'=>'ƅ','ƅ'=>'ƅ','Ɔ'=>'ɔ','Ƈ'=>'ƈ','ƈ'=>'ƈ','Ɖ'=>'ɖ','Ɗ'=>'ɗ','Ƌ'=>'ƌ','ƌ'=>'ƌ','ƍ'=>'ƍ','Ǝ'=>'ǝ','Ə'=>'ə','Ɛ'=>'ɛ','Ƒ'=>'ƒ','ƒ'=>'ƒ','Ɠ'=>'ɠ','Ɣ'=>'ɣ','ƕ'=>'hv','Ɩ'=>'ɩ','Ɨ'=>'ɨ','Ƙ'=>'ƙ','ƙ'=>'ƙ','ƚ'=>'ƚ','ƛ'=>'ƛ','Ɯ'=>'ɯ','Ɲ'=>'ɲ','ƞ'=>'ƞ','Ɵ'=>'ɵ','Ơ'=>'ơ','ơ'=>'ơ','Ƣ'=>'oi','ƣ'=>'oi','Ƥ'=>'ƥ','ƥ'=>'ƥ','Ʀ'=>'yr','Ƨ'=>'ƨ','ƨ'=>'ƨ','Ʃ'=>'ʃ','ƪ'=>'ƪ','ƫ'=>'ƫ','Ƭ'=>'ƭ','ƭ'=>'ƭ','Ʈ'=>'ʈ','Ư'=>'ư','ư'=>'ư','Ʊ'=>'ʊ','Ʋ'=>'ʋ','Ƴ'=>'ƴ','ƴ'=>'ƴ','Ƶ'=>'ƶ','ƶ'=>'ƶ','Ʒ'=>'ʒ','Ƹ'=>'ƹ','ƹ'=>'ƹ','ƺ'=>'ƺ','ƻ'=>'ƻ','Ƽ'=>'ƽ','ƽ'=>'ƽ','ƾ'=>'ƾ','ƿ'=>'ƿ','ǀ'=>'ǀ','ǁ'=>'ǁ','ǂ'=>'ǂ','ǃ'=>'ǃ','DŽ'=>'dž','Dž'=>'dž','dž'=>'dž','LJ'=>'lj','Lj'=>'lj','lj'=>'lj','NJ'=>'nj','Nj'=>'nj','nj'=>'nj','Ǎ'=>'ǎ','ǎ'=>'ǎ','Ǐ'=>'ǐ','ǐ'=>'ǐ','Ǒ'=>'ǒ','ǒ'=>'ǒ','Ǔ'=>'ǔ','ǔ'=>'ǔ','Ǖ'=>'ǖ','ǖ'=>'ǖ','Ǘ'=>'ǘ','ǘ'=>'ǘ','Ǚ'=>'ǚ','ǚ'=>'ǚ','Ǜ'=>'ǜ','ǜ'=>'ǜ','ǝ'=>'ǝ','Ǟ'=>'ǟ','ǟ'=>'ǟ','Ǡ'=>'ǡ','ǡ'=>'ǡ','Ǣ'=>'ǣ','ǣ'=>'ǣ','Ǥ'=>'ǥ','ǥ'=>'ǥ','Ǧ'=>'ǧ','ǧ'=>'ǧ','Ǩ'=>'ǩ','ǩ'=>'ǩ','Ǫ'=>'ǫ','ǫ'=>'ǫ','Ǭ'=>'ǭ','ǭ'=>'ǭ','Ǯ'=>'ǯ','ǯ'=>'ǯ','ǰ'=>'ǰ','DZ'=>'dz','Dz'=>'dz','dz'=>'dz','Ǵ'=>'ǵ','ǵ'=>'ǵ','Ƕ'=>'ƕ','Ƿ'=>'ƿ','Ǹ'=>'ǹ','ǹ'=>'ǹ','Ǻ'=>'ǻ','ǻ'=>'ǻ','Ǽ'=>'ǽ','ǽ'=>'ǽ','Ǿ'=>'ǿ','ǿ'=>'ǿ','Ȁ'=>'ȁ','ȁ'=>'ȁ','Ȃ'=>'ȃ','ȃ'=>'ȃ','Ȅ'=>'ȅ','ȅ'=>'ȅ','Ȇ'=>'ȇ','ȇ'=>'ȇ','Ȉ'=>'ȉ','ȉ'=>'ȉ','Ȋ'=>'ȋ','ȋ'=>'ȋ','Ȍ'=>'ȍ','ȍ'=>'ȍ','Ȏ'=>'ȏ','ȏ'=>'ȏ','Ȑ'=>'ȑ','ȑ'=>'ȑ','Ȓ'=>'ȓ','ȓ'=>'ȓ','Ȕ'=>'ȕ','ȕ'=>'ȕ','Ȗ'=>'ȗ','ȗ'=>'ȗ','Ș'=>'ș','ș'=>'ș','Ț'=>'ț','ț'=>'ț','Ȝ'=>'ȝ','ȝ'=>'ȝ','Ȟ'=>'ȟ','ȟ'=>'ȟ','Ƞ'=>'ƞ','ȡ'=>'ȡ','Ȣ'=>'ou','ȣ'=>'ou','Ȥ'=>'ȥ','ȥ'=>'ȥ','Ȧ'=>'ȧ','ȧ'=>'ȧ','Ȩ'=>'ȩ','ȩ'=>'ȩ','Ȫ'=>'ȫ','ȫ'=>'ȫ','Ȭ'=>'ȭ','ȭ'=>'ȭ','Ȯ'=>'ȯ','ȯ'=>'ȯ','Ȱ'=>'ȱ','ȱ'=>'ȱ','Ȳ'=>'ȳ','ȳ'=>'ȳ','ȴ'=>'ȴ','ȵ'=>'ȵ','ȶ'=>'ȶ','ȷ'=>'ȷ','ȸ'=>'ȸ','ȹ'=>'ȹ','Ⱥ'=>'ⱥ','Ȼ'=>'ȼ','ȼ'=>'ȼ','Ƚ'=>'ƚ','Ⱦ'=>'ⱦ','ȿ'=>'ȿ','ɀ'=>'ɀ','Ɂ'=>'ɂ','ɂ'=>'ɂ','Ƀ'=>'ƀ','Ʉ'=>'ʉ','Ʌ'=>'ʌ','Ɇ'=>'ɇ','ɇ'=>'ɇ','Ɉ'=>'ɉ','ɉ'=>'ɉ','Ɋ'=>'ɋ','ɋ'=>'ɋ','Ɍ'=>'ɍ','ɍ'=>'ɍ','Ɏ'=>'ɏ','ɏ'=>'ɏ','ɐ'=>'ɐ','ɑ'=>'ɑ','ɒ'=>'ɒ','ɓ'=>'ɓ','ɔ'=>'ɔ','ɕ'=>'ɕ','ɖ'=>'ɖ','ɗ'=>'ɗ','ɘ'=>'ɘ','ə'=>'ə','ɚ'=>'ɚ','ɛ'=>'ɛ','ɜ'=>'ɜ','ɝ'=>'ɝ','ɞ'=>'ɞ','ɟ'=>'ɟ','ɠ'=>'ɠ','ɡ'=>'ɡ','ɢ'=>'ɢ','ɣ'=>'ɣ','ɤ'=>'ɤ','ɥ'=>'ɥ','ɦ'=>'ɦ','ɧ'=>'ɧ','ɨ'=>'ɨ','ɩ'=>'ɩ','ɪ'=>'ɪ','ɫ'=>'ɫ','ɬ'=>'ɬ','ɭ'=>'ɭ','ɮ'=>'ɮ','ɯ'=>'ɯ','ɰ'=>'ɰ','ɱ'=>'ɱ','ɲ'=>'ɲ','ɳ'=>'ɳ','ɴ'=>'ɴ','ɵ'=>'ɵ','ɶ'=>'ɶ','ɷ'=>'ɷ','ɸ'=>'ɸ','ɹ'=>'ɹ','ɺ'=>'ɺ','ɻ'=>'ɻ','ɼ'=>'ɼ','ɽ'=>'ɽ','ɾ'=>'ɾ','ɿ'=>'ɿ','ʀ'=>'ʀ','ʁ'=>'ʁ','ʂ'=>'ʂ','ʃ'=>'ʃ','ʄ'=>'ʄ','ʅ'=>'ʅ','ʆ'=>'ʆ','ʇ'=>'ʇ','ʈ'=>'ʈ','ʉ'=>'ʉ','ʊ'=>'ʊ','ʋ'=>'ʋ','ʌ'=>'ʌ','ʍ'=>'ʍ','ʎ'=>'ʎ','ʏ'=>'ʏ','ʐ'=>'ʐ','ʑ'=>'ʑ','ʒ'=>'ʒ','ʓ'=>'ʓ','ʔ'=>'ʔ','ʕ'=>'ʕ','ʖ'=>'ʖ','ʗ'=>'ʗ','ʘ'=>'ʘ','ʙ'=>'ʙ','ʚ'=>'ʚ','ʛ'=>'ʛ','ʜ'=>'ʜ','ʝ'=>'ʝ','ʞ'=>'ʞ','ʟ'=>'ʟ','ʠ'=>'ʠ','ʡ'=>'ʡ','ʢ'=>'ʢ','ʣ'=>'ʣ','ʤ'=>'ʤ','ʥ'=>'ʥ','ʦ'=>'ʦ','ʧ'=>'ʧ','ʨ'=>'ʨ','ʩ'=>'ʩ','ʪ'=>'ʪ','ʫ'=>'ʫ','ʬ'=>'ʬ','ʭ'=>'ʭ','ʮ'=>'ʮ','ʯ'=>'ʯ','ʰ'=>'ʰ','ʱ'=>'ʱ','ʲ'=>'ʲ','ʳ'=>'ʳ','ʴ'=>'ʴ','ʵ'=>'ʵ','ʶ'=>'ʶ','ʷ'=>'ʷ','ʸ'=>'ʸ','ʹ'=>'ʹ','ʺ'=>'ʺ','ʻ'=>'ʻ','ʼ'=>'ʼ','ʽ'=>'ʽ','ʾ'=>'ʾ','ʿ'=>'ʿ','ˀ'=>'ˀ','ˁ'=>'ˁ','ˆ'=>'ˆ','ˇ'=>'ˇ','ˈ'=>'ˈ','ˉ'=>'ˉ','ˊ'=>'ˊ','ˋ'=>'ˋ','ˌ'=>'ˌ','ˍ'=>'ˍ','ˎ'=>'ˎ','ˏ'=>'ˏ','ː'=>'ː','ˑ'=>'ˑ','ˠ'=>'ˠ','ˡ'=>'ˡ','ˢ'=>'ˢ','ˣ'=>'ˣ','ˤ'=>'ˤ','ˮ'=>'ˮ','̀'=>'̀','́'=>'́','̂'=>'̂','̃'=>'̃','̄'=>'̄','̅'=>'̅','̆'=>'̆','̇'=>'̇','̈'=>'̈','̉'=>'̉','̊'=>'̊','̋'=>'̋','̌'=>'̌','̍'=>'̍','̎'=>'̎','̏'=>'̏','̐'=>'̐','̑'=>'̑','̒'=>'̒','̓'=>'̓','̔'=>'̔','̕'=>'̕','̖'=>'̖','̗'=>'̗','̘'=>'̘','̙'=>'̙','̚'=>'̚','̛'=>'̛','̜'=>'̜','̝'=>'̝','̞'=>'̞','̟'=>'̟','̠'=>'̠','̡'=>'̡','̢'=>'̢','̣'=>'̣','̤'=>'̤','̥'=>'̥','̦'=>'̦','̧'=>'̧','̨'=>'̨','̩'=>'̩','̪'=>'̪','̫'=>'̫','̬'=>'̬','̭'=>'̭','̮'=>'̮','̯'=>'̯','̰'=>'̰','̱'=>'̱','̲'=>'̲','̳'=>'̳','̴'=>'̴','̵'=>'̵','̶'=>'̶','̷'=>'̷','̸'=>'̸','̹'=>'̹','̺'=>'̺','̻'=>'̻','̼'=>'̼','̽'=>'̽','̾'=>'̾','̿'=>'̿','̀'=>'̀','́'=>'́','͂'=>'͂','̓'=>'̓','̈́'=>'̈́','ͅ'=>'ͅ','͆'=>'͆','͇'=>'͇','͈'=>'͈','͉'=>'͉','͊'=>'͊','͋'=>'͋','͌'=>'͌','͍'=>'͍','͎'=>'͎','͏'=>'͏','͐'=>'͐','͑'=>'͑','͒'=>'͒','͓'=>'͓','͔'=>'͔','͕'=>'͕','͖'=>'͖','͗'=>'͗','͘'=>'͘','͙'=>'͙','͚'=>'͚','͛'=>'͛','͜'=>'͜','͝'=>'͝','͞'=>'͞','͟'=>'͟','͠'=>'͠','͡'=>'͡','͢'=>'͢','ͣ'=>'ͣ','ͤ'=>'ͤ','ͥ'=>'ͥ','ͦ'=>'ͦ','ͧ'=>'ͧ','ͨ'=>'ͨ','ͩ'=>'ͩ','ͪ'=>'ͪ','ͫ'=>'ͫ','ͬ'=>'ͬ','ͭ'=>'ͭ','ͮ'=>'ͮ','ͯ'=>'ͯ','ͺ'=>'ͺ','ͻ'=>'ͻ','ͼ'=>'ͼ','ͽ'=>'ͽ','Ά'=>'ά','Έ'=>'έ','Ή'=>'ή','Ί'=>'ί','Ό'=>'ό','Ύ'=>'ύ','Ώ'=>'ώ','ΐ'=>'ΐ','Α'=>'α','Β'=>'β','Γ'=>'γ','Δ'=>'δ','Ε'=>'ε','Ζ'=>'ζ','Η'=>'η','Θ'=>'θ','Ι'=>'ι','Κ'=>'κ','Λ'=>'λ','Μ'=>'μ','Ν'=>'ν','Ξ'=>'ξ','Ο'=>'ο','Π'=>'π','Ρ'=>'ρ','Σ'=>'σ','Τ'=>'τ','Υ'=>'υ','Φ'=>'φ','Χ'=>'χ','Ψ'=>'ψ','Ω'=>'ω','Ϊ'=>'ϊ','Ϋ'=>'ϋ','ά'=>'ά','έ'=>'έ','ή'=>'ή','ί'=>'ί','ΰ'=>'ΰ','α'=>'α','β'=>'β','γ'=>'γ','δ'=>'δ','ε'=>'ε','ζ'=>'ζ','η'=>'η','θ'=>'θ','ι'=>'ι','κ'=>'κ','λ'=>'λ','μ'=>'μ','ν'=>'ν','ξ'=>'ξ','ο'=>'ο','π'=>'π','ρ'=>'ρ','ς'=>'ς','σ'=>'σ','τ'=>'τ','υ'=>'υ','φ'=>'φ','χ'=>'χ','ψ'=>'ψ','ω'=>'ω','ϊ'=>'ϊ','ϋ'=>'ϋ','ό'=>'ό','ύ'=>'ύ','ώ'=>'ώ','ϐ'=>'ϐ','ϑ'=>'ϑ','ϒ'=>'ϒ','ϓ'=>'ϓ','ϔ'=>'ϔ','ϕ'=>'ϕ','ϖ'=>'ϖ','ϗ'=>'ϗ','Ϙ'=>'ϙ','ϙ'=>'ϙ','Ϛ'=>'ϛ','ϛ'=>'ϛ','Ϝ'=>'ϝ','ϝ'=>'ϝ','Ϟ'=>'ϟ','ϟ'=>'ϟ','Ϡ'=>'ϡ','ϡ'=>'ϡ','Ϣ'=>'ϣ','ϣ'=>'ϣ','Ϥ'=>'ϥ','ϥ'=>'ϥ','Ϧ'=>'ϧ','ϧ'=>'ϧ','Ϩ'=>'ϩ','ϩ'=>'ϩ','Ϫ'=>'ϫ','ϫ'=>'ϫ','Ϭ'=>'ϭ','ϭ'=>'ϭ','Ϯ'=>'ϯ','ϯ'=>'ϯ','ϰ'=>'ϰ','ϱ'=>'ϱ','ϲ'=>'ϲ','ϳ'=>'ϳ','ϴ'=>'θ','ϵ'=>'ϵ','Ϸ'=>'ϸ','ϸ'=>'ϸ','Ϲ'=>'ϲ','Ϻ'=>'ϻ','ϻ'=>'ϻ','ϼ'=>'ϼ','Ͻ'=>'ͻ','Ͼ'=>'ͼ','Ͽ'=>'ͽ','Ѐ'=>'ѐ','Ё'=>'ё','Ђ'=>'ђ','Ѓ'=>'ѓ','Є'=>'є','Ѕ'=>'ѕ','І'=>'і','Ї'=>'ї','Ј'=>'ј','Љ'=>'љ','Њ'=>'њ','Ћ'=>'ћ','Ќ'=>'ќ','Ѝ'=>'ѝ','Ў'=>'ў','Џ'=>'џ','А'=>'а','Б'=>'б','В'=>'в','Г'=>'г','Д'=>'д','Е'=>'е','Ж'=>'ж','З'=>'з','И'=>'и','Й'=>'й','К'=>'к','Л'=>'л','М'=>'м','Н'=>'н','О'=>'о','П'=>'п','Р'=>'р','С'=>'с','Т'=>'т','У'=>'у','Ф'=>'ф','Х'=>'х','Ц'=>'ц','Ч'=>'ч','Ш'=>'ш','Щ'=>'щ','Ъ'=>'ъ','Ы'=>'ы','Ь'=>'ь','Э'=>'э','Ю'=>'ю','Я'=>'я','а'=>'а','б'=>'б','в'=>'в','г'=>'г','д'=>'д','е'=>'е','ж'=>'ж','з'=>'з','и'=>'и','й'=>'й','к'=>'к','л'=>'л','м'=>'м','н'=>'н','о'=>'о','п'=>'п','р'=>'р','с'=>'с','т'=>'т','у'=>'у','ф'=>'ф','х'=>'х','ц'=>'ц','ч'=>'ч','ш'=>'ш','щ'=>'щ','ъ'=>'ъ','ы'=>'ы','ь'=>'ь','э'=>'э','ю'=>'ю','я'=>'я','ѐ'=>'ѐ','ё'=>'ё','ђ'=>'ђ','ѓ'=>'ѓ','є'=>'є','ѕ'=>'ѕ','і'=>'і','ї'=>'ї','ј'=>'ј','љ'=>'љ','њ'=>'њ','ћ'=>'ћ','ќ'=>'ќ','ѝ'=>'ѝ','ў'=>'ў','џ'=>'џ','Ѡ'=>'ѡ','ѡ'=>'ѡ','Ѣ'=>'ѣ','ѣ'=>'ѣ','Ѥ'=>'ѥ','ѥ'=>'ѥ','Ѧ'=>'ѧ','ѧ'=>'ѧ','Ѩ'=>'ѩ','ѩ'=>'ѩ','Ѫ'=>'ѫ','ѫ'=>'ѫ','Ѭ'=>'ѭ','ѭ'=>'ѭ','Ѯ'=>'ѯ','ѯ'=>'ѯ','Ѱ'=>'ѱ','ѱ'=>'ѱ','Ѳ'=>'ѳ','ѳ'=>'ѳ','Ѵ'=>'ѵ','ѵ'=>'ѵ','Ѷ'=>'ѷ','ѷ'=>'ѷ','Ѹ'=>'ѹ','ѹ'=>'ѹ','Ѻ'=>'ѻ','ѻ'=>'ѻ','Ѽ'=>'ѽ','ѽ'=>'ѽ','Ѿ'=>'ѿ','ѿ'=>'ѿ','Ҁ'=>'ҁ','ҁ'=>'ҁ','҃'=>'҃','҄'=>'҄','҅'=>'҅','҆'=>'҆','҈'=>'҈','҉'=>'҉','Ҋ'=>'ҋ','ҋ'=>'ҋ','Ҍ'=>'ҍ','ҍ'=>'ҍ','Ҏ'=>'ҏ','ҏ'=>'ҏ','Ґ'=>'ґ','ґ'=>'ґ','Ғ'=>'ғ','ғ'=>'ғ','Ҕ'=>'ҕ','ҕ'=>'ҕ','Җ'=>'җ','җ'=>'җ','Ҙ'=>'ҙ','ҙ'=>'ҙ','Қ'=>'қ','қ'=>'қ','Ҝ'=>'ҝ','ҝ'=>'ҝ','Ҟ'=>'ҟ','ҟ'=>'ҟ','Ҡ'=>'ҡ','ҡ'=>'ҡ','Ң'=>'ң','ң'=>'ң','Ҥ'=>'ҥ','ҥ'=>'ҥ','Ҧ'=>'ҧ','ҧ'=>'ҧ','Ҩ'=>'ҩ','ҩ'=>'ҩ','Ҫ'=>'ҫ','ҫ'=>'ҫ','Ҭ'=>'ҭ','ҭ'=>'ҭ','Ү'=>'ү','ү'=>'ү','Ұ'=>'ұ','ұ'=>'ұ','Ҳ'=>'ҳ','ҳ'=>'ҳ','Ҵ'=>'ҵ','ҵ'=>'ҵ','Ҷ'=>'ҷ','ҷ'=>'ҷ','Ҹ'=>'ҹ','ҹ'=>'ҹ','Һ'=>'һ','һ'=>'һ','Ҽ'=>'ҽ','ҽ'=>'ҽ','Ҿ'=>'ҿ','ҿ'=>'ҿ','Ӏ'=>'ӏ','Ӂ'=>'ӂ','ӂ'=>'ӂ','Ӄ'=>'ӄ','ӄ'=>'ӄ','Ӆ'=>'ӆ','ӆ'=>'ӆ','Ӈ'=>'ӈ','ӈ'=>'ӈ','Ӊ'=>'ӊ','ӊ'=>'ӊ','Ӌ'=>'ӌ','ӌ'=>'ӌ','Ӎ'=>'ӎ','ӎ'=>'ӎ','ӏ'=>'ӏ','Ӑ'=>'ӑ','ӑ'=>'ӑ','Ӓ'=>'ӓ','ӓ'=>'ӓ','Ӕ'=>'ӕ','ӕ'=>'ӕ','Ӗ'=>'ӗ','ӗ'=>'ӗ','Ә'=>'ә','ә'=>'ә','Ӛ'=>'ӛ','ӛ'=>'ӛ','Ӝ'=>'ӝ','ӝ'=>'ӝ','Ӟ'=>'ӟ','ӟ'=>'ӟ','Ӡ'=>'ӡ','ӡ'=>'ӡ','Ӣ'=>'ӣ','ӣ'=>'ӣ','Ӥ'=>'ӥ','ӥ'=>'ӥ','Ӧ'=>'ӧ','ӧ'=>'ӧ','Ө'=>'ө','ө'=>'ө','Ӫ'=>'ӫ','ӫ'=>'ӫ','Ӭ'=>'ӭ','ӭ'=>'ӭ','Ӯ'=>'ӯ','ӯ'=>'ӯ','Ӱ'=>'ӱ','ӱ'=>'ӱ','Ӳ'=>'ӳ','ӳ'=>'ӳ','Ӵ'=>'ӵ','ӵ'=>'ӵ','Ӷ'=>'ӷ','ӷ'=>'ӷ','Ӹ'=>'ӹ','ӹ'=>'ӹ','Ӻ'=>'ӻ','ӻ'=>'ӻ','Ӽ'=>'ӽ','ӽ'=>'ӽ','Ӿ'=>'ӿ','ӿ'=>'ӿ','Ԁ'=>'ԁ','ԁ'=>'ԁ','Ԃ'=>'ԃ','ԃ'=>'ԃ','Ԅ'=>'ԅ','ԅ'=>'ԅ','Ԇ'=>'ԇ','ԇ'=>'ԇ','Ԉ'=>'ԉ','ԉ'=>'ԉ','Ԋ'=>'ԋ','ԋ'=>'ԋ','Ԍ'=>'ԍ','ԍ'=>'ԍ','Ԏ'=>'ԏ','ԏ'=>'ԏ','Ԑ'=>'ԑ','ԑ'=>'ԑ','Ԓ'=>'ԓ','ԓ'=>'ԓ','Ա'=>'ա','Բ'=>'բ','Գ'=>'գ','Դ'=>'դ','Ե'=>'ե','Զ'=>'զ','Է'=>'է','Ը'=>'ը','Թ'=>'թ','Ժ'=>'ժ','Ի'=>'ի','Լ'=>'լ','Խ'=>'խ','Ծ'=>'ծ','Կ'=>'կ','Հ'=>'հ','Ձ'=>'ձ','Ղ'=>'ղ','Ճ'=>'ճ','Մ'=>'մ','Յ'=>'յ','Ն'=>'ն','Շ'=>'շ','Ո'=>'ո','Չ'=>'չ','Պ'=>'պ','Ջ'=>'ջ','Ռ'=>'ռ','Ս'=>'ս','Վ'=>'վ','Տ'=>'տ','Ր'=>'ր','Ց'=>'ց','Ւ'=>'ւ','Փ'=>'փ','Ք'=>'ք','Օ'=>'օ','Ֆ'=>'ֆ','ՙ'=>'ՙ','ա'=>'ա','բ'=>'բ','գ'=>'գ','դ'=>'դ','ե'=>'ե','զ'=>'զ','է'=>'է','ը'=>'ը','թ'=>'թ','ժ'=>'ժ','ի'=>'ի','լ'=>'լ','խ'=>'խ','ծ'=>'ծ','կ'=>'կ','հ'=>'հ','ձ'=>'ձ','ղ'=>'ղ','ճ'=>'ճ','մ'=>'մ','յ'=>'յ','ն'=>'ն','շ'=>'շ','ո'=>'ո','չ'=>'չ','պ'=>'պ','ջ'=>'ջ','ռ'=>'ռ','ս'=>'ս','վ'=>'վ','տ'=>'տ','ր'=>'ր','ց'=>'ց','ւ'=>'ւ','փ'=>'փ','ք'=>'ք','օ'=>'օ','ֆ'=>'ֆ','և'=>'և','֑'=>'֑','֒'=>'֒','֓'=>'֓','֔'=>'֔','֕'=>'֕','֖'=>'֖','֗'=>'֗','֘'=>'֘','֙'=>'֙','֚'=>'֚','֛'=>'֛','֜'=>'֜','֝'=>'֝','֞'=>'֞','֟'=>'֟','֠'=>'֠','֡'=>'֡','֢'=>'֢','֣'=>'֣','֤'=>'֤','֥'=>'֥','֦'=>'֦','֧'=>'֧','֨'=>'֨','֩'=>'֩','֪'=>'֪','֫'=>'֫','֬'=>'֬','֭'=>'֭','֮'=>'֮','֯'=>'֯','ְ'=>'ְ','ֱ'=>'ֱ','ֲ'=>'ֲ','ֳ'=>'ֳ','ִ'=>'ִ','ֵ'=>'ֵ','ֶ'=>'ֶ','ַ'=>'ַ','ָ'=>'ָ','ֹ'=>'ֹ','ֺ'=>'ֺ','ֻ'=>'ֻ','ּ'=>'ּ','ֽ'=>'ֽ','ֿ'=>'ֿ','ׁ'=>'ׁ','ׂ'=>'ׂ','ׄ'=>'ׄ','ׅ'=>'ׅ','ׇ'=>'ׇ','א'=>'א','ב'=>'ב','ג'=>'ג','ד'=>'ד','ה'=>'ה','ו'=>'ו','ז'=>'ז','ח'=>'ח','ט'=>'ט','י'=>'י','ך'=>'ך','כ'=>'כ','ל'=>'ל','ם'=>'ם','מ'=>'מ','ן'=>'ן','נ'=>'נ','ס'=>'ס','ע'=>'ע','ף'=>'ף','פ'=>'פ','ץ'=>'ץ','צ'=>'צ','ק'=>'ק','ר'=>'ר','ש'=>'ש','ת'=>'ת','װ'=>'װ','ױ'=>'ױ','ײ'=>'ײ','ؐ'=>'ؐ','ؑ'=>'ؑ','ؒ'=>'ؒ','ؓ'=>'ؓ','ؔ'=>'ؔ','ؕ'=>'ؕ','ء'=>'ء','آ'=>'آ','أ'=>'أ','ؤ'=>'ؤ','إ'=>'إ','ئ'=>'ئ','ا'=>'ا','ب'=>'ب','ة'=>'ة','ت'=>'ت','ث'=>'ث','ج'=>'ج','ح'=>'ح','خ'=>'خ','د'=>'د','ذ'=>'ذ','ر'=>'ر','ز'=>'ز','س'=>'س','ش'=>'ش','ص'=>'ص','ض'=>'ض','ط'=>'ط','ظ'=>'ظ','ع'=>'ع','غ'=>'غ','ـ'=>'ـ','ف'=>'ف','ق'=>'ق','ك'=>'ك','ل'=>'ل','م'=>'م','ن'=>'ن','ه'=>'ه','و'=>'و','ى'=>'ى','ي'=>'ي','ً'=>'ً','ٌ'=>'ٌ','ٍ'=>'ٍ','َ'=>'َ','ُ'=>'ُ','ِ'=>'ِ','ّ'=>'ّ','ْ'=>'ْ','ٓ'=>'ٓ','ٔ'=>'ٔ','ٕ'=>'ٕ','ٖ'=>'ٖ','ٗ'=>'ٗ','٘'=>'٘','ٙ'=>'ٙ','ٚ'=>'ٚ','ٛ'=>'ٛ','ٜ'=>'ٜ','ٝ'=>'ٝ','ٞ'=>'ٞ','٠'=>'0','١'=>'1','٢'=>'2','٣'=>'3','٤'=>'4','٥'=>'5','٦'=>'6','٧'=>'7','٨'=>'8','٩'=>'9','ٮ'=>'ٮ','ٯ'=>'ٯ','ٰ'=>'ٰ','ٱ'=>'ٱ','ٲ'=>'ٲ','ٳ'=>'ٳ','ٴ'=>'ٴ','ٵ'=>'ٵ','ٶ'=>'ٶ','ٷ'=>'ٷ','ٸ'=>'ٸ','ٹ'=>'ٹ','ٺ'=>'ٺ','ٻ'=>'ٻ','ټ'=>'ټ','ٽ'=>'ٽ','پ'=>'پ','ٿ'=>'ٿ','ڀ'=>'ڀ','ځ'=>'ځ','ڂ'=>'ڂ','ڃ'=>'ڃ','ڄ'=>'ڄ','څ'=>'څ','چ'=>'چ','ڇ'=>'ڇ','ڈ'=>'ڈ','ډ'=>'ډ','ڊ'=>'ڊ','ڋ'=>'ڋ','ڌ'=>'ڌ','ڍ'=>'ڍ','ڎ'=>'ڎ','ڏ'=>'ڏ','ڐ'=>'ڐ','ڑ'=>'ڑ','ڒ'=>'ڒ','ړ'=>'ړ','ڔ'=>'ڔ','ڕ'=>'ڕ','ږ'=>'ږ','ڗ'=>'ڗ','ژ'=>'ژ','ڙ'=>'ڙ','ښ'=>'ښ','ڛ'=>'ڛ','ڜ'=>'ڜ','ڝ'=>'ڝ','ڞ'=>'ڞ','ڟ'=>'ڟ','ڠ'=>'ڠ','ڡ'=>'ڡ','ڢ'=>'ڢ','ڣ'=>'ڣ','ڤ'=>'ڤ','ڥ'=>'ڥ','ڦ'=>'ڦ','ڧ'=>'ڧ','ڨ'=>'ڨ','ک'=>'ک','ڪ'=>'ڪ','ګ'=>'ګ','ڬ'=>'ڬ','ڭ'=>'ڭ','ڮ'=>'ڮ','گ'=>'گ','ڰ'=>'ڰ','ڱ'=>'ڱ','ڲ'=>'ڲ','ڳ'=>'ڳ','ڴ'=>'ڴ','ڵ'=>'ڵ','ڶ'=>'ڶ','ڷ'=>'ڷ','ڸ'=>'ڸ','ڹ'=>'ڹ','ں'=>'ں','ڻ'=>'ڻ','ڼ'=>'ڼ','ڽ'=>'ڽ','ھ'=>'ھ','ڿ'=>'ڿ','ۀ'=>'ۀ','ہ'=>'ہ','ۂ'=>'ۂ','ۃ'=>'ۃ','ۄ'=>'ۄ','ۅ'=>'ۅ','ۆ'=>'ۆ','ۇ'=>'ۇ','ۈ'=>'ۈ','ۉ'=>'ۉ','ۊ'=>'ۊ','ۋ'=>'ۋ','ی'=>'ی','ۍ'=>'ۍ','ێ'=>'ێ','ۏ'=>'ۏ','ې'=>'ې','ۑ'=>'ۑ','ے'=>'ے','ۓ'=>'ۓ','ە'=>'ە','ۖ'=>'ۖ','ۗ'=>'ۗ','ۘ'=>'ۘ','ۙ'=>'ۙ','ۚ'=>'ۚ','ۛ'=>'ۛ','ۜ'=>'ۜ','۞'=>'۞','۟'=>'۟','۠'=>'۠','ۡ'=>'ۡ','ۢ'=>'ۢ','ۣ'=>'ۣ','ۤ'=>'ۤ','ۥ'=>'ۥ','ۦ'=>'ۦ','ۧ'=>'ۧ','ۨ'=>'ۨ','۪'=>'۪','۫'=>'۫','۬'=>'۬','ۭ'=>'ۭ','ۮ'=>'ۮ','ۯ'=>'ۯ','۰'=>'0','۱'=>'1','۲'=>'2','۳'=>'3','۴'=>'4','۵'=>'5','۶'=>'6','۷'=>'7','۸'=>'8','۹'=>'9','ۺ'=>'ۺ','ۻ'=>'ۻ','ۼ'=>'ۼ','ۿ'=>'ۿ','ܐ'=>'ܐ','ܑ'=>'ܑ','ܒ'=>'ܒ','ܓ'=>'ܓ','ܔ'=>'ܔ','ܕ'=>'ܕ','ܖ'=>'ܖ','ܗ'=>'ܗ','ܘ'=>'ܘ','ܙ'=>'ܙ','ܚ'=>'ܚ','ܛ'=>'ܛ','ܜ'=>'ܜ','ܝ'=>'ܝ','ܞ'=>'ܞ','ܟ'=>'ܟ','ܠ'=>'ܠ','ܡ'=>'ܡ','ܢ'=>'ܢ','ܣ'=>'ܣ','ܤ'=>'ܤ','ܥ'=>'ܥ','ܦ'=>'ܦ','ܧ'=>'ܧ','ܨ'=>'ܨ','ܩ'=>'ܩ','ܪ'=>'ܪ','ܫ'=>'ܫ','ܬ'=>'ܬ','ܭ'=>'ܭ','ܮ'=>'ܮ','ܯ'=>'ܯ','ܰ'=>'ܰ','ܱ'=>'ܱ','ܲ'=>'ܲ','ܳ'=>'ܳ','ܴ'=>'ܴ','ܵ'=>'ܵ','ܶ'=>'ܶ','ܷ'=>'ܷ','ܸ'=>'ܸ','ܹ'=>'ܹ','ܺ'=>'ܺ','ܻ'=>'ܻ','ܼ'=>'ܼ','ܽ'=>'ܽ','ܾ'=>'ܾ','ܿ'=>'ܿ','݀'=>'݀','݁'=>'݁','݂'=>'݂','݃'=>'݃','݄'=>'݄','݅'=>'݅','݆'=>'݆','݇'=>'݇','݈'=>'݈','݉'=>'݉','݊'=>'݊','ݍ'=>'ݍ','ݎ'=>'ݎ','ݏ'=>'ݏ','ݐ'=>'ݐ','ݑ'=>'ݑ','ݒ'=>'ݒ','ݓ'=>'ݓ','ݔ'=>'ݔ','ݕ'=>'ݕ','ݖ'=>'ݖ','ݗ'=>'ݗ','ݘ'=>'ݘ','ݙ'=>'ݙ','ݚ'=>'ݚ','ݛ'=>'ݛ','ݜ'=>'ݜ','ݝ'=>'ݝ','ݞ'=>'ݞ','ݟ'=>'ݟ','ݠ'=>'ݠ','ݡ'=>'ݡ','ݢ'=>'ݢ','ݣ'=>'ݣ','ݤ'=>'ݤ','ݥ'=>'ݥ','ݦ'=>'ݦ','ݧ'=>'ݧ','ݨ'=>'ݨ','ݩ'=>'ݩ','ݪ'=>'ݪ','ݫ'=>'ݫ','ݬ'=>'ݬ','ݭ'=>'ݭ','ހ'=>'ހ','ށ'=>'ށ','ނ'=>'ނ','ރ'=>'ރ','ބ'=>'ބ','ޅ'=>'ޅ','ކ'=>'ކ','އ'=>'އ','ވ'=>'ވ','މ'=>'މ','ފ'=>'ފ','ދ'=>'ދ','ތ'=>'ތ','ލ'=>'ލ','ގ'=>'ގ','ޏ'=>'ޏ','ސ'=>'ސ','ޑ'=>'ޑ','ޒ'=>'ޒ','ޓ'=>'ޓ','ޔ'=>'ޔ','ޕ'=>'ޕ','ޖ'=>'ޖ','ޗ'=>'ޗ','ޘ'=>'ޘ','ޙ'=>'ޙ','ޚ'=>'ޚ','ޛ'=>'ޛ','ޜ'=>'ޜ','ޝ'=>'ޝ','ޞ'=>'ޞ','ޟ'=>'ޟ','ޠ'=>'ޠ','ޡ'=>'ޡ','ޢ'=>'ޢ','ޣ'=>'ޣ','ޤ'=>'ޤ','ޥ'=>'ޥ','ަ'=>'ަ','ާ'=>'ާ','ި'=>'ި','ީ'=>'ީ','ު'=>'ު','ޫ'=>'ޫ','ެ'=>'ެ','ޭ'=>'ޭ','ޮ'=>'ޮ','ޯ'=>'ޯ','ް'=>'ް','ޱ'=>'ޱ','߀'=>'0','߁'=>'1','߂'=>'2','߃'=>'3','߄'=>'4','߅'=>'5','߆'=>'6','߇'=>'7','߈'=>'8','߉'=>'9','ߊ'=>'ߊ','ߋ'=>'ߋ','ߌ'=>'ߌ','ߍ'=>'ߍ','ߎ'=>'ߎ','ߏ'=>'ߏ','ߐ'=>'ߐ','ߑ'=>'ߑ','ߒ'=>'ߒ','ߓ'=>'ߓ','ߔ'=>'ߔ','ߕ'=>'ߕ','ߖ'=>'ߖ','ߗ'=>'ߗ','ߘ'=>'ߘ','ߙ'=>'ߙ','ߚ'=>'ߚ','ߛ'=>'ߛ','ߜ'=>'ߜ','ߝ'=>'ߝ','ߞ'=>'ߞ','ߟ'=>'ߟ','ߠ'=>'ߠ','ߡ'=>'ߡ','ߢ'=>'ߢ','ߣ'=>'ߣ','ߤ'=>'ߤ','ߥ'=>'ߥ','ߦ'=>'ߦ','ߧ'=>'ߧ','ߨ'=>'ߨ','ߩ'=>'ߩ','ߪ'=>'ߪ','߫'=>'߫','߬'=>'߬','߭'=>'߭','߮'=>'߮','߯'=>'߯','߰'=>'߰','߱'=>'߱','߲'=>'߲','߳'=>'߳','ߴ'=>'ߴ','ߵ'=>'ߵ','ߺ'=>'ߺ'); \ No newline at end of file +'0',1=>'1',2=>'2',3=>'3',4=>'4',5=>'5',6=>'6',7=>'7',8=>'8',9=>'9','A'=>'a','B'=>'b','C'=>'c','D'=>'d','E'=>'e','F'=>'f','G'=>'g','H'=>'h','I'=>'i','J'=>'j','K'=>'k','L'=>'l','M'=>'m','N'=>'n','O'=>'o','P'=>'p','Q'=>'q','R'=>'r','S'=>'s','T'=>'t','U'=>'u','V'=>'v','W'=>'w','X'=>'x','Y'=>'y','Z'=>'z','a'=>'a','b'=>'b','c'=>'c','d'=>'d','e'=>'e','f'=>'f','g'=>'g','h'=>'h','i'=>'i','j'=>'j','k'=>'k','l'=>'l','m'=>'m','n'=>'n','o'=>'o','p'=>'p','q'=>'q','r'=>'r','s'=>'s','t'=>'t','u'=>'u','v'=>'v','w'=>'w','x'=>'x','y'=>'y','z'=>'z','ª'=>'ª','²'=>'2','³'=>'3','µ'=>'µ','¹'=>'1','º'=>'º','¼'=>'1/4','½'=>'1/2','¾'=>'3/4','À'=>'à','Á'=>'á','Â'=>'â','Ã'=>'ã','Ä'=>'ä','Å'=>'å','Æ'=>'ae','Ç'=>'ç','È'=>'è','É'=>'é','Ê'=>'ê','Ë'=>'ë','Ì'=>'ì','Í'=>'í','Î'=>'î','Ï'=>'ï','Ð'=>'ð','Ñ'=>'ñ','Ò'=>'ò','Ó'=>'ó','Ô'=>'ô','Õ'=>'õ','Ö'=>'oe','Ø'=>'ø','Ù'=>'ù','Ú'=>'ú','Û'=>'û','Ü'=>'ü','Ý'=>'ý','Þ'=>'þ','ß'=>'ss','à'=>'à','á'=>'á','â'=>'â','ã'=>'ã','ä'=>'ae','å'=>'å','æ'=>'ae','ç'=>'ç','è'=>'è','é'=>'é','ê'=>'ê','ë'=>'ë','ì'=>'ì','í'=>'í','î'=>'î','ï'=>'ï','ð'=>'ð','ñ'=>'ñ','ò'=>'ò','ó'=>'ó','ô'=>'ô','õ'=>'õ','ö'=>'oe','ø'=>'ø','ù'=>'ù','ú'=>'ú','û'=>'û','ü'=>'ue','ý'=>'ý','þ'=>'þ','ÿ'=>'ÿ','Ā'=>'ā','ā'=>'ā','Ă'=>'ă','ă'=>'ă','Ą'=>'ą','ą'=>'ą','Ć'=>'ć','ć'=>'ć','Ĉ'=>'ĉ','ĉ'=>'ĉ','Ċ'=>'ċ','ċ'=>'ċ','Č'=>'č','č'=>'č','Ď'=>'ď','ď'=>'ď','Đ'=>'đ','đ'=>'đ','Ē'=>'ē','ē'=>'ē','Ĕ'=>'ĕ','ĕ'=>'ĕ','Ė'=>'ė','ė'=>'ė','Ę'=>'ę','ę'=>'ę','Ě'=>'ě','ě'=>'ě','Ĝ'=>'ĝ','ĝ'=>'ĝ','Ğ'=>'ğ','ğ'=>'ğ','Ġ'=>'ġ','ġ'=>'ġ','Ģ'=>'ģ','ģ'=>'ģ','Ĥ'=>'ĥ','ĥ'=>'ĥ','Ħ'=>'ħ','ħ'=>'ħ','Ĩ'=>'ĩ','ĩ'=>'ĩ','Ī'=>'ī','ī'=>'ī','Ĭ'=>'ĭ','ĭ'=>'ĭ','Į'=>'į','į'=>'į','İ'=>'i','ı'=>'ı','IJ'=>'ij','ij'=>'ij','Ĵ'=>'ĵ','ĵ'=>'ĵ','Ķ'=>'ķ','ķ'=>'ķ','ĸ'=>'ĸ','Ĺ'=>'ĺ','ĺ'=>'ĺ','Ļ'=>'ļ','ļ'=>'ļ','Ľ'=>'ľ','ľ'=>'ľ','Ŀ'=>'ŀ','ŀ'=>'ŀ','Ł'=>'ł','ł'=>'ł','Ń'=>'ń','ń'=>'ń','Ņ'=>'ņ','ņ'=>'ņ','Ň'=>'ň','ň'=>'ň','ʼn'=>'ʼn','Ŋ'=>'ŋ','ŋ'=>'ŋ','Ō'=>'ō','ō'=>'ō','Ŏ'=>'ŏ','ŏ'=>'ŏ','Ő'=>'ő','ő'=>'ő','Œ'=>'oe','œ'=>'oe','Ŕ'=>'ŕ','ŕ'=>'ŕ','Ŗ'=>'ŗ','ŗ'=>'ŗ','Ř'=>'ř','ř'=>'ř','Ś'=>'ś','ś'=>'ś','Ŝ'=>'ŝ','ŝ'=>'ŝ','Ş'=>'ş','ş'=>'ş','Š'=>'š','š'=>'š','Ţ'=>'ţ','ţ'=>'ţ','Ť'=>'ť','ť'=>'ť','Ŧ'=>'ŧ','ŧ'=>'ŧ','Ũ'=>'ũ','ũ'=>'ũ','Ū'=>'ū','ū'=>'ū','Ŭ'=>'ŭ','ŭ'=>'ŭ','Ů'=>'ů','ů'=>'ů','Ű'=>'ű','ű'=>'ű','Ų'=>'ų','ų'=>'ų','Ŵ'=>'ŵ','ŵ'=>'ŵ','Ŷ'=>'ŷ','ŷ'=>'ŷ','Ÿ'=>'ÿ','Ź'=>'ź','ź'=>'ź','Ż'=>'ż','ż'=>'ż','Ž'=>'ž','ž'=>'ž','ſ'=>'ſ','ƀ'=>'ƀ','Ɓ'=>'ɓ','Ƃ'=>'ƃ','ƃ'=>'ƃ','Ƅ'=>'ƅ','ƅ'=>'ƅ','Ɔ'=>'ɔ','Ƈ'=>'ƈ','ƈ'=>'ƈ','Ɖ'=>'ɖ','Ɗ'=>'ɗ','Ƌ'=>'ƌ','ƌ'=>'ƌ','ƍ'=>'ƍ','Ǝ'=>'ǝ','Ə'=>'ə','Ɛ'=>'ɛ','Ƒ'=>'ƒ','ƒ'=>'ƒ','Ɠ'=>'ɠ','Ɣ'=>'ɣ','ƕ'=>'hv','Ɩ'=>'ɩ','Ɨ'=>'ɨ','Ƙ'=>'ƙ','ƙ'=>'ƙ','ƚ'=>'ƚ','ƛ'=>'ƛ','Ɯ'=>'ɯ','Ɲ'=>'ɲ','ƞ'=>'ƞ','Ɵ'=>'ɵ','Ơ'=>'ơ','ơ'=>'ơ','Ƣ'=>'oi','ƣ'=>'oi','Ƥ'=>'ƥ','ƥ'=>'ƥ','Ʀ'=>'yr','Ƨ'=>'ƨ','ƨ'=>'ƨ','Ʃ'=>'ʃ','ƪ'=>'ƪ','ƫ'=>'ƫ','Ƭ'=>'ƭ','ƭ'=>'ƭ','Ʈ'=>'ʈ','Ư'=>'ư','ư'=>'ư','Ʊ'=>'ʊ','Ʋ'=>'ʋ','Ƴ'=>'ƴ','ƴ'=>'ƴ','Ƶ'=>'ƶ','ƶ'=>'ƶ','Ʒ'=>'ʒ','Ƹ'=>'ƹ','ƹ'=>'ƹ','ƺ'=>'ƺ','ƻ'=>'ƻ','Ƽ'=>'ƽ','ƽ'=>'ƽ','ƾ'=>'ƾ','ƿ'=>'ƿ','ǀ'=>'ǀ','ǁ'=>'ǁ','ǂ'=>'ǂ','ǃ'=>'ǃ','DŽ'=>'dž','Dž'=>'dž','dž'=>'dž','LJ'=>'lj','Lj'=>'lj','lj'=>'lj','NJ'=>'nj','Nj'=>'nj','nj'=>'nj','Ǎ'=>'ǎ','ǎ'=>'ǎ','Ǐ'=>'ǐ','ǐ'=>'ǐ','Ǒ'=>'ǒ','ǒ'=>'ǒ','Ǔ'=>'ǔ','ǔ'=>'ǔ','Ǖ'=>'ǖ','ǖ'=>'ǖ','Ǘ'=>'ǘ','ǘ'=>'ǘ','Ǚ'=>'ǚ','ǚ'=>'ǚ','Ǜ'=>'ǜ','ǜ'=>'ǜ','ǝ'=>'ǝ','Ǟ'=>'ǟ','ǟ'=>'ǟ','Ǡ'=>'ǡ','ǡ'=>'ǡ','Ǣ'=>'ǣ','ǣ'=>'ǣ','Ǥ'=>'ǥ','ǥ'=>'ǥ','Ǧ'=>'ǧ','ǧ'=>'ǧ','Ǩ'=>'ǩ','ǩ'=>'ǩ','Ǫ'=>'ǫ','ǫ'=>'ǫ','Ǭ'=>'ǭ','ǭ'=>'ǭ','Ǯ'=>'ǯ','ǯ'=>'ǯ','ǰ'=>'ǰ','DZ'=>'dz','Dz'=>'dz','dz'=>'dz','Ǵ'=>'ǵ','ǵ'=>'ǵ','Ƕ'=>'ƕ','Ƿ'=>'ƿ','Ǹ'=>'ǹ','ǹ'=>'ǹ','Ǻ'=>'ǻ','ǻ'=>'ǻ','Ǽ'=>'ǽ','ǽ'=>'ǽ','Ǿ'=>'ǿ','ǿ'=>'ǿ','Ȁ'=>'ȁ','ȁ'=>'ȁ','Ȃ'=>'ȃ','ȃ'=>'ȃ','Ȅ'=>'ȅ','ȅ'=>'ȅ','Ȇ'=>'ȇ','ȇ'=>'ȇ','Ȉ'=>'ȉ','ȉ'=>'ȉ','Ȋ'=>'ȋ','ȋ'=>'ȋ','Ȍ'=>'ȍ','ȍ'=>'ȍ','Ȏ'=>'ȏ','ȏ'=>'ȏ','Ȑ'=>'ȑ','ȑ'=>'ȑ','Ȓ'=>'ȓ','ȓ'=>'ȓ','Ȕ'=>'ȕ','ȕ'=>'ȕ','Ȗ'=>'ȗ','ȗ'=>'ȗ','Ș'=>'ș','ș'=>'ș','Ț'=>'ț','ț'=>'ț','Ȝ'=>'ȝ','ȝ'=>'ȝ','Ȟ'=>'ȟ','ȟ'=>'ȟ','Ƞ'=>'ƞ','ȡ'=>'ȡ','Ȣ'=>'ou','ȣ'=>'ou','Ȥ'=>'ȥ','ȥ'=>'ȥ','Ȧ'=>'ȧ','ȧ'=>'ȧ','Ȩ'=>'ȩ','ȩ'=>'ȩ','Ȫ'=>'ȫ','ȫ'=>'ȫ','Ȭ'=>'ȭ','ȭ'=>'ȭ','Ȯ'=>'ȯ','ȯ'=>'ȯ','Ȱ'=>'ȱ','ȱ'=>'ȱ','Ȳ'=>'ȳ','ȳ'=>'ȳ','ȴ'=>'ȴ','ȵ'=>'ȵ','ȶ'=>'ȶ','ȷ'=>'ȷ','ȸ'=>'ȸ','ȹ'=>'ȹ','Ⱥ'=>'ⱥ','Ȼ'=>'ȼ','ȼ'=>'ȼ','Ƚ'=>'ƚ','Ⱦ'=>'ⱦ','ȿ'=>'ȿ','ɀ'=>'ɀ','Ɂ'=>'ɂ','ɂ'=>'ɂ','Ƀ'=>'ƀ','Ʉ'=>'ʉ','Ʌ'=>'ʌ','Ɇ'=>'ɇ','ɇ'=>'ɇ','Ɉ'=>'ɉ','ɉ'=>'ɉ','Ɋ'=>'ɋ','ɋ'=>'ɋ','Ɍ'=>'ɍ','ɍ'=>'ɍ','Ɏ'=>'ɏ','ɏ'=>'ɏ','ɐ'=>'ɐ','ɑ'=>'ɑ','ɒ'=>'ɒ','ɓ'=>'ɓ','ɔ'=>'ɔ','ɕ'=>'ɕ','ɖ'=>'ɖ','ɗ'=>'ɗ','ɘ'=>'ɘ','ə'=>'ə','ɚ'=>'ɚ','ɛ'=>'ɛ','ɜ'=>'ɜ','ɝ'=>'ɝ','ɞ'=>'ɞ','ɟ'=>'ɟ','ɠ'=>'ɠ','ɡ'=>'ɡ','ɢ'=>'ɢ','ɣ'=>'ɣ','ɤ'=>'ɤ','ɥ'=>'ɥ','ɦ'=>'ɦ','ɧ'=>'ɧ','ɨ'=>'ɨ','ɩ'=>'ɩ','ɪ'=>'ɪ','ɫ'=>'ɫ','ɬ'=>'ɬ','ɭ'=>'ɭ','ɮ'=>'ɮ','ɯ'=>'ɯ','ɰ'=>'ɰ','ɱ'=>'ɱ','ɲ'=>'ɲ','ɳ'=>'ɳ','ɴ'=>'ɴ','ɵ'=>'ɵ','ɶ'=>'ɶ','ɷ'=>'ɷ','ɸ'=>'ɸ','ɹ'=>'ɹ','ɺ'=>'ɺ','ɻ'=>'ɻ','ɼ'=>'ɼ','ɽ'=>'ɽ','ɾ'=>'ɾ','ɿ'=>'ɿ','ʀ'=>'ʀ','ʁ'=>'ʁ','ʂ'=>'ʂ','ʃ'=>'ʃ','ʄ'=>'ʄ','ʅ'=>'ʅ','ʆ'=>'ʆ','ʇ'=>'ʇ','ʈ'=>'ʈ','ʉ'=>'ʉ','ʊ'=>'ʊ','ʋ'=>'ʋ','ʌ'=>'ʌ','ʍ'=>'ʍ','ʎ'=>'ʎ','ʏ'=>'ʏ','ʐ'=>'ʐ','ʑ'=>'ʑ','ʒ'=>'ʒ','ʓ'=>'ʓ','ʔ'=>'ʔ','ʕ'=>'ʕ','ʖ'=>'ʖ','ʗ'=>'ʗ','ʘ'=>'ʘ','ʙ'=>'ʙ','ʚ'=>'ʚ','ʛ'=>'ʛ','ʜ'=>'ʜ','ʝ'=>'ʝ','ʞ'=>'ʞ','ʟ'=>'ʟ','ʠ'=>'ʠ','ʡ'=>'ʡ','ʢ'=>'ʢ','ʣ'=>'ʣ','ʤ'=>'ʤ','ʥ'=>'ʥ','ʦ'=>'ʦ','ʧ'=>'ʧ','ʨ'=>'ʨ','ʩ'=>'ʩ','ʪ'=>'ʪ','ʫ'=>'ʫ','ʬ'=>'ʬ','ʭ'=>'ʭ','ʮ'=>'ʮ','ʯ'=>'ʯ','ʰ'=>'ʰ','ʱ'=>'ʱ','ʲ'=>'ʲ','ʳ'=>'ʳ','ʴ'=>'ʴ','ʵ'=>'ʵ','ʶ'=>'ʶ','ʷ'=>'ʷ','ʸ'=>'ʸ','ʹ'=>'ʹ','ʺ'=>'ʺ','ʻ'=>'ʻ','ʼ'=>'ʼ','ʽ'=>'ʽ','ʾ'=>'ʾ','ʿ'=>'ʿ','ˀ'=>'ˀ','ˁ'=>'ˁ','ˆ'=>'ˆ','ˇ'=>'ˇ','ˈ'=>'ˈ','ˉ'=>'ˉ','ˊ'=>'ˊ','ˋ'=>'ˋ','ˌ'=>'ˌ','ˍ'=>'ˍ','ˎ'=>'ˎ','ˏ'=>'ˏ','ː'=>'ː','ˑ'=>'ˑ','ˠ'=>'ˠ','ˡ'=>'ˡ','ˢ'=>'ˢ','ˣ'=>'ˣ','ˤ'=>'ˤ','ˮ'=>'ˮ','̀'=>'̀','́'=>'́','̂'=>'̂','̃'=>'̃','̄'=>'̄','̅'=>'̅','̆'=>'̆','̇'=>'̇','̈'=>'̈','̉'=>'̉','̊'=>'̊','̋'=>'̋','̌'=>'̌','̍'=>'̍','̎'=>'̎','̏'=>'̏','̐'=>'̐','̑'=>'̑','̒'=>'̒','̓'=>'̓','̔'=>'̔','̕'=>'̕','̖'=>'̖','̗'=>'̗','̘'=>'̘','̙'=>'̙','̚'=>'̚','̛'=>'̛','̜'=>'̜','̝'=>'̝','̞'=>'̞','̟'=>'̟','̠'=>'̠','̡'=>'̡','̢'=>'̢','̣'=>'̣','̤'=>'̤','̥'=>'̥','̦'=>'̦','̧'=>'̧','̨'=>'̨','̩'=>'̩','̪'=>'̪','̫'=>'̫','̬'=>'̬','̭'=>'̭','̮'=>'̮','̯'=>'̯','̰'=>'̰','̱'=>'̱','̲'=>'̲','̳'=>'̳','̴'=>'̴','̵'=>'̵','̶'=>'̶','̷'=>'̷','̸'=>'̸','̹'=>'̹','̺'=>'̺','̻'=>'̻','̼'=>'̼','̽'=>'̽','̾'=>'̾','̿'=>'̿','̀'=>'̀','́'=>'́','͂'=>'͂','̓'=>'̓','̈́'=>'̈́','ͅ'=>'ͅ','͆'=>'͆','͇'=>'͇','͈'=>'͈','͉'=>'͉','͊'=>'͊','͋'=>'͋','͌'=>'͌','͍'=>'͍','͎'=>'͎','͏'=>'͏','͐'=>'͐','͑'=>'͑','͒'=>'͒','͓'=>'͓','͔'=>'͔','͕'=>'͕','͖'=>'͖','͗'=>'͗','͘'=>'͘','͙'=>'͙','͚'=>'͚','͛'=>'͛','͜'=>'͜','͝'=>'͝','͞'=>'͞','͟'=>'͟','͠'=>'͠','͡'=>'͡','͢'=>'͢','ͣ'=>'ͣ','ͤ'=>'ͤ','ͥ'=>'ͥ','ͦ'=>'ͦ','ͧ'=>'ͧ','ͨ'=>'ͨ','ͩ'=>'ͩ','ͪ'=>'ͪ','ͫ'=>'ͫ','ͬ'=>'ͬ','ͭ'=>'ͭ','ͮ'=>'ͮ','ͯ'=>'ͯ','ͺ'=>'ͺ','ͻ'=>'ͻ','ͼ'=>'ͼ','ͽ'=>'ͽ','Ά'=>'ά','Έ'=>'έ','Ή'=>'ή','Ί'=>'ί','Ό'=>'ό','Ύ'=>'ύ','Ώ'=>'ώ','ΐ'=>'ΐ','Α'=>'α','Β'=>'β','Γ'=>'γ','Δ'=>'δ','Ε'=>'ε','Ζ'=>'ζ','Η'=>'η','Θ'=>'θ','Ι'=>'ι','Κ'=>'κ','Λ'=>'λ','Μ'=>'μ','Ν'=>'ν','Ξ'=>'ξ','Ο'=>'ο','Π'=>'π','Ρ'=>'ρ','Σ'=>'σ','Τ'=>'τ','Υ'=>'υ','Φ'=>'φ','Χ'=>'χ','Ψ'=>'ψ','Ω'=>'ω','Ϊ'=>'ϊ','Ϋ'=>'ϋ','ά'=>'ά','έ'=>'έ','ή'=>'ή','ί'=>'ί','ΰ'=>'ΰ','α'=>'α','β'=>'β','γ'=>'γ','δ'=>'δ','ε'=>'ε','ζ'=>'ζ','η'=>'η','θ'=>'θ','ι'=>'ι','κ'=>'κ','λ'=>'λ','μ'=>'μ','ν'=>'ν','ξ'=>'ξ','ο'=>'ο','π'=>'π','ρ'=>'ρ','ς'=>'ς','σ'=>'σ','τ'=>'τ','υ'=>'υ','φ'=>'φ','χ'=>'χ','ψ'=>'ψ','ω'=>'ω','ϊ'=>'ϊ','ϋ'=>'ϋ','ό'=>'ό','ύ'=>'ύ','ώ'=>'ώ','ϐ'=>'ϐ','ϑ'=>'ϑ','ϒ'=>'ϒ','ϓ'=>'ϓ','ϔ'=>'ϔ','ϕ'=>'ϕ','ϖ'=>'ϖ','ϗ'=>'ϗ','Ϙ'=>'ϙ','ϙ'=>'ϙ','Ϛ'=>'ϛ','ϛ'=>'ϛ','Ϝ'=>'ϝ','ϝ'=>'ϝ','Ϟ'=>'ϟ','ϟ'=>'ϟ','Ϡ'=>'ϡ','ϡ'=>'ϡ','Ϣ'=>'ϣ','ϣ'=>'ϣ','Ϥ'=>'ϥ','ϥ'=>'ϥ','Ϧ'=>'ϧ','ϧ'=>'ϧ','Ϩ'=>'ϩ','ϩ'=>'ϩ','Ϫ'=>'ϫ','ϫ'=>'ϫ','Ϭ'=>'ϭ','ϭ'=>'ϭ','Ϯ'=>'ϯ','ϯ'=>'ϯ','ϰ'=>'ϰ','ϱ'=>'ϱ','ϲ'=>'ϲ','ϳ'=>'ϳ','ϴ'=>'θ','ϵ'=>'ϵ','Ϸ'=>'ϸ','ϸ'=>'ϸ','Ϲ'=>'ϲ','Ϻ'=>'ϻ','ϻ'=>'ϻ','ϼ'=>'ϼ','Ͻ'=>'ͻ','Ͼ'=>'ͼ','Ͽ'=>'ͽ','Ѐ'=>'ѐ','Ё'=>'ё','Ђ'=>'ђ','Ѓ'=>'ѓ','Є'=>'є','Ѕ'=>'ѕ','І'=>'і','Ї'=>'ї','Ј'=>'ј','Љ'=>'љ','Њ'=>'њ','Ћ'=>'ћ','Ќ'=>'ќ','Ѝ'=>'ѝ','Ў'=>'ў','Џ'=>'џ','А'=>'а','Б'=>'б','В'=>'в','Г'=>'г','Д'=>'д','Е'=>'е','Ж'=>'ж','З'=>'з','И'=>'и','Й'=>'й','К'=>'к','Л'=>'л','М'=>'м','Н'=>'н','О'=>'о','П'=>'п','Р'=>'р','С'=>'с','Т'=>'т','У'=>'у','Ф'=>'ф','Х'=>'х','Ц'=>'ц','Ч'=>'ч','Ш'=>'ш','Щ'=>'щ','Ъ'=>'ъ','Ы'=>'ы','Ь'=>'ь','Э'=>'э','Ю'=>'ю','Я'=>'я','а'=>'а','б'=>'б','в'=>'в','г'=>'г','д'=>'д','е'=>'е','ж'=>'ж','з'=>'з','и'=>'и','й'=>'й','к'=>'к','л'=>'л','м'=>'м','н'=>'н','о'=>'о','п'=>'п','р'=>'р','с'=>'с','т'=>'т','у'=>'у','ф'=>'ф','х'=>'х','ц'=>'ц','ч'=>'ч','ш'=>'ш','щ'=>'щ','ъ'=>'ъ','ы'=>'ы','ь'=>'ь','э'=>'э','ю'=>'ю','я'=>'я','ѐ'=>'ѐ','ё'=>'ё','ђ'=>'ђ','ѓ'=>'ѓ','є'=>'є','ѕ'=>'ѕ','і'=>'і','ї'=>'ї','ј'=>'ј','љ'=>'љ','њ'=>'њ','ћ'=>'ћ','ќ'=>'ќ','ѝ'=>'ѝ','ў'=>'ў','џ'=>'џ','Ѡ'=>'ѡ','ѡ'=>'ѡ','Ѣ'=>'ѣ','ѣ'=>'ѣ','Ѥ'=>'ѥ','ѥ'=>'ѥ','Ѧ'=>'ѧ','ѧ'=>'ѧ','Ѩ'=>'ѩ','ѩ'=>'ѩ','Ѫ'=>'ѫ','ѫ'=>'ѫ','Ѭ'=>'ѭ','ѭ'=>'ѭ','Ѯ'=>'ѯ','ѯ'=>'ѯ','Ѱ'=>'ѱ','ѱ'=>'ѱ','Ѳ'=>'ѳ','ѳ'=>'ѳ','Ѵ'=>'ѵ','ѵ'=>'ѵ','Ѷ'=>'ѷ','ѷ'=>'ѷ','Ѹ'=>'ѹ','ѹ'=>'ѹ','Ѻ'=>'ѻ','ѻ'=>'ѻ','Ѽ'=>'ѽ','ѽ'=>'ѽ','Ѿ'=>'ѿ','ѿ'=>'ѿ','Ҁ'=>'ҁ','ҁ'=>'ҁ','҃'=>'҃','҄'=>'҄','҅'=>'҅','҆'=>'҆','҈'=>'҈','҉'=>'҉','Ҋ'=>'ҋ','ҋ'=>'ҋ','Ҍ'=>'ҍ','ҍ'=>'ҍ','Ҏ'=>'ҏ','ҏ'=>'ҏ','Ґ'=>'ґ','ґ'=>'ґ','Ғ'=>'ғ','ғ'=>'ғ','Ҕ'=>'ҕ','ҕ'=>'ҕ','Җ'=>'җ','җ'=>'җ','Ҙ'=>'ҙ','ҙ'=>'ҙ','Қ'=>'қ','қ'=>'қ','Ҝ'=>'ҝ','ҝ'=>'ҝ','Ҟ'=>'ҟ','ҟ'=>'ҟ','Ҡ'=>'ҡ','ҡ'=>'ҡ','Ң'=>'ң','ң'=>'ң','Ҥ'=>'ҥ','ҥ'=>'ҥ','Ҧ'=>'ҧ','ҧ'=>'ҧ','Ҩ'=>'ҩ','ҩ'=>'ҩ','Ҫ'=>'ҫ','ҫ'=>'ҫ','Ҭ'=>'ҭ','ҭ'=>'ҭ','Ү'=>'ү','ү'=>'ү','Ұ'=>'ұ','ұ'=>'ұ','Ҳ'=>'ҳ','ҳ'=>'ҳ','Ҵ'=>'ҵ','ҵ'=>'ҵ','Ҷ'=>'ҷ','ҷ'=>'ҷ','Ҹ'=>'ҹ','ҹ'=>'ҹ','Һ'=>'һ','һ'=>'һ','Ҽ'=>'ҽ','ҽ'=>'ҽ','Ҿ'=>'ҿ','ҿ'=>'ҿ','Ӏ'=>'ӏ','Ӂ'=>'ӂ','ӂ'=>'ӂ','Ӄ'=>'ӄ','ӄ'=>'ӄ','Ӆ'=>'ӆ','ӆ'=>'ӆ','Ӈ'=>'ӈ','ӈ'=>'ӈ','Ӊ'=>'ӊ','ӊ'=>'ӊ','Ӌ'=>'ӌ','ӌ'=>'ӌ','Ӎ'=>'ӎ','ӎ'=>'ӎ','ӏ'=>'ӏ','Ӑ'=>'ӑ','ӑ'=>'ӑ','Ӓ'=>'ӓ','ӓ'=>'ӓ','Ӕ'=>'ӕ','ӕ'=>'ӕ','Ӗ'=>'ӗ','ӗ'=>'ӗ','Ә'=>'ә','ә'=>'ә','Ӛ'=>'ӛ','ӛ'=>'ӛ','Ӝ'=>'ӝ','ӝ'=>'ӝ','Ӟ'=>'ӟ','ӟ'=>'ӟ','Ӡ'=>'ӡ','ӡ'=>'ӡ','Ӣ'=>'ӣ','ӣ'=>'ӣ','Ӥ'=>'ӥ','ӥ'=>'ӥ','Ӧ'=>'ӧ','ӧ'=>'ӧ','Ө'=>'ө','ө'=>'ө','Ӫ'=>'ӫ','ӫ'=>'ӫ','Ӭ'=>'ӭ','ӭ'=>'ӭ','Ӯ'=>'ӯ','ӯ'=>'ӯ','Ӱ'=>'ӱ','ӱ'=>'ӱ','Ӳ'=>'ӳ','ӳ'=>'ӳ','Ӵ'=>'ӵ','ӵ'=>'ӵ','Ӷ'=>'ӷ','ӷ'=>'ӷ','Ӹ'=>'ӹ','ӹ'=>'ӹ','Ӻ'=>'ӻ','ӻ'=>'ӻ','Ӽ'=>'ӽ','ӽ'=>'ӽ','Ӿ'=>'ӿ','ӿ'=>'ӿ','Ԁ'=>'ԁ','ԁ'=>'ԁ','Ԃ'=>'ԃ','ԃ'=>'ԃ','Ԅ'=>'ԅ','ԅ'=>'ԅ','Ԇ'=>'ԇ','ԇ'=>'ԇ','Ԉ'=>'ԉ','ԉ'=>'ԉ','Ԋ'=>'ԋ','ԋ'=>'ԋ','Ԍ'=>'ԍ','ԍ'=>'ԍ','Ԏ'=>'ԏ','ԏ'=>'ԏ','Ԑ'=>'ԑ','ԑ'=>'ԑ','Ԓ'=>'ԓ','ԓ'=>'ԓ','Ա'=>'ա','Բ'=>'բ','Գ'=>'գ','Դ'=>'դ','Ե'=>'ե','Զ'=>'զ','Է'=>'է','Ը'=>'ը','Թ'=>'թ','Ժ'=>'ժ','Ի'=>'ի','Լ'=>'լ','Խ'=>'խ','Ծ'=>'ծ','Կ'=>'կ','Հ'=>'հ','Ձ'=>'ձ','Ղ'=>'ղ','Ճ'=>'ճ','Մ'=>'մ','Յ'=>'յ','Ն'=>'ն','Շ'=>'շ','Ո'=>'ո','Չ'=>'չ','Պ'=>'պ','Ջ'=>'ջ','Ռ'=>'ռ','Ս'=>'ս','Վ'=>'վ','Տ'=>'տ','Ր'=>'ր','Ց'=>'ց','Ւ'=>'ւ','Փ'=>'փ','Ք'=>'ք','Օ'=>'օ','Ֆ'=>'ֆ','ՙ'=>'ՙ','ա'=>'ա','բ'=>'բ','գ'=>'գ','դ'=>'դ','ե'=>'ե','զ'=>'զ','է'=>'է','ը'=>'ը','թ'=>'թ','ժ'=>'ժ','ի'=>'ի','լ'=>'լ','խ'=>'խ','ծ'=>'ծ','կ'=>'կ','հ'=>'հ','ձ'=>'ձ','ղ'=>'ղ','ճ'=>'ճ','մ'=>'մ','յ'=>'յ','ն'=>'ն','շ'=>'շ','ո'=>'ո','չ'=>'չ','պ'=>'պ','ջ'=>'ջ','ռ'=>'ռ','ս'=>'ս','վ'=>'վ','տ'=>'տ','ր'=>'ր','ց'=>'ց','ւ'=>'ւ','փ'=>'փ','ք'=>'ք','օ'=>'օ','ֆ'=>'ֆ','և'=>'և','֑'=>'֑','֒'=>'֒','֓'=>'֓','֔'=>'֔','֕'=>'֕','֖'=>'֖','֗'=>'֗','֘'=>'֘','֙'=>'֙','֚'=>'֚','֛'=>'֛','֜'=>'֜','֝'=>'֝','֞'=>'֞','֟'=>'֟','֠'=>'֠','֡'=>'֡','֢'=>'֢','֣'=>'֣','֤'=>'֤','֥'=>'֥','֦'=>'֦','֧'=>'֧','֨'=>'֨','֩'=>'֩','֪'=>'֪','֫'=>'֫','֬'=>'֬','֭'=>'֭','֮'=>'֮','֯'=>'֯','ְ'=>'ְ','ֱ'=>'ֱ','ֲ'=>'ֲ','ֳ'=>'ֳ','ִ'=>'ִ','ֵ'=>'ֵ','ֶ'=>'ֶ','ַ'=>'ַ','ָ'=>'ָ','ֹ'=>'ֹ','ֺ'=>'ֺ','ֻ'=>'ֻ','ּ'=>'ּ','ֽ'=>'ֽ','ֿ'=>'ֿ','ׁ'=>'ׁ','ׂ'=>'ׂ','ׄ'=>'ׄ','ׅ'=>'ׅ','ׇ'=>'ׇ','א'=>'א','ב'=>'ב','ג'=>'ג','ד'=>'ד','ה'=>'ה','ו'=>'ו','ז'=>'ז','ח'=>'ח','ט'=>'ט','י'=>'י','ך'=>'ך','כ'=>'כ','ל'=>'ל','ם'=>'ם','מ'=>'מ','ן'=>'ן','נ'=>'נ','ס'=>'ס','ע'=>'ע','ף'=>'ף','פ'=>'פ','ץ'=>'ץ','צ'=>'צ','ק'=>'ק','ר'=>'ר','ש'=>'ש','ת'=>'ת','װ'=>'װ','ױ'=>'ױ','ײ'=>'ײ','ؐ'=>'ؐ','ؑ'=>'ؑ','ؒ'=>'ؒ','ؓ'=>'ؓ','ؔ'=>'ؔ','ؕ'=>'ؕ','ء'=>'ء','آ'=>'آ','أ'=>'أ','ؤ'=>'ؤ','إ'=>'إ','ئ'=>'ئ','ا'=>'ا','ب'=>'ب','ة'=>'ة','ت'=>'ت','ث'=>'ث','ج'=>'ج','ح'=>'ح','خ'=>'خ','د'=>'د','ذ'=>'ذ','ر'=>'ر','ز'=>'ز','س'=>'س','ش'=>'ش','ص'=>'ص','ض'=>'ض','ط'=>'ط','ظ'=>'ظ','ع'=>'ع','غ'=>'غ','ـ'=>'ـ','ف'=>'ف','ق'=>'ق','ك'=>'ك','ل'=>'ل','م'=>'م','ن'=>'ن','ه'=>'ه','و'=>'و','ى'=>'ى','ي'=>'ي','ً'=>'ً','ٌ'=>'ٌ','ٍ'=>'ٍ','َ'=>'َ','ُ'=>'ُ','ِ'=>'ِ','ّ'=>'ّ','ْ'=>'ْ','ٓ'=>'ٓ','ٔ'=>'ٔ','ٕ'=>'ٕ','ٖ'=>'ٖ','ٗ'=>'ٗ','٘'=>'٘','ٙ'=>'ٙ','ٚ'=>'ٚ','ٛ'=>'ٛ','ٜ'=>'ٜ','ٝ'=>'ٝ','ٞ'=>'ٞ','٠'=>'0','١'=>'1','٢'=>'2','٣'=>'3','٤'=>'4','٥'=>'5','٦'=>'6','٧'=>'7','٨'=>'8','٩'=>'9','ٮ'=>'ٮ','ٯ'=>'ٯ','ٰ'=>'ٰ','ٱ'=>'ٱ','ٲ'=>'ٲ','ٳ'=>'ٳ','ٴ'=>'ٴ','ٵ'=>'ٵ','ٶ'=>'ٶ','ٷ'=>'ٷ','ٸ'=>'ٸ','ٹ'=>'ٹ','ٺ'=>'ٺ','ٻ'=>'ٻ','ټ'=>'ټ','ٽ'=>'ٽ','پ'=>'پ','ٿ'=>'ٿ','ڀ'=>'ڀ','ځ'=>'ځ','ڂ'=>'ڂ','ڃ'=>'ڃ','ڄ'=>'ڄ','څ'=>'څ','چ'=>'چ','ڇ'=>'ڇ','ڈ'=>'ڈ','ډ'=>'ډ','ڊ'=>'ڊ','ڋ'=>'ڋ','ڌ'=>'ڌ','ڍ'=>'ڍ','ڎ'=>'ڎ','ڏ'=>'ڏ','ڐ'=>'ڐ','ڑ'=>'ڑ','ڒ'=>'ڒ','ړ'=>'ړ','ڔ'=>'ڔ','ڕ'=>'ڕ','ږ'=>'ږ','ڗ'=>'ڗ','ژ'=>'ژ','ڙ'=>'ڙ','ښ'=>'ښ','ڛ'=>'ڛ','ڜ'=>'ڜ','ڝ'=>'ڝ','ڞ'=>'ڞ','ڟ'=>'ڟ','ڠ'=>'ڠ','ڡ'=>'ڡ','ڢ'=>'ڢ','ڣ'=>'ڣ','ڤ'=>'ڤ','ڥ'=>'ڥ','ڦ'=>'ڦ','ڧ'=>'ڧ','ڨ'=>'ڨ','ک'=>'ک','ڪ'=>'ڪ','ګ'=>'ګ','ڬ'=>'ڬ','ڭ'=>'ڭ','ڮ'=>'ڮ','گ'=>'گ','ڰ'=>'ڰ','ڱ'=>'ڱ','ڲ'=>'ڲ','ڳ'=>'ڳ','ڴ'=>'ڴ','ڵ'=>'ڵ','ڶ'=>'ڶ','ڷ'=>'ڷ','ڸ'=>'ڸ','ڹ'=>'ڹ','ں'=>'ں','ڻ'=>'ڻ','ڼ'=>'ڼ','ڽ'=>'ڽ','ھ'=>'ھ','ڿ'=>'ڿ','ۀ'=>'ۀ','ہ'=>'ہ','ۂ'=>'ۂ','ۃ'=>'ۃ','ۄ'=>'ۄ','ۅ'=>'ۅ','ۆ'=>'ۆ','ۇ'=>'ۇ','ۈ'=>'ۈ','ۉ'=>'ۉ','ۊ'=>'ۊ','ۋ'=>'ۋ','ی'=>'ی','ۍ'=>'ۍ','ێ'=>'ێ','ۏ'=>'ۏ','ې'=>'ې','ۑ'=>'ۑ','ے'=>'ے','ۓ'=>'ۓ','ە'=>'ە','ۖ'=>'ۖ','ۗ'=>'ۗ','ۘ'=>'ۘ','ۙ'=>'ۙ','ۚ'=>'ۚ','ۛ'=>'ۛ','ۜ'=>'ۜ','۞'=>'۞','۟'=>'۟','۠'=>'۠','ۡ'=>'ۡ','ۢ'=>'ۢ','ۣ'=>'ۣ','ۤ'=>'ۤ','ۥ'=>'ۥ','ۦ'=>'ۦ','ۧ'=>'ۧ','ۨ'=>'ۨ','۪'=>'۪','۫'=>'۫','۬'=>'۬','ۭ'=>'ۭ','ۮ'=>'ۮ','ۯ'=>'ۯ','۰'=>'0','۱'=>'1','۲'=>'2','۳'=>'3','۴'=>'4','۵'=>'5','۶'=>'6','۷'=>'7','۸'=>'8','۹'=>'9','ۺ'=>'ۺ','ۻ'=>'ۻ','ۼ'=>'ۼ','ۿ'=>'ۿ','ܐ'=>'ܐ','ܑ'=>'ܑ','ܒ'=>'ܒ','ܓ'=>'ܓ','ܔ'=>'ܔ','ܕ'=>'ܕ','ܖ'=>'ܖ','ܗ'=>'ܗ','ܘ'=>'ܘ','ܙ'=>'ܙ','ܚ'=>'ܚ','ܛ'=>'ܛ','ܜ'=>'ܜ','ܝ'=>'ܝ','ܞ'=>'ܞ','ܟ'=>'ܟ','ܠ'=>'ܠ','ܡ'=>'ܡ','ܢ'=>'ܢ','ܣ'=>'ܣ','ܤ'=>'ܤ','ܥ'=>'ܥ','ܦ'=>'ܦ','ܧ'=>'ܧ','ܨ'=>'ܨ','ܩ'=>'ܩ','ܪ'=>'ܪ','ܫ'=>'ܫ','ܬ'=>'ܬ','ܭ'=>'ܭ','ܮ'=>'ܮ','ܯ'=>'ܯ','ܰ'=>'ܰ','ܱ'=>'ܱ','ܲ'=>'ܲ','ܳ'=>'ܳ','ܴ'=>'ܴ','ܵ'=>'ܵ','ܶ'=>'ܶ','ܷ'=>'ܷ','ܸ'=>'ܸ','ܹ'=>'ܹ','ܺ'=>'ܺ','ܻ'=>'ܻ','ܼ'=>'ܼ','ܽ'=>'ܽ','ܾ'=>'ܾ','ܿ'=>'ܿ','݀'=>'݀','݁'=>'݁','݂'=>'݂','݃'=>'݃','݄'=>'݄','݅'=>'݅','݆'=>'݆','݇'=>'݇','݈'=>'݈','݉'=>'݉','݊'=>'݊','ݍ'=>'ݍ','ݎ'=>'ݎ','ݏ'=>'ݏ','ݐ'=>'ݐ','ݑ'=>'ݑ','ݒ'=>'ݒ','ݓ'=>'ݓ','ݔ'=>'ݔ','ݕ'=>'ݕ','ݖ'=>'ݖ','ݗ'=>'ݗ','ݘ'=>'ݘ','ݙ'=>'ݙ','ݚ'=>'ݚ','ݛ'=>'ݛ','ݜ'=>'ݜ','ݝ'=>'ݝ','ݞ'=>'ݞ','ݟ'=>'ݟ','ݠ'=>'ݠ','ݡ'=>'ݡ','ݢ'=>'ݢ','ݣ'=>'ݣ','ݤ'=>'ݤ','ݥ'=>'ݥ','ݦ'=>'ݦ','ݧ'=>'ݧ','ݨ'=>'ݨ','ݩ'=>'ݩ','ݪ'=>'ݪ','ݫ'=>'ݫ','ݬ'=>'ݬ','ݭ'=>'ݭ','ހ'=>'ހ','ށ'=>'ށ','ނ'=>'ނ','ރ'=>'ރ','ބ'=>'ބ','ޅ'=>'ޅ','ކ'=>'ކ','އ'=>'އ','ވ'=>'ވ','މ'=>'މ','ފ'=>'ފ','ދ'=>'ދ','ތ'=>'ތ','ލ'=>'ލ','ގ'=>'ގ','ޏ'=>'ޏ','ސ'=>'ސ','ޑ'=>'ޑ','ޒ'=>'ޒ','ޓ'=>'ޓ','ޔ'=>'ޔ','ޕ'=>'ޕ','ޖ'=>'ޖ','ޗ'=>'ޗ','ޘ'=>'ޘ','ޙ'=>'ޙ','ޚ'=>'ޚ','ޛ'=>'ޛ','ޜ'=>'ޜ','ޝ'=>'ޝ','ޞ'=>'ޞ','ޟ'=>'ޟ','ޠ'=>'ޠ','ޡ'=>'ޡ','ޢ'=>'ޢ','ޣ'=>'ޣ','ޤ'=>'ޤ','ޥ'=>'ޥ','ަ'=>'ަ','ާ'=>'ާ','ި'=>'ި','ީ'=>'ީ','ު'=>'ު','ޫ'=>'ޫ','ެ'=>'ެ','ޭ'=>'ޭ','ޮ'=>'ޮ','ޯ'=>'ޯ','ް'=>'ް','ޱ'=>'ޱ','߀'=>'0','߁'=>'1','߂'=>'2','߃'=>'3','߄'=>'4','߅'=>'5','߆'=>'6','߇'=>'7','߈'=>'8','߉'=>'9','ߊ'=>'ߊ','ߋ'=>'ߋ','ߌ'=>'ߌ','ߍ'=>'ߍ','ߎ'=>'ߎ','ߏ'=>'ߏ','ߐ'=>'ߐ','ߑ'=>'ߑ','ߒ'=>'ߒ','ߓ'=>'ߓ','ߔ'=>'ߔ','ߕ'=>'ߕ','ߖ'=>'ߖ','ߗ'=>'ߗ','ߘ'=>'ߘ','ߙ'=>'ߙ','ߚ'=>'ߚ','ߛ'=>'ߛ','ߜ'=>'ߜ','ߝ'=>'ߝ','ߞ'=>'ߞ','ߟ'=>'ߟ','ߠ'=>'ߠ','ߡ'=>'ߡ','ߢ'=>'ߢ','ߣ'=>'ߣ','ߤ'=>'ߤ','ߥ'=>'ߥ','ߦ'=>'ߦ','ߧ'=>'ߧ','ߨ'=>'ߨ','ߩ'=>'ߩ','ߪ'=>'ߪ','߫'=>'߫','߬'=>'߬','߭'=>'߭','߮'=>'߮','߯'=>'߯','߰'=>'߰','߱'=>'߱','߲'=>'߲','߳'=>'߳','ߴ'=>'ߴ','ߵ'=>'ߵ','ߺ'=>'ߺ'); \ No newline at end of file diff --git a/phpBB/style.php b/phpBB/style.php index 9be0d6a0dc..cf9911c9ee 100644 --- a/phpBB/style.php +++ b/phpBB/style.php @@ -70,175 +70,184 @@ if ($id && $sid) unset($dbpasswd); $config = $cache->obtain_config(); + $user = false; - $sql = 'SELECT u.user_id, u.user_lang - FROM ' . SESSIONS_TABLE . ' s, ' . USERS_TABLE . " u - WHERE s.session_id = '" . $db->sql_escape($sid) . "' - AND s.session_user_id = u.user_id"; - $result = $db->sql_query($sql); - $user = $db->sql_fetchrow($result); + if ($sid) + { + $sql = 'SELECT u.user_id, u.user_lang + FROM ' . SESSIONS_TABLE . ' s, ' . USERS_TABLE . " u + WHERE s.session_id = '" . $db->sql_escape($sid) . "' + AND s.session_user_id = u.user_id"; + $result = $db->sql_query($sql); + $user = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + } + + $recompile = $config['load_tplcompile']; + if (!$user) + { + $id = $config['default_style']; + $recompile = false; + $user = array('user_id' => ANONYMOUS); + } + + $sql = 'SELECT s.style_id, c.theme_data, c.theme_path, c.theme_name, c.theme_mtime, i.*, t.template_path + FROM ' . STYLES_TABLE . ' s, ' . STYLES_TEMPLATE_TABLE . ' t, ' . STYLES_THEME_TABLE . ' c, ' . STYLES_IMAGESET_TABLE . ' i + WHERE s.style_id = ' . $id . ' + AND t.template_id = s.template_id + AND c.theme_id = s.theme_id + AND i.imageset_id = s.imageset_id'; + $result = $db->sql_query($sql, 300); + $theme = $db->sql_fetchrow($result); $db->sql_freeresult($result); - if ($user) + if ($user['user_id'] == ANONYMOUS) { - $sql = 'SELECT s.style_id, c.theme_data, c.theme_path, c.theme_name, c.theme_mtime, i.*, t.template_path - FROM ' . STYLES_TABLE . ' s, ' . STYLES_TEMPLATE_TABLE . ' t, ' . STYLES_THEME_TABLE . ' c, ' . STYLES_IMAGESET_TABLE . ' i - WHERE s.style_id = ' . $id . ' - AND t.template_id = s.template_id - AND c.theme_id = s.theme_id - AND i.imageset_id = s.imageset_id'; - $result = $db->sql_query($sql, 300); - $theme = $db->sql_fetchrow($result); - $db->sql_freeresult($result); - - if ($user['user_id'] == ANONYMOUS) - { - $user['user_lang'] = $config['default_lang']; - } - - $user_image_lang = (file_exists($phpbb_root_path . 'styles/' . $theme['imageset_path'] . '/imageset/' . $user['user_lang'])) ? $user['user_lang'] : $config['default_lang']; - - $sql = 'SELECT * - FROM ' . STYLES_IMAGESET_DATA_TABLE . ' - WHERE imageset_id = ' . $theme['imageset_id'] . " - AND image_lang IN('" . $db->sql_escape($user_image_lang) . "', '')"; - $result = $db->sql_query($sql, 3600); - - $img_array = array(); - - while ($row = $db->sql_fetchrow($result)) - { - $img_array[$row['image_name']] = $row; - } - - if (!$theme) - { - exit; - } - - // Re-cache stylesheet data if necessary - if ($config['load_tplcompile'] || empty($theme['theme_data'])) - { - $recache = (empty($theme['theme_data'])) ? true : false; - $update_time = time(); - - // We test for stylesheet.css because it is faster and most likely the only file changed on common themes - if (!$recache && $theme['theme_mtime'] < @filemtime("{$phpbb_root_path}styles/" . $theme['theme_path'] . '/theme/stylesheet.css')) - { - $recache = true; - $update_time = @filemtime("{$phpbb_root_path}styles/" . $theme['theme_path'] . '/theme/stylesheet.css'); - } - else if (!$recache) - { - $last_change = $theme['theme_mtime']; - - foreach (glob("{$phpbb_root_path}styles/{$theme['theme_path']}/theme/*.css", GLOB_NOSORT) as $file) - { - if ($last_change < @filemtime($file)) - { - $recache = true; - break; - } - } - } - - if ($recache) - { - include_once($phpbb_root_path . 'includes/acp/acp_styles.' . $phpEx); - - $theme['theme_data'] = acp_styles::db_theme_data($theme); - $theme['theme_mtime'] = $update_time; - - // Save CSS contents - $sql_ary = array( - 'theme_mtime' => $theme['theme_mtime'], - 'theme_data' => $theme['theme_data'] - ); - - $sql = 'UPDATE ' . STYLES_THEME_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " - WHERE theme_id = $id"; - $db->sql_query($sql); - - $cache->destroy('sql', STYLES_THEME_TABLE); - - header('Expires: 0'); - } - } - else - { - header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); - } - - header('Content-type: text/css'); - - // Parse Theme Data - $replace = array( - '{T_THEME_PATH}' => "{$phpbb_root_path}styles/" . $theme['theme_path'] . '/theme', - '{T_TEMPLATE_PATH}' => "{$phpbb_root_path}styles/" . $theme['template_path'] . '/template', - '{T_IMAGESET_PATH}' => "{$phpbb_root_path}styles/" . $theme['imageset_path'] . '/imageset', - '{T_IMAGESET_LANG_PATH}' => "{$phpbb_root_path}styles/" . $theme['imageset_path'] . '/imageset/' . $user_image_lang, - '{T_STYLESHEET_NAME}' => $theme['theme_name'], - '{S_USER_LANG}' => $user['user_lang'] - ); - - $theme['theme_data'] = str_replace(array_keys($replace), array_values($replace), $theme['theme_data']); - - $matches = array(); - preg_match_all('#\{IMG_([A-Za-z0-9_]*?)_(WIDTH|HEIGHT|SRC)\}#', $theme['theme_data'], $matches); - - $imgs = $find = $replace = array(); - if (isset($matches[0]) && sizeof($matches[0])) - { - foreach ($matches[1] as $i => $img) - { - $img = strtolower($img); - $find[] = $matches[0][$i]; - - if (!isset($img_array[$img])) - { - $replace[] = ''; - continue; - } - - if (!isset($imgs[$img])) - { - $img_data = &$img_array[$img]; - $imgsrc = ($img_data['image_lang'] ? $img_data['image_lang'] . '/' : '') . $img_data['image_filename']; - $imgs[$img] = array( - 'src' => $phpbb_root_path . 'styles/' . $theme['imageset_path'] . '/imageset/' . $imgsrc, - 'width' => $img_data['image_width'], - 'height' => $img_data['image_height'], - ); - } - - switch ($matches[2][$i]) - { - case 'SRC': - $replace[] = $imgs[$img]['src']; - break; - - case 'WIDTH': - $replace[] = $imgs[$img]['width']; - break; - - case 'HEIGHT': - $replace[] = $imgs[$img]['height']; - break; - - default: - continue; - } - } - - if (sizeof($find)) - { - $theme['theme_data'] = str_replace($find, $replace, $theme['theme_data']); - } - } - - echo $theme['theme_data']; + $user['user_lang'] = $config['default_lang']; } + $user_image_lang = (file_exists($phpbb_root_path . 'styles/' . $theme['imageset_path'] . '/imageset/' . $user['user_lang'])) ? $user['user_lang'] : $config['default_lang']; + + $sql = 'SELECT * + FROM ' . STYLES_IMAGESET_DATA_TABLE . ' + WHERE imageset_id = ' . $theme['imageset_id'] . " + AND image_lang IN('" . $db->sql_escape($user_image_lang) . "', '')"; + $result = $db->sql_query($sql, 3600); + + $img_array = array(); + + while ($row = $db->sql_fetchrow($result)) + { + $img_array[$row['image_name']] = $row; + } + + if (!$theme) + { + exit; + } + + // Re-cache stylesheet data if necessary + if ($recompile || empty($theme['theme_data'])) + { + $recache = (empty($theme['theme_data'])) ? true : false; + $update_time = time(); + + // We test for stylesheet.css because it is faster and most likely the only file changed on common themes + if (!$recache && $theme['theme_mtime'] < @filemtime("{$phpbb_root_path}styles/" . $theme['theme_path'] . '/theme/stylesheet.css')) + { + $recache = true; + $update_time = @filemtime("{$phpbb_root_path}styles/" . $theme['theme_path'] . '/theme/stylesheet.css'); + } + else if (!$recache) + { + $last_change = $theme['theme_mtime']; + + foreach (glob("{$phpbb_root_path}styles/{$theme['theme_path']}/theme/*.css", GLOB_NOSORT) as $file) + { + if ($last_change < @filemtime($file)) + { + $recache = true; + break; + } + } + } + + if ($recache) + { + include_once($phpbb_root_path . 'includes/acp/acp_styles.' . $phpEx); + + $theme['theme_data'] = acp_styles::db_theme_data($theme); + $theme['theme_mtime'] = $update_time; + + // Save CSS contents + $sql_ary = array( + 'theme_mtime' => $theme['theme_mtime'], + 'theme_data' => $theme['theme_data'] + ); + + $sql = 'UPDATE ' . STYLES_THEME_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " + WHERE theme_id = $id"; + $db->sql_query($sql); + + $cache->destroy('sql', STYLES_THEME_TABLE); + + header('Expires: 0'); + } + } + else + { + header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); + } + + header('Content-type: text/css'); + + // Parse Theme Data + $replace = array( + '{T_THEME_PATH}' => "{$phpbb_root_path}styles/" . $theme['theme_path'] . '/theme', + '{T_TEMPLATE_PATH}' => "{$phpbb_root_path}styles/" . $theme['template_path'] . '/template', + '{T_IMAGESET_PATH}' => "{$phpbb_root_path}styles/" . $theme['imageset_path'] . '/imageset', + '{T_IMAGESET_LANG_PATH}' => "{$phpbb_root_path}styles/" . $theme['imageset_path'] . '/imageset/' . $user_image_lang, + '{T_STYLESHEET_NAME}' => $theme['theme_name'], + '{S_USER_LANG}' => $user['user_lang'] + ); + + $theme['theme_data'] = str_replace(array_keys($replace), array_values($replace), $theme['theme_data']); + + $matches = array(); + preg_match_all('#\{IMG_([A-Za-z0-9_]*?)_(WIDTH|HEIGHT|SRC)\}#', $theme['theme_data'], $matches); + + $imgs = $find = $replace = array(); + if (isset($matches[0]) && sizeof($matches[0])) + { + foreach ($matches[1] as $i => $img) + { + $img = strtolower($img); + $find[] = $matches[0][$i]; + + if (!isset($img_array[$img])) + { + $replace[] = ''; + continue; + } + + if (!isset($imgs[$img])) + { + $img_data = &$img_array[$img]; + $imgsrc = ($img_data['image_lang'] ? $img_data['image_lang'] . '/' : '') . $img_data['image_filename']; + $imgs[$img] = array( + 'src' => $phpbb_root_path . 'styles/' . $theme['imageset_path'] . '/imageset/' . $imgsrc, + 'width' => $img_data['image_width'], + 'height' => $img_data['image_height'], + ); + } + + switch ($matches[2][$i]) + { + case 'SRC': + $replace[] = $imgs[$img]['src']; + break; + + case 'WIDTH': + $replace[] = $imgs[$img]['width']; + break; + + case 'HEIGHT': + $replace[] = $imgs[$img]['height']; + break; + + default: + continue; + } + } + + if (sizeof($find)) + { + $theme['theme_data'] = str_replace($find, $replace, $theme['theme_data']); + } + } + + echo $theme['theme_data']; + if (!empty($cache)) { $cache->unload(); From fda482ce2921bdaa5c5c61a1e288461701cea6b7 Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Sat, 26 May 2007 15:40:10 +0000 Subject: [PATCH 029/136] - forgot to add characters to cheat list, and also missed 00C5 when manually editing git-svn-id: file:///svn/phpbb/trunk@7686 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/develop/generate_utf_tables.php | 4 ++++ phpBB/includes/utf/data/search_indexer_0.php | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/phpBB/develop/generate_utf_tables.php b/phpBB/develop/generate_utf_tables.php index ce19c2a374..047c61fd66 100644 --- a/phpBB/develop/generate_utf_tables.php +++ b/phpBB/develop/generate_utf_tables.php @@ -378,8 +378,12 @@ fclose($fp); */ $cheats = array( '00DF' => 'ss', # German sharp S + '00C5' => 'ae', # Capital A with diaeresis + '00E4' => 'ae', # Small A with diaeresis '00D6' => 'oe', # Capital O with diaeresis '00F6' => 'oe', # Small O with diaeresis + '00DC' => 'ue', # Capital U with diaeresis + '00FC' => 'ue', # Small U with diaeresis ); /** diff --git a/phpBB/includes/utf/data/search_indexer_0.php b/phpBB/includes/utf/data/search_indexer_0.php index 076787e94b..3304b18cdd 100644 --- a/phpBB/includes/utf/data/search_indexer_0.php +++ b/phpBB/includes/utf/data/search_indexer_0.php @@ -1 +1 @@ -'0',1=>'1',2=>'2',3=>'3',4=>'4',5=>'5',6=>'6',7=>'7',8=>'8',9=>'9','A'=>'a','B'=>'b','C'=>'c','D'=>'d','E'=>'e','F'=>'f','G'=>'g','H'=>'h','I'=>'i','J'=>'j','K'=>'k','L'=>'l','M'=>'m','N'=>'n','O'=>'o','P'=>'p','Q'=>'q','R'=>'r','S'=>'s','T'=>'t','U'=>'u','V'=>'v','W'=>'w','X'=>'x','Y'=>'y','Z'=>'z','a'=>'a','b'=>'b','c'=>'c','d'=>'d','e'=>'e','f'=>'f','g'=>'g','h'=>'h','i'=>'i','j'=>'j','k'=>'k','l'=>'l','m'=>'m','n'=>'n','o'=>'o','p'=>'p','q'=>'q','r'=>'r','s'=>'s','t'=>'t','u'=>'u','v'=>'v','w'=>'w','x'=>'x','y'=>'y','z'=>'z','ª'=>'ª','²'=>'2','³'=>'3','µ'=>'µ','¹'=>'1','º'=>'º','¼'=>'1/4','½'=>'1/2','¾'=>'3/4','À'=>'à','Á'=>'á','Â'=>'â','Ã'=>'ã','Ä'=>'ä','Å'=>'å','Æ'=>'ae','Ç'=>'ç','È'=>'è','É'=>'é','Ê'=>'ê','Ë'=>'ë','Ì'=>'ì','Í'=>'í','Î'=>'î','Ï'=>'ï','Ð'=>'ð','Ñ'=>'ñ','Ò'=>'ò','Ó'=>'ó','Ô'=>'ô','Õ'=>'õ','Ö'=>'oe','Ø'=>'ø','Ù'=>'ù','Ú'=>'ú','Û'=>'û','Ü'=>'ü','Ý'=>'ý','Þ'=>'þ','ß'=>'ss','à'=>'à','á'=>'á','â'=>'â','ã'=>'ã','ä'=>'ae','å'=>'å','æ'=>'ae','ç'=>'ç','è'=>'è','é'=>'é','ê'=>'ê','ë'=>'ë','ì'=>'ì','í'=>'í','î'=>'î','ï'=>'ï','ð'=>'ð','ñ'=>'ñ','ò'=>'ò','ó'=>'ó','ô'=>'ô','õ'=>'õ','ö'=>'oe','ø'=>'ø','ù'=>'ù','ú'=>'ú','û'=>'û','ü'=>'ue','ý'=>'ý','þ'=>'þ','ÿ'=>'ÿ','Ā'=>'ā','ā'=>'ā','Ă'=>'ă','ă'=>'ă','Ą'=>'ą','ą'=>'ą','Ć'=>'ć','ć'=>'ć','Ĉ'=>'ĉ','ĉ'=>'ĉ','Ċ'=>'ċ','ċ'=>'ċ','Č'=>'č','č'=>'č','Ď'=>'ď','ď'=>'ď','Đ'=>'đ','đ'=>'đ','Ē'=>'ē','ē'=>'ē','Ĕ'=>'ĕ','ĕ'=>'ĕ','Ė'=>'ė','ė'=>'ė','Ę'=>'ę','ę'=>'ę','Ě'=>'ě','ě'=>'ě','Ĝ'=>'ĝ','ĝ'=>'ĝ','Ğ'=>'ğ','ğ'=>'ğ','Ġ'=>'ġ','ġ'=>'ġ','Ģ'=>'ģ','ģ'=>'ģ','Ĥ'=>'ĥ','ĥ'=>'ĥ','Ħ'=>'ħ','ħ'=>'ħ','Ĩ'=>'ĩ','ĩ'=>'ĩ','Ī'=>'ī','ī'=>'ī','Ĭ'=>'ĭ','ĭ'=>'ĭ','Į'=>'į','į'=>'į','İ'=>'i','ı'=>'ı','IJ'=>'ij','ij'=>'ij','Ĵ'=>'ĵ','ĵ'=>'ĵ','Ķ'=>'ķ','ķ'=>'ķ','ĸ'=>'ĸ','Ĺ'=>'ĺ','ĺ'=>'ĺ','Ļ'=>'ļ','ļ'=>'ļ','Ľ'=>'ľ','ľ'=>'ľ','Ŀ'=>'ŀ','ŀ'=>'ŀ','Ł'=>'ł','ł'=>'ł','Ń'=>'ń','ń'=>'ń','Ņ'=>'ņ','ņ'=>'ņ','Ň'=>'ň','ň'=>'ň','ʼn'=>'ʼn','Ŋ'=>'ŋ','ŋ'=>'ŋ','Ō'=>'ō','ō'=>'ō','Ŏ'=>'ŏ','ŏ'=>'ŏ','Ő'=>'ő','ő'=>'ő','Œ'=>'oe','œ'=>'oe','Ŕ'=>'ŕ','ŕ'=>'ŕ','Ŗ'=>'ŗ','ŗ'=>'ŗ','Ř'=>'ř','ř'=>'ř','Ś'=>'ś','ś'=>'ś','Ŝ'=>'ŝ','ŝ'=>'ŝ','Ş'=>'ş','ş'=>'ş','Š'=>'š','š'=>'š','Ţ'=>'ţ','ţ'=>'ţ','Ť'=>'ť','ť'=>'ť','Ŧ'=>'ŧ','ŧ'=>'ŧ','Ũ'=>'ũ','ũ'=>'ũ','Ū'=>'ū','ū'=>'ū','Ŭ'=>'ŭ','ŭ'=>'ŭ','Ů'=>'ů','ů'=>'ů','Ű'=>'ű','ű'=>'ű','Ų'=>'ų','ų'=>'ų','Ŵ'=>'ŵ','ŵ'=>'ŵ','Ŷ'=>'ŷ','ŷ'=>'ŷ','Ÿ'=>'ÿ','Ź'=>'ź','ź'=>'ź','Ż'=>'ż','ż'=>'ż','Ž'=>'ž','ž'=>'ž','ſ'=>'ſ','ƀ'=>'ƀ','Ɓ'=>'ɓ','Ƃ'=>'ƃ','ƃ'=>'ƃ','Ƅ'=>'ƅ','ƅ'=>'ƅ','Ɔ'=>'ɔ','Ƈ'=>'ƈ','ƈ'=>'ƈ','Ɖ'=>'ɖ','Ɗ'=>'ɗ','Ƌ'=>'ƌ','ƌ'=>'ƌ','ƍ'=>'ƍ','Ǝ'=>'ǝ','Ə'=>'ə','Ɛ'=>'ɛ','Ƒ'=>'ƒ','ƒ'=>'ƒ','Ɠ'=>'ɠ','Ɣ'=>'ɣ','ƕ'=>'hv','Ɩ'=>'ɩ','Ɨ'=>'ɨ','Ƙ'=>'ƙ','ƙ'=>'ƙ','ƚ'=>'ƚ','ƛ'=>'ƛ','Ɯ'=>'ɯ','Ɲ'=>'ɲ','ƞ'=>'ƞ','Ɵ'=>'ɵ','Ơ'=>'ơ','ơ'=>'ơ','Ƣ'=>'oi','ƣ'=>'oi','Ƥ'=>'ƥ','ƥ'=>'ƥ','Ʀ'=>'yr','Ƨ'=>'ƨ','ƨ'=>'ƨ','Ʃ'=>'ʃ','ƪ'=>'ƪ','ƫ'=>'ƫ','Ƭ'=>'ƭ','ƭ'=>'ƭ','Ʈ'=>'ʈ','Ư'=>'ư','ư'=>'ư','Ʊ'=>'ʊ','Ʋ'=>'ʋ','Ƴ'=>'ƴ','ƴ'=>'ƴ','Ƶ'=>'ƶ','ƶ'=>'ƶ','Ʒ'=>'ʒ','Ƹ'=>'ƹ','ƹ'=>'ƹ','ƺ'=>'ƺ','ƻ'=>'ƻ','Ƽ'=>'ƽ','ƽ'=>'ƽ','ƾ'=>'ƾ','ƿ'=>'ƿ','ǀ'=>'ǀ','ǁ'=>'ǁ','ǂ'=>'ǂ','ǃ'=>'ǃ','DŽ'=>'dž','Dž'=>'dž','dž'=>'dž','LJ'=>'lj','Lj'=>'lj','lj'=>'lj','NJ'=>'nj','Nj'=>'nj','nj'=>'nj','Ǎ'=>'ǎ','ǎ'=>'ǎ','Ǐ'=>'ǐ','ǐ'=>'ǐ','Ǒ'=>'ǒ','ǒ'=>'ǒ','Ǔ'=>'ǔ','ǔ'=>'ǔ','Ǖ'=>'ǖ','ǖ'=>'ǖ','Ǘ'=>'ǘ','ǘ'=>'ǘ','Ǚ'=>'ǚ','ǚ'=>'ǚ','Ǜ'=>'ǜ','ǜ'=>'ǜ','ǝ'=>'ǝ','Ǟ'=>'ǟ','ǟ'=>'ǟ','Ǡ'=>'ǡ','ǡ'=>'ǡ','Ǣ'=>'ǣ','ǣ'=>'ǣ','Ǥ'=>'ǥ','ǥ'=>'ǥ','Ǧ'=>'ǧ','ǧ'=>'ǧ','Ǩ'=>'ǩ','ǩ'=>'ǩ','Ǫ'=>'ǫ','ǫ'=>'ǫ','Ǭ'=>'ǭ','ǭ'=>'ǭ','Ǯ'=>'ǯ','ǯ'=>'ǯ','ǰ'=>'ǰ','DZ'=>'dz','Dz'=>'dz','dz'=>'dz','Ǵ'=>'ǵ','ǵ'=>'ǵ','Ƕ'=>'ƕ','Ƿ'=>'ƿ','Ǹ'=>'ǹ','ǹ'=>'ǹ','Ǻ'=>'ǻ','ǻ'=>'ǻ','Ǽ'=>'ǽ','ǽ'=>'ǽ','Ǿ'=>'ǿ','ǿ'=>'ǿ','Ȁ'=>'ȁ','ȁ'=>'ȁ','Ȃ'=>'ȃ','ȃ'=>'ȃ','Ȅ'=>'ȅ','ȅ'=>'ȅ','Ȇ'=>'ȇ','ȇ'=>'ȇ','Ȉ'=>'ȉ','ȉ'=>'ȉ','Ȋ'=>'ȋ','ȋ'=>'ȋ','Ȍ'=>'ȍ','ȍ'=>'ȍ','Ȏ'=>'ȏ','ȏ'=>'ȏ','Ȑ'=>'ȑ','ȑ'=>'ȑ','Ȓ'=>'ȓ','ȓ'=>'ȓ','Ȕ'=>'ȕ','ȕ'=>'ȕ','Ȗ'=>'ȗ','ȗ'=>'ȗ','Ș'=>'ș','ș'=>'ș','Ț'=>'ț','ț'=>'ț','Ȝ'=>'ȝ','ȝ'=>'ȝ','Ȟ'=>'ȟ','ȟ'=>'ȟ','Ƞ'=>'ƞ','ȡ'=>'ȡ','Ȣ'=>'ou','ȣ'=>'ou','Ȥ'=>'ȥ','ȥ'=>'ȥ','Ȧ'=>'ȧ','ȧ'=>'ȧ','Ȩ'=>'ȩ','ȩ'=>'ȩ','Ȫ'=>'ȫ','ȫ'=>'ȫ','Ȭ'=>'ȭ','ȭ'=>'ȭ','Ȯ'=>'ȯ','ȯ'=>'ȯ','Ȱ'=>'ȱ','ȱ'=>'ȱ','Ȳ'=>'ȳ','ȳ'=>'ȳ','ȴ'=>'ȴ','ȵ'=>'ȵ','ȶ'=>'ȶ','ȷ'=>'ȷ','ȸ'=>'ȸ','ȹ'=>'ȹ','Ⱥ'=>'ⱥ','Ȼ'=>'ȼ','ȼ'=>'ȼ','Ƚ'=>'ƚ','Ⱦ'=>'ⱦ','ȿ'=>'ȿ','ɀ'=>'ɀ','Ɂ'=>'ɂ','ɂ'=>'ɂ','Ƀ'=>'ƀ','Ʉ'=>'ʉ','Ʌ'=>'ʌ','Ɇ'=>'ɇ','ɇ'=>'ɇ','Ɉ'=>'ɉ','ɉ'=>'ɉ','Ɋ'=>'ɋ','ɋ'=>'ɋ','Ɍ'=>'ɍ','ɍ'=>'ɍ','Ɏ'=>'ɏ','ɏ'=>'ɏ','ɐ'=>'ɐ','ɑ'=>'ɑ','ɒ'=>'ɒ','ɓ'=>'ɓ','ɔ'=>'ɔ','ɕ'=>'ɕ','ɖ'=>'ɖ','ɗ'=>'ɗ','ɘ'=>'ɘ','ə'=>'ə','ɚ'=>'ɚ','ɛ'=>'ɛ','ɜ'=>'ɜ','ɝ'=>'ɝ','ɞ'=>'ɞ','ɟ'=>'ɟ','ɠ'=>'ɠ','ɡ'=>'ɡ','ɢ'=>'ɢ','ɣ'=>'ɣ','ɤ'=>'ɤ','ɥ'=>'ɥ','ɦ'=>'ɦ','ɧ'=>'ɧ','ɨ'=>'ɨ','ɩ'=>'ɩ','ɪ'=>'ɪ','ɫ'=>'ɫ','ɬ'=>'ɬ','ɭ'=>'ɭ','ɮ'=>'ɮ','ɯ'=>'ɯ','ɰ'=>'ɰ','ɱ'=>'ɱ','ɲ'=>'ɲ','ɳ'=>'ɳ','ɴ'=>'ɴ','ɵ'=>'ɵ','ɶ'=>'ɶ','ɷ'=>'ɷ','ɸ'=>'ɸ','ɹ'=>'ɹ','ɺ'=>'ɺ','ɻ'=>'ɻ','ɼ'=>'ɼ','ɽ'=>'ɽ','ɾ'=>'ɾ','ɿ'=>'ɿ','ʀ'=>'ʀ','ʁ'=>'ʁ','ʂ'=>'ʂ','ʃ'=>'ʃ','ʄ'=>'ʄ','ʅ'=>'ʅ','ʆ'=>'ʆ','ʇ'=>'ʇ','ʈ'=>'ʈ','ʉ'=>'ʉ','ʊ'=>'ʊ','ʋ'=>'ʋ','ʌ'=>'ʌ','ʍ'=>'ʍ','ʎ'=>'ʎ','ʏ'=>'ʏ','ʐ'=>'ʐ','ʑ'=>'ʑ','ʒ'=>'ʒ','ʓ'=>'ʓ','ʔ'=>'ʔ','ʕ'=>'ʕ','ʖ'=>'ʖ','ʗ'=>'ʗ','ʘ'=>'ʘ','ʙ'=>'ʙ','ʚ'=>'ʚ','ʛ'=>'ʛ','ʜ'=>'ʜ','ʝ'=>'ʝ','ʞ'=>'ʞ','ʟ'=>'ʟ','ʠ'=>'ʠ','ʡ'=>'ʡ','ʢ'=>'ʢ','ʣ'=>'ʣ','ʤ'=>'ʤ','ʥ'=>'ʥ','ʦ'=>'ʦ','ʧ'=>'ʧ','ʨ'=>'ʨ','ʩ'=>'ʩ','ʪ'=>'ʪ','ʫ'=>'ʫ','ʬ'=>'ʬ','ʭ'=>'ʭ','ʮ'=>'ʮ','ʯ'=>'ʯ','ʰ'=>'ʰ','ʱ'=>'ʱ','ʲ'=>'ʲ','ʳ'=>'ʳ','ʴ'=>'ʴ','ʵ'=>'ʵ','ʶ'=>'ʶ','ʷ'=>'ʷ','ʸ'=>'ʸ','ʹ'=>'ʹ','ʺ'=>'ʺ','ʻ'=>'ʻ','ʼ'=>'ʼ','ʽ'=>'ʽ','ʾ'=>'ʾ','ʿ'=>'ʿ','ˀ'=>'ˀ','ˁ'=>'ˁ','ˆ'=>'ˆ','ˇ'=>'ˇ','ˈ'=>'ˈ','ˉ'=>'ˉ','ˊ'=>'ˊ','ˋ'=>'ˋ','ˌ'=>'ˌ','ˍ'=>'ˍ','ˎ'=>'ˎ','ˏ'=>'ˏ','ː'=>'ː','ˑ'=>'ˑ','ˠ'=>'ˠ','ˡ'=>'ˡ','ˢ'=>'ˢ','ˣ'=>'ˣ','ˤ'=>'ˤ','ˮ'=>'ˮ','̀'=>'̀','́'=>'́','̂'=>'̂','̃'=>'̃','̄'=>'̄','̅'=>'̅','̆'=>'̆','̇'=>'̇','̈'=>'̈','̉'=>'̉','̊'=>'̊','̋'=>'̋','̌'=>'̌','̍'=>'̍','̎'=>'̎','̏'=>'̏','̐'=>'̐','̑'=>'̑','̒'=>'̒','̓'=>'̓','̔'=>'̔','̕'=>'̕','̖'=>'̖','̗'=>'̗','̘'=>'̘','̙'=>'̙','̚'=>'̚','̛'=>'̛','̜'=>'̜','̝'=>'̝','̞'=>'̞','̟'=>'̟','̠'=>'̠','̡'=>'̡','̢'=>'̢','̣'=>'̣','̤'=>'̤','̥'=>'̥','̦'=>'̦','̧'=>'̧','̨'=>'̨','̩'=>'̩','̪'=>'̪','̫'=>'̫','̬'=>'̬','̭'=>'̭','̮'=>'̮','̯'=>'̯','̰'=>'̰','̱'=>'̱','̲'=>'̲','̳'=>'̳','̴'=>'̴','̵'=>'̵','̶'=>'̶','̷'=>'̷','̸'=>'̸','̹'=>'̹','̺'=>'̺','̻'=>'̻','̼'=>'̼','̽'=>'̽','̾'=>'̾','̿'=>'̿','̀'=>'̀','́'=>'́','͂'=>'͂','̓'=>'̓','̈́'=>'̈́','ͅ'=>'ͅ','͆'=>'͆','͇'=>'͇','͈'=>'͈','͉'=>'͉','͊'=>'͊','͋'=>'͋','͌'=>'͌','͍'=>'͍','͎'=>'͎','͏'=>'͏','͐'=>'͐','͑'=>'͑','͒'=>'͒','͓'=>'͓','͔'=>'͔','͕'=>'͕','͖'=>'͖','͗'=>'͗','͘'=>'͘','͙'=>'͙','͚'=>'͚','͛'=>'͛','͜'=>'͜','͝'=>'͝','͞'=>'͞','͟'=>'͟','͠'=>'͠','͡'=>'͡','͢'=>'͢','ͣ'=>'ͣ','ͤ'=>'ͤ','ͥ'=>'ͥ','ͦ'=>'ͦ','ͧ'=>'ͧ','ͨ'=>'ͨ','ͩ'=>'ͩ','ͪ'=>'ͪ','ͫ'=>'ͫ','ͬ'=>'ͬ','ͭ'=>'ͭ','ͮ'=>'ͮ','ͯ'=>'ͯ','ͺ'=>'ͺ','ͻ'=>'ͻ','ͼ'=>'ͼ','ͽ'=>'ͽ','Ά'=>'ά','Έ'=>'έ','Ή'=>'ή','Ί'=>'ί','Ό'=>'ό','Ύ'=>'ύ','Ώ'=>'ώ','ΐ'=>'ΐ','Α'=>'α','Β'=>'β','Γ'=>'γ','Δ'=>'δ','Ε'=>'ε','Ζ'=>'ζ','Η'=>'η','Θ'=>'θ','Ι'=>'ι','Κ'=>'κ','Λ'=>'λ','Μ'=>'μ','Ν'=>'ν','Ξ'=>'ξ','Ο'=>'ο','Π'=>'π','Ρ'=>'ρ','Σ'=>'σ','Τ'=>'τ','Υ'=>'υ','Φ'=>'φ','Χ'=>'χ','Ψ'=>'ψ','Ω'=>'ω','Ϊ'=>'ϊ','Ϋ'=>'ϋ','ά'=>'ά','έ'=>'έ','ή'=>'ή','ί'=>'ί','ΰ'=>'ΰ','α'=>'α','β'=>'β','γ'=>'γ','δ'=>'δ','ε'=>'ε','ζ'=>'ζ','η'=>'η','θ'=>'θ','ι'=>'ι','κ'=>'κ','λ'=>'λ','μ'=>'μ','ν'=>'ν','ξ'=>'ξ','ο'=>'ο','π'=>'π','ρ'=>'ρ','ς'=>'ς','σ'=>'σ','τ'=>'τ','υ'=>'υ','φ'=>'φ','χ'=>'χ','ψ'=>'ψ','ω'=>'ω','ϊ'=>'ϊ','ϋ'=>'ϋ','ό'=>'ό','ύ'=>'ύ','ώ'=>'ώ','ϐ'=>'ϐ','ϑ'=>'ϑ','ϒ'=>'ϒ','ϓ'=>'ϓ','ϔ'=>'ϔ','ϕ'=>'ϕ','ϖ'=>'ϖ','ϗ'=>'ϗ','Ϙ'=>'ϙ','ϙ'=>'ϙ','Ϛ'=>'ϛ','ϛ'=>'ϛ','Ϝ'=>'ϝ','ϝ'=>'ϝ','Ϟ'=>'ϟ','ϟ'=>'ϟ','Ϡ'=>'ϡ','ϡ'=>'ϡ','Ϣ'=>'ϣ','ϣ'=>'ϣ','Ϥ'=>'ϥ','ϥ'=>'ϥ','Ϧ'=>'ϧ','ϧ'=>'ϧ','Ϩ'=>'ϩ','ϩ'=>'ϩ','Ϫ'=>'ϫ','ϫ'=>'ϫ','Ϭ'=>'ϭ','ϭ'=>'ϭ','Ϯ'=>'ϯ','ϯ'=>'ϯ','ϰ'=>'ϰ','ϱ'=>'ϱ','ϲ'=>'ϲ','ϳ'=>'ϳ','ϴ'=>'θ','ϵ'=>'ϵ','Ϸ'=>'ϸ','ϸ'=>'ϸ','Ϲ'=>'ϲ','Ϻ'=>'ϻ','ϻ'=>'ϻ','ϼ'=>'ϼ','Ͻ'=>'ͻ','Ͼ'=>'ͼ','Ͽ'=>'ͽ','Ѐ'=>'ѐ','Ё'=>'ё','Ђ'=>'ђ','Ѓ'=>'ѓ','Є'=>'є','Ѕ'=>'ѕ','І'=>'і','Ї'=>'ї','Ј'=>'ј','Љ'=>'љ','Њ'=>'њ','Ћ'=>'ћ','Ќ'=>'ќ','Ѝ'=>'ѝ','Ў'=>'ў','Џ'=>'џ','А'=>'а','Б'=>'б','В'=>'в','Г'=>'г','Д'=>'д','Е'=>'е','Ж'=>'ж','З'=>'з','И'=>'и','Й'=>'й','К'=>'к','Л'=>'л','М'=>'м','Н'=>'н','О'=>'о','П'=>'п','Р'=>'р','С'=>'с','Т'=>'т','У'=>'у','Ф'=>'ф','Х'=>'х','Ц'=>'ц','Ч'=>'ч','Ш'=>'ш','Щ'=>'щ','Ъ'=>'ъ','Ы'=>'ы','Ь'=>'ь','Э'=>'э','Ю'=>'ю','Я'=>'я','а'=>'а','б'=>'б','в'=>'в','г'=>'г','д'=>'д','е'=>'е','ж'=>'ж','з'=>'з','и'=>'и','й'=>'й','к'=>'к','л'=>'л','м'=>'м','н'=>'н','о'=>'о','п'=>'п','р'=>'р','с'=>'с','т'=>'т','у'=>'у','ф'=>'ф','х'=>'х','ц'=>'ц','ч'=>'ч','ш'=>'ш','щ'=>'щ','ъ'=>'ъ','ы'=>'ы','ь'=>'ь','э'=>'э','ю'=>'ю','я'=>'я','ѐ'=>'ѐ','ё'=>'ё','ђ'=>'ђ','ѓ'=>'ѓ','є'=>'є','ѕ'=>'ѕ','і'=>'і','ї'=>'ї','ј'=>'ј','љ'=>'љ','њ'=>'њ','ћ'=>'ћ','ќ'=>'ќ','ѝ'=>'ѝ','ў'=>'ў','џ'=>'џ','Ѡ'=>'ѡ','ѡ'=>'ѡ','Ѣ'=>'ѣ','ѣ'=>'ѣ','Ѥ'=>'ѥ','ѥ'=>'ѥ','Ѧ'=>'ѧ','ѧ'=>'ѧ','Ѩ'=>'ѩ','ѩ'=>'ѩ','Ѫ'=>'ѫ','ѫ'=>'ѫ','Ѭ'=>'ѭ','ѭ'=>'ѭ','Ѯ'=>'ѯ','ѯ'=>'ѯ','Ѱ'=>'ѱ','ѱ'=>'ѱ','Ѳ'=>'ѳ','ѳ'=>'ѳ','Ѵ'=>'ѵ','ѵ'=>'ѵ','Ѷ'=>'ѷ','ѷ'=>'ѷ','Ѹ'=>'ѹ','ѹ'=>'ѹ','Ѻ'=>'ѻ','ѻ'=>'ѻ','Ѽ'=>'ѽ','ѽ'=>'ѽ','Ѿ'=>'ѿ','ѿ'=>'ѿ','Ҁ'=>'ҁ','ҁ'=>'ҁ','҃'=>'҃','҄'=>'҄','҅'=>'҅','҆'=>'҆','҈'=>'҈','҉'=>'҉','Ҋ'=>'ҋ','ҋ'=>'ҋ','Ҍ'=>'ҍ','ҍ'=>'ҍ','Ҏ'=>'ҏ','ҏ'=>'ҏ','Ґ'=>'ґ','ґ'=>'ґ','Ғ'=>'ғ','ғ'=>'ғ','Ҕ'=>'ҕ','ҕ'=>'ҕ','Җ'=>'җ','җ'=>'җ','Ҙ'=>'ҙ','ҙ'=>'ҙ','Қ'=>'қ','қ'=>'қ','Ҝ'=>'ҝ','ҝ'=>'ҝ','Ҟ'=>'ҟ','ҟ'=>'ҟ','Ҡ'=>'ҡ','ҡ'=>'ҡ','Ң'=>'ң','ң'=>'ң','Ҥ'=>'ҥ','ҥ'=>'ҥ','Ҧ'=>'ҧ','ҧ'=>'ҧ','Ҩ'=>'ҩ','ҩ'=>'ҩ','Ҫ'=>'ҫ','ҫ'=>'ҫ','Ҭ'=>'ҭ','ҭ'=>'ҭ','Ү'=>'ү','ү'=>'ү','Ұ'=>'ұ','ұ'=>'ұ','Ҳ'=>'ҳ','ҳ'=>'ҳ','Ҵ'=>'ҵ','ҵ'=>'ҵ','Ҷ'=>'ҷ','ҷ'=>'ҷ','Ҹ'=>'ҹ','ҹ'=>'ҹ','Һ'=>'һ','һ'=>'һ','Ҽ'=>'ҽ','ҽ'=>'ҽ','Ҿ'=>'ҿ','ҿ'=>'ҿ','Ӏ'=>'ӏ','Ӂ'=>'ӂ','ӂ'=>'ӂ','Ӄ'=>'ӄ','ӄ'=>'ӄ','Ӆ'=>'ӆ','ӆ'=>'ӆ','Ӈ'=>'ӈ','ӈ'=>'ӈ','Ӊ'=>'ӊ','ӊ'=>'ӊ','Ӌ'=>'ӌ','ӌ'=>'ӌ','Ӎ'=>'ӎ','ӎ'=>'ӎ','ӏ'=>'ӏ','Ӑ'=>'ӑ','ӑ'=>'ӑ','Ӓ'=>'ӓ','ӓ'=>'ӓ','Ӕ'=>'ӕ','ӕ'=>'ӕ','Ӗ'=>'ӗ','ӗ'=>'ӗ','Ә'=>'ә','ә'=>'ә','Ӛ'=>'ӛ','ӛ'=>'ӛ','Ӝ'=>'ӝ','ӝ'=>'ӝ','Ӟ'=>'ӟ','ӟ'=>'ӟ','Ӡ'=>'ӡ','ӡ'=>'ӡ','Ӣ'=>'ӣ','ӣ'=>'ӣ','Ӥ'=>'ӥ','ӥ'=>'ӥ','Ӧ'=>'ӧ','ӧ'=>'ӧ','Ө'=>'ө','ө'=>'ө','Ӫ'=>'ӫ','ӫ'=>'ӫ','Ӭ'=>'ӭ','ӭ'=>'ӭ','Ӯ'=>'ӯ','ӯ'=>'ӯ','Ӱ'=>'ӱ','ӱ'=>'ӱ','Ӳ'=>'ӳ','ӳ'=>'ӳ','Ӵ'=>'ӵ','ӵ'=>'ӵ','Ӷ'=>'ӷ','ӷ'=>'ӷ','Ӹ'=>'ӹ','ӹ'=>'ӹ','Ӻ'=>'ӻ','ӻ'=>'ӻ','Ӽ'=>'ӽ','ӽ'=>'ӽ','Ӿ'=>'ӿ','ӿ'=>'ӿ','Ԁ'=>'ԁ','ԁ'=>'ԁ','Ԃ'=>'ԃ','ԃ'=>'ԃ','Ԅ'=>'ԅ','ԅ'=>'ԅ','Ԇ'=>'ԇ','ԇ'=>'ԇ','Ԉ'=>'ԉ','ԉ'=>'ԉ','Ԋ'=>'ԋ','ԋ'=>'ԋ','Ԍ'=>'ԍ','ԍ'=>'ԍ','Ԏ'=>'ԏ','ԏ'=>'ԏ','Ԑ'=>'ԑ','ԑ'=>'ԑ','Ԓ'=>'ԓ','ԓ'=>'ԓ','Ա'=>'ա','Բ'=>'բ','Գ'=>'գ','Դ'=>'դ','Ե'=>'ե','Զ'=>'զ','Է'=>'է','Ը'=>'ը','Թ'=>'թ','Ժ'=>'ժ','Ի'=>'ի','Լ'=>'լ','Խ'=>'խ','Ծ'=>'ծ','Կ'=>'կ','Հ'=>'հ','Ձ'=>'ձ','Ղ'=>'ղ','Ճ'=>'ճ','Մ'=>'մ','Յ'=>'յ','Ն'=>'ն','Շ'=>'շ','Ո'=>'ո','Չ'=>'չ','Պ'=>'պ','Ջ'=>'ջ','Ռ'=>'ռ','Ս'=>'ս','Վ'=>'վ','Տ'=>'տ','Ր'=>'ր','Ց'=>'ց','Ւ'=>'ւ','Փ'=>'փ','Ք'=>'ք','Օ'=>'օ','Ֆ'=>'ֆ','ՙ'=>'ՙ','ա'=>'ա','բ'=>'բ','գ'=>'գ','դ'=>'դ','ե'=>'ե','զ'=>'զ','է'=>'է','ը'=>'ը','թ'=>'թ','ժ'=>'ժ','ի'=>'ի','լ'=>'լ','խ'=>'խ','ծ'=>'ծ','կ'=>'կ','հ'=>'հ','ձ'=>'ձ','ղ'=>'ղ','ճ'=>'ճ','մ'=>'մ','յ'=>'յ','ն'=>'ն','շ'=>'շ','ո'=>'ո','չ'=>'չ','պ'=>'պ','ջ'=>'ջ','ռ'=>'ռ','ս'=>'ս','վ'=>'վ','տ'=>'տ','ր'=>'ր','ց'=>'ց','ւ'=>'ւ','փ'=>'փ','ք'=>'ք','օ'=>'օ','ֆ'=>'ֆ','և'=>'և','֑'=>'֑','֒'=>'֒','֓'=>'֓','֔'=>'֔','֕'=>'֕','֖'=>'֖','֗'=>'֗','֘'=>'֘','֙'=>'֙','֚'=>'֚','֛'=>'֛','֜'=>'֜','֝'=>'֝','֞'=>'֞','֟'=>'֟','֠'=>'֠','֡'=>'֡','֢'=>'֢','֣'=>'֣','֤'=>'֤','֥'=>'֥','֦'=>'֦','֧'=>'֧','֨'=>'֨','֩'=>'֩','֪'=>'֪','֫'=>'֫','֬'=>'֬','֭'=>'֭','֮'=>'֮','֯'=>'֯','ְ'=>'ְ','ֱ'=>'ֱ','ֲ'=>'ֲ','ֳ'=>'ֳ','ִ'=>'ִ','ֵ'=>'ֵ','ֶ'=>'ֶ','ַ'=>'ַ','ָ'=>'ָ','ֹ'=>'ֹ','ֺ'=>'ֺ','ֻ'=>'ֻ','ּ'=>'ּ','ֽ'=>'ֽ','ֿ'=>'ֿ','ׁ'=>'ׁ','ׂ'=>'ׂ','ׄ'=>'ׄ','ׅ'=>'ׅ','ׇ'=>'ׇ','א'=>'א','ב'=>'ב','ג'=>'ג','ד'=>'ד','ה'=>'ה','ו'=>'ו','ז'=>'ז','ח'=>'ח','ט'=>'ט','י'=>'י','ך'=>'ך','כ'=>'כ','ל'=>'ל','ם'=>'ם','מ'=>'מ','ן'=>'ן','נ'=>'נ','ס'=>'ס','ע'=>'ע','ף'=>'ף','פ'=>'פ','ץ'=>'ץ','צ'=>'צ','ק'=>'ק','ר'=>'ר','ש'=>'ש','ת'=>'ת','װ'=>'װ','ױ'=>'ױ','ײ'=>'ײ','ؐ'=>'ؐ','ؑ'=>'ؑ','ؒ'=>'ؒ','ؓ'=>'ؓ','ؔ'=>'ؔ','ؕ'=>'ؕ','ء'=>'ء','آ'=>'آ','أ'=>'أ','ؤ'=>'ؤ','إ'=>'إ','ئ'=>'ئ','ا'=>'ا','ب'=>'ب','ة'=>'ة','ت'=>'ت','ث'=>'ث','ج'=>'ج','ح'=>'ح','خ'=>'خ','د'=>'د','ذ'=>'ذ','ر'=>'ر','ز'=>'ز','س'=>'س','ش'=>'ش','ص'=>'ص','ض'=>'ض','ط'=>'ط','ظ'=>'ظ','ع'=>'ع','غ'=>'غ','ـ'=>'ـ','ف'=>'ف','ق'=>'ق','ك'=>'ك','ل'=>'ل','م'=>'م','ن'=>'ن','ه'=>'ه','و'=>'و','ى'=>'ى','ي'=>'ي','ً'=>'ً','ٌ'=>'ٌ','ٍ'=>'ٍ','َ'=>'َ','ُ'=>'ُ','ِ'=>'ِ','ّ'=>'ّ','ْ'=>'ْ','ٓ'=>'ٓ','ٔ'=>'ٔ','ٕ'=>'ٕ','ٖ'=>'ٖ','ٗ'=>'ٗ','٘'=>'٘','ٙ'=>'ٙ','ٚ'=>'ٚ','ٛ'=>'ٛ','ٜ'=>'ٜ','ٝ'=>'ٝ','ٞ'=>'ٞ','٠'=>'0','١'=>'1','٢'=>'2','٣'=>'3','٤'=>'4','٥'=>'5','٦'=>'6','٧'=>'7','٨'=>'8','٩'=>'9','ٮ'=>'ٮ','ٯ'=>'ٯ','ٰ'=>'ٰ','ٱ'=>'ٱ','ٲ'=>'ٲ','ٳ'=>'ٳ','ٴ'=>'ٴ','ٵ'=>'ٵ','ٶ'=>'ٶ','ٷ'=>'ٷ','ٸ'=>'ٸ','ٹ'=>'ٹ','ٺ'=>'ٺ','ٻ'=>'ٻ','ټ'=>'ټ','ٽ'=>'ٽ','پ'=>'پ','ٿ'=>'ٿ','ڀ'=>'ڀ','ځ'=>'ځ','ڂ'=>'ڂ','ڃ'=>'ڃ','ڄ'=>'ڄ','څ'=>'څ','چ'=>'چ','ڇ'=>'ڇ','ڈ'=>'ڈ','ډ'=>'ډ','ڊ'=>'ڊ','ڋ'=>'ڋ','ڌ'=>'ڌ','ڍ'=>'ڍ','ڎ'=>'ڎ','ڏ'=>'ڏ','ڐ'=>'ڐ','ڑ'=>'ڑ','ڒ'=>'ڒ','ړ'=>'ړ','ڔ'=>'ڔ','ڕ'=>'ڕ','ږ'=>'ږ','ڗ'=>'ڗ','ژ'=>'ژ','ڙ'=>'ڙ','ښ'=>'ښ','ڛ'=>'ڛ','ڜ'=>'ڜ','ڝ'=>'ڝ','ڞ'=>'ڞ','ڟ'=>'ڟ','ڠ'=>'ڠ','ڡ'=>'ڡ','ڢ'=>'ڢ','ڣ'=>'ڣ','ڤ'=>'ڤ','ڥ'=>'ڥ','ڦ'=>'ڦ','ڧ'=>'ڧ','ڨ'=>'ڨ','ک'=>'ک','ڪ'=>'ڪ','ګ'=>'ګ','ڬ'=>'ڬ','ڭ'=>'ڭ','ڮ'=>'ڮ','گ'=>'گ','ڰ'=>'ڰ','ڱ'=>'ڱ','ڲ'=>'ڲ','ڳ'=>'ڳ','ڴ'=>'ڴ','ڵ'=>'ڵ','ڶ'=>'ڶ','ڷ'=>'ڷ','ڸ'=>'ڸ','ڹ'=>'ڹ','ں'=>'ں','ڻ'=>'ڻ','ڼ'=>'ڼ','ڽ'=>'ڽ','ھ'=>'ھ','ڿ'=>'ڿ','ۀ'=>'ۀ','ہ'=>'ہ','ۂ'=>'ۂ','ۃ'=>'ۃ','ۄ'=>'ۄ','ۅ'=>'ۅ','ۆ'=>'ۆ','ۇ'=>'ۇ','ۈ'=>'ۈ','ۉ'=>'ۉ','ۊ'=>'ۊ','ۋ'=>'ۋ','ی'=>'ی','ۍ'=>'ۍ','ێ'=>'ێ','ۏ'=>'ۏ','ې'=>'ې','ۑ'=>'ۑ','ے'=>'ے','ۓ'=>'ۓ','ە'=>'ە','ۖ'=>'ۖ','ۗ'=>'ۗ','ۘ'=>'ۘ','ۙ'=>'ۙ','ۚ'=>'ۚ','ۛ'=>'ۛ','ۜ'=>'ۜ','۞'=>'۞','۟'=>'۟','۠'=>'۠','ۡ'=>'ۡ','ۢ'=>'ۢ','ۣ'=>'ۣ','ۤ'=>'ۤ','ۥ'=>'ۥ','ۦ'=>'ۦ','ۧ'=>'ۧ','ۨ'=>'ۨ','۪'=>'۪','۫'=>'۫','۬'=>'۬','ۭ'=>'ۭ','ۮ'=>'ۮ','ۯ'=>'ۯ','۰'=>'0','۱'=>'1','۲'=>'2','۳'=>'3','۴'=>'4','۵'=>'5','۶'=>'6','۷'=>'7','۸'=>'8','۹'=>'9','ۺ'=>'ۺ','ۻ'=>'ۻ','ۼ'=>'ۼ','ۿ'=>'ۿ','ܐ'=>'ܐ','ܑ'=>'ܑ','ܒ'=>'ܒ','ܓ'=>'ܓ','ܔ'=>'ܔ','ܕ'=>'ܕ','ܖ'=>'ܖ','ܗ'=>'ܗ','ܘ'=>'ܘ','ܙ'=>'ܙ','ܚ'=>'ܚ','ܛ'=>'ܛ','ܜ'=>'ܜ','ܝ'=>'ܝ','ܞ'=>'ܞ','ܟ'=>'ܟ','ܠ'=>'ܠ','ܡ'=>'ܡ','ܢ'=>'ܢ','ܣ'=>'ܣ','ܤ'=>'ܤ','ܥ'=>'ܥ','ܦ'=>'ܦ','ܧ'=>'ܧ','ܨ'=>'ܨ','ܩ'=>'ܩ','ܪ'=>'ܪ','ܫ'=>'ܫ','ܬ'=>'ܬ','ܭ'=>'ܭ','ܮ'=>'ܮ','ܯ'=>'ܯ','ܰ'=>'ܰ','ܱ'=>'ܱ','ܲ'=>'ܲ','ܳ'=>'ܳ','ܴ'=>'ܴ','ܵ'=>'ܵ','ܶ'=>'ܶ','ܷ'=>'ܷ','ܸ'=>'ܸ','ܹ'=>'ܹ','ܺ'=>'ܺ','ܻ'=>'ܻ','ܼ'=>'ܼ','ܽ'=>'ܽ','ܾ'=>'ܾ','ܿ'=>'ܿ','݀'=>'݀','݁'=>'݁','݂'=>'݂','݃'=>'݃','݄'=>'݄','݅'=>'݅','݆'=>'݆','݇'=>'݇','݈'=>'݈','݉'=>'݉','݊'=>'݊','ݍ'=>'ݍ','ݎ'=>'ݎ','ݏ'=>'ݏ','ݐ'=>'ݐ','ݑ'=>'ݑ','ݒ'=>'ݒ','ݓ'=>'ݓ','ݔ'=>'ݔ','ݕ'=>'ݕ','ݖ'=>'ݖ','ݗ'=>'ݗ','ݘ'=>'ݘ','ݙ'=>'ݙ','ݚ'=>'ݚ','ݛ'=>'ݛ','ݜ'=>'ݜ','ݝ'=>'ݝ','ݞ'=>'ݞ','ݟ'=>'ݟ','ݠ'=>'ݠ','ݡ'=>'ݡ','ݢ'=>'ݢ','ݣ'=>'ݣ','ݤ'=>'ݤ','ݥ'=>'ݥ','ݦ'=>'ݦ','ݧ'=>'ݧ','ݨ'=>'ݨ','ݩ'=>'ݩ','ݪ'=>'ݪ','ݫ'=>'ݫ','ݬ'=>'ݬ','ݭ'=>'ݭ','ހ'=>'ހ','ށ'=>'ށ','ނ'=>'ނ','ރ'=>'ރ','ބ'=>'ބ','ޅ'=>'ޅ','ކ'=>'ކ','އ'=>'އ','ވ'=>'ވ','މ'=>'މ','ފ'=>'ފ','ދ'=>'ދ','ތ'=>'ތ','ލ'=>'ލ','ގ'=>'ގ','ޏ'=>'ޏ','ސ'=>'ސ','ޑ'=>'ޑ','ޒ'=>'ޒ','ޓ'=>'ޓ','ޔ'=>'ޔ','ޕ'=>'ޕ','ޖ'=>'ޖ','ޗ'=>'ޗ','ޘ'=>'ޘ','ޙ'=>'ޙ','ޚ'=>'ޚ','ޛ'=>'ޛ','ޜ'=>'ޜ','ޝ'=>'ޝ','ޞ'=>'ޞ','ޟ'=>'ޟ','ޠ'=>'ޠ','ޡ'=>'ޡ','ޢ'=>'ޢ','ޣ'=>'ޣ','ޤ'=>'ޤ','ޥ'=>'ޥ','ަ'=>'ަ','ާ'=>'ާ','ި'=>'ި','ީ'=>'ީ','ު'=>'ު','ޫ'=>'ޫ','ެ'=>'ެ','ޭ'=>'ޭ','ޮ'=>'ޮ','ޯ'=>'ޯ','ް'=>'ް','ޱ'=>'ޱ','߀'=>'0','߁'=>'1','߂'=>'2','߃'=>'3','߄'=>'4','߅'=>'5','߆'=>'6','߇'=>'7','߈'=>'8','߉'=>'9','ߊ'=>'ߊ','ߋ'=>'ߋ','ߌ'=>'ߌ','ߍ'=>'ߍ','ߎ'=>'ߎ','ߏ'=>'ߏ','ߐ'=>'ߐ','ߑ'=>'ߑ','ߒ'=>'ߒ','ߓ'=>'ߓ','ߔ'=>'ߔ','ߕ'=>'ߕ','ߖ'=>'ߖ','ߗ'=>'ߗ','ߘ'=>'ߘ','ߙ'=>'ߙ','ߚ'=>'ߚ','ߛ'=>'ߛ','ߜ'=>'ߜ','ߝ'=>'ߝ','ߞ'=>'ߞ','ߟ'=>'ߟ','ߠ'=>'ߠ','ߡ'=>'ߡ','ߢ'=>'ߢ','ߣ'=>'ߣ','ߤ'=>'ߤ','ߥ'=>'ߥ','ߦ'=>'ߦ','ߧ'=>'ߧ','ߨ'=>'ߨ','ߩ'=>'ߩ','ߪ'=>'ߪ','߫'=>'߫','߬'=>'߬','߭'=>'߭','߮'=>'߮','߯'=>'߯','߰'=>'߰','߱'=>'߱','߲'=>'߲','߳'=>'߳','ߴ'=>'ߴ','ߵ'=>'ߵ','ߺ'=>'ߺ'); \ No newline at end of file +'0',1=>'1',2=>'2',3=>'3',4=>'4',5=>'5',6=>'6',7=>'7',8=>'8',9=>'9','A'=>'a','B'=>'b','C'=>'c','D'=>'d','E'=>'e','F'=>'f','G'=>'g','H'=>'h','I'=>'i','J'=>'j','K'=>'k','L'=>'l','M'=>'m','N'=>'n','O'=>'o','P'=>'p','Q'=>'q','R'=>'r','S'=>'s','T'=>'t','U'=>'u','V'=>'v','W'=>'w','X'=>'x','Y'=>'y','Z'=>'z','a'=>'a','b'=>'b','c'=>'c','d'=>'d','e'=>'e','f'=>'f','g'=>'g','h'=>'h','i'=>'i','j'=>'j','k'=>'k','l'=>'l','m'=>'m','n'=>'n','o'=>'o','p'=>'p','q'=>'q','r'=>'r','s'=>'s','t'=>'t','u'=>'u','v'=>'v','w'=>'w','x'=>'x','y'=>'y','z'=>'z','ª'=>'ª','²'=>'2','³'=>'3','µ'=>'µ','¹'=>'1','º'=>'º','¼'=>'1/4','½'=>'1/2','¾'=>'3/4','À'=>'à','Á'=>'á','Â'=>'â','Ã'=>'ã','Ä'=>'ae','Å'=>'å','Æ'=>'ae','Ç'=>'ç','È'=>'è','É'=>'é','Ê'=>'ê','Ë'=>'ë','Ì'=>'ì','Í'=>'í','Î'=>'î','Ï'=>'ï','Ð'=>'ð','Ñ'=>'ñ','Ò'=>'ò','Ó'=>'ó','Ô'=>'ô','Õ'=>'õ','Ö'=>'oe','Ø'=>'ø','Ù'=>'ù','Ú'=>'ú','Û'=>'û','Ü'=>'ü','Ý'=>'ý','Þ'=>'þ','ß'=>'ss','à'=>'à','á'=>'á','â'=>'â','ã'=>'ã','ä'=>'ae','å'=>'å','æ'=>'ae','ç'=>'ç','è'=>'è','é'=>'é','ê'=>'ê','ë'=>'ë','ì'=>'ì','í'=>'í','î'=>'î','ï'=>'ï','ð'=>'ð','ñ'=>'ñ','ò'=>'ò','ó'=>'ó','ô'=>'ô','õ'=>'õ','ö'=>'oe','ø'=>'ø','ù'=>'ù','ú'=>'ú','û'=>'û','ü'=>'ue','ý'=>'ý','þ'=>'þ','ÿ'=>'ÿ','Ā'=>'ā','ā'=>'ā','Ă'=>'ă','ă'=>'ă','Ą'=>'ą','ą'=>'ą','Ć'=>'ć','ć'=>'ć','Ĉ'=>'ĉ','ĉ'=>'ĉ','Ċ'=>'ċ','ċ'=>'ċ','Č'=>'č','č'=>'č','Ď'=>'ď','ď'=>'ď','Đ'=>'đ','đ'=>'đ','Ē'=>'ē','ē'=>'ē','Ĕ'=>'ĕ','ĕ'=>'ĕ','Ė'=>'ė','ė'=>'ė','Ę'=>'ę','ę'=>'ę','Ě'=>'ě','ě'=>'ě','Ĝ'=>'ĝ','ĝ'=>'ĝ','Ğ'=>'ğ','ğ'=>'ğ','Ġ'=>'ġ','ġ'=>'ġ','Ģ'=>'ģ','ģ'=>'ģ','Ĥ'=>'ĥ','ĥ'=>'ĥ','Ħ'=>'ħ','ħ'=>'ħ','Ĩ'=>'ĩ','ĩ'=>'ĩ','Ī'=>'ī','ī'=>'ī','Ĭ'=>'ĭ','ĭ'=>'ĭ','Į'=>'į','į'=>'į','İ'=>'i','ı'=>'ı','IJ'=>'ij','ij'=>'ij','Ĵ'=>'ĵ','ĵ'=>'ĵ','Ķ'=>'ķ','ķ'=>'ķ','ĸ'=>'ĸ','Ĺ'=>'ĺ','ĺ'=>'ĺ','Ļ'=>'ļ','ļ'=>'ļ','Ľ'=>'ľ','ľ'=>'ľ','Ŀ'=>'ŀ','ŀ'=>'ŀ','Ł'=>'ł','ł'=>'ł','Ń'=>'ń','ń'=>'ń','Ņ'=>'ņ','ņ'=>'ņ','Ň'=>'ň','ň'=>'ň','ʼn'=>'ʼn','Ŋ'=>'ŋ','ŋ'=>'ŋ','Ō'=>'ō','ō'=>'ō','Ŏ'=>'ŏ','ŏ'=>'ŏ','Ő'=>'ő','ő'=>'ő','Œ'=>'oe','œ'=>'oe','Ŕ'=>'ŕ','ŕ'=>'ŕ','Ŗ'=>'ŗ','ŗ'=>'ŗ','Ř'=>'ř','ř'=>'ř','Ś'=>'ś','ś'=>'ś','Ŝ'=>'ŝ','ŝ'=>'ŝ','Ş'=>'ş','ş'=>'ş','Š'=>'š','š'=>'š','Ţ'=>'ţ','ţ'=>'ţ','Ť'=>'ť','ť'=>'ť','Ŧ'=>'ŧ','ŧ'=>'ŧ','Ũ'=>'ũ','ũ'=>'ũ','Ū'=>'ū','ū'=>'ū','Ŭ'=>'ŭ','ŭ'=>'ŭ','Ů'=>'ů','ů'=>'ů','Ű'=>'ű','ű'=>'ű','Ų'=>'ų','ų'=>'ų','Ŵ'=>'ŵ','ŵ'=>'ŵ','Ŷ'=>'ŷ','ŷ'=>'ŷ','Ÿ'=>'ÿ','Ź'=>'ź','ź'=>'ź','Ż'=>'ż','ż'=>'ż','Ž'=>'ž','ž'=>'ž','ſ'=>'ſ','ƀ'=>'ƀ','Ɓ'=>'ɓ','Ƃ'=>'ƃ','ƃ'=>'ƃ','Ƅ'=>'ƅ','ƅ'=>'ƅ','Ɔ'=>'ɔ','Ƈ'=>'ƈ','ƈ'=>'ƈ','Ɖ'=>'ɖ','Ɗ'=>'ɗ','Ƌ'=>'ƌ','ƌ'=>'ƌ','ƍ'=>'ƍ','Ǝ'=>'ǝ','Ə'=>'ə','Ɛ'=>'ɛ','Ƒ'=>'ƒ','ƒ'=>'ƒ','Ɠ'=>'ɠ','Ɣ'=>'ɣ','ƕ'=>'hv','Ɩ'=>'ɩ','Ɨ'=>'ɨ','Ƙ'=>'ƙ','ƙ'=>'ƙ','ƚ'=>'ƚ','ƛ'=>'ƛ','Ɯ'=>'ɯ','Ɲ'=>'ɲ','ƞ'=>'ƞ','Ɵ'=>'ɵ','Ơ'=>'ơ','ơ'=>'ơ','Ƣ'=>'oi','ƣ'=>'oi','Ƥ'=>'ƥ','ƥ'=>'ƥ','Ʀ'=>'yr','Ƨ'=>'ƨ','ƨ'=>'ƨ','Ʃ'=>'ʃ','ƪ'=>'ƪ','ƫ'=>'ƫ','Ƭ'=>'ƭ','ƭ'=>'ƭ','Ʈ'=>'ʈ','Ư'=>'ư','ư'=>'ư','Ʊ'=>'ʊ','Ʋ'=>'ʋ','Ƴ'=>'ƴ','ƴ'=>'ƴ','Ƶ'=>'ƶ','ƶ'=>'ƶ','Ʒ'=>'ʒ','Ƹ'=>'ƹ','ƹ'=>'ƹ','ƺ'=>'ƺ','ƻ'=>'ƻ','Ƽ'=>'ƽ','ƽ'=>'ƽ','ƾ'=>'ƾ','ƿ'=>'ƿ','ǀ'=>'ǀ','ǁ'=>'ǁ','ǂ'=>'ǂ','ǃ'=>'ǃ','DŽ'=>'dž','Dž'=>'dž','dž'=>'dž','LJ'=>'lj','Lj'=>'lj','lj'=>'lj','NJ'=>'nj','Nj'=>'nj','nj'=>'nj','Ǎ'=>'ǎ','ǎ'=>'ǎ','Ǐ'=>'ǐ','ǐ'=>'ǐ','Ǒ'=>'ǒ','ǒ'=>'ǒ','Ǔ'=>'ǔ','ǔ'=>'ǔ','Ǖ'=>'ǖ','ǖ'=>'ǖ','Ǘ'=>'ǘ','ǘ'=>'ǘ','Ǚ'=>'ǚ','ǚ'=>'ǚ','Ǜ'=>'ǜ','ǜ'=>'ǜ','ǝ'=>'ǝ','Ǟ'=>'ǟ','ǟ'=>'ǟ','Ǡ'=>'ǡ','ǡ'=>'ǡ','Ǣ'=>'ǣ','ǣ'=>'ǣ','Ǥ'=>'ǥ','ǥ'=>'ǥ','Ǧ'=>'ǧ','ǧ'=>'ǧ','Ǩ'=>'ǩ','ǩ'=>'ǩ','Ǫ'=>'ǫ','ǫ'=>'ǫ','Ǭ'=>'ǭ','ǭ'=>'ǭ','Ǯ'=>'ǯ','ǯ'=>'ǯ','ǰ'=>'ǰ','DZ'=>'dz','Dz'=>'dz','dz'=>'dz','Ǵ'=>'ǵ','ǵ'=>'ǵ','Ƕ'=>'ƕ','Ƿ'=>'ƿ','Ǹ'=>'ǹ','ǹ'=>'ǹ','Ǻ'=>'ǻ','ǻ'=>'ǻ','Ǽ'=>'ǽ','ǽ'=>'ǽ','Ǿ'=>'ǿ','ǿ'=>'ǿ','Ȁ'=>'ȁ','ȁ'=>'ȁ','Ȃ'=>'ȃ','ȃ'=>'ȃ','Ȅ'=>'ȅ','ȅ'=>'ȅ','Ȇ'=>'ȇ','ȇ'=>'ȇ','Ȉ'=>'ȉ','ȉ'=>'ȉ','Ȋ'=>'ȋ','ȋ'=>'ȋ','Ȍ'=>'ȍ','ȍ'=>'ȍ','Ȏ'=>'ȏ','ȏ'=>'ȏ','Ȑ'=>'ȑ','ȑ'=>'ȑ','Ȓ'=>'ȓ','ȓ'=>'ȓ','Ȕ'=>'ȕ','ȕ'=>'ȕ','Ȗ'=>'ȗ','ȗ'=>'ȗ','Ș'=>'ș','ș'=>'ș','Ț'=>'ț','ț'=>'ț','Ȝ'=>'ȝ','ȝ'=>'ȝ','Ȟ'=>'ȟ','ȟ'=>'ȟ','Ƞ'=>'ƞ','ȡ'=>'ȡ','Ȣ'=>'ou','ȣ'=>'ou','Ȥ'=>'ȥ','ȥ'=>'ȥ','Ȧ'=>'ȧ','ȧ'=>'ȧ','Ȩ'=>'ȩ','ȩ'=>'ȩ','Ȫ'=>'ȫ','ȫ'=>'ȫ','Ȭ'=>'ȭ','ȭ'=>'ȭ','Ȯ'=>'ȯ','ȯ'=>'ȯ','Ȱ'=>'ȱ','ȱ'=>'ȱ','Ȳ'=>'ȳ','ȳ'=>'ȳ','ȴ'=>'ȴ','ȵ'=>'ȵ','ȶ'=>'ȶ','ȷ'=>'ȷ','ȸ'=>'ȸ','ȹ'=>'ȹ','Ⱥ'=>'ⱥ','Ȼ'=>'ȼ','ȼ'=>'ȼ','Ƚ'=>'ƚ','Ⱦ'=>'ⱦ','ȿ'=>'ȿ','ɀ'=>'ɀ','Ɂ'=>'ɂ','ɂ'=>'ɂ','Ƀ'=>'ƀ','Ʉ'=>'ʉ','Ʌ'=>'ʌ','Ɇ'=>'ɇ','ɇ'=>'ɇ','Ɉ'=>'ɉ','ɉ'=>'ɉ','Ɋ'=>'ɋ','ɋ'=>'ɋ','Ɍ'=>'ɍ','ɍ'=>'ɍ','Ɏ'=>'ɏ','ɏ'=>'ɏ','ɐ'=>'ɐ','ɑ'=>'ɑ','ɒ'=>'ɒ','ɓ'=>'ɓ','ɔ'=>'ɔ','ɕ'=>'ɕ','ɖ'=>'ɖ','ɗ'=>'ɗ','ɘ'=>'ɘ','ə'=>'ə','ɚ'=>'ɚ','ɛ'=>'ɛ','ɜ'=>'ɜ','ɝ'=>'ɝ','ɞ'=>'ɞ','ɟ'=>'ɟ','ɠ'=>'ɠ','ɡ'=>'ɡ','ɢ'=>'ɢ','ɣ'=>'ɣ','ɤ'=>'ɤ','ɥ'=>'ɥ','ɦ'=>'ɦ','ɧ'=>'ɧ','ɨ'=>'ɨ','ɩ'=>'ɩ','ɪ'=>'ɪ','ɫ'=>'ɫ','ɬ'=>'ɬ','ɭ'=>'ɭ','ɮ'=>'ɮ','ɯ'=>'ɯ','ɰ'=>'ɰ','ɱ'=>'ɱ','ɲ'=>'ɲ','ɳ'=>'ɳ','ɴ'=>'ɴ','ɵ'=>'ɵ','ɶ'=>'ɶ','ɷ'=>'ɷ','ɸ'=>'ɸ','ɹ'=>'ɹ','ɺ'=>'ɺ','ɻ'=>'ɻ','ɼ'=>'ɼ','ɽ'=>'ɽ','ɾ'=>'ɾ','ɿ'=>'ɿ','ʀ'=>'ʀ','ʁ'=>'ʁ','ʂ'=>'ʂ','ʃ'=>'ʃ','ʄ'=>'ʄ','ʅ'=>'ʅ','ʆ'=>'ʆ','ʇ'=>'ʇ','ʈ'=>'ʈ','ʉ'=>'ʉ','ʊ'=>'ʊ','ʋ'=>'ʋ','ʌ'=>'ʌ','ʍ'=>'ʍ','ʎ'=>'ʎ','ʏ'=>'ʏ','ʐ'=>'ʐ','ʑ'=>'ʑ','ʒ'=>'ʒ','ʓ'=>'ʓ','ʔ'=>'ʔ','ʕ'=>'ʕ','ʖ'=>'ʖ','ʗ'=>'ʗ','ʘ'=>'ʘ','ʙ'=>'ʙ','ʚ'=>'ʚ','ʛ'=>'ʛ','ʜ'=>'ʜ','ʝ'=>'ʝ','ʞ'=>'ʞ','ʟ'=>'ʟ','ʠ'=>'ʠ','ʡ'=>'ʡ','ʢ'=>'ʢ','ʣ'=>'ʣ','ʤ'=>'ʤ','ʥ'=>'ʥ','ʦ'=>'ʦ','ʧ'=>'ʧ','ʨ'=>'ʨ','ʩ'=>'ʩ','ʪ'=>'ʪ','ʫ'=>'ʫ','ʬ'=>'ʬ','ʭ'=>'ʭ','ʮ'=>'ʮ','ʯ'=>'ʯ','ʰ'=>'ʰ','ʱ'=>'ʱ','ʲ'=>'ʲ','ʳ'=>'ʳ','ʴ'=>'ʴ','ʵ'=>'ʵ','ʶ'=>'ʶ','ʷ'=>'ʷ','ʸ'=>'ʸ','ʹ'=>'ʹ','ʺ'=>'ʺ','ʻ'=>'ʻ','ʼ'=>'ʼ','ʽ'=>'ʽ','ʾ'=>'ʾ','ʿ'=>'ʿ','ˀ'=>'ˀ','ˁ'=>'ˁ','ˆ'=>'ˆ','ˇ'=>'ˇ','ˈ'=>'ˈ','ˉ'=>'ˉ','ˊ'=>'ˊ','ˋ'=>'ˋ','ˌ'=>'ˌ','ˍ'=>'ˍ','ˎ'=>'ˎ','ˏ'=>'ˏ','ː'=>'ː','ˑ'=>'ˑ','ˠ'=>'ˠ','ˡ'=>'ˡ','ˢ'=>'ˢ','ˣ'=>'ˣ','ˤ'=>'ˤ','ˮ'=>'ˮ','̀'=>'̀','́'=>'́','̂'=>'̂','̃'=>'̃','̄'=>'̄','̅'=>'̅','̆'=>'̆','̇'=>'̇','̈'=>'̈','̉'=>'̉','̊'=>'̊','̋'=>'̋','̌'=>'̌','̍'=>'̍','̎'=>'̎','̏'=>'̏','̐'=>'̐','̑'=>'̑','̒'=>'̒','̓'=>'̓','̔'=>'̔','̕'=>'̕','̖'=>'̖','̗'=>'̗','̘'=>'̘','̙'=>'̙','̚'=>'̚','̛'=>'̛','̜'=>'̜','̝'=>'̝','̞'=>'̞','̟'=>'̟','̠'=>'̠','̡'=>'̡','̢'=>'̢','̣'=>'̣','̤'=>'̤','̥'=>'̥','̦'=>'̦','̧'=>'̧','̨'=>'̨','̩'=>'̩','̪'=>'̪','̫'=>'̫','̬'=>'̬','̭'=>'̭','̮'=>'̮','̯'=>'̯','̰'=>'̰','̱'=>'̱','̲'=>'̲','̳'=>'̳','̴'=>'̴','̵'=>'̵','̶'=>'̶','̷'=>'̷','̸'=>'̸','̹'=>'̹','̺'=>'̺','̻'=>'̻','̼'=>'̼','̽'=>'̽','̾'=>'̾','̿'=>'̿','̀'=>'̀','́'=>'́','͂'=>'͂','̓'=>'̓','̈́'=>'̈́','ͅ'=>'ͅ','͆'=>'͆','͇'=>'͇','͈'=>'͈','͉'=>'͉','͊'=>'͊','͋'=>'͋','͌'=>'͌','͍'=>'͍','͎'=>'͎','͏'=>'͏','͐'=>'͐','͑'=>'͑','͒'=>'͒','͓'=>'͓','͔'=>'͔','͕'=>'͕','͖'=>'͖','͗'=>'͗','͘'=>'͘','͙'=>'͙','͚'=>'͚','͛'=>'͛','͜'=>'͜','͝'=>'͝','͞'=>'͞','͟'=>'͟','͠'=>'͠','͡'=>'͡','͢'=>'͢','ͣ'=>'ͣ','ͤ'=>'ͤ','ͥ'=>'ͥ','ͦ'=>'ͦ','ͧ'=>'ͧ','ͨ'=>'ͨ','ͩ'=>'ͩ','ͪ'=>'ͪ','ͫ'=>'ͫ','ͬ'=>'ͬ','ͭ'=>'ͭ','ͮ'=>'ͮ','ͯ'=>'ͯ','ͺ'=>'ͺ','ͻ'=>'ͻ','ͼ'=>'ͼ','ͽ'=>'ͽ','Ά'=>'ά','Έ'=>'έ','Ή'=>'ή','Ί'=>'ί','Ό'=>'ό','Ύ'=>'ύ','Ώ'=>'ώ','ΐ'=>'ΐ','Α'=>'α','Β'=>'β','Γ'=>'γ','Δ'=>'δ','Ε'=>'ε','Ζ'=>'ζ','Η'=>'η','Θ'=>'θ','Ι'=>'ι','Κ'=>'κ','Λ'=>'λ','Μ'=>'μ','Ν'=>'ν','Ξ'=>'ξ','Ο'=>'ο','Π'=>'π','Ρ'=>'ρ','Σ'=>'σ','Τ'=>'τ','Υ'=>'υ','Φ'=>'φ','Χ'=>'χ','Ψ'=>'ψ','Ω'=>'ω','Ϊ'=>'ϊ','Ϋ'=>'ϋ','ά'=>'ά','έ'=>'έ','ή'=>'ή','ί'=>'ί','ΰ'=>'ΰ','α'=>'α','β'=>'β','γ'=>'γ','δ'=>'δ','ε'=>'ε','ζ'=>'ζ','η'=>'η','θ'=>'θ','ι'=>'ι','κ'=>'κ','λ'=>'λ','μ'=>'μ','ν'=>'ν','ξ'=>'ξ','ο'=>'ο','π'=>'π','ρ'=>'ρ','ς'=>'ς','σ'=>'σ','τ'=>'τ','υ'=>'υ','φ'=>'φ','χ'=>'χ','ψ'=>'ψ','ω'=>'ω','ϊ'=>'ϊ','ϋ'=>'ϋ','ό'=>'ό','ύ'=>'ύ','ώ'=>'ώ','ϐ'=>'ϐ','ϑ'=>'ϑ','ϒ'=>'ϒ','ϓ'=>'ϓ','ϔ'=>'ϔ','ϕ'=>'ϕ','ϖ'=>'ϖ','ϗ'=>'ϗ','Ϙ'=>'ϙ','ϙ'=>'ϙ','Ϛ'=>'ϛ','ϛ'=>'ϛ','Ϝ'=>'ϝ','ϝ'=>'ϝ','Ϟ'=>'ϟ','ϟ'=>'ϟ','Ϡ'=>'ϡ','ϡ'=>'ϡ','Ϣ'=>'ϣ','ϣ'=>'ϣ','Ϥ'=>'ϥ','ϥ'=>'ϥ','Ϧ'=>'ϧ','ϧ'=>'ϧ','Ϩ'=>'ϩ','ϩ'=>'ϩ','Ϫ'=>'ϫ','ϫ'=>'ϫ','Ϭ'=>'ϭ','ϭ'=>'ϭ','Ϯ'=>'ϯ','ϯ'=>'ϯ','ϰ'=>'ϰ','ϱ'=>'ϱ','ϲ'=>'ϲ','ϳ'=>'ϳ','ϴ'=>'θ','ϵ'=>'ϵ','Ϸ'=>'ϸ','ϸ'=>'ϸ','Ϲ'=>'ϲ','Ϻ'=>'ϻ','ϻ'=>'ϻ','ϼ'=>'ϼ','Ͻ'=>'ͻ','Ͼ'=>'ͼ','Ͽ'=>'ͽ','Ѐ'=>'ѐ','Ё'=>'ё','Ђ'=>'ђ','Ѓ'=>'ѓ','Є'=>'є','Ѕ'=>'ѕ','І'=>'і','Ї'=>'ї','Ј'=>'ј','Љ'=>'љ','Њ'=>'њ','Ћ'=>'ћ','Ќ'=>'ќ','Ѝ'=>'ѝ','Ў'=>'ў','Џ'=>'џ','А'=>'а','Б'=>'б','В'=>'в','Г'=>'г','Д'=>'д','Е'=>'е','Ж'=>'ж','З'=>'з','И'=>'и','Й'=>'й','К'=>'к','Л'=>'л','М'=>'м','Н'=>'н','О'=>'о','П'=>'п','Р'=>'р','С'=>'с','Т'=>'т','У'=>'у','Ф'=>'ф','Х'=>'х','Ц'=>'ц','Ч'=>'ч','Ш'=>'ш','Щ'=>'щ','Ъ'=>'ъ','Ы'=>'ы','Ь'=>'ь','Э'=>'э','Ю'=>'ю','Я'=>'я','а'=>'а','б'=>'б','в'=>'в','г'=>'г','д'=>'д','е'=>'е','ж'=>'ж','з'=>'з','и'=>'и','й'=>'й','к'=>'к','л'=>'л','м'=>'м','н'=>'н','о'=>'о','п'=>'п','р'=>'р','с'=>'с','т'=>'т','у'=>'у','ф'=>'ф','х'=>'х','ц'=>'ц','ч'=>'ч','ш'=>'ш','щ'=>'щ','ъ'=>'ъ','ы'=>'ы','ь'=>'ь','э'=>'э','ю'=>'ю','я'=>'я','ѐ'=>'ѐ','ё'=>'ё','ђ'=>'ђ','ѓ'=>'ѓ','є'=>'є','ѕ'=>'ѕ','і'=>'і','ї'=>'ї','ј'=>'ј','љ'=>'љ','њ'=>'њ','ћ'=>'ћ','ќ'=>'ќ','ѝ'=>'ѝ','ў'=>'ў','џ'=>'џ','Ѡ'=>'ѡ','ѡ'=>'ѡ','Ѣ'=>'ѣ','ѣ'=>'ѣ','Ѥ'=>'ѥ','ѥ'=>'ѥ','Ѧ'=>'ѧ','ѧ'=>'ѧ','Ѩ'=>'ѩ','ѩ'=>'ѩ','Ѫ'=>'ѫ','ѫ'=>'ѫ','Ѭ'=>'ѭ','ѭ'=>'ѭ','Ѯ'=>'ѯ','ѯ'=>'ѯ','Ѱ'=>'ѱ','ѱ'=>'ѱ','Ѳ'=>'ѳ','ѳ'=>'ѳ','Ѵ'=>'ѵ','ѵ'=>'ѵ','Ѷ'=>'ѷ','ѷ'=>'ѷ','Ѹ'=>'ѹ','ѹ'=>'ѹ','Ѻ'=>'ѻ','ѻ'=>'ѻ','Ѽ'=>'ѽ','ѽ'=>'ѽ','Ѿ'=>'ѿ','ѿ'=>'ѿ','Ҁ'=>'ҁ','ҁ'=>'ҁ','҃'=>'҃','҄'=>'҄','҅'=>'҅','҆'=>'҆','҈'=>'҈','҉'=>'҉','Ҋ'=>'ҋ','ҋ'=>'ҋ','Ҍ'=>'ҍ','ҍ'=>'ҍ','Ҏ'=>'ҏ','ҏ'=>'ҏ','Ґ'=>'ґ','ґ'=>'ґ','Ғ'=>'ғ','ғ'=>'ғ','Ҕ'=>'ҕ','ҕ'=>'ҕ','Җ'=>'җ','җ'=>'җ','Ҙ'=>'ҙ','ҙ'=>'ҙ','Қ'=>'қ','қ'=>'қ','Ҝ'=>'ҝ','ҝ'=>'ҝ','Ҟ'=>'ҟ','ҟ'=>'ҟ','Ҡ'=>'ҡ','ҡ'=>'ҡ','Ң'=>'ң','ң'=>'ң','Ҥ'=>'ҥ','ҥ'=>'ҥ','Ҧ'=>'ҧ','ҧ'=>'ҧ','Ҩ'=>'ҩ','ҩ'=>'ҩ','Ҫ'=>'ҫ','ҫ'=>'ҫ','Ҭ'=>'ҭ','ҭ'=>'ҭ','Ү'=>'ү','ү'=>'ү','Ұ'=>'ұ','ұ'=>'ұ','Ҳ'=>'ҳ','ҳ'=>'ҳ','Ҵ'=>'ҵ','ҵ'=>'ҵ','Ҷ'=>'ҷ','ҷ'=>'ҷ','Ҹ'=>'ҹ','ҹ'=>'ҹ','Һ'=>'һ','һ'=>'һ','Ҽ'=>'ҽ','ҽ'=>'ҽ','Ҿ'=>'ҿ','ҿ'=>'ҿ','Ӏ'=>'ӏ','Ӂ'=>'ӂ','ӂ'=>'ӂ','Ӄ'=>'ӄ','ӄ'=>'ӄ','Ӆ'=>'ӆ','ӆ'=>'ӆ','Ӈ'=>'ӈ','ӈ'=>'ӈ','Ӊ'=>'ӊ','ӊ'=>'ӊ','Ӌ'=>'ӌ','ӌ'=>'ӌ','Ӎ'=>'ӎ','ӎ'=>'ӎ','ӏ'=>'ӏ','Ӑ'=>'ӑ','ӑ'=>'ӑ','Ӓ'=>'ӓ','ӓ'=>'ӓ','Ӕ'=>'ӕ','ӕ'=>'ӕ','Ӗ'=>'ӗ','ӗ'=>'ӗ','Ә'=>'ә','ә'=>'ә','Ӛ'=>'ӛ','ӛ'=>'ӛ','Ӝ'=>'ӝ','ӝ'=>'ӝ','Ӟ'=>'ӟ','ӟ'=>'ӟ','Ӡ'=>'ӡ','ӡ'=>'ӡ','Ӣ'=>'ӣ','ӣ'=>'ӣ','Ӥ'=>'ӥ','ӥ'=>'ӥ','Ӧ'=>'ӧ','ӧ'=>'ӧ','Ө'=>'ө','ө'=>'ө','Ӫ'=>'ӫ','ӫ'=>'ӫ','Ӭ'=>'ӭ','ӭ'=>'ӭ','Ӯ'=>'ӯ','ӯ'=>'ӯ','Ӱ'=>'ӱ','ӱ'=>'ӱ','Ӳ'=>'ӳ','ӳ'=>'ӳ','Ӵ'=>'ӵ','ӵ'=>'ӵ','Ӷ'=>'ӷ','ӷ'=>'ӷ','Ӹ'=>'ӹ','ӹ'=>'ӹ','Ӻ'=>'ӻ','ӻ'=>'ӻ','Ӽ'=>'ӽ','ӽ'=>'ӽ','Ӿ'=>'ӿ','ӿ'=>'ӿ','Ԁ'=>'ԁ','ԁ'=>'ԁ','Ԃ'=>'ԃ','ԃ'=>'ԃ','Ԅ'=>'ԅ','ԅ'=>'ԅ','Ԇ'=>'ԇ','ԇ'=>'ԇ','Ԉ'=>'ԉ','ԉ'=>'ԉ','Ԋ'=>'ԋ','ԋ'=>'ԋ','Ԍ'=>'ԍ','ԍ'=>'ԍ','Ԏ'=>'ԏ','ԏ'=>'ԏ','Ԑ'=>'ԑ','ԑ'=>'ԑ','Ԓ'=>'ԓ','ԓ'=>'ԓ','Ա'=>'ա','Բ'=>'բ','Գ'=>'գ','Դ'=>'դ','Ե'=>'ե','Զ'=>'զ','Է'=>'է','Ը'=>'ը','Թ'=>'թ','Ժ'=>'ժ','Ի'=>'ի','Լ'=>'լ','Խ'=>'խ','Ծ'=>'ծ','Կ'=>'կ','Հ'=>'հ','Ձ'=>'ձ','Ղ'=>'ղ','Ճ'=>'ճ','Մ'=>'մ','Յ'=>'յ','Ն'=>'ն','Շ'=>'շ','Ո'=>'ո','Չ'=>'չ','Պ'=>'պ','Ջ'=>'ջ','Ռ'=>'ռ','Ս'=>'ս','Վ'=>'վ','Տ'=>'տ','Ր'=>'ր','Ց'=>'ց','Ւ'=>'ւ','Փ'=>'փ','Ք'=>'ք','Օ'=>'օ','Ֆ'=>'ֆ','ՙ'=>'ՙ','ա'=>'ա','բ'=>'բ','գ'=>'գ','դ'=>'դ','ե'=>'ե','զ'=>'զ','է'=>'է','ը'=>'ը','թ'=>'թ','ժ'=>'ժ','ի'=>'ի','լ'=>'լ','խ'=>'խ','ծ'=>'ծ','կ'=>'կ','հ'=>'հ','ձ'=>'ձ','ղ'=>'ղ','ճ'=>'ճ','մ'=>'մ','յ'=>'յ','ն'=>'ն','շ'=>'շ','ո'=>'ո','չ'=>'չ','պ'=>'պ','ջ'=>'ջ','ռ'=>'ռ','ս'=>'ս','վ'=>'վ','տ'=>'տ','ր'=>'ր','ց'=>'ց','ւ'=>'ւ','փ'=>'փ','ք'=>'ք','օ'=>'օ','ֆ'=>'ֆ','և'=>'և','֑'=>'֑','֒'=>'֒','֓'=>'֓','֔'=>'֔','֕'=>'֕','֖'=>'֖','֗'=>'֗','֘'=>'֘','֙'=>'֙','֚'=>'֚','֛'=>'֛','֜'=>'֜','֝'=>'֝','֞'=>'֞','֟'=>'֟','֠'=>'֠','֡'=>'֡','֢'=>'֢','֣'=>'֣','֤'=>'֤','֥'=>'֥','֦'=>'֦','֧'=>'֧','֨'=>'֨','֩'=>'֩','֪'=>'֪','֫'=>'֫','֬'=>'֬','֭'=>'֭','֮'=>'֮','֯'=>'֯','ְ'=>'ְ','ֱ'=>'ֱ','ֲ'=>'ֲ','ֳ'=>'ֳ','ִ'=>'ִ','ֵ'=>'ֵ','ֶ'=>'ֶ','ַ'=>'ַ','ָ'=>'ָ','ֹ'=>'ֹ','ֺ'=>'ֺ','ֻ'=>'ֻ','ּ'=>'ּ','ֽ'=>'ֽ','ֿ'=>'ֿ','ׁ'=>'ׁ','ׂ'=>'ׂ','ׄ'=>'ׄ','ׅ'=>'ׅ','ׇ'=>'ׇ','א'=>'א','ב'=>'ב','ג'=>'ג','ד'=>'ד','ה'=>'ה','ו'=>'ו','ז'=>'ז','ח'=>'ח','ט'=>'ט','י'=>'י','ך'=>'ך','כ'=>'כ','ל'=>'ל','ם'=>'ם','מ'=>'מ','ן'=>'ן','נ'=>'נ','ס'=>'ס','ע'=>'ע','ף'=>'ף','פ'=>'פ','ץ'=>'ץ','צ'=>'צ','ק'=>'ק','ר'=>'ר','ש'=>'ש','ת'=>'ת','װ'=>'װ','ױ'=>'ױ','ײ'=>'ײ','ؐ'=>'ؐ','ؑ'=>'ؑ','ؒ'=>'ؒ','ؓ'=>'ؓ','ؔ'=>'ؔ','ؕ'=>'ؕ','ء'=>'ء','آ'=>'آ','أ'=>'أ','ؤ'=>'ؤ','إ'=>'إ','ئ'=>'ئ','ا'=>'ا','ب'=>'ب','ة'=>'ة','ت'=>'ت','ث'=>'ث','ج'=>'ج','ح'=>'ح','خ'=>'خ','د'=>'د','ذ'=>'ذ','ر'=>'ر','ز'=>'ز','س'=>'س','ش'=>'ش','ص'=>'ص','ض'=>'ض','ط'=>'ط','ظ'=>'ظ','ع'=>'ع','غ'=>'غ','ـ'=>'ـ','ف'=>'ف','ق'=>'ق','ك'=>'ك','ل'=>'ل','م'=>'م','ن'=>'ن','ه'=>'ه','و'=>'و','ى'=>'ى','ي'=>'ي','ً'=>'ً','ٌ'=>'ٌ','ٍ'=>'ٍ','َ'=>'َ','ُ'=>'ُ','ِ'=>'ِ','ّ'=>'ّ','ْ'=>'ْ','ٓ'=>'ٓ','ٔ'=>'ٔ','ٕ'=>'ٕ','ٖ'=>'ٖ','ٗ'=>'ٗ','٘'=>'٘','ٙ'=>'ٙ','ٚ'=>'ٚ','ٛ'=>'ٛ','ٜ'=>'ٜ','ٝ'=>'ٝ','ٞ'=>'ٞ','٠'=>'0','١'=>'1','٢'=>'2','٣'=>'3','٤'=>'4','٥'=>'5','٦'=>'6','٧'=>'7','٨'=>'8','٩'=>'9','ٮ'=>'ٮ','ٯ'=>'ٯ','ٰ'=>'ٰ','ٱ'=>'ٱ','ٲ'=>'ٲ','ٳ'=>'ٳ','ٴ'=>'ٴ','ٵ'=>'ٵ','ٶ'=>'ٶ','ٷ'=>'ٷ','ٸ'=>'ٸ','ٹ'=>'ٹ','ٺ'=>'ٺ','ٻ'=>'ٻ','ټ'=>'ټ','ٽ'=>'ٽ','پ'=>'پ','ٿ'=>'ٿ','ڀ'=>'ڀ','ځ'=>'ځ','ڂ'=>'ڂ','ڃ'=>'ڃ','ڄ'=>'ڄ','څ'=>'څ','چ'=>'چ','ڇ'=>'ڇ','ڈ'=>'ڈ','ډ'=>'ډ','ڊ'=>'ڊ','ڋ'=>'ڋ','ڌ'=>'ڌ','ڍ'=>'ڍ','ڎ'=>'ڎ','ڏ'=>'ڏ','ڐ'=>'ڐ','ڑ'=>'ڑ','ڒ'=>'ڒ','ړ'=>'ړ','ڔ'=>'ڔ','ڕ'=>'ڕ','ږ'=>'ږ','ڗ'=>'ڗ','ژ'=>'ژ','ڙ'=>'ڙ','ښ'=>'ښ','ڛ'=>'ڛ','ڜ'=>'ڜ','ڝ'=>'ڝ','ڞ'=>'ڞ','ڟ'=>'ڟ','ڠ'=>'ڠ','ڡ'=>'ڡ','ڢ'=>'ڢ','ڣ'=>'ڣ','ڤ'=>'ڤ','ڥ'=>'ڥ','ڦ'=>'ڦ','ڧ'=>'ڧ','ڨ'=>'ڨ','ک'=>'ک','ڪ'=>'ڪ','ګ'=>'ګ','ڬ'=>'ڬ','ڭ'=>'ڭ','ڮ'=>'ڮ','گ'=>'گ','ڰ'=>'ڰ','ڱ'=>'ڱ','ڲ'=>'ڲ','ڳ'=>'ڳ','ڴ'=>'ڴ','ڵ'=>'ڵ','ڶ'=>'ڶ','ڷ'=>'ڷ','ڸ'=>'ڸ','ڹ'=>'ڹ','ں'=>'ں','ڻ'=>'ڻ','ڼ'=>'ڼ','ڽ'=>'ڽ','ھ'=>'ھ','ڿ'=>'ڿ','ۀ'=>'ۀ','ہ'=>'ہ','ۂ'=>'ۂ','ۃ'=>'ۃ','ۄ'=>'ۄ','ۅ'=>'ۅ','ۆ'=>'ۆ','ۇ'=>'ۇ','ۈ'=>'ۈ','ۉ'=>'ۉ','ۊ'=>'ۊ','ۋ'=>'ۋ','ی'=>'ی','ۍ'=>'ۍ','ێ'=>'ێ','ۏ'=>'ۏ','ې'=>'ې','ۑ'=>'ۑ','ے'=>'ے','ۓ'=>'ۓ','ە'=>'ە','ۖ'=>'ۖ','ۗ'=>'ۗ','ۘ'=>'ۘ','ۙ'=>'ۙ','ۚ'=>'ۚ','ۛ'=>'ۛ','ۜ'=>'ۜ','۞'=>'۞','۟'=>'۟','۠'=>'۠','ۡ'=>'ۡ','ۢ'=>'ۢ','ۣ'=>'ۣ','ۤ'=>'ۤ','ۥ'=>'ۥ','ۦ'=>'ۦ','ۧ'=>'ۧ','ۨ'=>'ۨ','۪'=>'۪','۫'=>'۫','۬'=>'۬','ۭ'=>'ۭ','ۮ'=>'ۮ','ۯ'=>'ۯ','۰'=>'0','۱'=>'1','۲'=>'2','۳'=>'3','۴'=>'4','۵'=>'5','۶'=>'6','۷'=>'7','۸'=>'8','۹'=>'9','ۺ'=>'ۺ','ۻ'=>'ۻ','ۼ'=>'ۼ','ۿ'=>'ۿ','ܐ'=>'ܐ','ܑ'=>'ܑ','ܒ'=>'ܒ','ܓ'=>'ܓ','ܔ'=>'ܔ','ܕ'=>'ܕ','ܖ'=>'ܖ','ܗ'=>'ܗ','ܘ'=>'ܘ','ܙ'=>'ܙ','ܚ'=>'ܚ','ܛ'=>'ܛ','ܜ'=>'ܜ','ܝ'=>'ܝ','ܞ'=>'ܞ','ܟ'=>'ܟ','ܠ'=>'ܠ','ܡ'=>'ܡ','ܢ'=>'ܢ','ܣ'=>'ܣ','ܤ'=>'ܤ','ܥ'=>'ܥ','ܦ'=>'ܦ','ܧ'=>'ܧ','ܨ'=>'ܨ','ܩ'=>'ܩ','ܪ'=>'ܪ','ܫ'=>'ܫ','ܬ'=>'ܬ','ܭ'=>'ܭ','ܮ'=>'ܮ','ܯ'=>'ܯ','ܰ'=>'ܰ','ܱ'=>'ܱ','ܲ'=>'ܲ','ܳ'=>'ܳ','ܴ'=>'ܴ','ܵ'=>'ܵ','ܶ'=>'ܶ','ܷ'=>'ܷ','ܸ'=>'ܸ','ܹ'=>'ܹ','ܺ'=>'ܺ','ܻ'=>'ܻ','ܼ'=>'ܼ','ܽ'=>'ܽ','ܾ'=>'ܾ','ܿ'=>'ܿ','݀'=>'݀','݁'=>'݁','݂'=>'݂','݃'=>'݃','݄'=>'݄','݅'=>'݅','݆'=>'݆','݇'=>'݇','݈'=>'݈','݉'=>'݉','݊'=>'݊','ݍ'=>'ݍ','ݎ'=>'ݎ','ݏ'=>'ݏ','ݐ'=>'ݐ','ݑ'=>'ݑ','ݒ'=>'ݒ','ݓ'=>'ݓ','ݔ'=>'ݔ','ݕ'=>'ݕ','ݖ'=>'ݖ','ݗ'=>'ݗ','ݘ'=>'ݘ','ݙ'=>'ݙ','ݚ'=>'ݚ','ݛ'=>'ݛ','ݜ'=>'ݜ','ݝ'=>'ݝ','ݞ'=>'ݞ','ݟ'=>'ݟ','ݠ'=>'ݠ','ݡ'=>'ݡ','ݢ'=>'ݢ','ݣ'=>'ݣ','ݤ'=>'ݤ','ݥ'=>'ݥ','ݦ'=>'ݦ','ݧ'=>'ݧ','ݨ'=>'ݨ','ݩ'=>'ݩ','ݪ'=>'ݪ','ݫ'=>'ݫ','ݬ'=>'ݬ','ݭ'=>'ݭ','ހ'=>'ހ','ށ'=>'ށ','ނ'=>'ނ','ރ'=>'ރ','ބ'=>'ބ','ޅ'=>'ޅ','ކ'=>'ކ','އ'=>'އ','ވ'=>'ވ','މ'=>'މ','ފ'=>'ފ','ދ'=>'ދ','ތ'=>'ތ','ލ'=>'ލ','ގ'=>'ގ','ޏ'=>'ޏ','ސ'=>'ސ','ޑ'=>'ޑ','ޒ'=>'ޒ','ޓ'=>'ޓ','ޔ'=>'ޔ','ޕ'=>'ޕ','ޖ'=>'ޖ','ޗ'=>'ޗ','ޘ'=>'ޘ','ޙ'=>'ޙ','ޚ'=>'ޚ','ޛ'=>'ޛ','ޜ'=>'ޜ','ޝ'=>'ޝ','ޞ'=>'ޞ','ޟ'=>'ޟ','ޠ'=>'ޠ','ޡ'=>'ޡ','ޢ'=>'ޢ','ޣ'=>'ޣ','ޤ'=>'ޤ','ޥ'=>'ޥ','ަ'=>'ަ','ާ'=>'ާ','ި'=>'ި','ީ'=>'ީ','ު'=>'ު','ޫ'=>'ޫ','ެ'=>'ެ','ޭ'=>'ޭ','ޮ'=>'ޮ','ޯ'=>'ޯ','ް'=>'ް','ޱ'=>'ޱ','߀'=>'0','߁'=>'1','߂'=>'2','߃'=>'3','߄'=>'4','߅'=>'5','߆'=>'6','߇'=>'7','߈'=>'8','߉'=>'9','ߊ'=>'ߊ','ߋ'=>'ߋ','ߌ'=>'ߌ','ߍ'=>'ߍ','ߎ'=>'ߎ','ߏ'=>'ߏ','ߐ'=>'ߐ','ߑ'=>'ߑ','ߒ'=>'ߒ','ߓ'=>'ߓ','ߔ'=>'ߔ','ߕ'=>'ߕ','ߖ'=>'ߖ','ߗ'=>'ߗ','ߘ'=>'ߘ','ߙ'=>'ߙ','ߚ'=>'ߚ','ߛ'=>'ߛ','ߜ'=>'ߜ','ߝ'=>'ߝ','ߞ'=>'ߞ','ߟ'=>'ߟ','ߠ'=>'ߠ','ߡ'=>'ߡ','ߢ'=>'ߢ','ߣ'=>'ߣ','ߤ'=>'ߤ','ߥ'=>'ߥ','ߦ'=>'ߦ','ߧ'=>'ߧ','ߨ'=>'ߨ','ߩ'=>'ߩ','ߪ'=>'ߪ','߫'=>'߫','߬'=>'߬','߭'=>'߭','߮'=>'߮','߯'=>'߯','߰'=>'߰','߱'=>'߱','߲'=>'߲','߳'=>'߳','ߴ'=>'ߴ','ߵ'=>'ߵ','ߺ'=>'ߺ'); \ No newline at end of file From 1b32236b1ebbf046e84a435c97c7ed6bc9edd5f9 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sat, 26 May 2007 16:38:33 +0000 Subject: [PATCH 030/136] hopefully not too late in the game. Checked in new jabber class (the class done by the flyspray project). It would be nice if this could be tested with more servers - jabber.org seems to work fine... - other fixes git-svn-id: file:///svn/phpbb/trunk@7687 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/style/acp_jabber.html | 7 +- phpBB/adm/style/acp_users.html | 2 +- phpBB/adm/style/admin.css | 2 +- phpBB/docs/AUTHORS | 2 +- phpBB/docs/CHANGELOG.html | 8 + phpBB/includes/acp/acp_jabber.php | 120 +- phpBB/includes/acp/acp_users.php | 4 +- phpBB/includes/functions_jabber.php | 1781 +++++------------ phpBB/includes/functions_messenger.php | 16 +- phpBB/includes/session.php | 8 +- phpBB/install/database_update.php | 6 +- phpBB/install/schemas/schema_data.sql | 4 +- phpBB/language/en/acp/board.php | 18 +- phpBB/language/en/common.php | 2 +- phpBB/posting.php | 17 +- .../prosilver/template/forumlist_body.html | 4 +- .../styles/prosilver/template/mcp_forum.html | 4 +- .../prosilver/template/memberlist_search.html | 5 +- .../prosilver/template/posting_poll_body.html | 10 +- .../prosilver/template/search_results.html | 4 +- .../template/ucp_main_bookmarks.html | 4 +- .../prosilver/template/ucp_main_front.html | 4 +- .../template/ucp_main_subscribed.html | 6 +- .../prosilver/template/ucp_pm_viewfolder.html | 4 +- .../prosilver/template/ucp_register.html | 2 +- .../prosilver/template/viewforum_body.html | 4 +- phpBB/styles/prosilver/theme/colours.css | 6 +- phpBB/styles/prosilver/theme/content.css | 6 + phpBB/styles/prosilver/theme/forms.css | 4 + .../template/memberlist_search.html | 5 +- phpBB/styles/subsilver2/theme/stylesheet.css | 4 + 31 files changed, 681 insertions(+), 1392 deletions(-) diff --git a/phpBB/adm/style/acp_jabber.html b/phpBB/adm/style/acp_jabber.html index 03992364dd..4d667d2966 100644 --- a/phpBB/adm/style/acp_jabber.html +++ b/phpBB/adm/style/acp_jabber.html @@ -38,10 +38,13 @@
    +
    -

    {L_JAB_RESOURCE_EXPLAIN}
    -
    +

    {L_JAB_USE_SSL_EXPLAIN}
    +
    +
    +

    {L_JAB_PACKAGE_SIZE_EXPLAIN}
    diff --git a/phpBB/adm/style/acp_users.html b/phpBB/adm/style/acp_users.html index a7bde1e77a..307ddb75e4 100644 --- a/phpBB/adm/style/acp_users.html +++ b/phpBB/adm/style/acp_users.html @@ -173,7 +173,7 @@
    - + diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css index 458cae5d97..8e924b1266 100644 --- a/phpBB/adm/style/admin.css +++ b/phpBB/adm/style/admin.css @@ -721,7 +721,7 @@ option { } option.disabled-option { - color: #aaa; + color: graytext; } .rtl option { diff --git a/phpBB/docs/AUTHORS b/phpBB/docs/AUTHORS index 02866d7dc1..769d25d9e8 100644 --- a/phpBB/docs/AUTHORS +++ b/phpBB/docs/AUTHORS @@ -46,7 +46,7 @@ Smarty (c) 2001, 2002 by ispi of Lincoln, Inc, http://smarty.php.net/ GPL licenced: phpMyAdmin (c) 2001,2003 phpMyAdmin Devel team, http://www.phpmyadmin.net/ -Jabber Class (c) 2004 Nathan Fritz, http://cjphp.netflint.net +Jabber Class (c) 2006 Flyspray.org, http://www.flyspray.org/ Chora (c) 2000-2006, The Horde Project. http://horde.org/chora/ Horde Project (c) 2000-2006, The Horde Project. http://horde.org/ diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index c21a5e4170..d830d88e21 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -218,6 +218,14 @@ p a {
  • [Fix] Do not use the gen_random_string function to create cookie names during install (Bug #11431)
  • [Fix] Send stylesheet in style.php even without a valid session id (Bug #11531)
  • [Fix] request_var should strictly return the requested number of dimensions
  • +
  • [Fix] Correct assignment of custom width to $user->img(); / Correctly display poll bars in subsilver2 (Bug #11301)
  • +
  • [Fix] Allow removing polls in prosilver
  • +
  • {Fix] Correct link to post in managing users attachments (Bug #11765)
  • +
  • [Fix] Reload confirm screen for selecting new forum for global topic type change if not postable forum is chosen (Bug #11711)
  • +
  • [Fix] Correctly show system default color for disabled options in Internet Explorer which does not support disabled option fields
  • +
  • [Fix] Update query for custom profiles in user management used wrong order for left/right delimiter (affecting mssql) (Bug #11781)
  • +
  • [Feature] Replaced outdated jabber class with the one from the flyspray project
  • +
  • Limit maximum number of allowed characters in messages to 60.000 by default. Admins should increase their PHP time limits if they want to raise this tremedously.
  • diff --git a/phpBB/includes/acp/acp_jabber.php b/phpBB/includes/acp/acp_jabber.php index d58fef14f1..a5bcecb329 100644 --- a/phpBB/includes/acp/acp_jabber.php +++ b/phpBB/includes/acp/acp_jabber.php @@ -41,121 +41,59 @@ class acp_jabber $jab_port = request_var('jab_port', $config['jab_port']); $jab_username = request_var('jab_username', $config['jab_username']); $jab_password = request_var('jab_password', $config['jab_password']); - $jab_resource = request_var('jab_resource', $config['jab_resource']); $jab_package_size = request_var('jab_package_size', $config['jab_package_size']); + $jab_use_ssl = request_var('jab_use_ssl', $config['jab_use_ssl']); - $jabber = new jabber($jab_host, $jab_port, $jab_username, $jab_password, $jab_resource); - $error = array(); - - $message = $user->lang['JAB_SETTINGS_CHANGED']; - $log = 'JAB_SETTINGS_CHANGED'; - - // Are changing (or initialising) a new host or username? If so run some checks and - // try to create account if it doesn't exist - if ($jab_enable) + if ($submit) { - if (($jab_host != $config['jab_host'] || $jab_username != $config['jab_username']) && $jab_username) + $error = array(); + + $message = $user->lang['JAB_SETTINGS_CHANGED']; + $log = 'JAB_SETTINGS_CHANGED'; + + // Is this feature enabled? Then try to establish a connection + if ($jab_enable) { + $jabber = new jabber($jab_host, $jab_port, $jab_username, $jab_password); + if (!$jabber->connect()) { trigger_error($user->lang['ERR_JAB_CONNECT'] . $jabber->get_log() . adm_back_link($this->u_action), E_USER_WARNING); } - // First we'll try to authorise using this account, if that fails we'll try to create it. - if (!($result = $jabber->send_auth())) - { - if (($result = $jabber->account_registration($config['board_email'], $config['sitename'])) <> 2) - { - $error[] = ($result == 1) ? $user->lang['ERR_JAB_USERNAME'] : sprintf($user->lang['ERR_JAB_REGISTER'], $result); - } - else - { - $message = $user->lang['JAB_REGISTERED']; - $log = 'JAB_REGISTER'; - } - } - else - { - $message = $user->lang['JAB_CHANGED']; - $log = 'JAB_CHANGED'; - } - - sleep(1); - $jabber->disconnect(); - } - else if ($jab_password != $config['jab_password']) - { - if (!$jabber->connect()) - { - trigger_error($user->lang['ERR_JAB_CONNECT'] . $jabber->get_log() . adm_back_link($this->u_action), E_USER_WARNING); - } - - if (!$jabber->send_auth()) + // We'll try to authorise using this account + if (!$jabber->login()) { trigger_error($user->lang['ERR_JAB_AUTH'] . $jabber->get_log() . adm_back_link($this->u_action), E_USER_WARNING); } - $jabber->send_presence(NULL, NULL, 'online'); - if (($result = $jabber->change_password($jab_password)) <> 2) - { - $error[] = ($result == 1) ? $user->lang['ERR_JAB_PASSCHG'] : sprintf($user->lang['ERR_JAB_PASSFAIL'], $result); - } - else - { - $message = $user->lang['JAB_PASS_CHANGED']; - $log = 'JAB_PASSCHG'; - } - - sleep(1); $jabber->disconnect(); } - } - // Pull relevant config data - $sql = 'SELECT * - FROM ' . CONFIG_TABLE . " - WHERE config_name LIKE 'jab_%'"; - $result = $db->sql_query($sql); + set_config('jab_enable', $jab_enable); + set_config('jab_host', $jab_host); + set_config('jab_port', $jab_port); + set_config('jab_username', $jab_username); + set_config('jab_password', $jab_password); + set_config('jab_package_size', $jab_package_size); + set_config('jab_use_ssl', $jab_use_ssl); - while ($row = $db->sql_fetchrow($result)) - { - $config_name = $row['config_name']; - $config_value = $row['config_value']; - - $default_config[$config_name] = $config_value; - $new[$config_name] = (isset($_POST[$config_name])) ? request_var($config_name, '') : $default_config[$config_name]; - - if ($submit && !sizeof($error)) - { - set_config($config_name, $new[$config_name]); - } - } - - if ($submit && !sizeof($error)) - { add_log('admin', 'LOG_' . $log); trigger_error($message . adm_back_link($this->u_action)); } - if (sizeof($error)) - { - $template->assign_vars(array( - 'S_WARNING' => true, - 'WARNING_MSG' => implode('
    ', $error)) - ); - } - $template->assign_vars(array( 'U_ACTION' => $this->u_action, - 'JAB_ENABLE' => $new['jab_enable'], + 'JAB_ENABLE' => $jab_enable, 'L_JAB_SERVER_EXPLAIN' => sprintf($user->lang['JAB_SERVER_EXPLAIN'], '', ''), - 'JAB_HOST' => $new['jab_host'], - 'JAB_PORT' => $new['jab_port'], - 'JAB_USERNAME' => $new['jab_username'], - 'JAB_PASSWORD' => $new['jab_password'], - 'JAB_RESOURCE' => $new['jab_resource'], - 'JAB_PACKAGE_SIZE' => $new['jab_package_size']) - ); + 'JAB_HOST' => $jab_host, + 'JAB_PORT' => $jab_port, + 'JAB_USERNAME' => $jab_username, + 'JAB_PASSWORD' => $jab_password, + 'JAB_PACKAGE_SIZE' => $jab_package_size, + 'JAB_USE_SSL' => $jab_use_ssl, + 'S_CAN_USE_SSL' => jabber::can_use_ssl(), + )); } } diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index 0a09926156..231c21252e 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -1067,7 +1067,7 @@ class acp_users foreach ($cp_data as $key => $value) { - $cp_data[$right_delim . $key . $left_delim] = $value; + $cp_data[$left_delim . $key . $right_delim] = $value; unset($cp_data[$key]); } @@ -1616,7 +1616,7 @@ class acp_users } else { - $view_topic = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "t={$row['topic_id']}&p={$row['post_msg_id']}#{$row['post_msg_id']}"); + $view_topic = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "t={$row['topic_id']}&p={$row['post_msg_id']}") . '#p' . $row['post_msg_id']; } $template->assign_block_vars('attach', array( diff --git a/phpBB/includes/functions_jabber.php b/phpBB/includes/functions_jabber.php index 3872346bbc..3ad96df928 100644 --- a/phpBB/includes/functions_jabber.php +++ b/phpBB/includes/functions_jabber.php @@ -10,103 +10,78 @@ /** * -* Class.Jabber.PHP v0.4.2 -* (c) 2004 Nathan "Fritzy" Fritz -* http://cjphp.netflint.net *** fritzy@netflint.net +* Jabber class from Flyspray project +* @version class.jabber2.php 1209 2007-05-12 13:39:10Z floele +* @copyright 2006 Flyspray.org +* @author: Florian Schmitz (floele) * -* This is a bugfix version, specifically for those who can't get -* 0.4 to work on Jabberd2 servers. -* -* last modified: 24.03.2004 13:01:53 -* -* Modified by phpBB Development Team -* version: v0.4.3 +* Modified by Acyd Burn * * @package phpBB3 */ class jabber { + var $connection = null; + var $session = array(); + var $timeout = 10; + var $server; var $port; var $username; var $password; - var $resource; - var $jid; - - var $connection; - var $delay_disconnect; - - var $stream_id; + var $use_ssl; var $enable_logging; var $log_array; - var $iq_sleep_timer; - var $last_ping_time; + var $features = array(); - var $packet_queue; - - var $iq_version_name; - var $iq_version_os; - var $iq_version_version; - - var $error_codes; - - var $connected; - var $keep_alive_id; - var $returned_keep_alive; - var $txnid; - - var $connector; - - var $version; - var $show_version; - - /** - * Constructor - */ - function jabber($server, $port, $username, $password, $resource) + function jabber($server, $port, $username, $password, $use_ssl = false) { $this->server = ($server) ? $server : 'localhost'; - $this->port = ($port) ? $port : '5222'; + $this->port = ($port) ? $port : 5222; $this->username = $username; $this->password = $password; - $this->resource = ($resource) ? $resource : NULL; + $this->use_ssl = ($use_ssl && $this->can_use_ssl) ? true : false; + + // Change port if we use SSL + if ($this->port == 5222 && $this->use_ssl) + { + $this->port = 5223; + } $this->enable_logging = true; $this->log_array = array(); + } - $this->version = '1.0'; - $this->show_version = false; + /** + * Able to use the SSL functionality? + */ + function can_use_ssl() + { + // Will not work with PHP >= 5.2.1 until timeout problem with ssl hasn't been fixed (http://bugs.php.net/41236) + return (version_compare(PHP_VERSION, '5.2.1', '<') && @extension_loaded('openssl')) ? true : false; + } - $this->packet_queue = array(); - $this->iq_sleep_timer = $this->delay_disconnect = 1; + /** + * Able to use TLS? + */ + function can_use_tls() + { + if (!@extension_loaded('openssl') || !function_exists('stream_socket_enable_crypto') || !function_exists('stream_get_meta_data') || !function_exists('socket_set_blocking') || !function_exists('stream_get_wrappers')) + { + return false; + } - $this->returned_keep_alive = true; - $this->txnid = 0; + // Make sure the encryption stream is supported + $streams = stream_get_wrappers(); - $this->iq_version_name = "Class.Jabber.PHP -- http://cjphp.netflint.net -- by Nathan 'Fritzy' Fritz, fritz@netflint.net"; - $this->iq_version_version = '0.4'; - $this->iq_version_os = $_SERVER['SERVER_SOFTWARE']; + if (!in_array('streams.crypto', $streams)) + { + return false; + } - $this->error_codes = array( - 400 => 'Bad Request', - 401 => 'Unauthorised', - 402 => 'Payment Required', - 403 => 'Forbidden', - 404 => 'Not Found', - 405 => 'Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Registration Required', - 408 => 'Request Timeout', - 409 => 'Conflict', - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Remove Server Error', - 503 => 'Service Unavailable', - 504 => 'Remove Server Timeout', - 510 => 'Disconnected' - ); + return true; } /** @@ -114,31 +89,28 @@ class jabber */ function connect() { - $this->connector = new cjp_standard_connector; - - if ($this->connector->open_socket($this->server, $this->port)) +/* if (!$this->check_jid($this->username . '@' . $this->server)) { - $this->send_packet("\n"); - $this->send_packet("show_version) ? " version='{$this->version}'" : '') . ">\n"); + $this->add_to_log('Error: Jabber ID is not valid: ' . $this->username . '@' . $this->server); + return false; + }*/ - sleep(2); + $this->session['ssl'] = $this->use_ssl; - if ($this->_check_connected()) - { - $this->connected = true; // Nathan Fritz - return true; - } - else - { - $this->add_to_log('ERROR: connect() #1'); - return false; - } + if ($this->open_socket($this->server, $this->port, $this->use_ssl)) + { + $this->send("\n"); + $this->send("\n"); } else { - $this->add_to_log('ERROR: connect() #2'); + $this->add_to_log('Error: connect() #2'); return false; } + + // Now we listen what the server has to say...and give appropriate responses + $this->response($this->listen()); + return true; } /** @@ -146,529 +118,104 @@ class jabber */ function disconnect() { - if (is_int($this->delay_disconnect)) + if ($this->connected()) { - sleep($this->delay_disconnect); + // disconnect gracefully + if (isset($this->session['sent_presence'])) + { + $this->presence('offline', '', true); + } + + $this->send(''); + $this->session = array(); + return fclose($this->connection); } - $this->send_packet(''); - $this->connector->close_socket(); + return false; } /** - * Send authentication request + * Connected? */ - function send_auth() + function connected() { - $this->auth_id = 'auth_' . md5(time() . $_SERVER['REMOTE_ADDR']); - $this->resource = ($this->resource != NULL) ? $this->resource : ('Class.Jabber.PHP ' . md5($this->auth_id)); - $this->jid = "{$this->username}@{$this->server}/{$this->resource}"; + return (is_resource($this->connection) && !feof($this->connection)) ? true : false; + } - // request available authentication methods - $payload = "{$this->username}"; - $packet = $this->send_iq(NULL, 'get', $this->auth_id, 'jabber:iq:auth', $payload); - // was a result returned? - if ($this->get_info_from_iq_type($packet) == 'result' && $this->get_info_from_iq_id($packet) == $this->auth_id) + /** + * Initiates login (using data from contructor, after calling connect()) + * @access public + * @return bool + */ + function login() + { + if (!sizeof($this->features)) { - // yes, now check for auth method availability in descending order (best to worst) - if (isset($packet['iq']['#']['query'][0]['#']['sequence'][0]['#']) && isset($packet['iq']['#']['query'][0]['#']['token'][0]['#'])) - { - // auth_0k - return $this->_sendauth_ok($packet['iq']['#']['query'][0]['#']['token'][0]['#'], $packet['iq']['#']['query'][0]['#']['sequence'][0]['#']); - } - else if (isset($packet['iq']['#']['query'][0]['#']['digest'])) - { - // digest - return $this->_sendauth_digest(); - } - else if ($packet['iq']['#']['query'][0]['#']['password']) - { - // plain text - return $this->_sendauth_plaintext(); - } - else - { - $this->add_to_log('ERROR: send_auth() #2 - No auth method available!'); - return false; - } + $this->add_to_log('Error: No feature information from server available.'); + return false; + } + + return $this->response($this->features); + } + + /** + * Send data to the Jabber server + * @param string $xml + * @access public + * @return bool + */ + function send($xml) + { + if ($this->connected()) + { + $xml = trim($xml); + $this->add_to_log('SEND: '. $xml); + return fwrite($this->connection, $xml); } else { - // no result returned - $this->add_to_log('ERROR: send_auth() #1'); + $this->add_to_log('Error: Could not send, connection lost (flood?).'); return false; } } /** - * Register account + * OpenSocket + * @param string $server host to connect to + * @param int $port port number + * @param bool $use_ssl use ssl or not + * @access public + * @return bool */ - function account_registration($reg_email = NULL, $reg_name = NULL) + function open_socket($server, $port, $use_ssl = false) { - $packet = $this->send_iq($this->server, 'get', 'reg_01', 'jabber:iq:register'); - - if ($packet) + if (@function_exists('dns_get_record')) { - // just in case a key was passed back from the server - $key = $this->get_info_from_iq_key($packet); - unset($packet); - - $payload = "{$this->username} - {$this->password} - $reg_email - $reg_name\n"; - - $payload .= ($key) ? "$key\n" : ''; - - $packet = $this->send_iq($this->server, 'set', 'reg_01', 'jabber:iq:register', $payload); - - if ($this->get_info_from_iq_type($packet) == 'result') + $record = dns_get_record("_xmpp-client._tcp.$server", DNS_SRV); + if (!empty($record)) { - $return_code = (isset($packet['iq']['#']['query'][0]['#']['registered'][0]['#'])) ? 1 : 2; - $this->jid = ($this->resource) ? "{$this->username}@{$this->server}/{$this->resource}" : "{$this->username}@{$this->server}"; + $server = $record[0]['target']; } - else if ($this->get_info_from_iq_type($packet) == 'error' && isset($packet['iq']['#']['error'][0]['#'])) - { - // "conflict" error, i.e. already registered - if ($packet['iq']['#']['error'][0]['@']['code'] == '409') - { - $return_code = 1; - } - else - { - $return_code = 'Error ' . $packet['iq']['#']['error'][0]['@']['code'] . ': ' . $packet['iq']['#']['error'][0]['#']; - } - } - - return $return_code; } else { - return 3; + $this->add_to_log('Warning: dns_get_record function not found. GTalk will not work.'); } - } - /** - * Change password - */ - function change_password($new_password) - { - $packet = $this->send_iq($this->server, 'get', 'A0', 'jabber:iq:register'); + $server = $use_ssl ? 'ssl://' . $server : $server; - if ($packet) + if ($this->connection = @fsockopen($server, $port, $errorno, $errorstr, $this->timeout)) { - // just in case a key was passed back from the server - $key = $this->get_info_from_iq_key($packet); - unset($packet); + socket_set_blocking($this->connection, 0); + socket_set_timeout($this->connection, 60); - $payload = "{$this->username} - {$new_password}\n"; - $payload .= ($key) ? "$key\n" : ''; - - $packet = $this->send_iq($this->server, 'set', 'A0', 'jabber:iq:register', $payload); - - if ($this->get_info_from_iq_type($packet) == 'result') - { - $return_code = (isset($packet['iq']['#']['query'][0]['#']['registered'][0]['#'])) ? 1 : 2; - } - else if ($this->get_info_from_iq_type($packet) == 'error' && isset($packet['iq']['#']['error'][0]['#'])) - { - // "conflict" error, i.e. already registered - if ($packet['iq']['#']['error'][0]['@']['code'] == '409') - { - $return_code = 1; - } - else - { - $return_code = 'Error ' . $packet['iq']['#']['error'][0]['@']['code'] . ': ' . $packet['iq']['#']['error'][0]['#']; - } - } - - return $return_code; - } - else - { - return 3; - } - } - - /** - * Send packet - */ - function send_packet($xml) - { - $xml = trim($xml); - - if ($this->connector->write_to_socket($xml)) - { - $this->add_to_log('SEND: ' . $xml); return true; } - else - { - $this->add_to_log('ERROR: send_packet() #1'); - return false; - } - } - /** - * Listen to socket - */ - function listen() - { - $incoming = ''; - - while ($line = $this->connector->read_from_socket(4096)) - { - $incoming .= $line; - } - - $incoming = trim($incoming); - - if ($incoming != '') - { - $this->add_to_log('RECV: ' . $incoming); - $temp = $this->_split_incoming($incoming); - - for ($i = 0, $size = sizeof($temp); $i < $size; $i++) - { - $this->packet_queue[] = $this->xmlize($temp[$i]); - } - } - - return true; - } - - /** - * Strip jid - */ - function strip_jid($jid = NULL) - { - preg_match('#(.*)\/(.*)#Ui', $jid, $temp); - return ($temp[1] != '') ? $temp[1] : $jid; - } - - /** - * Send a message - */ - function send_message($to, $type = 'normal', $id = NULL, $content = NULL, $payload = NULL) - { - if ($to && is_array($content)) - { - if (!$id) - { - $id = $type . '_' . time(); - } - - $this->_array_xmlspecialchars($content); - - $xml = "\n"; - - if (!empty($content['subject'])) - { - $xml .= '' . $content['subject'] . "\n"; - } - - if (!empty($content['thread'])) - { - $xml .= '' . $content['thread'] . "\n"; - } - - $xml .= '' . $content['body'] . "\n"; - $xml .= $payload; - $xml .= "\n"; - - if ($this->send_packet($xml)) - { - return true; - } - else - { - $this->add_to_log('ERROR: send_message() #1'); - } - } - else - { - $this->add_to_log('ERROR: send_message() #2'); - return false; - } - } - - /** - * Send presence - */ - function send_presence($type = NULL, $to = NULL, $status = NULL, $show = NULL, $priority = NULL) - { - $xml = '\n" : " />\n"; - - $xml .= ($status) ? " $status\n" : ''; - $xml .= ($show) ? " $show\n" : ''; - $xml .= ($priority) ? " $priority\n" : ''; - - $xml .= ($status || $show || $priority) ? "\n" : ''; - - if ($this->send_packet($xml)) - { - return true; - } - else - { - $this->add_to_log('ERROR: send_presence() #1'); - return false; - } - } - - /** - * Send error - */ - function send_error($to, $id = NULL, $error_number, $error_message = NULL) - { - $xml = "error_codes[$error_number]; - $xml .= "\n"; - $xml .= ''; - - $this->send_packet($xml); - } - - /** - * Get first from queue - */ - function get_first_from_queue() - { - return array_shift($this->packet_queue); - } - - /** - * Get from queue by id - */ - function get_from_queue_by_id($packet_type, $id) - { - $found_message = false; - - foreach ($this->packet_queue as $key => $value) - { - if ($value[$packet_type]['@']['id'] == $id) - { - $found_message = $value; - unset($this->packet_queue[$key]); - - break; - } - } - - return (is_array($found_message)) ? $found_message : false; - } - - /** - * Call handler - */ - function call_handler($packet = NULL) - { - $packet_type = $this->_get_packet_type($packet); - - if ($packet_type == 'message') - { - $type = $packet['message']['@']['type']; - $type = ($type != '') ? $type : 'normal'; - $funcmeth = "handler_message_$type"; - } - else if ($packet_type == 'iq') - { - $namespace = $packet['iq']['#']['query'][0]['@']['xmlns']; - $namespace = str_replace(':', '_', $namespace); - $funcmeth = "handler_iq_$namespace"; - } - else if ($packet_type == 'presence') - { - $type = $packet['presence']['@']['type']; - $type = ($type != '') ? $type : 'available'; - $funcmeth = "handler_presence_$type"; - } - - if ($funcmeth != '') - { - if (function_exists($funcmeth)) - { - call_user_func($funcmeth, $packet); - } - else if (method_exists($this, $funcmeth)) - { - call_user_func(array(&$this, $funcmeth), $packet); - } - else - { - $this->handler_not_implemented($packet); - $this->add_to_log("ERROR: call_handler() #1 - neither method nor function $funcmeth() available"); - } - } - } - - /** - * Cruise Control - */ - function cruise_control($seconds = -1) - { - $count = 0; - - while ($count != $seconds) - { - $this->listen(); - - do - { - $packet = $this->get_first_from_queue(); - - if ($packet) - { - $this->call_handler($packet); - } - } - while (sizeof($this->packet_queue) > 1); - - $count += 0.25; - usleep(250000); - - if (($this->last_ping_time + 180) < time()) - { - // Modified by Nathan Fritz - if ($this->returned_keep_alive == false) - { - $this->connected = false; - $this->add_to_log('EVENT: Disconnected'); - } - - if ($this->returned_keep_alive == true) - { - $this->connected = true; - } - - $this->returned_keep_alive = false; - - $this->keep_alive_id = 'keep_alive_' . time(); - // $this->send_packet("", 'cruise_control'); - $this->send_packet(""); - $this->last_ping_time = time(); - } - } - - return true; - } - - /** - * Send iq - */ - function send_iq($to = NULL, $type = 'get', $id = NULL, $xmlns = NULL, $payload = NULL, $from = NULL) - { - if (!preg_match('#^(get|set|result|error)$#', $type)) - { - unset($type); - - $this->add_to_log("ERROR: send_iq() #2 - type must be 'get', 'set', 'result' or 'error'"); - return false; - } - else if ($id && $xmlns) - { - $xml = "send_packet($xml); - sleep($this->iq_sleep_timer); - $this->listen(); - - return (preg_match('#^(get|set)$#', $type)) ? $this->get_from_queue_by_id('iq', $id) : true; - } - else - { - $this->add_to_log('ERROR: send_iq() #1 - to, id and xmlns are mandatory'); - return false; - } - } - - /** - * get the transport registration fields - * method written by Steve Blinch, http://www.blitzaffe.com - */ - function transport_registration_details($transport) - { - $this->txnid++; - $packet = $this->send_iq($transport, 'get', "reg_{$this->txnid}", 'jabber:iq:register', NULL, $this->jid); - - if ($packet) - { - $res = array(); - - foreach ($packet['iq']['#']['query'][0]['#'] as $element => $data) - { - if ($element != 'instructions' && $element != 'key') - { - $res[] = $element; - } - } - - return $res; - } - else - { - return 3; - } - } - - /** - * register with the transport - * method written by Steve Blinch, http://www.blitzaffe.com - */ - function transport_registration($transport, $details) - { - $this->txnid++; - $packet = $this->send_iq($transport, 'get', "reg_{$this->txnid}", 'jabber:iq:register', NULL, $this->jid); - - if ($packet) - { - // just in case a key was passed back from the server - $key = $this->get_info_from_iq_key($packet); - unset($packet); - - $payload = ($key) ? "$key\n" : ''; - foreach ($details as $element => $value) - { - $payload .= "<$element>$value\n"; - } - - $packet = $this->send_iq($transport, 'set', "reg_{$this->txnid}", 'jabber:iq:register', $payload); - - if ($this->get_info_from_iq_type($packet) == 'result') - { - $return_code = (isset($packet['iq']['#']['query'][0]['#']['registered'][0]['#'])) ? 1 : 2; - } - else if ($this->get_info_from_iq_type($packet) == 'error') - { - if (isset($packet['iq']['#']['error'][0]['#'])) - { - $return_code = 'Error ' . $packet['iq']['#']['error'][0]['@']['code'] . ': ' . $packet['iq']['#']['error'][0]['#']; - $this->add_to_log('ERROR: transport_registration()'); - } - } - - return $return_code; - } - else - { - return 3; - } + // Apparently an error occured... + $this->add_to_log('Error: open_socket() - ' . $errorstr); + return false; } /** @@ -678,7 +225,7 @@ class jabber { if ($this->enable_logging && sizeof($this->log_array)) { - return implode("

    ", $this->log_array); + return '

    ' . implode("

    ", $this->log_array); } return ''; @@ -691,640 +238,483 @@ class jabber { if ($this->enable_logging) { - $this->log_array[] = htmlspecialchars($string); + $this->log_array[] = utf8_htmlspecialchars($string); } } - - // ====================================================================== - // private methods - // ====================================================================== - /** - * Send auth - * @access private + * Listens to the connection until it gets data or the timeout is reached. + * Thus, it should only be called if data is expected to be received. + * @access public + * @return mixed either false for timeout or an array with the received data */ - function _sendauth_ok($zerok_token, $zerok_sequence) + function listen($timeout = 10, $wait = false) { - // initial hash of password - $zerok_hash = sha1($this->password); - - // sequence 0: hash of hashed-password and token - $zerok_hash = sha1($zerok_hash . $zerok_token); - - // repeat as often as needed - for ($i = 0; $i < $zerok_sequence; $i++) + if (!$this->connected()) { - $zerok_hash = sha1($zerok_hash); + return false; } - $payload = "{$this->username} - $zerok_hash - {$this->resource}"; + // Wait for a response until timeout is reached + $start = time(); + $data = ''; - $packet = $this->send_iq(NULL, 'set', $this->auth_id, 'jabber:iq:auth', $payload); - - // was a result returned? - if ($this->get_info_from_iq_type($packet) == 'result' && $this->get_info_from_iq_id($packet) == $this->auth_id) + do { - return true; + $read = trim(fread($this->connection, 4096)); + $data .= $read; + } + while (time() <= $start + $timeout && ($wait || $data == '' || $read != '' || (substr(rtrim($data), -1) != '>'))); + + if ($data != '') + { + $this->add_to_log('RECV: '. $data); + return $this->xmlize($data); } else { - $this->add_to_log('ERROR: _sendauth_ok() #1'); + $this->add_to_log('Timeout, no response from server.'); return false; } } /** - * Send auth digest - * @access private + * Initiates account registration (based on data used for contructor) + * @access public + * @return bool */ - function _sendauth_digest() + function register() { - $payload = "{$this->username} - {$this->resource} - " . sha1($this->stream_id . $this->password) . ""; - - $packet = $this->send_iq(NULL, 'set', $this->auth_id, 'jabber:iq:auth', $payload); - - // was a result returned? - if ($this->get_info_from_iq_type($packet) == 'result' && $this->get_info_from_iq_id($packet) == $this->auth_id) + if (!isset($this->session['id']) || isset($this->session['jid'])) { - return true; - } - else - { - $this->add_to_log('ERROR: _sendauth_digest() #1'); + $this->add_to_log('Error: Cannot initiate registration.'); return false; } + + $this->send(""); + return $this->response($this->listen()); } /** - * Send auth plain - * @access private + * Sets account presence. No additional info required (default is "online" status) + * @param $message online, offline... + * @param $type dnd, away, chat, xa or nothing + * @access public + * @return bool */ - function _sendauth_plaintext() + function send_presence($message = '', $type = '', $unavailable = false) { - $payload = "{$this->username} - {$this->password} - {$this->resource}"; - - $packet = $this->send_iq(NULL, 'set', $this->auth_id, 'jabber:iq:auth', $payload); - - // was a result returned? - if ($this->get_info_from_iq_type($packet) == 'result' && $this->get_info_from_iq_id($packet) == $this->auth_id) + if (!isset($this->session['jid'])) { - return true; - } - else - { - $this->add_to_log('ERROR: _sendauth_plaintext() #1'); + $this->add_to_log('ERROR: send_presence() - Cannot set presence at this point, no jid given.'); return false; } + + $type = strtolower($type); + $type = (in_array($type, array('dnd', 'away', 'chat', 'xa'))) ? ''. $type .'' : ''; + + $unavailable = ($unavailable) ? " type='unavailable'" : ''; + $message = ($message) ? '' . utf8_htmlspecialchars($message) .'' : ''; + + $this->session['sent_presence'] = !$unavailable; + + return $this->send("" . $type . $message . ''); } /** - * Listen on socket - * @access private + * This handles all the different XML elements + * @param array $xml + * @access public + * @return bool */ - function _listen_incoming() + function response($xml) { - $incoming = ''; - - while ($line = $this->connector->read_from_socket(4096)) + if (!is_array($xml) || !sizeof($xml)) { - $incoming .= $line; + return false; } - $incoming = trim($incoming); - - if ($incoming != '') + // did we get multiple elements? do one after another + // array('message' => ..., 'presence' => ...) + if (sizeof($xml) > 1) { - $this->add_to_log('RECV: ' . $incoming); - } - - return $this->xmlize($incoming); - } - - /** - * Check if connected - * @access private - */ - function _check_connected($in_tls = false) - { - $incoming_array = $this->_listen_incoming(); - - if (is_array($incoming_array)) - { - if ($incoming_array['stream:stream']['@']['from'] == $this->server && $incoming_array['stream:stream']['@']['xmlns'] == 'jabber:client' && $incoming_array['stream:stream']['@']['xmlns:stream'] == 'http://etherx.jabber.org/streams') + foreach ($xml as $key => $value) { - $this->stream_id = $incoming_array['stream:stream']['@']['id']; - - // We only start TLS authentication if not called within TLS authentication itself, which may produce a never ending loop... - if (!$in_tls) + $this->response(array($key => $value)); + } + return; + } + else + { + // or even multiple elements of the same type? + // array('message' => array(0 => ..., 1 => ...)) + if (sizeof(reset($xml)) > 1) + { + foreach (reset($xml) as $value) { - if (!empty($incoming_array['stream:stream']['#']['stream:features'][0]['#']['starttls'][0]['@']['xmlns']) && $incoming_array['stream:stream']['#']['stream:features'][0]['#']['starttls'][0]['@']['xmlns'] == 'urn:ietf:params:xml:ns:xmpp-tls') - { - return $this->_starttls(); - } + $this->response(array(key($xml) => array(0 => $value))); } - - return true; - } - else - { - $this->add_to_log('ERROR: _check_connected() #1'); - return false; + return; } } - else + + switch (key($xml)) { - $this->add_to_log('ERROR: _check_connected() #2'); - return false; - } - } + case 'stream:stream': + // Connection initialised (or after authentication). Not much to do here... + $this->session['id'] = $xml['stream:stream'][0]['@']['id']; - /** - * Start TLS/SSL session if supported (PHP5.1) - * @access private - */ - function _starttls() - { - if (!function_exists('stream_socket_enable_crypto') || !function_exists('stream_get_meta_data') || !function_exists('socket_set_blocking') || !function_exists('stream_get_wrappers')) - { - $this->add_to_log('WARNING: TLS is not available'); - return true; - } - - // Make sure the encryption stream is supported - $streams = stream_get_wrappers(); - - if (!in_array('streams.crypto', $streams)) - { - $this->add_to_log('WARNING: SSL/crypto stream not supported'); - return true; - } - - $this->send_packet("\n"); - sleep(2); - $incoming_array = $this->_listen_incoming(); - - if (!is_array($incoming_array)) - { - $this->add_to_log('ERROR: _starttls() #1'); - return false; - } - - if ($incoming_array['proceed']['@']['xmlns'] != 'urn:ietf:params:xml:ns:xmpp-tls') - { - $this->add_to_log('ERROR: _starttls() #2'); - return false; - } - - $meta = stream_get_meta_data($this->connector->active_socket); - socket_set_blocking($this->connector->active_socket, 1); - - $result = @stream_socket_enable_crypto($this->connector->active_socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); - if (!$result) - { - socket_set_blocking($this->connector->active_socket, $meta['blocked']); - $this->add_to_log('ERROR: _starttls() #3'); - return false; - } - - socket_set_blocking($this->connector->active_socket, $meta['blocked']); - - $this->send_packet("\n"); - $this->send_packet("show_version) ? " version='{$this->version}'" : '') . ">\n"); - sleep(2); - - if (!$this->_check_connected(true)) - { - $this->add_to_log('ERROR: _starttls() #4'); - return false; - } - - return true; - } - - /** - * Get packet type - * @access private - */ - function _get_packet_type($packet = NULL) - { - if (is_array($packet)) - { - reset($packet); - $packet_type = key($packet); - } - - return ($packet_type) ? $packet_type : false; - } - - /** - * Split incoming packet - * @access private - */ - function _split_incoming($incoming) - { - $temp = preg_split('#<(message|iq|presence|stream)#', $incoming, -1, PREG_SPLIT_DELIM_CAPTURE); - $array = array(); - - for ($i = 1, $size = sizeof($temp); $i < $size; $i += 2) - { - $array[] = '<' . $temp[$i] . $temp[($i + 1)]; - } - - return $array; - } - - /** - * Recursively prepares the strings in an array to be used in XML data. - * @access private - */ - function _array_xmlspecialchars(&$array) - { - if (is_array($array)) - { - foreach ($array as $k => $v) - { - if (is_array($v)) + if (isset($xml['stream:stream'][0]['#']['stream:features'])) { - $this->_array_xmlspecialchars($array[$k]); + // we already got all info we need + $this->features = $xml['stream:stream'][0]['#']; } else { - $this->_xmlspecialchars($array[$k]); + $this->features = $this->listen(); } + + // go on with authentication? + if (isset($this->features['stream:features'][0]['#']['bind'])) + { + return $this->response($this->features); + } + break; + + case 'stream:features': + // Resource binding after successful authentication + if (isset($this->session['authenticated'])) + { + // session required? + $this->session['sess_required'] = isset($xml['stream:features'][0]['#']['session']); + + $this->send(" + + functions_jabber.phpbb.php + + "); + return $this->response($this->listen()); + } + + // Let's use TLS if SSL is not enabled and we can actually use it + if (!$this->session['ssl'] && $this->can_use_tls() && isset($xml['stream:features'][0]['#']['starttls'])) + { + $this->add_to_log('Switching to TLS.'); + $this->send("\n"); + return $this->response($this->listen()); + } + + // Does the server support SASL authentication? + // I hope so, because we do (and no other method). + if (isset($xml['stream:features'][0]['#']['mechanisms'][0]['@']['xmlns']) && $xml['stream:features'][0]['#']['mechanisms'][0]['@']['xmlns'] == 'urn:ietf:params:xml:ns:xmpp-sasl') + { + // Now decide on method + $methods = array(); + + foreach ($xml['stream:features'][0]['#']['mechanisms'][0]['#']['mechanism'] as $value) + { + $methods[] = $value['#']; + } + + // we prefer this one + if (in_array('DIGEST-MD5', $methods)) + { + $this->send(""); + } + else if (in_array('PLAIN', $methods) && ($this->session['ssl'] || $this->session['tls'])) + { + // we don't want to use this (neither does the server usually) if no encryption is in place + $this->send("" + . base64_encode(chr(0) . $this->username . '@' . $this->server . chr(0) . $this->password) . + ''); + } + else + { + // not good... + $this->add_to_log('Error: No authentication method supported.'); + $this->disconnect(); + return false; + } + + return $this->response($this->listen()); + } + else + { + // ok, this is it. bye. + $this->add_to_log('Error: Server does not offer SASL authentication.'); + $this->disconnect(); + return false; + } + break; + + case 'challenge': + // continue with authentication...a challenge literally -_- + $decoded = base64_decode($xml['challenge'][0]['#']); + $decoded = $this->parse_data($decoded); + + if (!isset($decoded['digest-uri'])) + { + $decoded['digest-uri'] = 'xmpp/'. $this->server; + } + + // better generate a cnonce, maybe it's needed + $str = ''; + mt_srand((double)microtime()*10000000); + + for ($i = 0; $i < 32; $i++) + { + $str .= chr(mt_rand(0, 255)); + } + $decoded['cnonce'] = base64_encode($str); + + // second challenge? + if (isset($decoded['rspauth'])) + { + $this->send(""); + } + else + { + $response = array( + 'username' => $this->username, + 'response' => $this->encrypt_password(array_merge($decoded, array('nc' => '00000001'))), + 'charset' => 'utf-8', + 'nc' => '00000001', + ); + + foreach (array('nonce', 'qop', 'digest-uri', 'realm', 'cnonce') as $key) + { + if (isset($decoded[$key])) + { + $response[$key] = $decoded[$key]; + } + } + + $this->send("" . base64_encode($this->implode_data($response)) . ''); + } + + return $this->response($this->listen()); + break; + + case 'failure': + $this->add_to_log('Error: Server sent "failure".'); + $this->disconnect(); + return false; + break; + + case 'proceed': + // continue switching to TLS + $meta = stream_get_meta_data($this->connection); + socket_set_blocking($this->connection, 1); + + if (!stream_socket_enable_crypto($this->connection, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) + { + $this->add_to_log('Error: TLS mode change failed.'); + return false; + } + + socket_set_blocking($this->connection, $meta['blocked']); + $this->session['tls'] = true; + + // new stream + $this->send("\n"); + $this->send("\n"); + + return $this->response($this->listen()); + break; + + case 'success': + // Yay, authentication successful. + $this->send("\n"); + $this->session['authenticated'] = true; + + // we have to wait for another response + return $this->response($this->listen()); + break; + + case 'iq': + // we are not interested in IQs we did not expect + if (!isset($xml['iq'][0]['@']['id'])) + { + return false; + } + + // multiple possibilities here + switch ($xml['iq'][0]['@']['id']) + { + case 'bind_1': + $this->session['jid'] = $xml['iq'][0]['#']['bind'][0]['#']['jid'][0]['#']; + + // and (maybe) yet another request to be able to send messages *finally* + if ($this->session['sess_required']) + { + $this->send(" + + "); + return $this->response($this->listen()); + } + + return true; + break; + + case 'sess_1': + return true; + break; + + case 'reg_1': + // more than instructions, username and password? + if (sizeof($xml['iq'][0]['#']['query'][0]['#']) > 3) + { + $this->add_to_log('Server requires too much data for registration.'); + return false; + } + + $this->send(" + + " . utf8_htmlspecialchars($this->username) . " + " . utf8_htmlspecialchars($this->password) . " + + "); + return $this->response($this->listen()); + break; + + case 'reg_2': + // registration end + if (isset($xml['iq'][0]['#']['error'])) + { + $this->add_to_log('Warning: Registration failed.'); + return false; + } + return true; + break; + + case 'unreg_1': + return true; + break; + + default: + $this->add_to_log('Notice: Received unexpected IQ.'); + return false; + break; + } + break; + + case 'message': + // we are only interested in content... + if (!isset($xml['message'][0]['#']['body'])) + { + return false; + } + + $message['body'] = $xml['message'][0]['#']['body'][0]['#']; + $message['from'] = $xml['message'][0]['@']['from']; + + if (isset($xml['message'][0]['#']['subject'])) + { + $message['subject'] = $xml['message'][0]['#']['subject'][0]['#']; + } + $this->session['messages'][] = $message; + break; + + default: + // hm...don't know this response + $this->add_to_log('Notice: Unknown server response (' . key($xml) . ')'); + return false; + break; + } + } + + function send_message($to, $text, $subject = '', $type = 'normal') + { + if (!isset($this->session['jid'])) + { + return false; + } + + if (!in_array($type, array('chat', 'normal', 'error', 'groupchat', 'headline'))) + { + $type = 'normal'; + } + + return $this->send(" + " . utf8_htmlspecialchars($subject) . " + " . utf8_htmlspecialchars($text) . " + " + ); + } + + /** + * Encrypts a password as in RFC 2831 + * @param array $data Needs data from the client-server connection + * @access public + * @return string + */ + function encrypt_password($data) + { + // let's me think about again... + foreach (array('realm', 'cnonce', 'digest-uri') as $key) + { + if (!isset($data[$key])) + { + $data[$key] = ''; } } - } - /** - * Prepares a string for usage in XML data. - * @access private - */ - function _xmlspecialchars(&$string) - { - // we only have a few entities in xml - $string = str_replace(array('&', '>', '<', '"', '\''), array('&', '>', '<', '"', '''), $string); - } + $pack = md5($this->username . ':' . $data['realm'] . ':' . $this->password); - // ====================================================================== - // parsers - // ====================================================================== - - /** - * Get info from message (from) - */ - function get_info_from_message_from($packet = NULL) - { - return (is_array($packet)) ? $packet['message']['@']['from'] : false; - } - - /** - * Get info from message (type) - */ - function get_info_from_message_type($packet = NULL) - { - return (is_array($packet)) ? $packet['message']['@']['type'] : false; - } - - /** - * Get info from message (id) - */ - function get_info_from_message_id($packet = NULL) - { - return (is_array($packet)) ? $packet['message']['@']['id'] : false; - } - - /** - * Get info from message (thread) - */ - function get_info_from_message_thread($packet = NULL) - { - return (is_array($packet)) ? $packet['message']['#']['thread'][0]['#'] : false; - } - - /** - * Get info from message (subject) - */ - function get_info_from_message_subject($packet = NULL) - { - return (is_array($packet)) ? $packet['message']['#']['subject'][0]['#'] : false; - } - - /** - * Get info from message (body) - */ - function get_info_from_message_body($packet = NULL) - { - return (is_array($packet)) ? $packet['message']['#']['body'][0]['#'] : false; - } - - /** - * Get info from message (xmlns) - */ - function get_info_from_message_xmlns($packet = NULL) - { - return (is_array($packet)) ? $packet['message']['#']['x'] : false; - } - - /** - * Get info from message (error) - */ - function get_info_from_message_error($packet = NULL) - { - $error = preg_replace('#^\/$#', '', ($packet['message']['#']['error'][0]['@']['code'] . '/' . $packet['message']['#']['error'][0]['#'])); - return (is_array($packet)) ? $error : false; - } - - // ====================================================================== - // parsers - // ====================================================================== - - /** - * Get info from iq (from) - */ - function get_info_from_iq_from($packet = NULL) - { - return (is_array($packet)) ? $packet['iq']['@']['from'] : false; - } - - /** - * Get info from iq (type) - */ - function get_info_from_iq_type($packet = NULL) - { - return (is_array($packet)) ? $packet['iq']['@']['type'] : false; - } - - /** - * Get info from iq (id) - */ - function get_info_from_iq_id($packet = NULL) - { - return (is_array($packet)) ? $packet['iq']['@']['id'] : false; - } - - /** - * Get info from iq (key) - */ - function get_info_from_iq_key($packet = NULL) - { - return (is_array($packet) && isset($packet['iq']['#']['query'][0]['#']['key'][0]['#'])) ? $packet['iq']['#']['query'][0]['#']['key'][0]['#'] : false; - } - - /** - * Get info from iq (error) - */ - function get_info_from_iq_error($packet = NULL) - { - $error = preg_replace('#^\/$#', '', ($packet['iq']['#']['error'][0]['@']['code'] . '/' . $packet['iq']['#']['error'][0]['#'])); - return (is_array($packet)) ? $error : false; - } - - // ====================================================================== - // handlers - // ====================================================================== - - /** - * Message type normal - */ - function handler_message_normal($packet) - { - $from = $packet['message']['@']['from']; - $this->add_to_log("EVENT: Message (type normal) from $from"); - } - - /** - * Message type chat - */ - function handler_message_chat($packet) - { - $from = $packet['message']['@']['from']; - $this->add_to_log("EVENT: Message (type chat) from $from"); - } - - /** - * Message type groupchat - */ - function handler_message_groupchat($packet) - { - $from = $packet['message']['@']['from']; - $this->add_to_log("EVENT: Message (type groupchat) from $from"); - } - - /** - * Message type headline - */ - function handler_message_headline($packet) - { - $from = $packet['message']['@']['from']; - $this->add_to_log("EVENT: Message (type headline) from $from"); - } - - /** - * Message type error - */ - function handler_message_error($packet) - { - $from = $packet['message']['@']['from']; - $this->add_to_log("EVENT: Message (type error) from $from"); - } - - // ====================================================================== - // handlers - // ====================================================================== - - /** - * application version updates - */ - function handler_iq_jabber_iq_autoupdate($packet) - { - $from = $this->get_info_from_iq_from($packet); - $id = $this->get_info_from_iq_id($packet); - - $this->send_error($from, $id, 501); - $this->add_to_log("EVENT: jabber:iq:autoupdate from $from"); - } - - /** - * interactive server component properties - */ - function handler_iq_jabber_iq_agent($packet) - { - $from = $this->get_info_from_iq_from($packet); - $id = $this->get_info_from_iq_id($packet); - - $this->send_error($from, $id, 501); - $this->add_to_log("EVENT: jabber:iq:agent from $from"); - } - - /** - * method to query interactive server components - */ - function handler_iq_jabber_iq_agents($packet) - { - $from = $this->get_info_from_iq_from($packet); - $id = $this->get_info_from_iq_id($packet); - - $this->send_error($from, $id, 501); - $this->add_to_log("EVENT: jabber:iq:agents from $from"); - } - - /** - * simple client authentication - */ - function handler_iq_jabber_iq_auth($packet) - { - $from = $this->get_info_from_iq_from($packet); - $id = $this->get_info_from_iq_id($packet); - - $this->send_error($from, $id, 501); - $this->add_to_log("EVENT: jabber:iq:auth from $from"); - } - - /** - * out of band data - */ - function handler_iq_jabber_iq_oob($packet) - { - $from = $this->get_info_from_iq_from($packet); - $id = $this->get_info_from_iq_id($packet); - - $this->send_error($from, $id, 501); - $this->add_to_log("EVENT: jabber:iq:oob from $from"); - } - - /** - * method to store private data on the server - */ - function handler_iq_jabber_iq_private($packet) - { - $from = $this->get_info_from_iq_from($packet); - $id = $this->get_info_from_iq_id($packet); - - $this->send_error($from, $id, 501); - $this->add_to_log("EVENT: jabber:iq:private from $from"); - } - - /** - * method for interactive registration - */ - function handler_iq_jabber_iq_register($packet) - { - $from = $this->get_info_from_iq_from($packet); - $id = $this->get_info_from_iq_id($packet); - - $this->send_error($from, $id, 501); - $this->add_to_log("EVENT: jabber:iq:register from $from"); - } - - /** - * client roster management - */ - function handler_iq_jabber_iq_roster($packet) - { - $from = $this->get_info_from_iq_from($packet); - $id = $this->get_info_from_iq_id($packet); - - $this->send_error($from, $id, 501); - $this->add_to_log("EVENT: jabber:iq:roster from $from"); - } - - /** - * method for searching a user database - */ - function handler_iq_jabber_iq_search($packet) - { - $from = $this->get_info_from_iq_from($packet); - $id = $this->get_info_from_iq_id($packet); - - $this->send_error($from, $id, 501); - $this->add_to_log("EVENT: jabber:iq:search from $from"); - } - - /** - * method for requesting the current time - */ - function handler_iq_jabber_iq_time($packet) - { - if ($this->keep_alive_id == $this->get_info_from_iq_id($packet)) + if (isset($data['authzid'])) { - $this->returned_keep_alive = true; - $this->connected = true; - - $this->add_to_log('EVENT: Keep-Alive returned, connection alive.'); + $a1 = pack('H32', $pack) . sprintf(':%s:%s:%s', $data['nonce'], $data['cnonce'], $data['authzid']); + } + else + { + $a1 = pack('H32', $pack) . sprintf(':%s:%s', $data['nonce'], $data['cnonce']); } - $type = $this->get_info_from_iq_type($packet); - $from = $this->get_info_from_iq_from($packet); - $id = $this->get_info_from_iq_id($packet); - $id = ($id != '') ? $id : 'time_' . time(); + // should be: qop = auth + $a2 = 'AUTHENTICATE:'. $data['digest-uri']; - if ($type == 'get') + return md5(sprintf('%s:%s:%s:%s:%s:%s', md5($a1), $data['nonce'], $data['nc'], $data['cnonce'], $data['qop'], md5($a2))); + } + + /** + * parse_data like a="b",c="d",... + * @param string $data + * @access public + * @return array a => b ... + */ + function parse_data($data) + { + // super basic, but should suffice + $data = explode(',', $data); + $pairs = array(); + + foreach ($data as $pair) { - $payload = '' . gmdate("Ydm\TH:i:s") . '' . date('T') . '' . date("Y/d/m h:i:s A") . ''; - $this->send_iq($from, 'result', $id, 'jabber:iq:time', $payload); + $dd = strpos($pair, '='); + if ($dd) + { + $pairs[substr($pair, 0, $dd)] = trim(substr($pair, $dd + 1), '"'); + } } - - $this->add_to_log("EVENT: jabber:iq:time (type $type) from $from"); + return $pairs; } /** + * opposite of jabber::parse_data() + * @param array $data + * @access public + * @return string */ - function handler_iq_error($packet) + function implode_data($data) { - // We'll do something with these later. This is a placeholder so that errors don't bounce back and forth. - } - - /** - * method for requesting version - */ - function handler_iq_jabber_iq_version($packet) - { - $type = $this->get_info_from_iq_type($packet); - $from = $this->get_info_from_iq_from($packet); - $id = $this->get_info_from_iq_id($packet); - $id = ($id != '') ? $id : 'version_' . time(); - - if ($type == 'get') + $return = array(); + foreach ($data as $key => $value) { - $payload = "{$this->iq_version_name} - {$this->iq_version_os} - {$this->iq_version_version}"; - - //$this->SendIq($from, 'result', $id, "jabber:iq:version", $payload); + $return[] = $key . '="' . $value . '"'; } - - $this->add_to_log("EVENT: jabber:iq:version (type $type) from $from -- DISABLED"); + return implode(',', $return); } - // ====================================================================== - // Generic handlers - // ====================================================================== - - /** - * Generic handler for unsupported requests - */ - function handler_not_implemented($packet) - { - $packet_type = $this->_get_packet_type($packet); - $from = call_user_func(array(&$this, 'get_info_from_' . strtolower($packet_type) . '_from'), $packet); - $id = call_user_func(array(&$this, 'get_info_from_' . strtolower($packet_type) . '_id'), $packet); - - $this->send_error($from, $id, 501); - $this->add_to_log("EVENT: Unrecognized <$packet_type/> from $from"); - } - - // ====================================================================== - // Third party code - // m@d pr0ps to the coders ;) - // ====================================================================== - /** * xmlize() * @author Hans Anderson @@ -1334,6 +724,12 @@ class jabber { $data = trim($data); + if (substr($data, 0, 5) != ''. $data . ''; + } + $vals = $index = $array = array(); $parser = xml_parser_create($encoding); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); @@ -1344,8 +740,13 @@ class jabber $i = 0; $tagname = $vals[$i]['tag']; - $array[$tagname]['@'] = (isset($vals[$i]['attributes'])) ? $vals[$i]['attributes'] : array(); - $array[$tagname]['#'] = $this->_xml_depth($vals, $i); + $array[$tagname][0]['@'] = (isset($vals[$i]['attributes'])) ? $vals[$i]['attributes'] : array(); + $array[$tagname][0]['#'] = $this->_xml_depth($vals, $i); + + if (substr($data, 0, 5) != ''; - } - - foreach ($array as $key => $val) - { - if (is_array($val)) - { - $this->traverse_xmlize($val, $arr_name . '[' . $key . ']', $level + 1); - } - else - { - $GLOBALS['traverse_array'][] = '$' . $arr_name . '[' . $key . '] = "' . $val . "\"\n"; - } - } - - if ($level == 0) - { - echo ''; - } - - return 1; - } -} - -/** -* Jabber Connector -* @package phpBB3 -*/ -class cjp_standard_connector -{ - var $active_socket; - - /** - * Open socket - */ - function open_socket($server, $port) - { - if (function_exists('dns_get_record')) - { - $record = dns_get_record("_xmpp-client._tcp.$server", DNS_SRV); - - if (!empty($record)) - { - $server = $record[0]['target']; - $port = $record[0]['port']; - } - } - - $errno = 0; - $errstr = ''; - - if ($this->active_socket = @fsockopen($server, $port, $errno, $errstr, 5)) - { - @socket_set_blocking($this->active_socket, 0); - @socket_set_timeout($this->active_socket, 31536000); - - return true; - } - else - { - return false; - } - } - - /** - * Close socket - */ - function close_socket() - { - return @fclose($this->active_socket); - } - - /** - * Write to socket - */ - function write_to_socket($data) - { - return @fwrite($this->active_socket, $data); - } - - /** - * Read from socket - */ - function read_from_socket($chunksize) - { - $buffer = @fread($this->active_socket, $chunksize); - $buffer = (STRIP) ? stripslashes($buffer) : $buffer; - - return $buffer; - } } ?> \ No newline at end of file diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php index d4052a8968..01d8b4854f 100644 --- a/phpBB/includes/functions_messenger.php +++ b/phpBB/includes/functions_messenger.php @@ -458,7 +458,7 @@ class messenger if (!$use_queue) { include_once($phpbb_root_path . 'includes/functions_jabber.' . $phpEx); - $this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], $config['jab_password'], $config['jab_resource']); + $this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], $config['jab_password']); if (!$this->jabber->connect()) { @@ -466,19 +466,17 @@ class messenger return false; } - if (!$this->jabber->send_auth()) + if (!$this->jabber->login()) { $this->error('JABBER', 'Could not authorise on Jabber server
    ' . $this->jabber->get_log()); return false; } - $this->jabber->send_presence(NULL, NULL, 'online'); foreach ($addresses as $address) { - $this->jabber->send_message($address, 'normal', NULL, array('body' => $this->msg, 'subject' => $this->subject)); + $this->jabber->send_message($address, $this->msg, $this->subject); } - sleep(1); $this->jabber->disconnect(); } else @@ -592,7 +590,7 @@ class queue } include_once($phpbb_root_path . 'includes/functions_jabber.'.$phpEx); - $this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], $config['jab_password'], $config['jab_resource']); + $this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], $config['jab_password']); if (!$this->jabber->connect()) { @@ -600,12 +598,11 @@ class queue continue 2; } - if (!$this->jabber->send_auth()) + if (!$this->jabber->login()) { messenger::error('JABBER', 'Could not authorise on Jabber server'); continue 2; } - $this->jabber->send_presence(NULL, NULL, 'online'); break; @@ -647,7 +644,7 @@ class queue case 'jabber': foreach ($addresses as $address) { - if ($this->jabber->send_message($address, 'normal', NULL, array('body' => $msg, 'subject' => $subject)) === false) + if ($this->jabber->send_message($address, $msg, $subject) === false) { messenger::error('JABBER', $this->jabber->get_log()); continue 3; @@ -669,7 +666,6 @@ class queue case 'jabber': // Hang about a couple of secs to ensure the messages are // handled, then disconnect - sleep(1); $this->jabber->disconnect(); break; } diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php index f771f71c22..f650eda9f4 100644 --- a/phpBB/includes/session.php +++ b/phpBB/includes/session.php @@ -1712,7 +1712,7 @@ class user extends session $img_data = &$imgs[$img]; - if (empty($img_data) || $width !== false) + if (empty($img_data)) { if (!isset($this->img_array[$img])) { @@ -1735,7 +1735,7 @@ class user extends session break; case 'width': - return $img_data['width']; + return ($width === false) ? $img_data['width'] : $width; break; case 'height': @@ -1743,7 +1743,9 @@ class user extends session break; default: - return '' . $alt . ''; + $use_width = ($width === false) ? $img_data['width'] : $width; + + return '' . $alt . ''; break; } } diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 5ba0c9f50f..fc3523a4b8 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -592,7 +592,6 @@ if (version_compare($current_version, '3.0.RC1', '<=')) AND ug.user_id = u.user_id'; $result = $db->sql_query($sql); - while ($row = $db->sql_fetchrow($result)) { $bots[] = (int)$row['user_id']; @@ -612,6 +611,11 @@ if (version_compare($current_version, '3.0.RC1', '<=')) sql_column_change($map_dbms, POSTS_TABLE, 'post_subject', array('XSTEXT_UNI', '', 'true_sort')); } + $sql = 'DELETE FROM ' . CONFIG_TABLE . " WHERE config_name = 'jab_resource'"; + _sql($sql, $errored, $error_ary); + + set_config('jab_use_ssl', '0'); + $no_updates = false; } diff --git a/phpBB/install/schemas/schema_data.sql b/phpBB/install/schemas/schema_data.sql index 5e7d69b38e..a25703241b 100644 --- a/phpBB/install/schemas/schema_data.sql +++ b/phpBB/install/schemas/schema_data.sql @@ -113,7 +113,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('jab_host', ''); INSERT INTO phpbb_config (config_name, config_value) VALUES ('jab_password', ''); INSERT INTO phpbb_config (config_name, config_value) VALUES ('jab_package_size', '20'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('jab_port', '5222'); -INSERT INTO phpbb_config (config_name, config_value) VALUES ('jab_resource', ''); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('jab_use_ssl', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('jab_username', ''); INSERT INTO phpbb_config (config_name, config_value) VALUES ('ldap_base_dn', ''); INSERT INTO phpbb_config (config_name, config_value) VALUES ('ldap_email', ''); @@ -148,7 +148,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_login_attempts INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_name_chars', '20'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_pass_chars', '30'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_poll_options', '10'); -INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_post_chars', '0'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_post_chars', '60000'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_post_font_size', '200'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_post_img_height', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_post_img_width', '0'); diff --git a/phpBB/language/en/acp/board.php b/phpBB/language/en/acp/board.php index 77aa273251..d5c72e0e9c 100644 --- a/phpBB/language/en/acp/board.php +++ b/phpBB/language/en/acp/board.php @@ -412,32 +412,24 @@ $lang = array_merge($lang, array( // Jabber settings $lang = array_merge($lang, array( - 'ACP_JABBER_SETTINGS_EXPLAIN' => 'Here you can enable and control the use of Jabber for instant messaging and board notifications. Jabber is an open source protocol and therefore available for use by anyone. Some Jabber servers include gateways or transports which allow you to contact users on other networks. Not all servers offer all transports and changes in protocols can prevent transports from operating. Note that it may take several seconds to update Jabber account details, so do not stop the script until it is completed!', + 'ACP_JABBER_SETTINGS_EXPLAIN' => 'Here you can enable and control the use of Jabber for instant messaging and board notifications. Jabber is an open source protocol and therefore available for use by anyone. Some Jabber servers include gateways or transports which allow you to contact users on other networks. Not all servers offer all transports and changes in protocols can prevent transports from operating. Please be sure to enter already registered account details - phpBB will use the details you enter here as is.', 'ERR_JAB_AUTH' => 'Could not authorise on Jabber server.', 'ERR_JAB_CONNECT' => 'Could not connect to Jabber server.', - 'ERR_JAB_PASSCHG' => 'Could not change password.', - 'ERR_JAB_PASSFAIL' => 'Password update failed, %s.', - 'ERR_JAB_REGISTER' => 'An error occurred trying to register this account, %s.', - 'ERR_JAB_USERNAME' => 'The username specified already exists, please choose an alternative.', - - 'JAB_CHANGED' => 'Jabber account changed successfully.', 'JAB_ENABLE' => 'Enable Jabber', 'JAB_ENABLE_EXPLAIN' => 'Enables use of Jabber messaging and notifications.', 'JAB_PACKAGE_SIZE' => 'Jabber package size', - 'JAB_PACKAGE_SIZE_EXPLAIN' => 'This is the number of messages sent in one package. If set to 0 the message is sent immediately and is not queued for later sending.', + 'JAB_PACKAGE_SIZE_EXPLAIN' => 'This is the number of messages sent in one package. If set to 0 the message is sent immediately and will not be queued for later sending.', 'JAB_PASSWORD' => 'Jabber password', - 'JAB_PASS_CHANGED' => 'Jabber password changed successfully.', 'JAB_PORT' => 'Jabber port', 'JAB_PORT_EXPLAIN' => 'Leave blank unless you know it is not port 5222.', - 'JAB_REGISTERED' => 'New account registered successfully.', - 'JAB_RESOURCE' => 'Jabber resource', - 'JAB_RESOURCE_EXPLAIN' => 'The resource locates this particular connection, e.g. board, home, etc.', 'JAB_SERVER' => 'Jabber server', 'JAB_SERVER_EXPLAIN' => 'See %sjabber.org%s for a list of servers.', 'JAB_SETTINGS_CHANGED' => 'Jabber settings changed successfully.', + 'JAB_USE_SSL' => 'Use SSL to connect', + 'JAB_USE_SSL_EXPLAIN' => 'If enabled a secure connection is tried to be established. The Jabber port will be modified to 5223 if port 5222 is specified.', 'JAB_USERNAME' => 'Jabber username', - 'JAB_USERNAME_EXPLAIN' => 'If this user is not registered it will be created if possible.', + 'JAB_USERNAME_EXPLAIN' => 'Specify a registered username. The username will not be checked for validity.', )); ?> \ No newline at end of file diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php index e81d75325c..286552129b 100644 --- a/phpBB/language/en/common.php +++ b/phpBB/language/en/common.php @@ -291,7 +291,7 @@ $lang = array_merge($lang, array( '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 seconds but gives you increased capabilities. The board administrator may also grant additional permissions to registered users. Before you login 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_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.', 'LOGOUT' => 'Logout', diff --git a/phpBB/posting.php b/phpBB/posting.php index 599b7ddae7..17d426240b 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -844,7 +844,7 @@ if ($submit || $preview || $refresh) $sql = 'SELECT topic_type, forum_id FROM ' . TOPICS_TABLE . " WHERE topic_id = $topic_id"; - $result = $db->sql_query_limit($sql, 1); + $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); @@ -852,6 +852,21 @@ if ($submit || $preview || $refresh) { $to_forum_id = request_var('to_forum_id', 0); + if ($to_forum_id) + { + $sql = 'SELECT forum_type + FROM ' . FORUMS_TABLE . ' + WHERE forum_id = ' . $to_forum_id; + $result = $db->sql_query($sql); + $forum_type = (int) $db->sql_fetchfield('forum_type'); + $db->sql_freeresult($result); + + if ($forum_type != FORUM_POST || !$auth->acl_get('f_post', $to_forum_id)) + { + $to_forum_id = 0; + } + } + if (!$to_forum_id) { include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx); diff --git a/phpBB/styles/prosilver/template/forumlist_body.html b/phpBB/styles/prosilver/template/forumlist_body.html index 30c7e5ffee..7d267410aa 100644 --- a/phpBB/styles/prosilver/template/forumlist_body.html +++ b/phpBB/styles/prosilver/template/forumlist_body.html @@ -25,9 +25,9 @@
  • -
    +
    -
    {forumrow.FORUM_IMAGE}
    +
    {forumrow.FORUM_IMAGE}
    {forumrow.FORUM_NAME}
    {forumrow.FORUM_DESC} diff --git a/phpBB/styles/prosilver/template/mcp_forum.html b/phpBB/styles/prosilver/template/mcp_forum.html index 17e57578ba..7c8d1a374f 100644 --- a/phpBB/styles/prosilver/template/mcp_forum.html +++ b/phpBB/styles/prosilver/template/mcp_forum.html @@ -34,8 +34,8 @@
  • -
    -
    style="background-image: url({T_ICONS_PATH}{topicrow.TOPIC_ICON_IMG});"> +
    +
    style="background-image: url({T_ICONS_PATH}{topicrow.TOPIC_ICON_IMG}); background-repeat: no-repeat;"> [ {L_SELECT_MERGE} ]   {topicrow.TOPIC_TITLE} {topicrow.UNAPPROVED_IMG} diff --git a/phpBB/styles/prosilver/template/memberlist_search.html b/phpBB/styles/prosilver/template/memberlist_search.html index ba7cf302ff..4f37fbda1b 100644 --- a/phpBB/styles/prosilver/template/memberlist_search.html +++ b/phpBB/styles/prosilver/template/memberlist_search.html @@ -11,7 +11,10 @@ function insert_marked(users) { if (typeof(users.length) == "undefined") { - insert_user(users.value); + if (users.checked) + { + insert_user(users.value); + } } else if (users.length > 0) { diff --git a/phpBB/styles/prosilver/template/posting_poll_body.html b/phpBB/styles/prosilver/template/posting_poll_body.html index ca721748e9..ba0014ce57 100644 --- a/phpBB/styles/prosilver/template/posting_poll_body.html +++ b/phpBB/styles/prosilver/template/posting_poll_body.html @@ -7,6 +7,12 @@
    + +
    +
    +
    +
    +
    @@ -38,10 +44,10 @@
    - +
    -
    +
    diff --git a/phpBB/styles/prosilver/template/search_results.html b/phpBB/styles/prosilver/template/search_results.html index adb955034f..104193bff2 100644 --- a/phpBB/styles/prosilver/template/search_results.html +++ b/phpBB/styles/prosilver/template/search_results.html @@ -52,8 +52,8 @@
  • -
    -
    style="background-image: url({T_ICONS_PATH}{searchresults.TOPIC_ICON_IMG});"> +
    +
    style="background-image: url({T_ICONS_PATH}{searchresults.TOPIC_ICON_IMG}); background-repeat: no-repeat;"> {NEWEST_POST_IMG} {searchresults.TOPIC_TITLE} {searchresults.ATTACH_ICON_IMG} {searchresults.UNAPPROVED_IMG} diff --git a/phpBB/styles/prosilver/template/ucp_main_bookmarks.html b/phpBB/styles/prosilver/template/ucp_main_bookmarks.html index 7d59df1a02..0011e48c92 100644 --- a/phpBB/styles/prosilver/template/ucp_main_bookmarks.html +++ b/phpBB/styles/prosilver/template/ucp_main_bookmarks.html @@ -31,8 +31,8 @@
    -
    -
    +
    +
    {NEWEST_POST_IMG} {topicrow.TOPIC_TITLE} {topicrow.UNAPPROVED_IMG} {REPORTED_IMG}
    diff --git a/phpBB/styles/prosilver/template/ucp_main_front.html b/phpBB/styles/prosilver/template/ucp_main_front.html index d49166fe62..bc6c4ef9b8 100644 --- a/phpBB/styles/prosilver/template/ucp_main_front.html +++ b/phpBB/styles/prosilver/template/ucp_main_front.html @@ -13,8 +13,8 @@
    • -
      -
      style="background-image: url({T_ICONS_PATH}{topicrow.TOPIC_ICON_IMG});"> +
      +
      style="background-image: url({T_ICONS_PATH}{topicrow.TOPIC_ICON_IMG}); background-repeat: no-repeat;"> {NEWEST_POST_IMG} {topicrow.TOPIC_TITLE}
      {topicrow.PAGINATION} {topicrow.ATTACH_ICON_IMG} {L_POST_BY_AUTHOR} {topicrow.TOPIC_AUTHOR_FULL} {L_POSTED_ON_DATE} {topicrow.FIRST_POST_TIME} diff --git a/phpBB/styles/prosilver/template/ucp_main_subscribed.html b/phpBB/styles/prosilver/template/ucp_main_subscribed.html index d806507e06..a6fae14507 100644 --- a/phpBB/styles/prosilver/template/ucp_main_subscribed.html +++ b/phpBB/styles/prosilver/template/ucp_main_subscribed.html @@ -21,7 +21,7 @@
    • -
      +
      {forumrow.FORUM_NAME}
      {L_LAST_POST} {L_POST_BY_AUTHOR} {forumrow.LAST_POST_AUTHOR} {forumrow.LAST_POST_AUTHOR} {LAST_POST_IMG} {L_POSTED_ON_DATE} {forumrow.LAST_POST_TIME} @@ -49,8 +49,8 @@
    • -
      -
      +
      +
      {NEWEST_POST_IMG} {topicrow.TOPIC_TITLE} {topicrow.UNAPPROVED_IMG} {REPORTED_IMG}
      diff --git a/phpBB/styles/prosilver/template/ucp_pm_viewfolder.html b/phpBB/styles/prosilver/template/ucp_pm_viewfolder.html index 3704d8e84b..d3c37580fb 100644 --- a/phpBB/styles/prosilver/template/ucp_pm_viewfolder.html +++ b/phpBB/styles/prosilver/template/ucp_pm_viewfolder.html @@ -57,8 +57,8 @@
    • -
      - style="background-image: url({messagerow.PM_ICON_URL});"> +
      + style="background-image: url({messagerow.PM_ICON_URL}); background-repeat: no-repeat;"> {L_DELETE_MESSAGE}
      diff --git a/phpBB/styles/prosilver/template/ucp_register.html b/phpBB/styles/prosilver/template/ucp_register.html index 2bb8272337..5bb55c66f8 100644 --- a/phpBB/styles/prosilver/template/ucp_register.html +++ b/phpBB/styles/prosilver/template/ucp_register.html @@ -65,7 +65,7 @@

      {profile_fields.LANG_EXPLAIN} -
      {profile_fields.ERROR}
      +
      {profile_fields.ERROR}
    • {profile_fields.FIELD}
      diff --git a/phpBB/styles/prosilver/template/viewforum_body.html b/phpBB/styles/prosilver/template/viewforum_body.html index 1049617f66..97021d53d3 100644 --- a/phpBB/styles/prosilver/template/viewforum_body.html +++ b/phpBB/styles/prosilver/template/viewforum_body.html @@ -137,8 +137,8 @@
    • -
      -
      {NEWEST_POST_IMG} {topicrow.TOPIC_TITLE} +
      +
      {NEWEST_POST_IMG} {topicrow.TOPIC_TITLE} {topicrow.UNAPPROVED_IMG} {REPORTED_IMG}
      {topicrow.PAGINATION} diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 70d89e7370..017d9bcb51 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -875,6 +875,10 @@ label { color: #425067; } +option.disabled-option { + color: graytext; +} + /* Definition list layout for forms ---------------------------------------- */ dd label { @@ -954,4 +958,4 @@ a.button1:hover, input.button1:hover, a.button2:hover, input.button2:hover, inpu input.search { background-image: url("{T_THEME_PATH}/images/icon_textbox_search.gif"); -} \ No newline at end of file +} diff --git a/phpBB/styles/prosilver/theme/content.css b/phpBB/styles/prosilver/theme/content.css index 9245127553..12a53e281c 100644 --- a/phpBB/styles/prosilver/theme/content.css +++ b/phpBB/styles/prosilver/theme/content.css @@ -56,6 +56,12 @@ ul.topiclist li.row dt a.subforum { padding: 0 0 0 12px; } +.forum-image { + float: left; + padding-top: 5px; + margin-right: 5px; +} + li.row { border-top: 1px solid #FFFFFF; border-bottom: 1px solid #8f8f8f; diff --git a/phpBB/styles/prosilver/theme/forms.css b/phpBB/styles/prosilver/theme/forms.css index 0ef5743698..272fd920ba 100644 --- a/phpBB/styles/prosilver/theme/forms.css +++ b/phpBB/styles/prosilver/theme/forms.css @@ -32,6 +32,10 @@ option { padding-right: 1em; } +option.disabled-option { + color: graytext; +} + textarea { font-family: "Lucida Grande", Verdana, Helvetica, Arial, sans-serif; width: 60%; diff --git a/phpBB/styles/subsilver2/template/memberlist_search.html b/phpBB/styles/subsilver2/template/memberlist_search.html index c64d7321d0..253fff9ecf 100644 --- a/phpBB/styles/subsilver2/template/memberlist_search.html +++ b/phpBB/styles/subsilver2/template/memberlist_search.html @@ -12,7 +12,10 @@ { if (typeof(users.length) == "undefined") { - insert_user(users.value); + if (users.checked) + { + insert_user(users.value); + } } else if (users.length > 0) { diff --git a/phpBB/styles/subsilver2/theme/stylesheet.css b/phpBB/styles/subsilver2/theme/stylesheet.css index a2d8829f9a..f0223a2b6f 100644 --- a/phpBB/styles/subsilver2/theme/stylesheet.css +++ b/phpBB/styles/subsilver2/theme/stylesheet.css @@ -482,6 +482,10 @@ option { padding: 0 1em 0 0; } +option.disabled-option { + color: graytext; +} + .rtl option { padding: 0 0 0 1em; } From 2c57708ff2c9a837451d6eb765975ea6e4d9df82 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sat, 26 May 2007 18:17:07 +0000 Subject: [PATCH 031/136] oi git-svn-id: file:///svn/phpbb/trunk@7688 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 2 +- phpBB/includes/functions_jabber.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index d830d88e21..ae05133a23 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -220,7 +220,7 @@ p a {
    • [Fix] request_var should strictly return the requested number of dimensions
    • [Fix] Correct assignment of custom width to $user->img(); / Correctly display poll bars in subsilver2 (Bug #11301)
    • [Fix] Allow removing polls in prosilver
    • -
    • {Fix] Correct link to post in managing users attachments (Bug #11765)
    • +
    • [Fix] Correct link to post in managing users attachments (Bug #11765)
    • [Fix] Reload confirm screen for selecting new forum for global topic type change if not postable forum is chosen (Bug #11711)
    • [Fix] Correctly show system default color for disabled options in Internet Explorer which does not support disabled option fields
    • [Fix] Update query for custom profiles in user management used wrong order for left/right delimiter (affecting mssql) (Bug #11781)
    • diff --git a/phpBB/includes/functions_jabber.php b/phpBB/includes/functions_jabber.php index 3ad96df928..4b9928089e 100644 --- a/phpBB/includes/functions_jabber.php +++ b/phpBB/includes/functions_jabber.php @@ -42,7 +42,7 @@ class jabber $this->port = ($port) ? $port : 5222; $this->username = $username; $this->password = $password; - $this->use_ssl = ($use_ssl && $this->can_use_ssl) ? true : false; + $this->use_ssl = ($use_ssl && $this->can_use_ssl()) ? true : false; // Change port if we use SSL if ($this->port == 5222 && $this->use_ssl) From 34326f7b0b3ea8c608cfe9255eb872da8c3d9347 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sat, 26 May 2007 18:20:07 +0000 Subject: [PATCH 032/136] oi^2 git-svn-id: file:///svn/phpbb/trunk@7689 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/acp/acp_jabber.php | 2 +- phpBB/includes/functions_messenger.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/phpBB/includes/acp/acp_jabber.php b/phpBB/includes/acp/acp_jabber.php index a5bcecb329..de4ea19438 100644 --- a/phpBB/includes/acp/acp_jabber.php +++ b/phpBB/includes/acp/acp_jabber.php @@ -54,7 +54,7 @@ class acp_jabber // Is this feature enabled? Then try to establish a connection if ($jab_enable) { - $jabber = new jabber($jab_host, $jab_port, $jab_username, $jab_password); + $jabber = new jabber($jab_host, $jab_port, $jab_username, $jab_password, $jab_use_ssl); if (!$jabber->connect()) { diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php index 01d8b4854f..1d2e33b661 100644 --- a/phpBB/includes/functions_messenger.php +++ b/phpBB/includes/functions_messenger.php @@ -458,7 +458,7 @@ class messenger if (!$use_queue) { include_once($phpbb_root_path . 'includes/functions_jabber.' . $phpEx); - $this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], $config['jab_password']); + $this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], $config['jab_password'], $config['jab_use_ssl']); if (!$this->jabber->connect()) { @@ -590,7 +590,7 @@ class queue } include_once($phpbb_root_path . 'includes/functions_jabber.'.$phpEx); - $this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], $config['jab_password']); + $this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], $config['jab_password'], $config['jab_use_ssl']); if (!$this->jabber->connect()) { From 73109bce0c4ecb9640c8ab84d3f1e9c4bb19e876 Mon Sep 17 00:00:00 2001 From: Vic D'Elfant Date: Sun, 27 May 2007 11:16:42 +0000 Subject: [PATCH 033/136] Yes, it's actually written like this ^_^ git-svn-id: file:///svn/phpbb/trunk@7690 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/AUTHORS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/docs/AUTHORS b/phpBB/docs/AUTHORS index 769d25d9e8..8033dcea0b 100644 --- a/phpBB/docs/AUTHORS +++ b/phpBB/docs/AUTHORS @@ -18,7 +18,7 @@ phpBB Developers : DavidMJ (David M.) kellanved (Henry Sudhof) naderman (Nils Adermann) subBlue (Tom Beddard) - Vic (Vic D'elfant) + Vic D'Elfant (Vic D'Elfant) -- Previous Contributors -- From 3ee5b28d3bf2bcfd88bfd5430ad04ca5daddd1b9 Mon Sep 17 00:00:00 2001 From: David M Date: Sun, 27 May 2007 14:01:43 +0000 Subject: [PATCH 034/136] #11769 git-svn-id: file:///svn/phpbb/trunk@7691 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/utf/utf_tools.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/utf/utf_tools.php b/phpBB/includes/utf/utf_tools.php index 5a3a22d2ac..b2107c2f83 100644 --- a/phpBB/includes/utf/utf_tools.php +++ b/phpBB/includes/utf/utf_tools.php @@ -717,7 +717,7 @@ function utf8_recode($string, $encoding) else if ($encoding == 'iso-8859-8-i') { $encoding = 'iso-8859-8'; - $string = strrev($string); + $string = hebrev($string); } // First, try iconv() From 9c0c1e14b6e56bd34d1b567bff65292aecac4f6f Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Sun, 27 May 2007 15:07:47 +0000 Subject: [PATCH 035/136] Some fixes and improvements. #11817 #11851 #11801 #11461 git-svn-id: file:///svn/phpbb/trunk@7692 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 3 +++ phpBB/includes/acp/acp_permissions.php | 2 +- phpBB/includes/functions_convert.php | 7 +++++++ phpBB/install/convertors/convert_phpbb20.php | 10 ++++------ phpBB/install/install_convert.php | 2 ++ phpBB/posting.php | 1 - phpBB/styles/prosilver/template/posting_editor.html | 6 +++--- phpBB/styles/subsilver2/template/posting_body.html | 4 ++-- 8 files changed, 22 insertions(+), 13 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index ae05133a23..c5c0702259 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -226,6 +226,9 @@ p a {
    • [Fix] Update query for custom profiles in user management used wrong order for left/right delimiter (affecting mssql) (Bug #11781)
    • [Feature] Replaced outdated jabber class with the one from the flyspray project
    • Limit maximum number of allowed characters in messages to 60.000 by default. Admins should increase their PHP time limits if they want to raise this tremedously.
    • +
    • [Feature] The converter no longer relies on the smiley ID to decide if it should be displayed on the posting page
    • +
    • [Fix] Inconsistent display of more smileys link fixed (Bug #11801)
    • +
    • [Fix] Outbox messages are no always neither new nor unread post-conversion(Bug #11461)
    diff --git a/phpBB/includes/acp/acp_permissions.php b/phpBB/includes/acp/acp_permissions.php index 71c2c764ed..0743a53ee9 100644 --- a/phpBB/includes/acp/acp_permissions.php +++ b/phpBB/includes/acp/acp_permissions.php @@ -593,7 +593,7 @@ class acp_permissions { global $user, $auth; - $psubmit = request_var('psubmit', array(0)); + $psubmit = request_var('psubmit', array(0 => array(0 => 0))); // User or group to be set? $ug_type = (sizeof($user_id)) ? 'user' : 'group'; diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php index 5da10236c2..e2b50306e8 100644 --- a/phpBB/includes/functions_convert.php +++ b/phpBB/includes/functions_convert.php @@ -2405,4 +2405,11 @@ function relative_base($path, $is_relative = true, $line = false, $file = false) return $convert->options['forum_path'] . '/' . $path; } +function get_smiley_display() +{ + static $smiley_count = 0; + $smiley_count++; + return ($smiley_count < 50) ? 1 : 0; +} + ?> \ No newline at end of file diff --git a/phpBB/install/convertors/convert_phpbb20.php b/phpBB/install/convertors/convert_phpbb20.php index 14ad45004d..a750c807d3 100644 --- a/phpBB/install/convertors/convert_phpbb20.php +++ b/phpBB/install/convertors/convert_phpbb20.php @@ -31,7 +31,7 @@ unset($dbpasswd); */ $convertor_data = array( 'forum_name' => 'phpBB 2.0.x', - 'version' => '0.92', + 'version' => '1.0.RC2-dev', 'phpbb_version' => '3.0.0', 'author' => 'phpBB Group', 'dbms' => $dbms, @@ -540,9 +540,7 @@ if (!$get_info) array('smiley_width', 'smilies.smile_url', 'get_smiley_width'), array('smiley_height', 'smilies.smile_url', 'get_smiley_height'), array('smiley_order', 'smilies.smilies_id', ''), - array('display_on_posting', 'smilies.smilies_id', array( - 'execute' => '{RESULT} = ({VALUE}[0] <= 20) ? 1 : 0;', - )), + array('display_on_posting', 'smilies.smilies_id', 'get_smiley_display'), 'order_by' => 'smilies.smilies_id ASC', ), @@ -714,8 +712,8 @@ if (!$get_info) array('user_id', 'privmsgs.privmsgs_from_userid', 'phpbb_user_id'), array('author_id', 'privmsgs.privmsgs_from_userid', 'phpbb_user_id'), array('pm_deleted', 0, ''), - array('pm_new', 'privmsgs.privmsgs_type', 'phpbb_new_pm'), - array('pm_unread', 'privmsgs.privmsgs_type', 'phpbb_unread_pm'), + array('pm_new', 0, ''), + array('pm_unread', 0, ''), array('pm_replied', 0, ''), array('pm_marked', 0, ''), array('pm_forwarded', 0, ''), diff --git a/phpBB/install/install_convert.php b/phpBB/install/install_convert.php index 7c95c3ef05..33b41f88d2 100644 --- a/phpBB/install/install_convert.php +++ b/phpBB/install/install_convert.php @@ -1162,6 +1162,8 @@ class install_convert extends module $schema['group_by'] = array($schema['group_by']); foreach($sql_data['select_fields'] as $select) { + $alias = strpos(strtolower($select), ' as '); + $select = ($alias) ? substr($select, 0, $alias) : $select; if (!in_array($select, $schema['group_by'])) { $schema['group_by'][] = $select; diff --git a/phpBB/posting.php b/phpBB/posting.php index 17d426240b..a7257a9560 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -1264,7 +1264,6 @@ $template->assign_vars(array( 'S_BBCODE_ALLOWED' => $bbcode_status, 'S_BBCODE_CHECKED' => ($bbcode_checked) ? ' checked="checked"' : '', 'S_SMILIES_ALLOWED' => $smilies_status, - 'S_SHOW_SMILEY_LINK' => $smilies_status, 'S_SMILIES_CHECKED' => ($smilies_checked) ? ' checked="checked"' : '', 'S_SIG_ALLOWED' => ($auth->acl_get('f_sigs', $forum_id) && $config['allow_sig'] && $user->data['is_registered']) ? true : false, 'S_SIGNATURE_CHECKED' => ($sig_checked) ? ' checked="checked"' : '', diff --git a/phpBB/styles/prosilver/template/posting_editor.html b/phpBB/styles/prosilver/template/posting_editor.html index 4e988903c0..fde14662a2 100644 --- a/phpBB/styles/prosilver/template/posting_editor.html +++ b/phpBB/styles/prosilver/template/posting_editor.html @@ -113,7 +113,7 @@ {smiley.SMILEY_CODE} - +
    {L_MORE_SMILIES} @@ -180,8 +180,8 @@
    {S_HIDDEN_ADDRESS_FIELD} {S_HIDDEN_FIELDS} -   -   +   +   onclick="document.getElementById('postform').action += '#preview';" />    diff --git a/phpBB/styles/subsilver2/template/posting_body.html b/phpBB/styles/subsilver2/template/posting_body.html index e8d6332c9f..76d6ea85f9 100644 --- a/phpBB/styles/subsilver2/template/posting_body.html +++ b/phpBB/styles/subsilver2/template/posting_body.html @@ -202,11 +202,11 @@
  • From aa21e76d692778816c1b684907d4279f513b087f Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Wed, 6 Jun 2007 15:38:06 +0000 Subject: [PATCH 060/136] #12001 git-svn-id: file:///svn/phpbb/trunk@7717 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 5 +++-- phpBB/includes/ucp/ucp_pm_compose.php | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 6d582b96f8..4d676ad80b 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -228,8 +228,8 @@ p a {
  • [Fix] Outbox messages are no always neither new nor unread post-conversion (Bug #11461)
  • [Feature] Replaced outdated jabber class with the one from the flyspray project
  • [Feature] The converter no longer relies on the smiley ID to decide if it should be displayed on the posting page
  • -
  • Limit maximum number of allowed characters in messages to 60.000 by default. Admins should increase their PHP time limits if they want to raise this tremedously.
  • -
  • Some changes to the conversion documentation
  • +
  • Limit maximum number of allowed characters in messages to 60.000 by default. Admins should increase their PHP time limits if they want to raise this tremedously.
  • +
  • Some changes to the conversion documentation
  • [Fix] Only use permissions from existing forums during the conversion (Bug #11417)
  • [Fix] Do not permit the decimal as a valid prefix character (Bug #11967)
  • [Fix] Account for the fact that the IM fields might hold non-IM information
  • @@ -239,6 +239,7 @@ p a {
  • [Sec] Adding confirm boxes to UCP group actions (ToonArmy)
  • [Feature] Added the option to disable the flash bbcode globally (DelvarWorld).
  • [Sec] Changed the embedding of Flash (NeoThermic, DelvarWorld).
  • +
  • [Fix] Use the signature setting for PMs (Bug #12001)
  • diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index 7b740c1515..6718094c75 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -377,7 +377,7 @@ function compose_pm($id, $mode, $action) if (!in_array($action, array('quote', 'edit', 'delete', 'forward'))) { - $enable_sig = ($config['allow_sig'] && $auth->acl_get('u_sig') && $user->optionget('attachsig')); + $enable_sig = ($config['allow_sig'] && $config['allow_sig_pm'] && $auth->acl_get('u_sig') && $user->optionget('attachsig')); $enable_smilies = ($config['allow_smilies'] && $auth->acl_get('u_pm_smilies') && $user->optionget('smilies')); $enable_bbcode = ($config['allow_bbcode'] && $auth->acl_get('u_pm_bbcode') && $user->optionget('bbcode')); $enable_urls = true; @@ -516,7 +516,7 @@ function compose_pm($id, $mode, $action) $enable_bbcode = (!$bbcode_status || isset($_POST['disable_bbcode'])) ? false : true; $enable_smilies = (!$smilies_status || isset($_POST['disable_smilies'])) ? false : true; $enable_urls = (isset($_POST['disable_magic_url'])) ? 0 : 1; - $enable_sig = (!$config['allow_sig']) ? false : ((isset($_POST['attach_sig'])) ? true : false); + $enable_sig = (!$config['allow_sig'] ||!$config['allow_sig_pm']) ? false : ((isset($_POST['attach_sig'])) ? true : false); if ($submit) { @@ -925,7 +925,7 @@ function compose_pm($id, $mode, $action) 'S_BBCODE_CHECKED' => ($bbcode_checked) ? ' checked="checked"' : '', 'S_SMILIES_ALLOWED' => $smilies_status, 'S_SMILIES_CHECKED' => ($smilies_checked) ? ' checked="checked"' : '', - 'S_SIG_ALLOWED' => ($config['allow_sig'] && $auth->acl_get('u_sig')), + 'S_SIG_ALLOWED' => ($config['allow_sig'] && $config['allow_sig_pm'] && $auth->acl_get('u_sig')), 'S_SIGNATURE_CHECKED' => ($sig_checked) ? ' checked="checked"' : '', 'S_LINKS_ALLOWED' => $url_status, 'S_MAGIC_URL_CHECKED' => ($urls_checked) ? ' checked="checked"' : '', From 8f692db40798eb3cef62eb22b626c4afa683cb1a Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Wed, 6 Jun 2007 16:08:25 +0000 Subject: [PATCH 061/136] #11969 git-svn-id: file:///svn/phpbb/trunk@7718 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 2 +- phpBB/includes/functions_install.php | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 4d676ad80b..1375bcfe4a 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -240,7 +240,7 @@ p a {
  • [Feature] Added the option to disable the flash bbcode globally (DelvarWorld).
  • [Sec] Changed the embedding of Flash (NeoThermic, DelvarWorld).
  • [Fix] Use the signature setting for PMs (Bug #12001)
  • - +
  • [Fix] Made the DBMS selection use language variables (Bug #11969)
  • diff --git a/phpBB/includes/functions_install.php b/phpBB/includes/functions_install.php index fa85b89d48..bf82802a29 100644 --- a/phpBB/includes/functions_install.php +++ b/phpBB/includes/functions_install.php @@ -29,6 +29,7 @@ function can_load_dll($dll) */ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20x_options = false) { + global $lang; $available_dbms = array( 'firebird' => array( 'LABEL' => 'FireBird', @@ -172,12 +173,14 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20 */ function dbms_select($default = '', $only_20x_options = false) { + global $lang; + $available_dbms = get_available_dbms(false, false, $only_20x_options); $dbms_options = ''; foreach ($available_dbms as $dbms_name => $details) { $selected = ($dbms_name == $default) ? ' selected="selected"' : ''; - $dbms_options .= ''; + $dbms_options .= ''; } return $dbms_options; } From e3033d80d3853de7436f1871e1f959234c787022 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Wed, 6 Jun 2007 17:04:56 +0000 Subject: [PATCH 062/136] #12105 git-svn-id: file:///svn/phpbb/trunk@7719 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 2 +- phpBB/includes/ucp/ucp_pm.php | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 1375bcfe4a..c7a8694652 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -241,7 +241,7 @@ p a {
  • [Sec] Changed the embedding of Flash (NeoThermic, DelvarWorld).
  • [Fix] Use the signature setting for PMs (Bug #12001)
  • [Fix] Made the DBMS selection use language variables (Bug #11969)
  • - +
  • [Fix] Make sure that a folder is used when viewing messages to oneself (Bug #12105)
  • diff --git a/phpBB/includes/ucp/ucp_pm.php b/phpBB/includes/ucp/ucp_pm.php index 73bb3411cd..88ca6d64f5 100644 --- a/phpBB/includes/ucp/ucp_pm.php +++ b/phpBB/includes/ucp/ucp_pm.php @@ -271,7 +271,8 @@ class ucp_pm $sql = 'SELECT folder_id FROM ' . PRIVMSGS_TO_TABLE . " WHERE msg_id = $msg_id - AND user_id = " . $user->data['user_id']; + AND folder_id <> " . PRIVMSGS_NO_BOX . ' + AND user_id = ' . $user->data['user_id']; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); From 5e78e5ad95fb8608d693f8f6b5ac075cbe072e07 Mon Sep 17 00:00:00 2001 From: David M Date: Wed, 6 Jun 2007 20:34:48 +0000 Subject: [PATCH 063/136] #12227 git-svn-id: file:///svn/phpbb/trunk@7720 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/utf/data/recode_basic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/utf/data/recode_basic.php b/phpBB/includes/utf/data/recode_basic.php index c44fca09d9..2fc7eb5b9a 100644 --- a/phpBB/includes/utf/data/recode_basic.php +++ b/phpBB/includes/utf/data/recode_basic.php @@ -408,7 +408,7 @@ function iso_8859_7($string) function iso_8859_8($string) { - static $tranform = array( + static $transform = array( "\xC2\xAA" => "\xC3\x97", "\xC2\xBA" => "\xC3\xB7", "\xC3\x9F" => "\xE2\x80\x97", From dd9c236e6a47fb93d2f39f746f2bac5efc62066d Mon Sep 17 00:00:00 2001 From: David M Date: Thu, 7 Jun 2007 05:58:45 +0000 Subject: [PATCH 064/136] - Oracle, woe is you... I will say this much, this fixes Oracle's handling of empty strings... We also fix custom profiles and now provide database size for Oracle... git-svn-id: file:///svn/phpbb/trunk@7721 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/acp/acp_profile.php | 2 +- phpBB/includes/db/oracle.php | 114 ++++++++++++++++++++++++++++- phpBB/includes/functions_admin.php | 8 ++ 3 files changed, 119 insertions(+), 5 deletions(-) diff --git a/phpBB/includes/acp/acp_profile.php b/phpBB/includes/acp/acp_profile.php index da11868cc2..2d4091f2f9 100644 --- a/phpBB/includes/acp/acp_profile.php +++ b/phpBB/includes/acp/acp_profile.php @@ -1508,7 +1508,7 @@ class acp_profile case 'oracle': // We are defining the biggest common value, because of the possibility to edit the min/max values of each field. - $sql = 'ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " ADD \"$field_ident\" "; + $sql = 'ALTER TABLE ' . PROFILE_FIELDS_DATA_TABLE . " ADD $field_ident "; switch ($field_type) { diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php index 360928e96d..c0d960506d 100644 --- a/phpBB/includes/db/oracle.php +++ b/phpBB/includes/db/oracle.php @@ -48,7 +48,7 @@ class dbal_oracle extends dbal $connect = $sqlserver . (($port) ? ':' . $port : '') . '/' . $database; } - $this->db_connect_id = ($new_link) ? @ocinlogon($this->user, $sqlpassword, $connect, 'UTF8') : (($this->persistency) ? @ociplogon($this->user, $sqlpassword, $connect, 'UTF8') : @ocinlogon($this->user, $sqlpassword, $connect, 'UTF8')); + $this->db_connect_id = ($new_link) ? @ocinlogon($this->user, $sqlpassword, $connect, 'UTF8') : (($this->persistency) ? @ociplogon($this->user, $sqlpassword, $connect, 'UTF8') : @ocilogon($this->user, $sqlpassword, $connect, 'UTF8')); return ($this->db_connect_id) ? $this->db_connect_id : $this->sql_error(''); } @@ -85,6 +85,90 @@ class dbal_oracle extends dbal return true; } + /** + * Oracle specific code to handle the fact that it does not compare columns properly + * @access private + */ + function _rewrite_col_compare($args) + { + if (sizeof($args) == 4) + { + if ($args[2] == '=') + { + return '(' . $args[0] . ' OR (' . $args[1] . ' is NULL AND ' . $args[3] . ' is NULL))'; + } + else if ($args[2] == '<>') + { + // really just a fancy way of saying foo <> bar or (foo is NULL XOR bar is NULL) but SQL has no XOR :P + return '(' . $args[0] . ' OR ((' . $args[1] . ' is NULL AND ' . $args[3] . ' is NOT NULL) OR (' . $args[1] . ' is NOT NULL AND ' . $args[3] . ' is NULL)))'; + } + } + else + { + return $this->_rewrite_where($args[0]); + } + } + + /** + * Oracle specific code to handle it's lack of sanity + * @access private + */ + function _rewrite_where($where_clause) + { + preg_match_all('/\s*(AND|OR)?\s*([\w_.]++)\s*(?:(=|<>)\s*((?>\'(?>[^\']++|\'\')*+\'|\d+))|((NOT )?IN\s*\((?>\'(?>[^\']++|\'\')*+\',? ?|\d+,? ?)*+\)))/', $where_clause, $result, PREG_SET_ORDER); + $out = ''; + foreach ($result as $val) + { + if (!isset($val[5])) + { + if ($val[4] !== "''") + { + $out .= $val[0]; + } + else + { + $out .= ' ' . $val[1] . ' ' . $val[2]; + if ($val[3] == '=') + { + $out .= ' is NULL'; + } + else if ($val[3] == '<>') + { + $out .= ' is NOT NULL'; + } + } + } + else + { + $in_clause = array(); + $sub_exp = substr($val[5], strpos($val[5], '(') + 1, -1); + $extra = false; + preg_match_all('/\'(?>[^\']++|\'\')*+\'|\d++/', $sub_exp, $sub_vals, PREG_PATTERN_ORDER); + foreach ($sub_vals[0] as $sub_val) + { + if ($sub_val !== "''") + { + $in_clause[] = $sub_val; + } + else + { + $extra = true; + } + } + if (!$extra) + { + $out .= $val[0]; + } + else + { + $out .= ' ' . $val[1] . ' (' . $val[2]. ' ' . (isset($val[6]) ? $val[6] : '') . 'IN(' . implode(', ', $in_clause) . ') OR ' . $val[2] . ' is ' . (isset($val[6]) ? $val[6] : '') . 'NULL)'; + } + } + } + + return $out; + } + /** * Base query method * @@ -127,7 +211,6 @@ class dbal_oracle extends dbal // We overcome Oracle's 4000 char limit by binding vars if (strlen($query) > 4000) { - if (preg_match('/^(INSERT INTO[^(]+)\\(([^()]+)\\) VALUES[^(]+\\((.*?)\\)$/s', $query, $regs)) { if (strlen($regs[3]) > 4000) @@ -151,13 +234,13 @@ class dbal_oracle extends dbal unset($art); } } - else if (preg_match_all('/^(UPDATE [\\w_]++\\s+SET )(\\w+ = (?:\'(?:[^\']++|\'\')*+\'|\\d+)(?:, \\w+ = (?:\'(?:[^\']++|\'\')*+\'|\\d+))*+)\\s+(WHERE.*)$/s', $query, $data, PREG_SET_ORDER)) + else if (preg_match_all('/^(UPDATE [\\w_]++\\s+SET )([\\w_]+ = (?:\'(?:[^\']++|\'\')*+\'|\\d+)(?:, [\\w_]+ = (?:\'(?:[^\']++|\'\')*+\'|\\d+))*+)\\s+(WHERE.*)$/s', $query, $data, PREG_SET_ORDER)) { if (strlen($data[0][2]) > 4000) { $update = $data[0][1]; $where = $data[0][3]; - preg_match_all('/(\\w++) = (\'(?:[^\']++|\'\')*+\'|\\d++)/', $data[0][2], $temp, PREG_SET_ORDER); + preg_match_all('/([\\w_]++) = (\'(?:[^\']++|\'\')*+\'|\\d++)/', $data[0][2], $temp, PREG_SET_ORDER); unset($data); $art = array(); @@ -180,6 +263,29 @@ class dbal_oracle extends dbal } } + switch (substr($query, 0, 6)) + { + case 'DELETE': + if (preg_match('/^(DELETE FROM [\w_]++ WHERE)((?:\s*(?:AND|OR)?\s*[\w_]+\s*(?:(?:=|<>)\s*(?>\'(?>[^\']++|\'\')*+\'|\d+)|(?:NOT )?IN\s*\((?>\'(?>[^\']++|\'\')*+\',? ?|\d+,? ?)*+\)))*+)$/', $query, $regs)) + { + $query = $regs[1] . $this->_rewrite_where($regs[2]); + unset($regs); + } + break; + + case 'UPDATE': + if (preg_match('/^(UPDATE [\\w_]++\\s+SET [\\w_]+\s*=\s*(?:\'(?:[^\']++|\'\')*+\'|\\d++|:\w++)(?:, [\\w_]+\s*=\s*(?:\'(?:[^\']++|\'\')*+\'|\\d++|:\w++))*+\\s+WHERE)(.*)$/s', $query, $regs)) + { + $query = $regs[1] . $this->_rewrite_where($regs[2]); + unset($regs); + } + break; + + case 'SELECT': + $query = preg_replace_callback('/([\w_.]++)\s*(?:(=|<>)\s*(?>\'(?>[^\']++|\'\')*+\'|\d++|([\w_.]++))|(?:NOT )?IN\s*\((?>\'(?>[^\']++|\'\')*+\',? ?|\d++,? ?)*+\))/', array($this, '_rewrite_col_compare'), $query); + break; + } + $this->query_result = @ociparse($this->db_connect_id, $query); foreach ($array as $key => $value) diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index 3a24c5db1c..28a5ab9983 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -2824,6 +2824,14 @@ function get_database_size() $database_size = $row['size']; } break; + + case 'oracle': + $sql = 'SELECT SUM(bytes) as dbsize + FROM user_segments'; + $result = $db->sql_query($sql); + $database_size = ($row = $db->sql_fetchrow($result)) ? $row['dbsize'] : false; + $db->sql_freeresult($result); + break; } if ($database_size !== false) From cf7a17218392fc4bc2fd2ea7580b419d8fcdf1c7 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Thu, 7 Jun 2007 17:41:42 +0000 Subject: [PATCH 065/136] Adding a little more exlanation about flash. Enabling FLASH per default while leaving the default permissions to disable it. There might be no mods and admins visible one a board #12185 git-svn-id: file:///svn/phpbb/trunk@7722 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 2 ++ phpBB/includes/acp/acp_board.php | 4 ++-- phpBB/install/database_update.php | 2 +- phpBB/install/schemas/schema_data.sql | 2 +- phpBB/language/en/acp/board.php | 5 +++-- phpBB/memberlist.php | 14 +++++++++----- 6 files changed, 18 insertions(+), 11 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index c7a8694652..35f0459ebf 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -242,6 +242,8 @@ p a {
  • [Fix] Use the signature setting for PMs (Bug #12001)
  • [Fix] Made the DBMS selection use language variables (Bug #11969)
  • [Fix] Make sure that a folder is used when viewing messages to oneself (Bug #12105)
  • +
  • [Fix] Account for the fact that a board might have no visible Admins (Bug #12185)
  • + diff --git a/phpBB/includes/acp/acp_board.php b/phpBB/includes/acp/acp_board.php index 07f67e6e5e..6bada468db 100644 --- a/phpBB/includes/acp/acp_board.php +++ b/phpBB/includes/acp/acp_board.php @@ -125,7 +125,7 @@ class acp_board 'print_pm' => array('lang' => 'ALLOW_PRINT_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 'forward_pm' => array('lang' => 'ALLOW_FORWARD_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 'auth_img_pm' => array('lang' => 'ALLOW_IMG_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), - 'auth_flash_pm' => array('lang' => 'ALLOW_FLASH_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), + 'auth_flash_pm' => array('lang' => 'ALLOW_FLASH_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'enable_pm_icons' => array('lang' => 'ENABLE_PM_ICONS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false) ) ); @@ -139,7 +139,7 @@ class acp_board 'allow_topic_notify' => array('lang' => 'ALLOW_TOPIC_NOTIFY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 'allow_forum_notify' => array('lang' => 'ALLOW_FORUM_NOTIFY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 'allow_bbcode' => array('lang' => 'ALLOW_BBCODE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), - 'allow_post_flash' => array('lang' => 'ALLOW_POST_FLASH', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), + 'allow_post_flash' => array('lang' => 'ALLOW_POST_FLASH', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'allow_smilies' => array('lang' => 'ALLOW_SMILIES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 'allow_post_links' => array('lang' => 'ALLOW_POST_LINKS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'allow_nocensors' => array('lang' => 'ALLOW_NO_CENSORS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index ea8f7be1d9..24e2d8d4c0 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -615,7 +615,7 @@ if (version_compare($current_version, '3.0.RC1', '<=')) _sql($sql, $errored, $error_ary); set_config('jab_use_ssl', '0'); - set_config('allow_post_flash', '0'); + set_config('allow_post_flash', '1'); $no_updates = false; } diff --git a/phpBB/install/schemas/schema_data.sql b/phpBB/install/schemas/schema_data.sql index 1001116f0d..5615273e10 100644 --- a/phpBB/install/schemas/schema_data.sql +++ b/phpBB/install/schemas/schema_data.sql @@ -20,7 +20,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_name_chars', INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_namechange', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_nocensors', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_pm_attach', '0'); -INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_post_flash', '0'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_post_flash', '1'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_post_links', '1'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_privmsg', '1'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_sig', '1'); diff --git a/phpBB/language/en/acp/board.php b/phpBB/language/en/acp/board.php index d44106e622..b7b3cd2b44 100644 --- a/phpBB/language/en/acp/board.php +++ b/phpBB/language/en/acp/board.php @@ -102,6 +102,7 @@ $lang = array_merge($lang, array( 'ALLOW_BBCODE_PM' => 'Allow BBCode in private messages', 'ALLOW_FLASH_PM' => 'Allow use of [FLASH] BBCode tag', + 'ALLOW_FLASH_PM_EXPLAIN' => 'Note that the ability to use flash in private messages, if enabled here, also depends on the permissions.', 'ALLOW_FORWARD_PM' => 'Allow forwarding of private messages', 'ALLOW_IMG_PM' => 'Allow use of [IMG] BBCode tag', 'ALLOW_MASS_PM' => 'Allow sending of private messages to multiple users and groups', @@ -126,8 +127,8 @@ $lang = array_merge($lang, array( 'ACP_POST_SETTINGS_EXPLAIN' => 'Here you can set all default settings for posting.', 'ALLOW_POST_LINKS' => 'Allow links in posts/private messages', 'ALLOW_POST_LINKS_EXPLAIN' => 'If disallowed the [URL] BBCode tag and automatic/magic URLs are disabled.', - 'ALLOW_POST_FLASH' => 'Allow use of [FLASH] BBCode tag', - 'ALLOW_POST_FLASH_EXPLAIN' => 'If disallowed the [FLASH] BBCode tag is disabled in posts.', + 'ALLOW_POST_FLASH' => 'Allow use of [FLASH] BBCode tag in posts. ', + 'ALLOW_POST_FLASH_EXPLAIN' => 'If disallowed the [FLASH] BBCode tag is disabled in posts. Otherwise the permission system controls which users can use the [FLASH] BBCode tag.', 'BUMP_INTERVAL' => 'Bump interval', 'BUMP_INTERVAL_EXPLAIN' => 'Number of minutes, hours or days between the last post to a topic and the ability to bump this topic.', diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php index 235923d426..7a6bbed253 100644 --- a/phpBB/memberlist.php +++ b/phpBB/memberlist.php @@ -127,12 +127,16 @@ switch ($mode) // Get group memberships for the admin id ary... $admin_memberships = group_memberships($admin_group_id, $admin_id_ary); + $admin_user_ids = array(); - - // ok, we only need the user ids... - foreach ($admin_memberships as $row) + + if (!empty($admin_memberships)) { - $admin_user_ids[$row['user_id']] = true; + // ok, we only need the user ids... + foreach ($admin_memberships as $row) + { + $admin_user_ids[$row['user_id']] = true; + } } unset($admin_memberships); @@ -163,7 +167,7 @@ switch ($mode) ) ), - 'WHERE' => $db->sql_in_set('u.user_id', array_unique(array_merge($admin_id_ary, $mod_id_ary))) . ' + 'WHERE' => $db->sql_in_set('u.user_id', array_unique(array_merge($admin_id_ary, $mod_id_ary)), false, true) . ' AND u.group_id = g.group_id', 'ORDER_BY' => 'g.group_name ASC, u.username_clean ASC' From 08e34f03b3dd6b80aec15dad3332ffdeb0204542 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 8 Jun 2007 07:27:51 +0000 Subject: [PATCH 066/136] #12231 git-svn-id: file:///svn/phpbb/trunk@7723 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/functions_user.php | 6 ------ 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 35f0459ebf..dfbca59523 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -243,6 +243,7 @@ p a {
  • [Fix] Made the DBMS selection use language variables (Bug #11969)
  • [Fix] Make sure that a folder is used when viewing messages to oneself (Bug #12105)
  • [Fix] Account for the fact that a board might have no visible Admins (Bug #12185)
  • +
  • [Fix] Change group ranks even if empty (Bug #12231)
  • diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 2c733a9ebd..a1fd2c5555 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -2702,12 +2702,6 @@ function group_set_user_default($group_id, $user_id_ary, $group_attributes = fal continue; } - // Do not update the rank if it is set to "user default" - if (strpos($attribute, 'group_rank') === 0 && !$group_attributes[$attribute]) - { - continue; - } - settype($group_attributes[$attribute], $type); $sql_ary[str_replace('group_', 'user_', $attribute)] = $group_attributes[$attribute]; } From 3dc51a99c160a599afeb2d8fb739407dfb382124 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Fri, 8 Jun 2007 07:36:02 +0000 Subject: [PATCH 067/136] maybe the reason why some boards had problems with special characters on conversions? :/ git-svn-id: file:///svn/phpbb/trunk@7724 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/utf/data/recode_basic.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/phpBB/includes/utf/data/recode_basic.php b/phpBB/includes/utf/data/recode_basic.php index 2fc7eb5b9a..02e44d3e0d 100644 --- a/phpBB/includes/utf/data/recode_basic.php +++ b/phpBB/includes/utf/data/recode_basic.php @@ -447,7 +447,7 @@ function iso_8859_8($string) function iso_8859_9($string) { - static $tranform = array( + static $transform = array( "\xC3\x90" => "\xC4\x9E", "\xC3\x9D" => "\xC4\xB0", "\xC3\x9E" => "\xC5\x9E", @@ -460,7 +460,7 @@ function iso_8859_9($string) function iso_8859_15($string) { - static $tranform = array( + static $transform = array( "\xC2\xA4" => "\xE2\x82\xAC", "\xC2\xA6" => "\xC5\xA0", "\xC2\xA8" => "\xC5\xA1", @@ -1004,7 +1004,7 @@ function cp1252($string) function cp1254($string) { - static $tranform = array( + static $transform = array( "\xC2\x80" => "\xE2\x82\xAC", "\xC2\x82" => "\xE2\x80\x9A", "\xC2\x83" => "\xC6\x92", From 011b47c01deded9e8e933cd1ca48fa4cec557ee5 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Fri, 8 Jun 2007 08:26:05 +0000 Subject: [PATCH 068/136] fix bug #12135 with the patch provided by APTX git-svn-id: file:///svn/phpbb/trunk@7725 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_privmsgs.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php index 9ce281ba12..00620bbfb7 100644 --- a/phpBB/includes/functions_privmsgs.php +++ b/phpBB/includes/functions_privmsgs.php @@ -498,7 +498,7 @@ function place_pm_into_folder(&$global_privmsgs_rules, $release = false) // We place actions into arrays, to save queries. $num_new = $num_unread = 0; - $sql = $unread_ids = $delete_ids = $important_ids = array(); + $sql = $unread_ids = $delete_ids = $important_ids = $move_into_folder = array(); foreach ($action_ary as $msg_id => $msg_ary) { @@ -517,9 +517,7 @@ function place_pm_into_folder(&$global_privmsgs_rules, $release = false) case ACTION_PLACE_INTO_FOLDER: // Folder actions have precedence, so we will remove any other ones $folder_action = true; - $_folder_id = (int) $rule_ary['folder_id']; - $move_into_folder = array(); - $move_into_folder[$_folder_id][] = $msg_id; + $move_into_folder[(int) $rule_ary['folder_id']][] = $msg_id; $num_new++; break; From eaa66690104c130eb15aef16a01a393611d257a8 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Fri, 8 Jun 2007 08:28:55 +0000 Subject: [PATCH 069/136] other fixes git-svn-id: file:///svn/phpbb/trunk@7726 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 10 +- phpBB/includes/acp/acp_users.php | 4 +- phpBB/includes/functions_user.php | 200 +++++++++++++++++++++++++++++ phpBB/includes/ucp/ucp_profile.php | 4 +- phpBB/language/en/acp/board.php | 4 +- phpBB/language/en/acp/common.php | 2 +- 6 files changed, 213 insertions(+), 11 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index dfbca59523..d98a5bf062 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -228,22 +228,24 @@ p a {
  • [Fix] Outbox messages are no always neither new nor unread post-conversion (Bug #11461)
  • [Feature] Replaced outdated jabber class with the one from the flyspray project
  • [Feature] The converter no longer relies on the smiley ID to decide if it should be displayed on the posting page
  • -
  • Limit maximum number of allowed characters in messages to 60.000 by default. Admins should increase their PHP time limits if they want to raise this tremedously.
  • -
  • Some changes to the conversion documentation
  • +
  • [Change] Limit maximum number of allowed characters in messages to 60.000 by default. Admins should increase their PHP time limits if they want to raise this tremedously.
  • +
  • [Change] Some changes to the conversion documentation
  • [Fix] Only use permissions from existing forums during the conversion (Bug #11417)
  • [Fix] Do not permit the decimal as a valid prefix character (Bug #11967)
  • [Fix] Account for the fact that the IM fields might hold non-IM information
  • [Fix] Make the queue function on post details
  • [Fix] Check if there are active styles left before deleting a style
  • [Fix] Correctly update styles after the deletion of an imageset.
  • +
  • [Fix] Replaced jabber validation to use the method used by the new jabber class (Bug #9822)
  • [Sec] Adding confirm boxes to UCP group actions (ToonArmy)
  • -
  • [Feature] Added the option to disable the flash bbcode globally (DelvarWorld).
  • -
  • [Sec] Changed the embedding of Flash (NeoThermic, DelvarWorld).
  • +
  • [Feature] Added the option to disable the flash bbcode globally (DelvarWorld)
  • +
  • [Sec] Changed the embedding of Flash (NeoThermic, DelvarWorld)
  • [Fix] Use the signature setting for PMs (Bug #12001)
  • [Fix] Made the DBMS selection use language variables (Bug #11969)
  • [Fix] Make sure that a folder is used when viewing messages to oneself (Bug #12105)
  • [Fix] Account for the fact that a board might have no visible Admins (Bug #12185)
  • [Fix] Change group ranks even if empty (Bug #12231)
  • +
  • [Fix] Correctly move pm's into folders if more than one is received (Bug #12135)
  • diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index 231c21252e..3b86dc668c 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -970,7 +970,7 @@ class acp_users 'aim' => request_var('aim', $user_row['user_aim']), 'msn' => request_var('msn', $user_row['user_msnm']), 'yim' => request_var('yim', $user_row['user_yim']), - 'jabber' => request_var('jabber', $user_row['user_jabber']), + 'jabber' => utf8_normalize_nfc(request_var('jabber', $user_row['user_jabber'], true)), 'website' => request_var('website', $user_row['user_website']), 'location' => utf8_normalize_nfc(request_var('location', $user_row['user_from'], true)), 'occupation' => utf8_normalize_nfc(request_var('occupation', $user_row['user_occ'], true)), @@ -999,7 +999,7 @@ class acp_users 'msn' => array('string', true, 5, 255), 'jabber' => array( array('string', true, 5, 255), - array('match', true, '#^[^@:\'"<>&\x00-\x1F\x7F\t\r\n]+@(.*?\.)*?[a-z0-9\-_]+?\.[a-z]{2,4}(/.*)?$#iu')), + array('jabber')), 'yim' => array('string', true, 5, 255), 'website' => array( array('string', true, 12, 255), diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index a1fd2c5555..9e83281f92 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1556,7 +1556,207 @@ function validate_email($email, $allowed_email = false) return false; } +/** +* Validate jabber address +* Taken from the jabber class within flyspray (see author notes) +* +* @author flyspray.org +*/ +function validate_jabber($jid) +{ + if (!$jid) + { + return false; + } + $seperator_pos = strpos($jid, '@'); + + if ($seperator_pos === false) + { + return 'WRONG_DATA'; + } + + $username = substr($jid, 0, $seperator_pos); + $realm = substr($jid, $seperator_pos + 1); + + if (strlen($username) == 0 || strlen($realm) < 3) + { + return 'WRONG_DATA'; + } + + $arr = explode('.', $realm); + + if (sizeof($arr) == 0) + { + return 'WRONG_DATA'; + } + + foreach ($arr as $part) + { + if (substr($part, 0, 1) == '-' || substr($part, -1, 1) == '-') + { + return 'WRONG_DATA'; + } + + if (!preg_match("@^[a-zA-Z0-9-.]+$@", $part)) + { + return 'WRONG_DATA'; + } + } + + $boundary = array(array(0, 127), array(192, 223), array(224, 239), array(240, 247), array(248, 251), array(252, 253)); + + // Prohibited Characters RFC3454 + RFC3920 + $prohibited = array( + // Table C.1.1 + array(0x0020, 0x0020), // SPACE + // Table C.1.2 + array(0x00A0, 0x00A0), // NO-BREAK SPACE + array(0x1680, 0x1680), // OGHAM SPACE MARK + array(0x2000, 0x2001), // EN QUAD + array(0x2001, 0x2001), // EM QUAD + array(0x2002, 0x2002), // EN SPACE + array(0x2003, 0x2003), // EM SPACE + array(0x2004, 0x2004), // THREE-PER-EM SPACE + array(0x2005, 0x2005), // FOUR-PER-EM SPACE + array(0x2006, 0x2006), // SIX-PER-EM SPACE + array(0x2007, 0x2007), // FIGURE SPACE + array(0x2008, 0x2008), // PUNCTUATION SPACE + array(0x2009, 0x2009), // THIN SPACE + array(0x200A, 0x200A), // HAIR SPACE + array(0x200B, 0x200B), // ZERO WIDTH SPACE + array(0x202F, 0x202F), // NARROW NO-BREAK SPACE + array(0x205F, 0x205F), // MEDIUM MATHEMATICAL SPACE + array(0x3000, 0x3000), // IDEOGRAPHIC SPACE + // Table C.2.1 + array(0x0000, 0x001F), // [CONTROL CHARACTERS] + array(0x007F, 0x007F), // DELETE + // Table C.2.2 + array(0x0080, 0x009F), // [CONTROL CHARACTERS] + array(0x06DD, 0x06DD), // ARABIC END OF AYAH + array(0x070F, 0x070F), // SYRIAC ABBREVIATION MARK + array(0x180E, 0x180E), // MONGOLIAN VOWEL SEPARATOR + array(0x200C, 0x200C), // ZERO WIDTH NON-JOINER + array(0x200D, 0x200D), // ZERO WIDTH JOINER + array(0x2028, 0x2028), // LINE SEPARATOR + array(0x2029, 0x2029), // PARAGRAPH SEPARATOR + array(0x2060, 0x2060), // WORD JOINER + array(0x2061, 0x2061), // FUNCTION APPLICATION + array(0x2062, 0x2062), // INVISIBLE TIMES + array(0x2063, 0x2063), // INVISIBLE SEPARATOR + array(0x206A, 0x206F), // [CONTROL CHARACTERS] + array(0xFEFF, 0xFEFF), // ZERO WIDTH NO-BREAK SPACE + array(0xFFF9, 0xFFFC), // [CONTROL CHARACTERS] + array(0x1D173, 0x1D17A), // [MUSICAL CONTROL CHARACTERS] + // Table C.3 + array(0xE000, 0xF8FF), // [PRIVATE USE, PLANE 0] + array(0xF0000, 0xFFFFD), // [PRIVATE USE, PLANE 15] + array(0x100000, 0x10FFFD), // [PRIVATE USE, PLANE 16] + // Table C.4 + array(0xFDD0, 0xFDEF), // [NONCHARACTER CODE POINTS] + array(0xFFFE, 0xFFFF), // [NONCHARACTER CODE POINTS] + array(0x1FFFE, 0x1FFFF), // [NONCHARACTER CODE POINTS] + array(0x2FFFE, 0x2FFFF), // [NONCHARACTER CODE POINTS] + array(0x3FFFE, 0x3FFFF), // [NONCHARACTER CODE POINTS] + array(0x4FFFE, 0x4FFFF), // [NONCHARACTER CODE POINTS] + array(0x5FFFE, 0x5FFFF), // [NONCHARACTER CODE POINTS] + array(0x6FFFE, 0x6FFFF), // [NONCHARACTER CODE POINTS] + array(0x7FFFE, 0x7FFFF), // [NONCHARACTER CODE POINTS] + array(0x8FFFE, 0x8FFFF), // [NONCHARACTER CODE POINTS] + array(0x9FFFE, 0x9FFFF), // [NONCHARACTER CODE POINTS] + array(0xAFFFE, 0xAFFFF), // [NONCHARACTER CODE POINTS] + array(0xBFFFE, 0xBFFFF), // [NONCHARACTER CODE POINTS] + array(0xCFFFE, 0xCFFFF), // [NONCHARACTER CODE POINTS] + array(0xDFFFE, 0xDFFFF), // [NONCHARACTER CODE POINTS] + array(0xEFFFE, 0xEFFFF), // [NONCHARACTER CODE POINTS] + array(0xFFFFE, 0xFFFFF), // [NONCHARACTER CODE POINTS] + array(0x10FFFE, 0x10FFFF), // [NONCHARACTER CODE POINTS] + // Table C.5 + array(0xD800, 0xDFFF), // [SURROGATE CODES] + // Table C.6 + array(0xFFF9, 0xFFF9), // INTERLINEAR ANNOTATION ANCHOR + array(0xFFFA, 0xFFFA), // INTERLINEAR ANNOTATION SEPARATOR + array(0xFFFB, 0xFFFB), // INTERLINEAR ANNOTATION TERMINATOR + array(0xFFFC, 0xFFFC), // OBJECT REPLACEMENT CHARACTER + array(0xFFFD, 0xFFFD), // REPLACEMENT CHARACTER + // Table C.7 + array(0x2FF0, 0x2FFB), // [IDEOGRAPHIC DESCRIPTION CHARACTERS] + // Table C.8 + array(0x0340, 0x0340), // COMBINING GRAVE TONE MARK + array(0x0341, 0x0341), // COMBINING ACUTE TONE MARK + array(0x200E, 0x200E), // LEFT-TO-RIGHT MARK + array(0x200F, 0x200F), // RIGHT-TO-LEFT MARK + array(0x202A, 0x202A), // LEFT-TO-RIGHT EMBEDDING + array(0x202B, 0x202B), // RIGHT-TO-LEFT EMBEDDING + array(0x202C, 0x202C), // POP DIRECTIONAL FORMATTING + array(0x202D, 0x202D), // LEFT-TO-RIGHT OVERRIDE + array(0x202E, 0x202E), // RIGHT-TO-LEFT OVERRIDE + array(0x206A, 0x206A), // INHIBIT SYMMETRIC SWAPPING + array(0x206B, 0x206B), // ACTIVATE SYMMETRIC SWAPPING + array(0x206C, 0x206C), // INHIBIT ARABIC FORM SHAPING + array(0x206D, 0x206D), // ACTIVATE ARABIC FORM SHAPING + array(0x206E, 0x206E), // NATIONAL DIGIT SHAPES + array(0x206F, 0x206F), // NOMINAL DIGIT SHAPES + // Table C.9 + array(0xE0001, 0xE0001), // LANGUAGE TAG + array(0xE0020, 0xE007F), // [TAGGING CHARACTERS] + // RFC3920 + array(0x22, 0x22), // " + array(0x26, 0x26), // & + array(0x27, 0x27), // ' + array(0x2F, 0x2F), // / + array(0x3A, 0x3A), // : + array(0x3C, 0x3C), // < + array(0x3E, 0x3E), // > + array(0x40, 0x40) // @ + ); + + $pos = 0; + $result = true; + + while ($pos < strlen($username)) + { + $len = $uni = 0; + for ($i = 0; $i <= 5; $i++) + { + if (ord($username[$pos]) >= $boundary[$i][0] && ord($username[$pos]) <= $boundary[$i][1]) + { + $len = $i + 1; + $uni = (ord($username[$pos]) - $boundary[$i][0]) * pow(2, $i * 6); + + for ($k = 1; $k < $len; $k++) + { + $uni += (ord($username[$pos + $k]) - 128) * pow(2, ($i - $k) * 6); + } + + break; + } + } + + if ($len == 0) + { + return 'WRONG_DATA'; + } + + foreach ($prohibited as $pval) + { + if ($uni >= $pval[0] && $uni <= $pval[1]) + { + $result = false; + break 2; + } + } + + $pos = $pos + $len; + } + + if (!$result) + { + return 'WRONG_DATA'; + } + + return false; +} /** * Remove avatar diff --git a/phpBB/includes/ucp/ucp_profile.php b/phpBB/includes/ucp/ucp_profile.php index db91c90803..0134bd38e7 100644 --- a/phpBB/includes/ucp/ucp_profile.php +++ b/phpBB/includes/ucp/ucp_profile.php @@ -261,7 +261,7 @@ class ucp_profile 'aim' => request_var('aim', $user->data['user_aim']), 'msn' => request_var('msn', $user->data['user_msnm']), 'yim' => request_var('yim', $user->data['user_yim']), - 'jabber' => request_var('jabber', $user->data['user_jabber']), + 'jabber' => utf8_normalize_nfc(request_var('jabber', $user->data['user_jabber'], true)), 'website' => request_var('website', $user->data['user_website']), 'location' => utf8_normalize_nfc(request_var('location', $user->data['user_from'], true)), 'occupation' => utf8_normalize_nfc(request_var('occupation', $user->data['user_occ'], true)), @@ -290,7 +290,7 @@ class ucp_profile 'msn' => array('string', true, 5, 255), 'jabber' => array( array('string', true, 5, 255), - array('match', true, '#^[^@:\'"<>&\x00-\x1F\x7F\t\r\n]+@(.*?\.)*?[a-z0-9\-_]+?\.[a-z]{2,4}(/.*)?$#iu')), + array('jabber')), 'yim' => array('string', true, 5, 255), 'website' => array( array('string', true, 12, 255), diff --git a/phpBB/language/en/acp/board.php b/phpBB/language/en/acp/board.php index b7b3cd2b44..2c8d60565e 100644 --- a/phpBB/language/en/acp/board.php +++ b/phpBB/language/en/acp/board.php @@ -184,10 +184,10 @@ $lang = array_merge($lang, array( 'ACC_ACTIVATION' => 'Account activation', 'ACC_ACTIVATION_EXPLAIN' => 'This determines whether users have immediate access to the board or if confirmation is required. You can also completely disable new registrations.', - 'ACC_ADMIN' => 'Admin', + 'ACC_ADMIN' => 'By Admin', 'ACC_DISABLE' => 'Disable', 'ACC_NONE' => 'None', - 'ACC_USER' => 'User', + 'ACC_USER' => 'By User', // 'ACC_USER_ADMIN' => 'User + Admin', 'ALLOW_EMAIL_REUSE' => 'Allow e-mail address re-use', 'ALLOW_EMAIL_REUSE_EXPLAIN' => 'Different users can register with the same e-mail address.', diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 47a3442187..64de2e9ed7 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -647,7 +647,7 @@ $lang = array_merge($lang, array( 'LOG_USER_DEL_AVATAR_USER' => 'User avatar removed', 'LOG_USER_DEL_SIG_USER' => 'User signature removed', 'LOG_USER_FEEDBACK' => 'Added user feedback
    » %s', - 'LOG_USER_GENERAL' => 'Entry added:
    %s', + 'LOG_USER_GENERAL' => 'Entry added:
    » %s', 'LOG_USER_INACTIVE_USER' => 'User account de-activated', 'LOG_USER_LOCK' => 'User locked own topic
    » %s', 'LOG_USER_MOVE_POSTS_USER' => 'Moved all posts to forum» %s', From b3554f02c51cf5d6b60cf164a8c0b5ec9654295e Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 8 Jun 2007 08:51:47 +0000 Subject: [PATCH 070/136] #12237 git-svn-id: file:///svn/phpbb/trunk@7727 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/acp/acp_profile.php | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index d98a5bf062..7d6f21fe5c 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -245,6 +245,7 @@ p a {
  • [Fix] Make sure that a folder is used when viewing messages to oneself (Bug #12105)
  • [Fix] Account for the fact that a board might have no visible Admins (Bug #12185)
  • [Fix] Change group ranks even if empty (Bug #12231)
  • +
  • [Fix] Correctly propagate variables across the custom profile field wizard (Bug #12237)
  • [Fix] Correctly move pm's into folders if more than one is received (Bug #12135)
  • diff --git a/phpBB/includes/acp/acp_profile.php b/phpBB/includes/acp/acp_profile.php index 2d4091f2f9..cfe982d9ae 100644 --- a/phpBB/includes/acp/acp_profile.php +++ b/phpBB/includes/acp/acp_profile.php @@ -449,8 +449,7 @@ class acp_profile // Get the number of options if this key is 'field_maxlen' $var = sizeof(explode("\n", request_var('lang_options', '', true))); } - - if ($field_type == FIELD_TEXT && $key == 'field_length') + else if ($field_type == FIELD_TEXT && $key == 'field_length') { if (isset($_REQUEST['rows'])) { @@ -465,8 +464,7 @@ class acp_profile $cp->vars['columns'] = $row_col[1]; } } - - if ($field_type == FIELD_DATE && $key == 'field_default_value') + else if ($field_type == FIELD_DATE && $key == 'field_default_value') { $always_now = request_var('always_now', 0); @@ -622,13 +620,20 @@ class acp_profile foreach ($key_ary as $key) { - if (!isset($_REQUEST[$key])) + if (!isset($cp->vars[$key])) { - $var = false; + if (!isset($_REQUEST[$key])) + { + $var = false; + } + else + { + $_new_key_ary[$key] = (is_array($_REQUEST[$key])) ? request_var($key, array(''), true) : request_var($key, '', true); + } } else { - $_new_key_ary[$key] = (is_array($_REQUEST[$key])) ? request_var($key, array(''), true) : request_var($key, '', true); + $_new_key_ary[$key] = $cp->vars[$key]; } } From 151f230cfd63a591a0828f6a7e12efd6bb7b74b6 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 8 Jun 2007 12:27:23 +0000 Subject: [PATCH 071/136] reverting earlier changes git-svn-id: file:///svn/phpbb/trunk@7728 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/acp/acp_profile.php | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/phpBB/includes/acp/acp_profile.php b/phpBB/includes/acp/acp_profile.php index cfe982d9ae..dbece81e09 100644 --- a/phpBB/includes/acp/acp_profile.php +++ b/phpBB/includes/acp/acp_profile.php @@ -620,20 +620,13 @@ class acp_profile foreach ($key_ary as $key) { - if (!isset($cp->vars[$key])) + if (!isset($_REQUEST[$key])) { - if (!isset($_REQUEST[$key])) - { - $var = false; - } - else - { - $_new_key_ary[$key] = (is_array($_REQUEST[$key])) ? request_var($key, array(''), true) : request_var($key, '', true); - } + $var = false; } else { - $_new_key_ary[$key] = $cp->vars[$key]; + $_new_key_ary[$key] = (is_array($_REQUEST[$key])) ? request_var($key, array(''), true) : request_var($key, '', true); } } From fb89a2d85ed7ace54999df2b2a5dab9d9510911b Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 8 Jun 2007 13:46:56 +0000 Subject: [PATCH 072/136] Let's try this again :| git-svn-id: file:///svn/phpbb/trunk@7729 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/acp/acp_profile.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/phpBB/includes/acp/acp_profile.php b/phpBB/includes/acp/acp_profile.php index dbece81e09..ccd3dbf40d 100644 --- a/phpBB/includes/acp/acp_profile.php +++ b/phpBB/includes/acp/acp_profile.php @@ -620,13 +620,22 @@ class acp_profile foreach ($key_ary as $key) { - if (!isset($_REQUEST[$key])) + if ($field_type == FIELD_TEXT && $key == 'field_length' && isset($_REQUEST['rows'])) { - $var = false; + $cp->vars['rows'] = request_var('rows', 0); + $cp->vars['columns'] = request_var('columns', 0); + $_new_key_ary[$key] = $cp->vars['rows'] . '|' . $cp->vars['columns']; } else { - $_new_key_ary[$key] = (is_array($_REQUEST[$key])) ? request_var($key, array(''), true) : request_var($key, '', true); + if (!isset($_REQUEST[$key])) + { + $var = false; + } + else + { + $_new_key_ary[$key] = (is_array($_REQUEST[$key])) ? request_var($key, array(''), true) : request_var($key, '', true); + } } } @@ -897,7 +906,7 @@ class acp_profile foreach ($options as $field => $field_type) { $value = ($action == 'create') ? request_var('l_' . $field, array(0 => ''), true) : $cp->vars['l_' . $field]; - + if ($field == 'lang_options') { $var = ($action == 'create' || !is_array($cp->vars['l_lang_options'][$lang_id])) ? $cp->vars['lang_options'] : $cp->vars['lang_options'][$lang_id]; From 7a5bb1c074bf0ead17902d296986b895f7adba16 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 8 Jun 2007 15:12:03 +0000 Subject: [PATCH 073/136] Inserting lots of ugly to code to introduce CFPs to the new dimension-aware request_var. I hope I got all of the nasty critters spawned by it. #11803 git-svn-id: file:///svn/phpbb/trunk@7730 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/acp/acp_profile.php | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/phpBB/includes/acp/acp_profile.php b/phpBB/includes/acp/acp_profile.php index ccd3dbf40d..82b14b2a3d 100644 --- a/phpBB/includes/acp/acp_profile.php +++ b/phpBB/includes/acp/acp_profile.php @@ -540,12 +540,17 @@ class acp_profile { $cp->vars[$key] = $$key; } - else if ($key == 'l_lang_options' && sizeof($cp->vars[$key]) > 1) + else if ($key == 'l_lang_options' && $field_type == FIELD_BOOL) + { + $cp->vars[$key] = request_var($key, array(0 => array('')), true); + } + else if ($key == 'l_lang_options' && is_array($cp->vars[$key])) { foreach ($cp->vars[$key] as $lang_id => $options) { $cp->vars[$key][$lang_id] = explode("\n", $options); } + } } @@ -626,6 +631,11 @@ class acp_profile $cp->vars['columns'] = request_var('columns', 0); $_new_key_ary[$key] = $cp->vars['rows'] . '|' . $cp->vars['columns']; } + if ($field_type == FIELD_BOOL && $key == 'l_lang_options' && isset($_REQUEST['l_lang_options'])) + { + $_new_key_ary[$key] = request_var($key, array(array('')), true); + + } else { if (!isset($_REQUEST[$key])) @@ -1080,8 +1090,14 @@ class acp_profile $cp->vars['l_lang_name'] = request_var('l_lang_name', array(0 => ''), true); $cp->vars['l_lang_explain'] = request_var('l_lang_explain', array(0 => ''), true); $cp->vars['l_lang_default_value'] = request_var('l_lang_default_value', array(0 => ''), true); - $cp->vars['l_lang_options'] = request_var('l_lang_options', array(0 => ''), true); - + if ($field_type != FIELD_BOOL) + { + $cp->vars['l_lang_options'] = request_var('l_lang_options', array(0 => ''), true); + } + else + { + $cp->vars['l_lang_default_value'] = request_var('l_lang_default_value', array(0 => array('')), true); + } if ($cp->vars['lang_options']) { if (!is_array($cp->vars['lang_options'])) From c5051472ded93350f71e601399dede8779cd7a06 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 8 Jun 2007 15:13:40 +0000 Subject: [PATCH 074/136] Better note it. git-svn-id: file:///svn/phpbb/trunk@7731 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 7d6f21fe5c..c64443d1e6 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -247,6 +247,9 @@ p a {
  • [Fix] Change group ranks even if empty (Bug #12231)
  • [Fix] Correctly propagate variables across the custom profile field wizard (Bug #12237)
  • [Fix] Correctly move pm's into folders if more than one is received (Bug #12135)
  • +
  • [Fix] Corrected various bugs with CPF on multi-language boards (Bug #11803)
  • + + From d79b43b4aa2f42068259f186eb098c461e8f2c09 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 8 Jun 2007 15:38:39 +0000 Subject: [PATCH 075/136] #12263 git-svn-id: file:///svn/phpbb/trunk@7732 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/posting.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index c64443d1e6..a4e629bbaa 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -248,6 +248,7 @@ p a {
  • [Fix] Correctly propagate variables across the custom profile field wizard (Bug #12237)
  • [Fix] Correctly move pm's into folders if more than one is received (Bug #12135)
  • [Fix] Corrected various bugs with CPF on multi-language boards (Bug #11803)
  • +
  • [Fix] Disable notify checkbox in posting editor when board email is disabled (Bug #12263)
  • diff --git a/phpBB/posting.php b/phpBB/posting.php index 3ab5544198..512ea1e831 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -1267,7 +1267,7 @@ $template->assign_vars(array( 'S_SMILIES_CHECKED' => ($smilies_checked) ? ' checked="checked"' : '', 'S_SIG_ALLOWED' => ($auth->acl_get('f_sigs', $forum_id) && $config['allow_sig'] && $user->data['is_registered']) ? true : false, 'S_SIGNATURE_CHECKED' => ($sig_checked) ? ' checked="checked"' : '', - 'S_NOTIFY_ALLOWED' => (!$user->data['is_registered'] || ($mode == 'edit' && $user->data['user_id'] != $post_data['poster_id']) || !$config['allow_topic_notify']) ? false : true, + 'S_NOTIFY_ALLOWED' => (!$user->data['is_registered'] || ($mode == 'edit' && $user->data['user_id'] != $post_data['poster_id']) || !$config['allow_topic_notify'] || !$config['email_enable']) ? false : true, 'S_NOTIFY_CHECKED' => ($notify_checked) ? ' checked="checked"' : '', 'S_LOCK_TOPIC_ALLOWED' => (($mode == 'edit' || $mode == 'reply' || $mode == 'quote') && ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster'] && $post_data['topic_status'] == ITEM_UNLOCKED))) ? true : false, 'S_LOCK_TOPIC_CHECKED' => ($lock_topic_checked) ? ' checked="checked"' : '', From 472d64663d998167a7deafb4134b540d5dcca38d Mon Sep 17 00:00:00 2001 From: David M Date: Fri, 8 Jun 2007 16:00:30 +0000 Subject: [PATCH 076/136] another Oracle fix git-svn-id: file:///svn/phpbb/trunk@7733 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/install/install_install.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/phpBB/install/install_install.php b/phpBB/install/install_install.php index 1bf86318c8..65229618dd 100755 --- a/phpBB/install/install_install.php +++ b/phpBB/install/install_install.php @@ -738,7 +738,7 @@ class install_install extends module if ($board_email1 != '' && !preg_match('/^' . get_preg_expression('email') . '$/i', $board_email1)) { $error[] = $lang['INST_ERR_EMAIL_INVALID']; - } + }$error = array(); $template->assign_block_vars('checks', array( 'S_LEGEND' => true, @@ -1645,14 +1645,19 @@ class install_install extends module AND module_class = '" . $db->sql_escape($module_class) . "' AND module_basename <> ''"; $result = $db->sql_query_limit($sql, 1); - $module_data = $db->sql_fetchrow($result); + $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); - unset($module_data['module_id']); - unset($module_data['left_id']); - unset($module_data['right_id']); - - $module_data['parent_id'] = (int) $row2['module_id']; + $module_data = array( + 'module_basename' => $row['module_basename'], + 'module_enabled' => $row['module_enabled'], + 'module_display' => $row['module_display'], + 'parent_id' => (int) $row2['module_id'], + 'module_class' => $row['module_class'], + 'module_langname' => $row['module_langname'], + 'module_mode' => $row['module_mode'], + 'module_auth' => $row['module_auth'], + ); $_module->update_module_data($module_data, true); From 5d90161ba45a7b6db593c2a1a1d4371b6b9af658 Mon Sep 17 00:00:00 2001 From: David M Date: Fri, 8 Jun 2007 16:01:29 +0000 Subject: [PATCH 077/136] same old, same old git-svn-id: file:///svn/phpbb/trunk@7734 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/install/install_install.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/install/install_install.php b/phpBB/install/install_install.php index 65229618dd..fce3668da6 100755 --- a/phpBB/install/install_install.php +++ b/phpBB/install/install_install.php @@ -738,7 +738,7 @@ class install_install extends module if ($board_email1 != '' && !preg_match('/^' . get_preg_expression('email') . '$/i', $board_email1)) { $error[] = $lang['INST_ERR_EMAIL_INVALID']; - }$error = array(); + } $template->assign_block_vars('checks', array( 'S_LEGEND' => true, From cbf7b00cb801bc7cbed5735452fc680c85cd9669 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sat, 9 Jun 2007 08:31:32 +0000 Subject: [PATCH 078/136] fixing bug #12283 which is a fix for the fix in #12135 - hopefully now working for both... git-svn-id: file:///svn/phpbb/trunk@7735 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_privmsgs.php | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php index 00620bbfb7..37d5087abd 100644 --- a/phpBB/includes/functions_privmsgs.php +++ b/phpBB/includes/functions_privmsgs.php @@ -498,12 +498,13 @@ function place_pm_into_folder(&$global_privmsgs_rules, $release = false) // We place actions into arrays, to save queries. $num_new = $num_unread = 0; - $sql = $unread_ids = $delete_ids = $important_ids = $move_into_folder = array(); + $sql = $unread_ids = $delete_ids = $important_ids = array(); foreach ($action_ary as $msg_id => $msg_ary) { // It is allowed to execute actions more than once, except placing messages into folder $folder_action = false; + $message_removed = false; foreach ($msg_ary as $pos => $rule_ary) { @@ -526,15 +527,11 @@ function place_pm_into_folder(&$global_privmsgs_rules, $release = false) { $unread_ids[] = $msg_id; } - - if (!$folder_action) - { - $move_into_folder[PRIVMSGS_INBOX][] = $msg_id; - } break; case ACTION_DELETE_MESSAGE: $delete_ids[] = $msg_id; + $message_removed = true; break; case ACTION_MARK_AS_IMPORTANT: @@ -542,14 +539,16 @@ function place_pm_into_folder(&$global_privmsgs_rules, $release = false) { $important_ids[] = $msg_id; } - - if (!$folder_action) - { - $move_into_folder[PRIVMSGS_INBOX][] = $msg_id; - } break; } } + + // We place this here because it could happen that the messages are doubled if a rule marks a message and then moves it into a specific + // folder. Here we simply move the message into the INBOX if it gets not removed and also not put into a custom folder. + if (!$folder_action && !$message_removed) + { + $move_into_folder[PRIVMSGS_INBOX][] = $msg_id; + } } // $num_new += sizeof(array_unique($delete_ids)); From 455536773fd34f72e371386b5b0d9a517e0fc1e7 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sat, 9 Jun 2007 11:11:20 +0000 Subject: [PATCH 079/136] ok, mess around with the templates + fixing some bugs + adjusting headers for those files already modified to circumvent conflicts for those having their editor set to remove trailing spaces (not recommended!) git-svn-id: file:///svn/phpbb/trunk@7736 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/style/acp_forums.html | 2 +- phpBB/adm/style/acp_profile.html | 2 +- phpBB/adm/style/install_update.html | 8 ++-- phpBB/adm/style/install_update_diff.html | 5 ++- phpBB/docs/CHANGELOG.html | 5 ++- phpBB/includes/acp/acp_bbcodes.php | 6 +-- phpBB/includes/acp/acp_board.php | 6 +-- phpBB/includes/acp/acp_forums.php | 6 +-- phpBB/includes/acp/acp_jabber.php | 6 +-- phpBB/includes/acp/acp_permissions.php | 6 +-- phpBB/includes/acp/acp_profile.php | 6 +-- phpBB/includes/acp/acp_search.php | 6 +-- phpBB/includes/acp/acp_styles.php | 10 ++--- phpBB/includes/acp/acp_update.php | 6 +-- phpBB/includes/acp/acp_users.php | 6 +-- phpBB/includes/auth.php | 8 ++-- phpBB/includes/cache.php | 6 +-- phpBB/includes/db/oracle.php | 6 +-- phpBB/includes/functions.php | 35 +++++++++++++--- phpBB/includes/functions_admin.php | 6 +-- phpBB/includes/functions_convert.php | 6 +-- phpBB/includes/functions_display.php | 40 ++++++++++--------- phpBB/includes/functions_install.php | 6 +-- phpBB/includes/functions_jabber.php | 6 +-- phpBB/includes/functions_messenger.php | 6 +-- phpBB/includes/functions_privmsgs.php | 6 +-- phpBB/includes/mcp/mcp_main.php | 6 +-- phpBB/includes/mcp/mcp_post.php | 6 +-- phpBB/includes/mcp/mcp_queue.php | 6 +-- phpBB/includes/mcp/mcp_reports.php | 6 +-- phpBB/includes/message_parser.php | 6 +-- phpBB/includes/search/fulltext_mysql.php | 6 +-- phpBB/includes/session.php | 8 ++-- phpBB/includes/ucp/ucp_groups.php | 6 +-- phpBB/includes/ucp/ucp_pm.php | 4 +- phpBB/includes/ucp/ucp_profile.php | 12 +++--- phpBB/includes/utf/utf_tools.php | 6 +-- phpBB/install/database_update.php | 2 +- phpBB/install/install_install.php | 2 +- phpBB/install/install_update.php | 3 ++ phpBB/language/en/acp/board.php | 14 +++---- phpBB/language/en/acp/common.php | 6 +-- phpBB/language/en/acp/database.php | 6 +-- phpBB/language/en/acp/groups.php | 6 +-- phpBB/language/en/acp/permissions_phpbb.php | 8 ++-- phpBB/language/en/acp/posting.php | 8 ++-- phpBB/language/en/acp/profile.php | 6 +-- phpBB/language/en/acp/styles.php | 6 +-- phpBB/language/en/acp/users.php | 6 +-- phpBB/language/en/common.php | 14 ++++--- phpBB/language/en/help_faq.php | 6 +-- phpBB/language/en/install.php | 8 ++-- phpBB/language/en/mcp.php | 6 +-- phpBB/language/en/posting.php | 6 +-- phpBB/language/en/ucp.php | 6 +-- phpBB/mcp.php | 6 +-- phpBB/memberlist.php | 6 +-- phpBB/posting.php | 6 +-- phpBB/style.php | 8 ++-- .../styles/prosilver/template/login_body.html | 4 +- .../prosilver/template/login_forum.html | 2 +- .../styles/prosilver/template/mcp_topic.html | 2 +- .../prosilver/template/memberlist_email.html | 4 +- .../prosilver/template/memberlist_im.html | 2 +- .../prosilver/template/memberlist_search.html | 2 +- .../prosilver/template/overall_footer.html | 4 +- .../prosilver/template/posting_editor.html | 6 +-- .../prosilver/template/ucp_pm_options.html | 14 +++---- .../template/ucp_profile_reg_details.html | 6 +-- .../prosilver/template/ucp_register.html | 10 ++--- .../styles/prosilver/template/ucp_remind.html | 4 +- .../styles/prosilver/template/ucp_resend.html | 4 +- .../prosilver/template/viewforum_body.html | 4 +- .../subsilver2/template/login_body.html | 4 +- .../subsilver2/template/login_forum.html | 2 +- .../subsilver2/template/mcp_notes_front.html | 2 +- .../styles/subsilver2/template/mcp_topic.html | 2 +- .../subsilver2/template/mcp_warn_front.html | 2 +- .../subsilver2/template/memberlist_email.html | 4 +- .../subsilver2/template/posting_body.html | 4 +- .../subsilver2/template/posting_buttons.html | 2 +- .../subsilver2/template/ucp_header.html | 2 +- .../subsilver2/template/ucp_pm_options.html | 14 +++---- .../template/ucp_profile_reg_details.html | 6 +-- .../subsilver2/template/ucp_register.html | 10 ++--- .../subsilver2/template/ucp_remind.html | 4 +- .../subsilver2/template/ucp_resend.html | 2 +- phpBB/viewforum.php | 3 ++ phpBB/viewtopic.php | 3 ++ 89 files changed, 306 insertions(+), 262 deletions(-) diff --git a/phpBB/adm/style/acp_forums.html b/phpBB/adm/style/acp_forums.html index 6cc703a5a7..eaa7d3bf7a 100644 --- a/phpBB/adm/style/acp_forums.html +++ b/phpBB/adm/style/acp_forums.html @@ -161,7 +161,7 @@

    {L_FORUM_PASSWORD_EXPLAIN}
    -
    +

    {L_FORUM_PASSWORD_CONFIRM_EXPLAIN}
    diff --git a/phpBB/adm/style/acp_profile.html b/phpBB/adm/style/acp_profile.html index 5c3d0077b6..e14e622080 100644 --- a/phpBB/adm/style/acp_profile.html +++ b/phpBB/adm/style/acp_profile.html @@ -129,7 +129,7 @@
    {S_HIDDEN_FIELDS} - +
    diff --git a/phpBB/adm/style/install_update.html b/phpBB/adm/style/install_update.html index dd6e615df2..6b361ec3f1 100644 --- a/phpBB/adm/style/install_update.html +++ b/phpBB/adm/style/install_update.html @@ -22,7 +22,7 @@

    {L_UPDATE_INSTALLATION_EXPLAIN}

    - +
    @@ -100,8 +100,6 @@

    {L_PERFORM_DATABASE_UPDATE_EXPLAIN}
    -
    - » {L_RUN_DATABASE_SCRIPT} «



    @@ -109,7 +107,9 @@
    - + {L_RUN_DATABASE_SCRIPT} + +
    diff --git a/phpBB/adm/style/install_update_diff.html b/phpBB/adm/style/install_update_diff.html index 2fd8142279..794d285574 100644 --- a/phpBB/adm/style/install_update_diff.html +++ b/phpBB/adm/style/install_update_diff.html @@ -35,7 +35,7 @@ function resize_panel() -

    {L_SKIP}

    +
    +
    diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index a4e629bbaa..10c2738c1e 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -249,8 +249,11 @@ p a {
  • [Fix] Correctly move pm's into folders if more than one is received (Bug #12135)
  • [Fix] Corrected various bugs with CPF on multi-language boards (Bug #11803)
  • [Fix] Disable notify checkbox in posting editor when board email is disabled (Bug #12263)
  • +
  • [Fix] Removed maxlength from password/username fields (Bugs #12215, #11797)
  • +
  • [Fix] Use icon-unsubscribe in prosilver (Bug #12211)
  • +
  • [Fix] Seperated PREVIOUS/NEXT language vars for pagination and next/previous step (Bug #12197)
  • +
  • [Feature] append_sid() supporting anchor (Bug #11535) - patch provided by Schumi and ToonArmy
  • - diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php index 2fdbdbdbd1..99d7831390 100644 --- a/phpBB/includes/acp/acp_bbcodes.php +++ b/phpBB/includes/acp/acp_bbcodes.php @@ -1,10 +1,10 @@ $parent_data) + if (!empty($forum_parents)) { - list($parent_name, $parent_type) = array_values($parent_data); - - // Skip this parent if the user does not have the permission to view it - if (!$auth->acl_get('f_list', $parent_forum_id)) + foreach ($forum_parents as $parent_forum_id => $parent_data) { - continue; - } + list($parent_name, $parent_type) = array_values($parent_data); - $template->assign_block_vars('navlinks', array( - 'S_IS_CAT' => ($parent_type == FORUM_CAT) ? true : false, - 'S_IS_LINK' => ($parent_type == FORUM_LINK) ? true : false, - 'S_IS_POST' => ($parent_type == FORUM_POST) ? true : false, - 'FORUM_NAME' => $parent_name, - 'FORUM_ID' => $parent_forum_id, - 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $parent_forum_id)) - ); + // Skip this parent if the user does not have the permission to view it + if (!$auth->acl_get('f_list', $parent_forum_id)) + { + continue; + } + + $template->assign_block_vars('navlinks', array( + 'S_IS_CAT' => ($parent_type == FORUM_CAT) ? true : false, + 'S_IS_LINK' => ($parent_type == FORUM_LINK) ? true : false, + 'S_IS_POST' => ($parent_type == FORUM_POST) ? true : false, + 'FORUM_NAME' => $parent_name, + 'FORUM_ID' => $parent_forum_id, + 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $parent_forum_id)) + ); + } } $template->assign_block_vars('navlinks', array( @@ -1057,6 +1060,7 @@ function watch_topic_forum($mode, &$s_watching, &$s_watching_img, $user_id, $for { $s_watching['link'] = append_sid("{$phpbb_root_path}view$mode.$phpEx", "$u_url=$match_id&" . (($is_watching) ? 'unwatch' : 'watch') . "=$mode&start=$start"); $s_watching['title'] = $user->lang[(($is_watching) ? 'STOP' : 'START') . '_WATCHING_' . strtoupper($mode)]; + $s_watching['is_watching'] = $is_watching; } return; diff --git a/phpBB/includes/functions_install.php b/phpBB/includes/functions_install.php index bf82802a29..61ac1883b3 100644 --- a/phpBB/includes/functions_install.php +++ b/phpBB/includes/functions_install.php @@ -1,10 +1,10 @@ (string) $message_parser->message, - 'user_sig_bbcode_uid' => (string) $message_parser->bbcode_uid, + 'user_sig' => (string) $message_parser->message, + 'user_sig_bbcode_uid' => (string) $message_parser->bbcode_uid, 'user_sig_bbcode_bitfield' => $message_parser->bbcode_bitfield ); @@ -491,7 +491,7 @@ class ucp_profile 'L_SIGNATURE_EXPLAIN' => sprintf($user->lang['SIGNATURE_EXPLAIN'], $config['max_sig_chars']), - 'S_BBCODE_ALLOWED' => $config['allow_sig_bbcode'], + 'S_BBCODE_ALLOWED' => $config['allow_sig_bbcode'], 'S_SMILIES_ALLOWED' => $config['allow_sig_smilies'], 'S_BBCODE_IMG' => ($config['allow_sig_img']) ? true : false, 'S_BBCODE_FLASH' => ($config['allow_sig_flash']) ? true : false, diff --git a/phpBB/includes/utf/utf_tools.php b/phpBB/includes/utf/utf_tools.php index 99fe3d9427..0a1409041b 100644 --- a/phpBB/includes/utf/utf_tools.php +++ b/phpBB/includes/utf/utf_tools.php @@ -1,10 +1,10 @@

    -

    ">»

    +

    " class="button1">

    assign_vars(array( 'TITLE' => $lang['INSTALL_INTRO'], 'BODY' => $lang['INSTALL_INTRO_BODY'], - 'L_SUBMIT' => $lang['NEXT'], + 'L_SUBMIT' => $lang['NEXT_STEP'], 'S_LANG_SELECT' => '', 'U_ACTION' => $this->p_master->module_url . "?mode=$mode&sub=requirements&language=$language", )); diff --git a/phpBB/install/install_update.php b/phpBB/install/install_update.php index 9f08f2ec64..a7f288bc0b 100644 --- a/phpBB/install/install_update.php +++ b/phpBB/install/install_update.php @@ -108,6 +108,9 @@ class install_update extends module } $db->sql_freeresult($result); + // Force template recompile + $config['load_tplcompile'] = 1; + // First of all, init the user session $user->session_begin(); $auth->acl($user->data); diff --git a/phpBB/language/en/acp/board.php b/phpBB/language/en/acp/board.php index 2c8d60565e..74a80c5047 100644 --- a/phpBB/language/en/acp/board.php +++ b/phpBB/language/en/acp/board.php @@ -1,12 +1,12 @@ 'Here you are able to define session and login related settings.', 'ALL' => 'All', - 'ALLOW_AUTOLOGIN' => 'Allow persistent logins', - 'ALLOW_AUTOLOGIN_EXPLAIN' => 'Determines whether users can autologin when they visit the board.', - 'AUTOLOGIN_LENGTH' => 'Persistent login key expiration length (in days)', - 'AUTOLOGIN_LENGTH_EXPLAIN' => 'Number of days after which persistent login keys are removed or zero to disable.', + 'ALLOW_AUTOLOGIN' => 'Allow persistent logins', + 'ALLOW_AUTOLOGIN_EXPLAIN' => 'Determines whether users can autologin when they visit the board.', + 'AUTOLOGIN_LENGTH' => 'Persistent login key expiration length (in days)', + 'AUTOLOGIN_LENGTH_EXPLAIN' => 'Number of days after which persistent login keys are removed or zero to disable.', 'BROWSER_VALID' => 'Validate browser', 'BROWSER_VALID_EXPLAIN' => 'Enables browser validation for each session improving security.', 'CHECK_DNSBL' => 'Check IP against DNS Blackhole List', diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 64de2e9ed7..aada3a4ee0 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -1,12 +1,12 @@ 'BBCode is a special implementation of HTML offering greater control over what and how something is displayed. From this page you can add, remove and edit custom BBCodes.', diff --git a/phpBB/language/en/acp/profile.php b/phpBB/language/en/acp/profile.php index 9ae307233d..24e7b732f2 100644 --- a/phpBB/language/en/acp/profile.php +++ b/phpBB/language/en/acp/profile.php @@ -1,12 +1,12 @@ '%d new messages', 'NEW_POST' => 'New post', 'NEW_POSTS' => 'New posts', - 'NEXT' => 'Next', + 'NEXT' => 'Next', // Used in pagination + 'NEXT_STEP' => 'Next', 'NEVER' => 'Never', 'NO' => 'No', 'NOT_ALLOWED_MANAGE_GROUP' => 'You are not allowed to manage this group.', @@ -412,7 +413,8 @@ $lang = array_merge($lang, array( 'POST_TOPIC' => 'Post a new topic', 'POST_UNAPPROVED' => 'This post is waiting for approval', 'PREVIEW' => 'Preview', - 'PREVIOUS' => 'Previous', + 'PREVIOUS' => 'Previous', // Used in pagination + 'PREVIOUS_STEP' => 'Previous', 'PRIVACY' => 'Privacy policy', 'PRIVATE_MESSAGE' => 'Private message', 'PRIVATE_MESSAGES' => 'Private messages', diff --git a/phpBB/language/en/help_faq.php b/phpBB/language/en/help_faq.php index a407f7f4d0..2681dc32cc 100644 --- a/phpBB/language/en/help_faq.php +++ b/phpBB/language/en/help_faq.php @@ -1,12 +1,12 @@ 'Update files are out of date. The update files found are for updating from phpBB %1$s to phpBB %2$s but the latest version of phpBB is %3$s.', 'PERFORM_DATABASE_UPDATE' => 'Perform database update', - 'PERFORM_DATABASE_UPDATE_EXPLAIN' => 'Below you will find a link to the database update script. This script needs to be run separately because updating the database might result in unexpected behaviour if you are logged in. The database update can take a while, so please do not stop the execution if it seems to hang. After you performed the database update just follow the link presented to continue the update process.', + 'PERFORM_DATABASE_UPDATE_EXPLAIN' => 'Below you will find a link to the database update script. This script needs to be run separately because updating the database might result in unexpected behaviour if you are logged in. The database update can take a while, so please do not stop the execution if it seems to hang. After the database update had been performed just follow the link presented to continue the update process.', 'PREVIOUS_VERSION' => 'Previous version', 'PROGRESS' => 'Progress', diff --git a/phpBB/language/en/mcp.php b/phpBB/language/en/mcp.php index 5b4e239952..087e8997e5 100644 --- a/phpBB/language/en/mcp.php +++ b/phpBB/language/en/mcp.php @@ -1,12 +1,12 @@
    {LOGIN_ERROR}
    -
    +
    -
    +
    {L_FORGOT_PASS}
    {L_RESEND_ACTIVATION}
    diff --git a/phpBB/styles/prosilver/template/login_forum.html b/phpBB/styles/prosilver/template/login_forum.html index 46544339f5..6d388da120 100644 --- a/phpBB/styles/prosilver/template/login_forum.html +++ b/phpBB/styles/prosilver/template/login_forum.html @@ -18,7 +18,7 @@
    -
    +
     
    diff --git a/phpBB/styles/prosilver/template/mcp_topic.html b/phpBB/styles/prosilver/template/mcp_topic.html index 704624b993..52d815eb8e 100644 --- a/phpBB/styles/prosilver/template/mcp_topic.html +++ b/phpBB/styles/prosilver/template/mcp_topic.html @@ -67,7 +67,7 @@ onload_functions.push('subPanels()');
    -
    +
    diff --git a/phpBB/styles/prosilver/template/memberlist_email.html b/phpBB/styles/prosilver/template/memberlist_email.html index 137c4939f4..cb5bf8d4ea 100644 --- a/phpBB/styles/prosilver/template/memberlist_email.html +++ b/phpBB/styles/prosilver/template/memberlist_email.html @@ -45,7 +45,7 @@ function checkForm(formObj)
    -
    +
    @@ -54,7 +54,7 @@ function checkForm(formObj)
    -
    +

    diff --git a/phpBB/styles/prosilver/template/memberlist_im.html b/phpBB/styles/prosilver/template/memberlist_im.html index 96d165228e..b12d5314c7 100644 --- a/phpBB/styles/prosilver/template/memberlist_im.html +++ b/phpBB/styles/prosilver/template/memberlist_im.html @@ -19,7 +19,7 @@
    -
    +
    diff --git a/phpBB/styles/prosilver/template/memberlist_search.html b/phpBB/styles/prosilver/template/memberlist_search.html index 4f37fbda1b..ac7ac9821d 100644 --- a/phpBB/styles/prosilver/template/memberlist_search.html +++ b/phpBB/styles/prosilver/template/memberlist_search.html @@ -51,7 +51,7 @@ function insert_single(user)
    -
    +
    diff --git a/phpBB/styles/prosilver/template/overall_footer.html b/phpBB/styles/prosilver/template/overall_footer.html index d56102f0bf..19fd7ad3eb 100644 --- a/phpBB/styles/prosilver/template/overall_footer.html +++ b/phpBB/styles/prosilver/template/overall_footer.html @@ -9,8 +9,8 @@
  • {L_INDEX} - {S_WATCH_FORUM_TITLE} - {L_WATCH_TOPIC} + class="icon-unsubscribe"class="icon-subscribe" title="{S_WATCH_FORUM_TITLE}">{S_WATCH_FORUM_TITLE} + class="icon-unsubscribe"class="icon-subscribe">{L_WATCH_TOPIC} {L_BOOKMARK_TOPIC} {L_BUMP_TOPIC} diff --git a/phpBB/styles/prosilver/template/posting_editor.html b/phpBB/styles/prosilver/template/posting_editor.html index fde14662a2..7ce6f86dea 100644 --- a/phpBB/styles/prosilver/template/posting_editor.html +++ b/phpBB/styles/prosilver/template/posting_editor.html @@ -48,7 +48,7 @@ -
    +
  • @@ -86,7 +86,7 @@
    -
    +
    @@ -250,7 +250,7 @@
    -
    +
    diff --git a/phpBB/styles/prosilver/template/ucp_pm_options.html b/phpBB/styles/prosilver/template/ucp_pm_options.html index 8e2626a29a..e8ecf2c306 100644 --- a/phpBB/styles/prosilver/template/ucp_pm_options.html +++ b/phpBB/styles/prosilver/template/ucp_pm_options.html @@ -28,32 +28,32 @@
    for="check_option">{L_IF}:
    - {CHECK_CURRENT} + {CHECK_CURRENT}
    -
    -
    {RULE_CURRENT}
    +
    +
    {RULE_CURRENT}
    -
    +
    -  [ {L_FIND_USERNAME} ] +  [ {L_FIND_USERNAME} ] {L_NO_GROUPS} - + {COND_CURRENT} @@ -68,7 +68,7 @@
    -
    +
    {ACTION_CURRENT}
    diff --git a/phpBB/styles/prosilver/template/ucp_profile_reg_details.html b/phpBB/styles/prosilver/template/ucp_profile_reg_details.html index 269582d847..a7009ecf23 100644 --- a/phpBB/styles/prosilver/template/ucp_profile_reg_details.html +++ b/phpBB/styles/prosilver/template/ucp_profile_reg_details.html @@ -14,16 +14,16 @@

    {ERROR}


    {L_USERNAME_EXPLAIN}
    -
    {USERNAME}
    +
    {USERNAME}
    -
    {EMAIL}
    +
    {EMAIL}

    {L_CONFIRM_EMAIL_EXPLAIN}
    -
    +
    diff --git a/phpBB/styles/prosilver/template/ucp_register.html b/phpBB/styles/prosilver/template/ucp_register.html index 5bb55c66f8..e9e17fc2cf 100644 --- a/phpBB/styles/prosilver/template/ucp_register.html +++ b/phpBB/styles/prosilver/template/ucp_register.html @@ -31,23 +31,23 @@

    {L_USERNAME_EXPLAIN}
    -
    +
    -
    +
    -
    +

    {L_PASSWORD_EXPLAIN}
    -
    +
    -
    +

    diff --git a/phpBB/styles/prosilver/template/ucp_remind.html b/phpBB/styles/prosilver/template/ucp_remind.html index 971bc36344..5114e4dec8 100644 --- a/phpBB/styles/prosilver/template/ucp_remind.html +++ b/phpBB/styles/prosilver/template/ucp_remind.html @@ -11,11 +11,11 @@
    -
    +

    {L_EMAIL_REMIND}
    -
    +
     
    diff --git a/phpBB/styles/prosilver/template/ucp_resend.html b/phpBB/styles/prosilver/template/ucp_resend.html index 01e8312bc8..a1d3d5c193 100644 --- a/phpBB/styles/prosilver/template/ucp_resend.html +++ b/phpBB/styles/prosilver/template/ucp_resend.html @@ -12,11 +12,11 @@
    -
    +

    {L_EMAIL_REMIND}
    -
    +
     
    diff --git a/phpBB/styles/prosilver/template/viewforum_body.html b/phpBB/styles/prosilver/template/viewforum_body.html index ab50f0017d..e92a359ca8 100644 --- a/phpBB/styles/prosilver/template/viewforum_body.html +++ b/phpBB/styles/prosilver/template/viewforum_body.html @@ -90,11 +90,11 @@
    -
    +
    -
    +
    diff --git a/phpBB/styles/subsilver2/template/login_body.html b/phpBB/styles/subsilver2/template/login_body.html index 7243c983fe..2462914756 100644 --- a/phpBB/styles/subsilver2/template/login_body.html +++ b/phpBB/styles/subsilver2/template/login_body.html @@ -35,7 +35,7 @@
    - diff --git a/phpBB/styles/subsilver2/template/login_forum.html b/phpBB/styles/subsilver2/template/login_forum.html index 06a26666e7..0ede67154e 100644 --- a/phpBB/styles/subsilver2/template/login_forum.html +++ b/phpBB/styles/subsilver2/template/login_forum.html @@ -22,7 +22,7 @@ - +
    {L_SEND_EMAIL}{L_SEND_EMAIL_USER} {USERNAME}
    {attach.REAL_FILENAME}
    {L_PM}: {L_TOPIC}: {attach.TOPIC_TITLE}
    {attach.REAL_FILENAME}
    {L_PM}: {L_POST}: {attach.TOPIC_TITLE}
    {attach.POST_TIME} {attach.SIZE} {attach.DOWNLOAD_COUNT} + From bc631bb242fddc91fde129a9855a25a3b8a4de1e Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Mon, 28 May 2007 14:07:24 +0000 Subject: [PATCH 036/136] Another multi-dimensional array which did not use request_var properly git-svn-id: file:///svn/phpbb/trunk@7693 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/acp/acp_permissions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/acp/acp_permissions.php b/phpBB/includes/acp/acp_permissions.php index 0743a53ee9..fbdb1b3cc5 100644 --- a/phpBB/includes/acp/acp_permissions.php +++ b/phpBB/includes/acp/acp_permissions.php @@ -616,7 +616,7 @@ class acp_permissions $assigned_role = (isset($_POST['role'][$ug_id][$forum_id])) ? (int) $_POST['role'][$ug_id][$forum_id] : 0; // Do the admin want to set these permissions to other items too? - $inherit = request_var('inherit', array(0)); + $inherit = request_var('inherit', array(0 => array(0))); $ug_id = array($ug_id); $forum_id = array($forum_id); From 17b6b1e230cd51b4cb76e41243af827b596895e2 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Mon, 28 May 2007 18:10:08 +0000 Subject: [PATCH 037/136] Adding to the conversion documentation. This introduces and changes languages variables. #11407 #11251 #11673 #11671 #11215 git-svn-id: file:///svn/phpbb/trunk@7694 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/style/install_convert.html | 2 +- phpBB/docs/CHANGELOG.html | 1 + phpBB/docs/INSTALL.html | 38 ++++++++++++++++++++++++---- phpBB/install/install_convert.php | 2 ++ phpBB/language/en/install.php | 5 ++-- 5 files changed, 40 insertions(+), 8 deletions(-) diff --git a/phpBB/adm/style/install_convert.html b/phpBB/adm/style/install_convert.html index b17ea838d2..5d52015da6 100755 --- a/phpBB/adm/style/install_convert.html +++ b/phpBB/adm/style/install_convert.html @@ -102,7 +102,7 @@ - +
    {options.LEGEND} diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index c5c0702259..b385b724e2 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -229,6 +229,7 @@ p a {
  • [Feature] The converter no longer relies on the smiley ID to decide if it should be displayed on the posting page
  • [Fix] Inconsistent display of more smileys link fixed (Bug #11801)
  • [Fix] Outbox messages are no always neither new nor unread post-conversion(Bug #11461)
  • +
  • Some changes to the conversion documentation
  • diff --git a/phpBB/docs/INSTALL.html b/phpBB/docs/INSTALL.html index e67e9b2a10..8dab282a25 100644 --- a/phpBB/docs/INSTALL.html +++ b/phpBB/docs/INSTALL.html @@ -33,8 +33,8 @@ p { font-size: 8pt; } -hr { - height: 0; +hr { + height: 0; border: solid #D1D7DC 0; border-top-width: 1px; } @@ -93,7 +93,7 @@ h3 { } code { - color: #006600; + color: #006600; font-weight: normal; font-family: 'Courier New', monospace; border-color: #D1D7DC; @@ -189,6 +189,7 @@ p a {
  • Requirements before converting
  • Converting
  • Things to do after conversion
  • +
  • Common conversion problems
  • Important (security related) post-Install tasks for all installation methods @@ -264,7 +265,7 @@ p a {

    3. New installation

    - +

    Installation of phpBB3 will vary according to your server and database. If you have shell access to your account (via telnet or ssh for example) you may want to upload the entire phpBB3 archive (in binary mode!) to a directory on your host and unarchive it there.

    If you do not have shell access or do not wish to use it you will need to decompress the phpBB3 archive to a local directory on your system using your favourite compression program, e.g. winzip, rar, zip, etc. From there you must FTP ALL the files it contains (being sure to retain the directory structure and filenames) to your host. Please ensure that the cases of filenames are retained, do NOT force filenames to all lower or upper case doing so will cause errors later.

    @@ -430,6 +431,8 @@ p a {

    Before converting we heavily recommend you do a full backup of your database and files! If you are unsure how to achieve this please ask your hosting provider for advice. In order to convert, you need to have a new phpBB3 installation within the same database (but with a different prefix) as your old 2.0.x installation. You basically need to follow the basic instructions given for New installations. Please do not overwrite any old files - install phpBB3 at a different location.

    Once you made a backup of everything and also have a brand new phpBB3 installation, you can now begin the conversion.

    + +

    Note that the conversion requires CREATE and DROP privileges for the phpBB3's database user account.

    Top

    @@ -442,7 +445,7 @@ p a {

    To begin the conversion visit the install folder of your phpBB3 installation (the same as you have done for installing). Now you will see a new tab Convert. Click this tab.

    As with install the conversion is automated. Your previous 2.0.x database tables will not be touched as well as the original 2.0.x files remaining untouched. The conversion is actually only filling your phpBB3 database tables and copying additional data over to your phpBB3 installation. This has the benefit that if something goes wrong you are able to either re-run the conversion or continue a conversion, while your old board is still accessible. We really recommend you disable your old installation while converting, else you may have inconsistent data after the conversion.

    - +

    Please note that this conversion process may take quite some time and depending on your hosting provider this may result in it failing (due to web server or other timeout issues). If this is the case you should ask your provider if they are willing to allow the convert script to temporarily exceed their limits (be nice and they will probably be quite helpful).

    Once completed your board should be immediately available. If you encountered errors you should report the problems to our bug tracker or seek help via our forums (see README for details).

    @@ -461,12 +464,36 @@ p a {

    Within the conversion the search index has not been created or transferred. This means after conversion you are not able to find any matches if you want to search for something. We recommend you rebuild your search index within Admin -> Maintenance -> Database -> Search Index.

    +

    After verifying the settings in the ACP, you can delete the install directory to enable the board. The board will stay disabled until you do so.

    +

    Once you are pleased with your new installation you may want to give it the name of your old installation, changing the directory name. With phpBB3 this is possible without any problems - but you may still want to check your cookie settings within the administration panel, if the cookie path need to be adjusted prior to renaming.

    Top

    +5.iv. Common conversion problems +

    + +
    + +

    Broken non-latin characters The conversion script assumes that the database encoding in the source phpBB2 matches the encoding defined in the lang_main.php file of the default language pack of the source installation. Edit that file to match the database's encoding and re-start the conversion procedure.

    + +

    http 500 / white pages The conversion is a load-heavy procedure. Restrictions imposed by some server hosting providers can cause problems. The most common causes are: too low values for the php settings memory_limit and max_execution_time. Limits on the allowed CPU time are also a frequent cause for such errors, as are caps on the number of database queries allowed. If you cannot change such settings, then contact your hosting provider or run the conversion procedure on a different computer.

    + +

    Password conversion Due to the utf-8 based handling of passwords in phpBB3, it is not always possible to transfer all passwords. For passwords "lost in translation" the easiest workaround is to use the "forgotten password" function.

    + +

    path to your former board

    The converter expects the relative path to your old board's files. So, -for instance - if the new board is located at http://www.yourdomain.com/forum and the phpBB3 is located at http://www.yourdomain.com/phpBB3, then the correct value would be ../forum. Note that the webserver user must be able to access the source installation's files. + +

    Missing images

    If your default board language's language pack does not include all images, then some images might be missing in your installation. Always use a complete language pack as default language. + +

    Smilies

    During the conversion you might see warnings about image files where the copying failed. That can happen if the old board's smilies have the same file names as those on the new board. Copy those files manually after the conversion, if you want to continue using the old smilies. + +
    +Top +

    + +

    6. Important (security related) post-Install tasks for all installation methods

    @@ -476,6 +503,7 @@ p a {

    Once you have succssfully installed phpBB3 you MUST ensure you remove the entire install/ directory. Leaving the install directory in place is a very serious potential security issue which may lead to deletion or alteration of files, etc. Please note that until this directory is not removed phpBB3 will not operate and a warning message will be displayed. Beyond this essential deletion you may also wish to delete the docs/ directories if you wish.

    With these directories deleted you should proceed to the administration panel. Depending on how the installation completed you may have been directed there automatically. If not, login as the administrator you specified during install/conversion and click the Administration Panel link at the bottom of any page. Ensure that details specified in Admin -> General are correct!

    + Top

    diff --git a/phpBB/install/install_convert.php b/phpBB/install/install_convert.php index 33b41f88d2..c5a6df33b6 100644 --- a/phpBB/install/install_convert.php +++ b/phpBB/install/install_convert.php @@ -572,6 +572,8 @@ class install_convert extends module } $template->assign_vars(array( + 'TITLE' => $lang['STAGE_SETTINGS'], + 'BODY' => $lang['CONV_OPTIONS_BODY'], 'L_SUBMIT' => $lang['BEGIN_CONVERT'], 'U_ACTION' => $this->p_master->module_url . "?mode={$this->mode}&sub=settings&tag=$convertor_tag", )); diff --git a/phpBB/language/en/install.php b/phpBB/language/en/install.php index 32a66ba62b..a457f1b6b7 100755 --- a/phpBB/language/en/install.php +++ b/phpBB/language/en/install.php @@ -73,7 +73,7 @@ $lang = array_merge($lang, array( 'CONTINUE_OLD_CONVERSION' => 'Continue previously started conversion', 'CONVERT' => 'Convert', 'CONVERT_COMPLETE' => 'Conversion completed', - 'CONVERT_COMPLETE_EXPLAIN' => 'You have now successfully converted your board to phpBB 3.0. You can now login and access your board. Remember that help on using phpBB is available online via the Documentation and the support forums.', + 'CONVERT_COMPLETE_EXPLAIN' => 'You have now successfully converted your board to phpBB 3.0. You can now login and access your board. Please ensure that the settings were transferred correctly before enabling your board by deleting the install directory. Remember that help on using phpBB is available online via the Documentation and the support forums.', 'CONVERT_INTRO' => 'Welcome to the phpBB Unified Convertor Framework', 'CONVERT_INTRO_BODY' => 'From here, you are able to import data from other (installed) board systems. The list below shows all the conversion modules currently available. If there is no convertor shown in this list for the board software you wish to convert from, please check our website where further conversion modules may be available for download.', 'CONVERT_NEW_CONVERSION' => 'New conversion', @@ -106,6 +106,7 @@ $lang = array_merge($lang, array( 'CONV_ERROR_REPLACE_FORUM' => 'Unable to insert new forum replacing old forum.', 'CONV_ERROR_USER_ACCESS' => 'Unable to get user authentication information.', 'CONV_ERROR_WRONG_GROUP' => 'Wrong group "%1$s" defined in %2$s.', + 'CONV_OPTIONS_BODY' => 'This page collects the data required to access the source board. Enter the database details of your former board; the converter will not change anything in the database given below. The source board should be disabled to allow a consistent conversion.', 'CONV_SAVED_MESSAGES' => 'Saved messages', 'COULD_NOT_COPY' => 'Could not copy file %1$s to %2$s

    Please check that the target directory exists and is writable by the webserver.', @@ -162,7 +163,7 @@ $lang = array_merge($lang, array( 'FORUM_ADDRESS' => 'Board address', 'FORUM_ADDRESS_EXPLAIN' => 'This is the URL of your former board, for example http://www.example.com/phpBB2/. If an address is entered here and not left empty every instance of this address will be replaced by your new board address within messages, private messages and signatures.', 'FORUM_PATH' => 'Board path', - 'FORUM_PATH_EXPLAIN' => 'This is the relative path on disk to your former board from the root of your phpBB installation.', + 'FORUM_PATH_EXPLAIN' => 'This is the relative path on disk to your former board from the root of this phpBB3 installation.', 'FOUND' => 'Found', 'FTP_CONFIG' => 'Transfer config by FTP', 'FTP_CONFIG_EXPLAIN' => 'phpBB has detected the presence of the FTP module on this server. You may attempt to install your config.php via this if you wish. You will need to supply the information listed below. Remember your username and password are those to your server! (ask your hosting provider for details if you are unsure what these are).', From 8385b34222d421a258b934f459e9c6d869f80576 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Mon, 28 May 2007 18:46:10 +0000 Subject: [PATCH 038/136] do not put mailto: in front of the text if parsing email address git-svn-id: file:///svn/phpbb/trunk@7695 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 8ac603fb11..64d4b1ba37 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -2709,8 +2709,8 @@ function make_clickable_callback($type, $whitespace, $url, $relative_url, $class case MAGIC_URL_EMAIL: $tag = 'e'; - $url = 'mailto:' . $url; $text = (strlen($url) > 55) ? substr($url, 0, 39) . ' ... ' . substr($url, -10) : $url; + $url = 'mailto:' . $url; break; } From 88e9dee7e8e2b8dc2b11df0a2d0598fd7606530a Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Tue, 29 May 2007 16:07:42 +0000 Subject: [PATCH 039/136] small changes - mostly style related to fix cross-browser issues. git-svn-id: file:///svn/phpbb/trunk@7696 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 10 +++++----- phpBB/includes/acp/acp_jabber.php | 4 ++-- phpBB/includes/acp/acp_update.php | 2 +- phpBB/includes/functions_jabber.php | 8 ++++---- phpBB/language/en/acp/permissions_phpbb.php | 4 ++-- phpBB/styles/prosilver/template/index_body.html | 4 +++- phpBB/styles/prosilver/template/jumpbox.html | 2 +- phpBB/styles/prosilver/template/login_body.html | 4 ++-- .../styles/prosilver/template/viewforum_body.html | 4 ++-- .../prosilver/template/viewonline_body.html | 4 ++-- phpBB/styles/prosilver/theme/colours.css | 2 +- phpBB/styles/prosilver/theme/forms.css | 9 ++++----- phpBB/styles/prosilver/theme/tweaks.css | 2 +- phpBB/styles/subsilver2/template/jumpbox.html | 2 +- phpBB/styles/subsilver2/template/mcp_jumpbox.html | 2 +- phpBB/styles/subsilver2/theme/stylesheet.css | 15 --------------- 16 files changed, 32 insertions(+), 46 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index b385b724e2..5895920525 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -187,7 +187,7 @@ p a { diff --git a/phpBB/includes/acp/acp_jabber.php b/phpBB/includes/acp/acp_jabber.php index de4ea19438..76d91c5324 100644 --- a/phpBB/includes/acp/acp_jabber.php +++ b/phpBB/includes/acp/acp_jabber.php @@ -58,13 +58,13 @@ class acp_jabber if (!$jabber->connect()) { - trigger_error($user->lang['ERR_JAB_CONNECT'] . $jabber->get_log() . adm_back_link($this->u_action), E_USER_WARNING); + trigger_error($user->lang['ERR_JAB_CONNECT'] . '

    ' . $jabber->get_log() . adm_back_link($this->u_action), E_USER_WARNING); } // We'll try to authorise using this account if (!$jabber->login()) { - trigger_error($user->lang['ERR_JAB_AUTH'] . $jabber->get_log() . adm_back_link($this->u_action), E_USER_WARNING); + trigger_error($user->lang['ERR_JAB_AUTH'] . '

    ' . $jabber->get_log() . adm_back_link($this->u_action), E_USER_WARNING); } $jabber->disconnect(); diff --git a/phpBB/includes/acp/acp_update.php b/phpBB/includes/acp/acp_update.php index a1a5dbaf3a..24dc3ebabf 100644 --- a/phpBB/includes/acp/acp_update.php +++ b/phpBB/includes/acp/acp_update.php @@ -33,7 +33,7 @@ class acp_update if ($info === false) { - trigger_error($errstr . adm_back_link($this->u_action)); + trigger_error($errstr, E_USER_WARNING); } $info = explode("\n", $info); diff --git a/phpBB/includes/functions_jabber.php b/phpBB/includes/functions_jabber.php index 4b9928089e..566eff65c5 100644 --- a/phpBB/includes/functions_jabber.php +++ b/phpBB/includes/functions_jabber.php @@ -192,15 +192,15 @@ class jabber { if (@function_exists('dns_get_record')) { - $record = dns_get_record("_xmpp-client._tcp.$server", DNS_SRV); - if (!empty($record)) + $record = @dns_get_record("_xmpp-client._tcp.$server", DNS_SRV); + if (!empty($record) && !empty($record[0]['target'])) { $server = $record[0]['target']; } } else { - $this->add_to_log('Warning: dns_get_record function not found. GTalk will not work.'); + $this->add_to_log('Warning: dns_get_record() function not found. GTalk will not work.'); } $server = $use_ssl ? 'ssl://' . $server : $server; @@ -225,7 +225,7 @@ class jabber { if ($this->enable_logging && sizeof($this->log_array)) { - return '

    ' . implode("

    ", $this->log_array); + return implode("

    ", $this->log_array); } return ''; diff --git a/phpBB/language/en/acp/permissions_phpbb.php b/phpBB/language/en/acp/permissions_phpbb.php index 8cdbc492c4..1b9fbf22ce 100644 --- a/phpBB/language/en/acp/permissions_phpbb.php +++ b/phpBB/language/en/acp/permissions_phpbb.php @@ -130,7 +130,7 @@ $lang = array_merge($lang, array( 'acl_f_read' => array('lang' => 'Can read forum', 'cat' => 'post'), 'acl_f_post' => array('lang' => 'Can start new topics', 'cat' => 'post'), 'acl_f_reply' => array('lang' => 'Can reply to topics', 'cat' => 'post'), - 'acl_f_icons' => array('lang' => 'Can use post icons', 'cat' => 'post'), + 'acl_f_icons' => array('lang' => 'Can use topic/post icons', 'cat' => 'post'), 'acl_f_announce' => array('lang' => 'Can post announcements', 'cat' => 'post'), 'acl_f_sticky' => array('lang' => 'Can post stickies', 'cat' => 'post'), @@ -191,7 +191,7 @@ $lang = array_merge($lang, array( 'acl_a_forumdel' => array('lang' => 'Can delete forums', 'cat' => 'forums'), 'acl_a_prune' => array('lang' => 'Can prune forums', 'cat' => 'forums'), - 'acl_a_icons' => array('lang' => 'Can alter topic icons and smilies', 'cat' => 'posting'), + 'acl_a_icons' => array('lang' => 'Can alter topic/post icons and smilies', 'cat' => 'posting'), 'acl_a_words' => array('lang' => 'Can alter word censors', 'cat' => 'posting'), 'acl_a_bbcode' => array('lang' => 'Can define BBCode tags', 'cat' => 'posting'), 'acl_a_attach' => array('lang' => 'Can alter attachment related settings', 'cat' => 'posting'), diff --git a/phpBB/styles/prosilver/template/index_body.html b/phpBB/styles/prosilver/template/index_body.html index 96fa57857e..bda83dcc82 100644 --- a/phpBB/styles/prosilver/template/index_body.html +++ b/phpBB/styles/prosilver/template/index_body.html @@ -3,12 +3,14 @@

    {LAST_VISIT_DATE}{CURRENT_TIME}

    {CURRENT_TIME}
    {L_MCP} ]

    {CURRENT_TIME}

    + + @@ -18,7 +20,7 @@ diff --git a/phpBB/styles/prosilver/template/jumpbox.html b/phpBB/styles/prosilver/template/jumpbox.html index 077362e306..3a0979585d 100644 --- a/phpBB/styles/prosilver/template/jumpbox.html +++ b/phpBB/styles/prosilver/template/jumpbox.html @@ -18,7 +18,7 @@
    - diff --git a/phpBB/styles/prosilver/template/login_body.html b/phpBB/styles/prosilver/template/login_body.html index 8174a2ddc1..d4ccc8740e 100644 --- a/phpBB/styles/prosilver/template/login_body.html +++ b/phpBB/styles/prosilver/template/login_body.html @@ -32,8 +32,8 @@
    -
    -
    +
    +
    diff --git a/phpBB/styles/prosilver/template/viewforum_body.html b/phpBB/styles/prosilver/template/viewforum_body.html index 97021d53d3..ab50f0017d 100644 --- a/phpBB/styles/prosilver/template/viewforum_body.html +++ b/phpBB/styles/prosilver/template/viewforum_body.html @@ -95,8 +95,8 @@
    -
    -
    +
    +
     
    diff --git a/phpBB/styles/prosilver/template/viewonline_body.html b/phpBB/styles/prosilver/template/viewonline_body.html index a29f59166b..0fd3011254 100644 --- a/phpBB/styles/prosilver/template/viewonline_body.html +++ b/phpBB/styles/prosilver/template/viewonline_body.html @@ -4,7 +4,7 @@

    {TOTAL_GUEST_USERS_ONLINE}{L_SWITCH_GUEST_DISPLAY}

    @@ -49,7 +49,7 @@

    {L_LEGEND}: {LEGEND}

    diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 017d9bcb51..e533b8f070 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -895,7 +895,7 @@ fieldset.fields2 dl:hover dt label { } /* Quick-login on index page */ -fieldset.quick-login input { +fieldset.quick-login input.inputbox { background-color: #F2F3F3; } diff --git a/phpBB/styles/prosilver/theme/forms.css b/phpBB/styles/prosilver/theme/forms.css index 272fd920ba..8031f52b81 100644 --- a/phpBB/styles/prosilver/theme/forms.css +++ b/phpBB/styles/prosilver/theme/forms.css @@ -153,6 +153,10 @@ fieldset.quick-login { } fieldset.quick-login input { + width: auto; +} + +fieldset.quick-login input.inputbox { width: 15%; vertical-align: middle; margin-right: 5px; @@ -287,11 +291,6 @@ fieldset.submit-buttons input { color: #4b4b4b; } -input.checkbox { - width: auto !important; - background-color: transparent !important; -} - input.inputbox { width: 85%; } input.medium { width: 50%; } input.narrow { width: 25%; } diff --git a/phpBB/styles/prosilver/theme/tweaks.css b/phpBB/styles/prosilver/theme/tweaks.css index e3a2557fc5..cceb5682f5 100644 --- a/phpBB/styles/prosilver/theme/tweaks.css +++ b/phpBB/styles/prosilver/theme/tweaks.css @@ -34,7 +34,7 @@ html>body dd label input { vertical-align: text-bottom; } /* Align checkboxes/ra /* Nice method for clearing floated blocks without having to insert any extra markup (like spacer above) From http://www.positioniseverything.net/easyclearing.html */ -#tabs:after, #minitabs:after, .post:after, .navbar:after, fieldset dl:after, ul.topiclist dl:after, ul.linklist:after, dl.polls:after { +#tabs:after, #minitabs:after, .post:after, .navbar:after, fieldset dd:after, fieldset dl:after, ul.topiclist dl:after, ul.linklist:after, dl.polls:after { content: "."; display: block; height: 0; diff --git a/phpBB/styles/subsilver2/template/jumpbox.html b/phpBB/styles/subsilver2/template/jumpbox.html index 2f54ebc488..d56823868b 100644 --- a/phpBB/styles/subsilver2/template/jumpbox.html +++ b/phpBB/styles/subsilver2/template/jumpbox.html @@ -4,7 +4,7 @@
  • - - + - + - + From f45719e23748c51dbb9e0d5645d3560a2ba9c976 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sun, 3 Jun 2007 17:07:15 +0000 Subject: [PATCH 053/136] #11273 (wrong definition - min-width: 0 not correctly applied) git-svn-id: file:///svn/phpbb/trunk@7710 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/style/admin.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css index 8e924b1266..380cf9f3f5 100644 --- a/phpBB/adm/style/admin.css +++ b/phpBB/adm/style/admin.css @@ -191,7 +191,7 @@ a:active { height: 350px; } -.simple-page-body { +#page-body.simple-page-body { padding: 0; padding-right: 10px; min-width: 0; From 33340b3d78cc3cec083f5bdc8412b972599ecd05 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sun, 3 Jun 2007 17:09:53 +0000 Subject: [PATCH 054/136] use correct language strings git-svn-id: file:///svn/phpbb/trunk@7711 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/acp/acp_search.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/includes/acp/acp_search.php b/phpBB/includes/acp/acp_search.php index 1c62982a56..a82579b65c 100644 --- a/phpBB/includes/acp/acp_search.php +++ b/phpBB/includes/acp/acp_search.php @@ -481,8 +481,8 @@ class acp_search $template->assign_vars(array( 'S_CONTINUE_INDEXING' => $this->state[1], 'U_CONTINUE_INDEXING' => $this->u_action . '&action=' . $this->state[1], - 'L_CONTINUE' => ($this->state[1] == 'create') ? $user->lang['CONTINUE_INDEXING'] : $user->lang['CONTINUE_INDEX_DELETING'], - 'L_CONTINUE_EXPLAIN' => ($this->state[1] == 'create') ? $user->lang['CONTINUE_INDEXING_EXPLAIN'] : $user->lang['CONTINUE_INDEX_DELETING_EXPLAIN']) + 'L_CONTINUE' => ($this->state[1] == 'create') ? $user->lang['CONTINUE_INDEXING'] : $user->lang['CONTINUE_DELETING_INDEX'], + 'L_CONTINUE_EXPLAIN' => ($this->state[1] == 'create') ? $user->lang['CONTINUE_INDEXING_EXPLAIN'] : $user->lang['CONTINUE_DELETING_INDEX_EXPLAIN']) ); } } From 498b87df106597c4d7bf236561fa76e99eeeb30f Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sun, 3 Jun 2007 18:47:05 +0000 Subject: [PATCH 055/136] do not strip our pre-parsed text if it is outside or between code blocks git-svn-id: file:///svn/phpbb/trunk@7712 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/message_parser.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index b8f00d71ee..97077980c9 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -447,7 +447,6 @@ class bbcode_firstpass extends bbcode unset($htm_match[4], $htm_match[5]); $htm_replace = array('\1', '\1', '\2', '\1'); - $in = preg_replace($htm_match, $htm_replace, $in); $out = $code_block = ''; $open = 1; @@ -488,6 +487,7 @@ class bbcode_firstpass extends bbcode if ($open == 1) { $code_block .= substr($in, 0, $pos2); + $code_block = preg_replace($htm_match, $htm_replace, $code_block); // Parse this code block $out .= $this->bbcode_parse_code($stx, $code_block); @@ -514,6 +514,8 @@ class bbcode_firstpass extends bbcode if ($code_block) { $code_block = substr($code_block, 0, -7); + $code_block = preg_replace($htm_match, $htm_replace, $code_block); + $out .= $this->bbcode_parse_code($stx, $code_block); } From 22f5b1aff683b98a3b989567517e7d15ad9ad1ce Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Mon, 4 Jun 2007 10:44:09 +0000 Subject: [PATCH 056/136] Adding a few safeguards to stop people from breaking their own boards ;) Translators, I'm sorry but this means some work for you. git-svn-id: file:///svn/phpbb/trunk@7713 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 4 ++++ phpBB/includes/acp/acp_styles.php | 17 ++++++++++------- phpBB/includes/ucp/ucp_groups.php | 29 ++++++++++++++++++++++------- phpBB/language/en/acp/groups.php | 4 ++++ 4 files changed, 40 insertions(+), 14 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 7cba0361a5..109801c4d4 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -234,6 +234,10 @@ p a {
  • [Fix] Do not permit the decimal as a valid prefix character (Bug #11967)
  • [Fix] Account for the fact that the IM fields might hold non-IM information
  • [Fix] Make the queue function on post details
  • +
  • [Fix] Check if there are active styles left before deleting a style
  • +
  • [Fix] Correctly update styles after the deletion of an imageset.
  • +
  • [Sec] Adding confirm boxes to UCP group actions
  • + diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php index 582b25f5c5..89dcf2005d 100644 --- a/phpBB/includes/acp/acp_styles.php +++ b/phpBB/includes/acp/acp_styles.php @@ -1462,12 +1462,14 @@ parse_css_file = {PARSE_CSS_FILE} $new_id = request_var('new_id', 0); $update = (isset($_POST['update'])) ? true : false; + $sql_where = ''; switch ($mode) { case 'style': $sql_from = STYLES_TABLE; $sql_select = 'style_name'; + $sql_where = 'AND style_active = 1'; break; case 'template': @@ -1502,7 +1504,8 @@ parse_css_file = {PARSE_CSS_FILE} $sql = "SELECT {$mode}_id, {$mode}_name FROM $sql_from - WHERE {$mode}_id <> $style_id + WHERE {$mode}_id <> $style_id + $sql_where ORDER BY {$mode}_name ASC"; $result = $db->sql_query($sql); @@ -1545,14 +1548,14 @@ parse_css_file = {PARSE_CSS_FILE} set_config('default_style', $new_id); } } - else if ($mode == 'imageset') - { - $sql = 'DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE . " - WHERE imageset_id = $style_id"; - $db->sql_query($sql); - } else { + if ($mode == 'imageset') + { + $sql = 'DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE . " + WHERE imageset_id = $style_id"; + $db->sql_query($sql); + } $sql = 'UPDATE ' . STYLES_TABLE . " SET {$mode}_id = $new_id WHERE {$mode}_id = $style_id"; diff --git a/phpBB/includes/ucp/ucp_groups.php b/phpBB/includes/ucp/ucp_groups.php index 99371d2024..4789da1f5a 100644 --- a/phpBB/includes/ucp/ucp_groups.php +++ b/phpBB/includes/ucp/ucp_groups.php @@ -943,14 +943,14 @@ class ucp_groups $user->add_lang(array('acp/groups', 'acp/common')); - $name_ary = request_var('usernames', '', true); + $names = request_var('usernames', '', true); if (!$group_id) { trigger_error($user->lang['NO_GROUP'] . $return_page); } - if (!$name_ary) + if (!$names) { trigger_error($user->lang['NO_USERS'] . $return_page); } @@ -966,15 +966,30 @@ class ucp_groups trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); } - $name_ary = array_unique(explode("\n", $name_ary)); + $name_ary = array_unique(explode("\n", $names)); $group_name = ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name']; $default = request_var('default', 0); - - // Add user/s to group - if ($error = group_user_add($group_id, false, $name_ary, $group_name, $default, 0, 0, $group_row)) + + if (confirm_box(true)) { - trigger_error($user->lang[$error] . $return_page); + // Add user/s to group + if ($error = group_user_add($group_id, false, $name_ary, $group_name, $default, 0, 0, $group_row)) + { + trigger_error($user->lang[$error] . $return_page); + } + } + else + { + $s_hidden_fields = array( + 'default' => $default, + 'usernames' => $names, + 'g' => $group_id, + 'i' => $id, + 'mode' => $mode, + 'action' => $action + ); + confirm_box(false, sprintf($user->lang['GROUP_CONFIRM_ADD_USER' . ((sizeof($name_ary) == 1) ? '' : 'S')], implode(', ', $name_ary)), build_hidden_fields($s_hidden_fields)); } trigger_error($user->lang['GROUP_USERS_ADDED'] . '

    ' . sprintf($user->lang['RETURN_PAGE'], '', '')); diff --git a/phpBB/language/en/acp/groups.php b/phpBB/language/en/acp/groups.php index c831a87981..668195c6b6 100644 --- a/phpBB/language/en/acp/groups.php +++ b/phpBB/language/en/acp/groups.php @@ -41,6 +41,7 @@ $lang = array_merge($lang, array( 'GROUPS_NO_MEMBERS' => 'This group has no members', 'GROUPS_NO_MODS' => 'No group leaders defined', + 'GROUP_APPROVE' => 'Approve member', 'GROUP_APPROVED' => 'Approved members', 'GROUP_AVATAR' => 'Group avatar', @@ -48,6 +49,8 @@ $lang = array_merge($lang, array( 'GROUP_CLOSED' => 'Closed', 'GROUP_COLOR' => 'Group colour', 'GROUP_COLOR_EXPLAIN' => 'Defines the colour members usernames will appear in, leave blank for user default.', + 'GROUP_CONFIRM_ADD_USER' => 'Are you sure that you want to add the user %1$s to the group?', + 'GROUP_CONFIRM_ADD_USERS' => 'Are you sure that you want to add the users %1$s to the group?', 'GROUP_CREATED' => 'Group has been created successfully.', 'GROUP_DEFAULT' => 'Make group default for member', 'GROUP_DEFS_UPDATED' => 'Default group set for all selected members.', @@ -90,6 +93,7 @@ $lang = array_merge($lang, array( 'GROUP_TYPE' => 'Group type', 'GROUP_TYPE_EXPLAIN' => 'This determines which users can join or view this group.', 'GROUP_UPDATED' => 'Group preferences updated successfully.', + 'GROUP_USERS_ADDED' => 'New users added to group successfully.', 'GROUP_USERS_EXIST' => 'The selected users are already members.', 'GROUP_USERS_REMOVE' => 'Users removed from group and new defaults set successfully.', From d268559876288ce432dfce1c637c1b81e6d5bd7d Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Mon, 4 Jun 2007 14:28:00 +0000 Subject: [PATCH 057/136] Credit where credit is due. git-svn-id: file:///svn/phpbb/trunk@7714 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 109801c4d4..2066d11f3c 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -236,7 +236,7 @@ p a {
  • [Fix] Make the queue function on post details
  • [Fix] Check if there are active styles left before deleting a style
  • [Fix] Correctly update styles after the deletion of an imageset.
  • -
  • [Sec] Adding confirm boxes to UCP group actions
  • +
  • [Sec] Adding confirm boxes to UCP group actions (ToonArmy)
  • From ed17471e0c658f381e342a484cc1bb00a03b7a2a Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Wed, 6 Jun 2007 14:00:52 +0000 Subject: [PATCH 058/136] Changing the stance we take towards flash. (DelvarWorld, NeoThermic) fixing a few smaller bugs. #12007 #12003 git-svn-id: file:///svn/phpbb/trunk@7715 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 2 ++ phpBB/includes/acp/acp_board.php | 1 + phpBB/install/database_update.php | 3 ++- phpBB/install/schemas/schema_data.sql | 5 +++-- phpBB/language/en/acp/board.php | 2 ++ phpBB/language/en/acp/common.php | 2 +- phpBB/language/en/mcp.php | 2 +- phpBB/posting.php | 2 +- phpBB/styles/prosilver/template/bbcode.html | 2 +- phpBB/styles/subsilver2/template/bbcode.html | 7 ++++--- 10 files changed, 18 insertions(+), 10 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 2066d11f3c..6d582b96f8 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -237,6 +237,8 @@ p a {
  • [Fix] Check if there are active styles left before deleting a style
  • [Fix] Correctly update styles after the deletion of an imageset.
  • [Sec] Adding confirm boxes to UCP group actions (ToonArmy)
  • +
  • [Feature] Added the option to disable the flash bbcode globally (DelvarWorld).
  • +
  • [Sec] Changed the embedding of Flash (NeoThermic, DelvarWorld).
  • diff --git a/phpBB/includes/acp/acp_board.php b/phpBB/includes/acp/acp_board.php index 1294f77a0d..07f67e6e5e 100644 --- a/phpBB/includes/acp/acp_board.php +++ b/phpBB/includes/acp/acp_board.php @@ -139,6 +139,7 @@ class acp_board 'allow_topic_notify' => array('lang' => 'ALLOW_TOPIC_NOTIFY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 'allow_forum_notify' => array('lang' => 'ALLOW_FORUM_NOTIFY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 'allow_bbcode' => array('lang' => 'ALLOW_BBCODE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), + 'allow_post_flash' => array('lang' => 'ALLOW_POST_FLASH', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 'allow_smilies' => array('lang' => 'ALLOW_SMILIES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false), 'allow_post_links' => array('lang' => 'ALLOW_POST_LINKS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'allow_nocensors' => array('lang' => 'ALLOW_NO_CENSORS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index fc3523a4b8..ea8f7be1d9 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -615,7 +615,8 @@ if (version_compare($current_version, '3.0.RC1', '<=')) _sql($sql, $errored, $error_ary); set_config('jab_use_ssl', '0'); - + set_config('allow_post_flash', '0'); + $no_updates = false; } diff --git a/phpBB/install/schemas/schema_data.sql b/phpBB/install/schemas/schema_data.sql index a25703241b..1001116f0d 100644 --- a/phpBB/install/schemas/schema_data.sql +++ b/phpBB/install/schemas/schema_data.sql @@ -20,6 +20,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_name_chars', INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_namechange', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_nocensors', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_pm_attach', '0'); +INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_post_flash', '0'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_post_links', '1'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_privmsg', '1'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_sig', '1'); @@ -537,7 +538,7 @@ INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 14, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%'; # Standard Access (f_) -INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 15, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option NOT IN ('f_announce', 'f_ignoreflood', 'f_poll', 'f_sticky', 'f_user_lock'); +INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 15, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option NOT IN ('f_announce', 'f_flash', 'f_ignoreflood', 'f_poll', 'f_sticky', 'f_user_lock'); # No Access (f_) INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 16, auth_option_id, 0 FROM phpbb_acl_options WHERE auth_option = 'f_'; @@ -556,7 +557,7 @@ INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 20, auth_option_id, 0 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option IN ('f_noapprove'); # Standard Access + Polls (f_) -INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 21, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option NOT IN ('f_announce', 'f_ignoreflood', 'f_sticky', 'f_user_lock'); +INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 21, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option NOT IN ('f_announce', 'f_flash', 'f_ignoreflood', 'f_sticky', 'f_user_lock'); # Limited Access + Polls (f_) INSERT INTO phpbb_acl_roles_data (role_id, auth_option_id, auth_setting) SELECT 22, auth_option_id, 1 FROM phpbb_acl_options WHERE auth_option LIKE 'f_%' AND auth_option NOT IN ('f_announce', 'f_attach', 'f_bump', 'f_delete', 'f_flash', 'f_icons', 'f_ignoreflood', 'f_sticky', 'f_user_lock', 'f_votechg'); diff --git a/phpBB/language/en/acp/board.php b/phpBB/language/en/acp/board.php index d5c72e0e9c..d44106e622 100644 --- a/phpBB/language/en/acp/board.php +++ b/phpBB/language/en/acp/board.php @@ -126,6 +126,8 @@ $lang = array_merge($lang, array( 'ACP_POST_SETTINGS_EXPLAIN' => 'Here you can set all default settings for posting.', 'ALLOW_POST_LINKS' => 'Allow links in posts/private messages', 'ALLOW_POST_LINKS_EXPLAIN' => 'If disallowed the [URL] BBCode tag and automatic/magic URLs are disabled.', + 'ALLOW_POST_FLASH' => 'Allow use of [FLASH] BBCode tag', + 'ALLOW_POST_FLASH_EXPLAIN' => 'If disallowed the [FLASH] BBCode tag is disabled in posts.', 'BUMP_INTERVAL' => 'Bump interval', 'BUMP_INTERVAL_EXPLAIN' => 'Number of minutes, hours or days between the last post to a topic and the ability to bump this topic.', diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index 854dc198af..47a3442187 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -647,7 +647,7 @@ $lang = array_merge($lang, array( 'LOG_USER_DEL_AVATAR_USER' => 'User avatar removed', 'LOG_USER_DEL_SIG_USER' => 'User signature removed', 'LOG_USER_FEEDBACK' => 'Added user feedback
    » %s', - 'LOG_USER_GENERAL' => '%s', + 'LOG_USER_GENERAL' => 'Entry added:
    %s', 'LOG_USER_INACTIVE_USER' => 'User account de-activated', 'LOG_USER_LOCK' => 'User locked own topic
    » %s', 'LOG_USER_MOVE_POSTS_USER' => 'Moved all posts to forum» %s', diff --git a/phpBB/language/en/mcp.php b/phpBB/language/en/mcp.php index 26f0c54e2d..5b4e239952 100644 --- a/phpBB/language/en/mcp.php +++ b/phpBB/language/en/mcp.php @@ -346,7 +346,7 @@ $lang = array_merge($lang, array( 'WARNED_USERS_EXPLAIN' => 'This is a list of users with unexpired warnings issued to them.', 'WARNING_PM_BODY' => 'The following is a warning which has been issued to you by an administrator or moderator of this site.[quote]%s[/quote]', 'WARNING_PM_SUBJECT' => 'Board warning issued', - 'WARNING_POST_DEFAULT' => 'This is a warning regarding the following post made by you: %s.', + 'WARNING_POST_DEFAULT' => 'This is a warning regarding the following post made by you: %s .', 'WARNINGS_ZERO_TOTAL' => 'No warnings exist.', 'YOU_SELECTED_TOPIC' => 'You selected topic number %d: %s.', diff --git a/phpBB/posting.php b/phpBB/posting.php index a7257a9560..3ab5544198 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -450,7 +450,7 @@ $bbcode_status = ($config['allow_bbcode'] && $auth->acl_get('f_bbcode', $forum_i $smilies_status = ($bbcode_status && $config['allow_smilies'] && $auth->acl_get('f_smilies', $forum_id)) ? true : false; $img_status = ($bbcode_status && $auth->acl_get('f_img', $forum_id)) ? true : false; $url_status = ($config['allow_post_links']) ? true : false; -$flash_status = ($bbcode_status && $auth->acl_get('f_flash', $forum_id)) ? true : false; +$flash_status = ($bbcode_status && $auth->acl_get('f_flash', $forum_id) && $config['allow_post_flash']) ? true : false; $quote_status = ($auth->acl_get('f_reply', $forum_id)) ? true : false; // Save Draft diff --git a/phpBB/styles/prosilver/template/bbcode.html b/phpBB/styles/prosilver/template/bbcode.html index 30d68af614..a600a7c92a 100644 --- a/phpBB/styles/prosilver/template/bbcode.html +++ b/phpBB/styles/prosilver/template/bbcode.html @@ -37,4 +37,4 @@ {DESCRIPTION} - \ No newline at end of file + \ No newline at end of file diff --git a/phpBB/styles/subsilver2/template/bbcode.html b/phpBB/styles/subsilver2/template/bbcode.html index 036e7b2fd2..19059c5b60 100644 --- a/phpBB/styles/subsilver2/template/bbcode.html +++ b/phpBB/styles/subsilver2/template/bbcode.html @@ -59,10 +59,11 @@ - - + + - + + From 89547673d18c8318fd72fad1f87ec278cb41bc1f Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Wed, 6 Jun 2007 14:48:36 +0000 Subject: [PATCH 059/136] Minor #12137 git-svn-id: file:///svn/phpbb/trunk@7716 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/styles/subsilver2/template/ucp_profile_signature.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/phpBB/styles/subsilver2/template/ucp_profile_signature.html b/phpBB/styles/subsilver2/template/ucp_profile_signature.html index f5e8ba032a..ff0bfe5749 100644 --- a/phpBB/styles/subsilver2/template/ucp_profile_signature.html +++ b/phpBB/styles/subsilver2/template/ucp_profile_signature.html @@ -29,6 +29,7 @@
    + +
    {L_SELECT_TOPICS_FROM}{L_MODERATE_FORUM}{L_JUMP_TO}: {L_SELECT_TOPICS_FROM}{L_MODERATE_FORUM}{L_JUMP_TO}:  + {L_JUMP_TO}:    diff --git a/phpBB/styles/subsilver2/template/mcp_post.html b/phpBB/styles/subsilver2/template/mcp_post.html index bd5a02fed0..5db2ffcc11 100644 --- a/phpBB/styles/subsilver2/template/mcp_post.html +++ b/phpBB/styles/subsilver2/template/mcp_post.html @@ -38,7 +38,7 @@
    -
    + From 3358629034954f814175354d4f416855b8f4dcb2 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Sat, 2 Jun 2007 22:55:17 +0000 Subject: [PATCH 050/136] ooops git-svn-id: file:///svn/phpbb/trunk@7707 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/INSTALL.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/docs/INSTALL.html b/phpBB/docs/INSTALL.html index 72eced6213..a9e95b6bd0 100644 --- a/phpBB/docs/INSTALL.html +++ b/phpBB/docs/INSTALL.html @@ -485,9 +485,9 @@ p a {

    Path to your former boardThe converter expects the relative path to your old board's files. So, -for instance - if the new board is located at http://www.yourdomain.com/forum and the phpBB3 is located at http://www.yourdomain.com/phpBB3, then the correct value would be ../forum. Note that the webserver user must be able to access the source installation's files.

    -

    Missing images

    If your default board language's language pack does not include all images, then some images might be missing in your installation. Always use a complete language pack as default language. +

    Missing images If your default board language's language pack does not include all images, then some images might be missing in your installation. Always use a complete language pack as default language.

    -

    Smilies

    During the conversion you might see warnings about image files where the copying failed. That can happen if the old board's smilies have the same file names as those on the new board. Copy those files manually after the conversion, if you want to continue using the old smilies. +

    Smilies During the conversion you might see warnings about image files where the copying failed. That can happen if the old board's smilies have the same file names as those on the new board. Copy those files manually after the conversion, if you want to continue using the old smilies.

    Top From aec57408628689b247ece2ba3d67a11627fcbfac Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Sat, 2 Jun 2007 22:56:38 +0000 Subject: [PATCH 051/136] hrm git-svn-id: file:///svn/phpbb/trunk@7708 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/INSTALL.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/docs/INSTALL.html b/phpBB/docs/INSTALL.html index a9e95b6bd0..185e18b7e0 100644 --- a/phpBB/docs/INSTALL.html +++ b/phpBB/docs/INSTALL.html @@ -483,7 +483,7 @@ p a {

    Password conversion Due to the utf-8 based handling of passwords in phpBB3, it is not always possible to transfer all passwords. For passwords "lost in translation" the easiest workaround is to use the "forgotten password" function.

    -

    Path to your former boardThe converter expects the relative path to your old board's files. So, -for instance - if the new board is located at http://www.yourdomain.com/forum and the phpBB3 is located at http://www.yourdomain.com/phpBB3, then the correct value would be ../forum. Note that the webserver user must be able to access the source installation's files.

    +

    Path to your former board The converter expects the relative path to your old board's files. So, -for instance - if the new board is located at http://www.yourdomain.com/forum and the phpBB3 is located at http://www.yourdomain.com/phpBB3, then the correct value would be ../forum. Note that the webserver user must be able to access the source installation's files.

    Missing images If your default board language's language pack does not include all images, then some images might be missing in your installation. Always use a complete language pack as default language.

    From c04a69c67c7f7c77f4eff8caff3d9ba18946f72d Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sun, 3 Jun 2007 16:12:00 +0000 Subject: [PATCH 052/136] tiny fixes which do not need to be listed within the changelog... (falls under tiny stylistic and language changes) git-svn-id: file:///svn/phpbb/trunk@7709 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/language/en/acp/profile.php | 4 +--- phpBB/language/en/ucp.php | 2 +- phpBB/styles/prosilver/template/memberlist_view.html | 4 ++-- phpBB/styles/prosilver/template/ucp_main_front.html | 4 ++-- .../styles/prosilver/template/ucp_profile_reg_details.html | 2 +- phpBB/styles/subsilver2/template/memberlist_view.html | 4 ++-- phpBB/styles/subsilver2/template/ucp_main_front.html | 6 +++--- 7 files changed, 12 insertions(+), 14 deletions(-) diff --git a/phpBB/language/en/acp/profile.php b/phpBB/language/en/acp/profile.php index bd4a3f0e6e..9ae307233d 100644 --- a/phpBB/language/en/acp/profile.php +++ b/phpBB/language/en/acp/profile.php @@ -110,7 +110,6 @@ $lang = array_merge($lang, array( 'NO_VALUE_OPTION_EXPLAIN' => 'Value for a non-entry. If the field is required, the user gets an error if he choose the option selected here.', 'NUMBERS_ONLY' => 'Only numbers (0-9)', - 'PREVIEW_PROFILE_FIELD' => 'Preview profile field', 'PROFILE_BASIC_OPTIONS' => 'Basic options', 'PROFILE_FIELD_ACTIVATED' => 'Profile field successfully activated.', 'PROFILE_FIELD_DEACTIVATED' => 'Profile field successfully deactivated.', @@ -130,7 +129,7 @@ $lang = array_merge($lang, array( 'STEP_1_TITLE_CREATE' => 'Add profile field', 'STEP_1_TITLE_EDIT' => 'Edit profile field', 'STEP_2_EXPLAIN_CREATE' => 'Here you are able to define some common options you may want to adjust.', - 'STEP_2_EXPLAIN_EDIT' => 'Here you are able to change some common options. Further you are able to preview the changed field, as the user will see it. Play around with it until you are satisfied as how the field behaves.
    Please note that changes to profile fields will not affect existing profile fields entered by your users.', + 'STEP_2_EXPLAIN_EDIT' => 'Here you are able to change some common options.
    Please note that changes to profile fields will not affect existing profile fields entered by your users.', 'STEP_2_TITLE_CREATE' => 'Profile type specific options', 'STEP_2_TITLE_EDIT' => 'Profile type specific options', 'STEP_3_EXPLAIN_CREATE' => 'Since you have more than one board language installed, you have to fill out the remaining language items too. The profile field will work with the default language enabled, you are able to fill out the remaining language items later too.', @@ -142,7 +141,6 @@ $lang = array_merge($lang, array( 'TEXT_DEFAULT_VALUE_EXPLAIN' => 'Enter a default text to be displayed, a default value. Leave empty if you want to show it empty at the first place.', 'TRANSLATE' => 'Translate', - 'UPDATE_PREVIEW' => 'Update preview', 'USER_FIELD_NAME' => 'Field name/title presented to the user', 'VISIBILITY_OPTION' => 'Visibility option', diff --git a/phpBB/language/en/ucp.php b/phpBB/language/en/ucp.php index 65d32cab07..7c294644a8 100644 --- a/phpBB/language/en/ucp.php +++ b/phpBB/language/en/ucp.php @@ -238,7 +238,7 @@ $lang = array_merge($lang, array( 'MESSAGE_COLOURS' => 'Message colours', 'MESSAGE_DELETED' => 'Message successfully deleted.', 'MESSAGE_HISTORY' => 'Message history', - 'MESSAGE_REMOVED_FROM_OUTBOX' => 'This message has been removed by it’s author before it was delivered.', + 'MESSAGE_REMOVED_FROM_OUTBOX' => 'This message has been removed by its author before it was delivered.', 'MESSAGE_SENT_ON' => 'on', 'MESSAGE_STORED' => 'This message has been sent successfully.', 'MESSAGE_TO' => 'To', diff --git a/phpBB/styles/prosilver/template/memberlist_view.html b/phpBB/styles/prosilver/template/memberlist_view.html index cd1f90d2c0..c30a6d69b5 100644 --- a/phpBB/styles/prosilver/template/memberlist_view.html +++ b/phpBB/styles/prosilver/template/memberlist_view.html @@ -84,8 +84,8 @@
    {L_TOTAL_POSTS}:
    {POSTS} | {L_SEARCH_USER_POSTS}
    ({POSTS_PCT} / {POSTS_DAY})
    -
    {L_ACTIVE_IN_FORUM}:
    {ACTIVE_FORUM}
    ({ACTIVE_FORUM_POSTS} / {ACTIVE_FORUM_PCT}) -
    -
    {L_ACTIVE_IN_TOPIC}:
    {ACTIVE_TOPIC}
    ({ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT}) -
    +
    {L_ACTIVE_IN_FORUM}:
    {ACTIVE_FORUM}
    ({ACTIVE_FORUM_POSTS} / {ACTIVE_FORUM_PCT}) -
    +
    {L_ACTIVE_IN_TOPIC}:
    {ACTIVE_TOPIC}
    ({ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT}) -
    diff --git a/phpBB/styles/prosilver/template/ucp_main_front.html b/phpBB/styles/prosilver/template/ucp_main_front.html index bc6c4ef9b8..4e3b252a92 100644 --- a/phpBB/styles/prosilver/template/ucp_main_front.html +++ b/phpBB/styles/prosilver/template/ucp_main_front.html @@ -34,8 +34,8 @@
    {L_JOINED}:
    {JOINED}
    {L_VISITED}:
    {LAST_VISIT_YOU}
    {L_TOTAL_POSTS}:
    {POSTS} | {L_SEARCH_YOUR_POSTS}
    ({POSTS_DAY} / {POSTS_PCT}){POSTS}
    -
    {L_ACTIVE_IN_FORUM}:
    {ACTIVE_FORUM}
    ({ACTIVE_FORUM_POSTS} / {ACTIVE_FORUM_PCT}) -
    -
    {L_ACTIVE_IN_TOPIC}:
    {ACTIVE_TOPIC}
    ({ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT}) -
    +
    {L_ACTIVE_IN_FORUM}:
    {ACTIVE_FORUM}
    ({ACTIVE_FORUM_POSTS} / {ACTIVE_FORUM_PCT}) -
    +
    {L_ACTIVE_IN_TOPIC}:
    {ACTIVE_TOPIC}
    ({ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT}) -
    {L_YOUR_WARNINGS}:
    {WARNING_IMG} [{WARNINGS}]
    diff --git a/phpBB/styles/prosilver/template/ucp_profile_reg_details.html b/phpBB/styles/prosilver/template/ucp_profile_reg_details.html index 5c63c5144b..269582d847 100644 --- a/phpBB/styles/prosilver/template/ucp_profile_reg_details.html +++ b/phpBB/styles/prosilver/template/ucp_profile_reg_details.html @@ -17,7 +17,7 @@
    {USERNAME}
    -

    {L_USERNAME_EXPLAIN}
    +
    {EMAIL}
    diff --git a/phpBB/styles/subsilver2/template/memberlist_view.html b/phpBB/styles/subsilver2/template/memberlist_view.html index 5f6c55e0eb..fb9a014331 100644 --- a/phpBB/styles/subsilver2/template/memberlist_view.html +++ b/phpBB/styles/subsilver2/template/memberlist_view.html @@ -79,11 +79,11 @@
    - + - +
    {L_ACTIVE_IN_FORUM}: {ACTIVE_FORUM}
    [ {ACTIVE_FORUM_POSTS} / {ACTIVE_FORUM_PCT} ]-
    {ACTIVE_FORUM}
    [ {ACTIVE_FORUM_POSTS} / {ACTIVE_FORUM_PCT} ]-
    {L_ACTIVE_IN_TOPIC}: {ACTIVE_TOPIC}
    [ {ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT} ]-
    {ACTIVE_TOPIC}
    [ {ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT} ]-
    diff --git a/phpBB/styles/subsilver2/template/ucp_main_front.html b/phpBB/styles/subsilver2/template/ucp_main_front.html index b659ba335b..8d0d752559 100644 --- a/phpBB/styles/subsilver2/template/ucp_main_front.html +++ b/phpBB/styles/subsilver2/template/ucp_main_front.html @@ -43,16 +43,16 @@
    {L_TOTAL_POSTS}: {POSTS}
    [{POSTS_PCT} / {POSTS_DAY}]
    {L_SEARCH_USER_POSTS}
    {POSTS}
    {POSTS}
    [{POSTS_PCT} / {POSTS_DAY}]
    {L_SEARCH_USER_POSTS}
    {POSTS}
    {L_ACTIVE_IN_FORUM}: {ACTIVE_FORUM}
    [ {ACTIVE_FORUM_POSTS} / {ACTIVE_FORUM_PCT} ]-
    {ACTIVE_FORUM}
    [ {ACTIVE_FORUM_POSTS} / {ACTIVE_FORUM_PCT} ]-
    {L_ACTIVE_IN_TOPIC}: {ACTIVE_TOPIC}
    [ {ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT} ]-
    {ACTIVE_TOPIC}
    [ {ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT} ]-
    @@ -44,6 +45,7 @@
    style="width: 50%; text-align: {S_CONTENT_FLOW_END};">{L_USERNAME}: +
    {L_REGISTER} @@ -44,7 +44,7 @@
    style="width: 50%; text-align: {S_CONTENT_FLOW_END};">{L_PASSWORD}: - +
    {L_FORGOT_PASS}
    {L_RESEND_ACTIVATION}
    {L_PASSWORD}:
    diff --git a/phpBB/styles/subsilver2/template/mcp_notes_front.html b/phpBB/styles/subsilver2/template/mcp_notes_front.html index b374773f65..663da412f7 100644 --- a/phpBB/styles/subsilver2/template/mcp_notes_front.html +++ b/phpBB/styles/subsilver2/template/mcp_notes_front.html @@ -8,7 +8,7 @@ {L_FIND_USERNAME}:
    [ {L_FIND_USERNAME} ] - + diff --git a/phpBB/styles/subsilver2/template/mcp_topic.html b/phpBB/styles/subsilver2/template/mcp_topic.html index b73190cffa..5cf4ac5ca6 100644 --- a/phpBB/styles/subsilver2/template/mcp_topic.html +++ b/phpBB/styles/subsilver2/template/mcp_topic.html @@ -12,7 +12,7 @@ {L_SPLIT_SUBJECT} - + {L_SPLIT_FORUM} diff --git a/phpBB/styles/subsilver2/template/mcp_warn_front.html b/phpBB/styles/subsilver2/template/mcp_warn_front.html index 087e9124ff..b8322fe669 100644 --- a/phpBB/styles/subsilver2/template/mcp_warn_front.html +++ b/phpBB/styles/subsilver2/template/mcp_warn_front.html @@ -8,7 +8,7 @@ {L_FIND_USERNAME}:
    [ {L_FIND_USERNAME} ] - + diff --git a/phpBB/styles/subsilver2/template/memberlist_email.html b/phpBB/styles/subsilver2/template/memberlist_email.html index 92df7910a5..9e74ec5335 100644 --- a/phpBB/styles/subsilver2/template/memberlist_email.html +++ b/phpBB/styles/subsilver2/template/memberlist_email.html @@ -47,7 +47,7 @@ function checkForm(formObj) {L_SUBJECT} - + @@ -56,7 +56,7 @@ function checkForm(formObj) {L_REAL_NAME} - + {L_DEST_LANG}
    {L_DEST_LANG_EXPLAIN} diff --git a/phpBB/styles/subsilver2/template/posting_body.html b/phpBB/styles/subsilver2/template/posting_body.html index 76d6ea85f9..7a803f5e7d 100644 --- a/phpBB/styles/subsilver2/template/posting_body.html +++ b/phpBB/styles/subsilver2/template/posting_body.html @@ -137,7 +137,7 @@ {L_USERNAME}: - + @@ -329,7 +329,7 @@ {L_EDIT_REASON}: - + diff --git a/phpBB/styles/subsilver2/template/posting_buttons.html b/phpBB/styles/subsilver2/template/posting_buttons.html index eda483e48f..61b5bd9da0 100644 --- a/phpBB/styles/subsilver2/template/posting_buttons.html +++ b/phpBB/styles/subsilver2/template/posting_buttons.html @@ -89,7 +89,7 @@ - colspan="2"> + colspan="2"> {L_FONT_COLOR} diff --git a/phpBB/styles/subsilver2/template/ucp_header.html b/phpBB/styles/subsilver2/template/ucp_header.html index 6ade3a5745..d4dafbb71b 100644 --- a/phpBB/styles/subsilver2/template/ucp_header.html +++ b/phpBB/styles/subsilver2/template/ucp_header.html @@ -19,7 +19,7 @@ -   +   diff --git a/phpBB/styles/subsilver2/template/ucp_pm_options.html b/phpBB/styles/subsilver2/template/ucp_pm_options.html index 4802b06720..a2a95826fd 100644 --- a/phpBB/styles/subsilver2/template/ucp_pm_options.html +++ b/phpBB/styles/subsilver2/template/ucp_pm_options.html @@ -22,27 +22,27 @@ {L_IF}: {CHECK_CURRENT} -   +   -   +   {RULE_CURRENT} -   +   -   +   -  [ {L_FIND_USERNAME} ] +  [ {L_FIND_USERNAME} ] {L_NO_GROUPS} @@ -51,7 +51,7 @@ -   +   @@ -61,7 +61,7 @@ -   +   {ACTION_CURRENT}   diff --git a/phpBB/styles/subsilver2/template/ucp_profile_reg_details.html b/phpBB/styles/subsilver2/template/ucp_profile_reg_details.html index 6ade4c8cba..eed1efcb64 100644 --- a/phpBB/styles/subsilver2/template/ucp_profile_reg_details.html +++ b/phpBB/styles/subsilver2/template/ucp_profile_reg_details.html @@ -16,16 +16,16 @@ {L_USERNAME}:
    {L_USERNAME_EXPLAIN} - {USERNAME} + {USERNAME} {L_EMAIL_ADDRESS}: - {EMAIL} + {EMAIL} {L_CONFIRM_EMAIL}:
    {L_CONFIRM_EMAIL_EXPLAIN} - + diff --git a/phpBB/styles/subsilver2/template/ucp_register.html b/phpBB/styles/subsilver2/template/ucp_register.html index 870c2ae1c7..171b017633 100644 --- a/phpBB/styles/subsilver2/template/ucp_register.html +++ b/phpBB/styles/subsilver2/template/ucp_register.html @@ -39,23 +39,23 @@ {L_USERNAME}:
    {L_USERNAME_EXPLAIN} - + {L_EMAIL_ADDRESS}: - + {L_CONFIRM_EMAIL}: - + {L_PASSWORD}:
    {L_PASSWORD_EXPLAIN} - + {L_CONFIRM_PASSWORD}: - + {L_LANGUAGE}: diff --git a/phpBB/styles/subsilver2/template/ucp_remind.html b/phpBB/styles/subsilver2/template/ucp_remind.html index 47baf1d447..cf724c3f42 100644 --- a/phpBB/styles/subsilver2/template/ucp_remind.html +++ b/phpBB/styles/subsilver2/template/ucp_remind.html @@ -10,11 +10,11 @@ {L_USERNAME}: - + {L_EMAIL_ADDRESS}:
    {L_EMAIL_REMIND} - + {S_HIDDEN_FIELDS}   diff --git a/phpBB/styles/subsilver2/template/ucp_resend.html b/phpBB/styles/subsilver2/template/ucp_resend.html index df72b523bc..08b6c6c22a 100644 --- a/phpBB/styles/subsilver2/template/ucp_resend.html +++ b/phpBB/styles/subsilver2/template/ucp_resend.html @@ -10,7 +10,7 @@ {L_USERNAME}: - + {L_EMAIL_ADDRESS}:
    {L_EMAIL_REMIND} diff --git a/phpBB/viewforum.php b/phpBB/viewforum.php index 7bad55b34f..00a302cef4 100644 --- a/phpBB/viewforum.php +++ b/phpBB/viewforum.php @@ -190,6 +190,8 @@ if ($forum_data['prune_next'] < time() && $forum_data['enable_prune']) // Forum rules and subscription info $s_watching_forum = $s_watching_forum_img = array(); $s_watching_forum['link'] = $s_watching_forum['title'] = ''; +$s_watching_forum['is_watching'] = false; + if (($config['email_enable'] || $config['jab_enable']) && $config['allow_forum_notify'] && $auth->acl_get('f_subscribe', $forum_id)) { $notify_status = (isset($forum_data['notify_status'])) ? $forum_data['notify_status'] : NULL; @@ -281,6 +283,7 @@ $template->assign_vars(array( 'S_TOPIC_ICONS' => ($s_display_active && sizeof($active_forum_ary)) ? max($active_forum_ary['enable_icons']) : (($forum_data['enable_icons']) ? true : false), 'S_WATCH_FORUM_LINK' => $s_watching_forum['link'], 'S_WATCH_FORUM_TITLE' => $s_watching_forum['title'], + 'S_WATCHING_FORUM' => $s_watching_forum['is_watching'], 'S_FORUM_ACTION' => append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id&start=$start"), 'S_DISPLAY_SEARCHBOX' => ($auth->acl_get('u_search') && $auth->acl_get('f_search', $forum_id) && $config['load_search']) ? true : false, 'S_SEARCHBOX_ACTION' => append_sid("{$phpbb_root_path}search.$phpEx", 'fid[]=' . $forum_id), diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 98d852737e..e65388d35e 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -428,6 +428,8 @@ $viewtopic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&a // Are we watching this topic? $s_watching_topic = $s_watching_topic_img = array(); $s_watching_topic['link'] = $s_watching_topic['title'] = ''; +$s_watching_topic['is_watching'] = false; + if ($config['email_enable'] && $config['allow_topic_notify'] && $user->data['is_registered']) { watch_topic_forum('topic', $s_watching_topic, $s_watching_topic_img, $user->data['user_id'], $forum_id, $topic_id, $topic_data['notify_status'], $start); @@ -574,6 +576,7 @@ $template->assign_vars(array( 'U_WATCH_TOPIC' => $s_watching_topic['link'], 'L_WATCH_TOPIC' => $s_watching_topic['title'], + 'S_WATCHING_TOPIC' => $s_watching_topic['is_watching'], 'U_BOOKMARK_TOPIC' => ($user->data['is_registered'] && $config['allow_bookmarks']) ? $viewtopic_url . '&bookmark=1' : '', 'L_BOOKMARK_TOPIC' => ($user->data['is_registered'] && $config['allow_bookmarks'] && $topic_data['bookmarked']) ? $user->lang['BOOKMARK_TOPIC_REMOVE'] : $user->lang['BOOKMARK_TOPIC'], From 192819575088e005c681099f7811eaafdf7cc81b Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sat, 9 Jun 2007 11:40:02 +0000 Subject: [PATCH 080/136] #11435 git-svn-id: file:///svn/phpbb/trunk@7737 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/ucp/ucp_register.php | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 10c2738c1e..3ebded2d2b 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -253,6 +253,7 @@ p a {
  • [Fix] Use icon-unsubscribe in prosilver (Bug #12211)
  • [Fix] Seperated PREVIOUS/NEXT language vars for pagination and next/previous step (Bug #12197)
  • [Feature] append_sid() supporting anchor (Bug #11535) - patch provided by Schumi and ToonArmy
  • +
  • [Fix] Remember selected language while registering after submit (Bug #11435)
  • diff --git a/phpBB/includes/ucp/ucp_register.php b/phpBB/includes/ucp/ucp_register.php index c1978f3723..513e27f503 100644 --- a/phpBB/includes/ucp/ucp_register.php +++ b/phpBB/includes/ucp/ucp_register.php @@ -34,26 +34,31 @@ class ucp_register $agreed = (!empty($_POST['agreed'])) ? 1 : 0; $submit = (isset($_POST['submit'])) ? true : false; $change_lang = request_var('change_lang', ''); + $user_lang = request_var('lang', $user->lang_name); - if ($change_lang) + if ($change_lang || $user_lang != $config['default_lang']) { - $change_lang = basename($change_lang); + $use_lang = ($change_lang) ? basename($change_lang) : basename($user_lang); - if (file_exists($phpbb_root_path . 'language/' . $change_lang . '/')) + if (file_exists($phpbb_root_path . 'language/' . $use_lang . '/')) { - $submit = false; + if ($change_lang) + { + $submit = false; - $user->lang_name = $lang = $change_lang; + // Setting back agreed to let the user view the agreement in his/her language + $agreed = (empty($_GET['change_lang'])) ? 0 : $agreed; + } + + $user->lang_name = $lang = $use_lang; $user->lang_path = $phpbb_root_path . 'language/' . $lang . '/'; $user->lang = array(); $user->add_lang(array('common', 'ucp')); - - // Setting back agreed to let the user view the agreement in his/her language - $agreed = (empty($_GET['change_lang'])) ? 0 : $agreed; } else { $change_lang = ''; + $user_lang = $user->lang_name; } } From 9f4fceb9b6ba01b3a6b107b6c4a9298765d3f927 Mon Sep 17 00:00:00 2001 From: David M Date: Sat, 9 Jun 2007 12:18:54 +0000 Subject: [PATCH 081/136] #12251 git-svn-id: file:///svn/phpbb/trunk@7738 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/acp/acp_styles.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 3ebded2d2b..a489065b37 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -254,6 +254,7 @@ p a {
  • [Fix] Seperated PREVIOUS/NEXT language vars for pagination and next/previous step (Bug #12197)
  • [Feature] append_sid() supporting anchor (Bug #11535) - patch provided by Schumi and ToonArmy
  • [Fix] Remember selected language while registering after submit (Bug #11435)
  • +
  • [Fix] UTF-8 support in theme and template editors (Bug #12251)
  • diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php index f1e0fdef77..cc3a54ad04 100644 --- a/phpBB/includes/acp/acp_styles.php +++ b/phpBB/includes/acp/acp_styles.php @@ -670,7 +670,7 @@ parse_css_file = {PARSE_CSS_FILE} $_POST['template_data'] = (isset($_POST['template_data']) && !empty($_POST['template_data'])) ? str_replace(array("\r\n", "\r"), array("\n", "\n"), $_POST['template_data']) : ''; $template_data = (STRIP) ? stripslashes($_POST['template_data']) : $_POST['template_data']; - $template_file = request_var('template_file', ''); + $template_file = request_var('template_file', '', true); $text_rows = max(5, min(999, request_var('text_rows', 20))); $save_changes = (isset($_POST['save'])) ? true : false; @@ -1023,7 +1023,7 @@ parse_css_file = {PARSE_CSS_FILE} $_POST['template_data'] = (isset($_POST['template_data']) && !empty($_POST['template_data'])) ? str_replace(array("\r\n", "\r"), array("\n", "\n"), $_POST['template_data']) : ''; $theme_data = (STRIP) ? stripslashes($_POST['template_data']) : $_POST['template_data']; - $theme_file = request_var('template_file', ''); + $theme_file = request_var('template_file', '', true); $text_rows = max(5, min(999, request_var('text_rows', 20))); $save_changes = (isset($_POST['save'])) ? true : false; From 1667a179238e77223d8ce83ab857d122a9a5c267 Mon Sep 17 00:00:00 2001 From: David M Date: Sat, 9 Jun 2007 12:26:32 +0000 Subject: [PATCH 082/136] #12067 git-svn-id: file:///svn/phpbb/trunk@7739 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/mcp/mcp_topic.php | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index a489065b37..45c272db54 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -255,6 +255,7 @@ p a {
  • [Feature] append_sid() supporting anchor (Bug #11535) - patch provided by Schumi and ToonArmy
  • [Fix] Remember selected language while registering after submit (Bug #11435)
  • [Fix] UTF-8 support in theme and template editors (Bug #12251)
  • +
  • [Fix] Allow for posts per page in the MCP to change during topic selection (Bug #12067)
  • diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php index 95f8d6c71b..3e9c5655e8 100644 --- a/phpBB/includes/mcp/mcp_topic.php +++ b/phpBB/includes/mcp/mcp_topic.php @@ -37,18 +37,25 @@ function mcp_topic_view($id, $mode, $action) $to_topic_id = request_var('to_topic_id', 0); $to_forum_id = request_var('to_forum_id', 0); $post_id_list = request_var('post_id_list', array(0)); + $sort = isset($_POST['sort']) ? true : false; // Split Topic? if ($action == 'split_all' || $action == 'split_beyond') { - split_topic($action, $topic_id, $to_forum_id, $subject); + if (!$sort) + { + split_topic($action, $topic_id, $to_forum_id, $subject); + } $action = 'split'; } // Merge Posts? if ($action == 'merge_posts') { - merge_posts($topic_id, $to_topic_id); + if (!$sort) + { + merge_posts($topic_id, $to_topic_id); + } $action = 'merge'; } @@ -69,7 +76,10 @@ function mcp_topic_view($id, $mode, $action) trigger_error('NO_POST_SELECTED'); } - approve_post($post_id_list, $id, $mode); + if (!$sort) + { + approve_post($post_id_list, $id, $mode); + } } // Jumpbox, sort selects and that kind of things From 16f60f8838d8f89a14f01051fc5e792e3060ac10 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Sat, 9 Jun 2007 14:17:21 +0000 Subject: [PATCH 083/136] #12275, #12267 git-svn-id: file:///svn/phpbb/trunk@7740 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 2 +- phpBB/includes/acp/acp_groups.php | 2 +- phpBB/includes/functions_user.php | 22 +++++++++++++++++++++- phpBB/includes/ucp/ucp_groups.php | 2 +- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 45c272db54..77b88b5715 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -256,7 +256,7 @@ p a {
  • [Fix] Remember selected language while registering after submit (Bug #11435)
  • [Fix] UTF-8 support in theme and template editors (Bug #12251)
  • [Fix] Allow for posts per page in the MCP to change during topic selection (Bug #12067)
  • - +
  • [Fix] Remove group avatars upon deletion from all profiles, not just the people having the group as default (Bug #12275, #12267)
  • diff --git a/phpBB/includes/acp/acp_groups.php b/phpBB/includes/acp/acp_groups.php index d40a8ae47b..07088de75d 100644 --- a/phpBB/includes/acp/acp_groups.php +++ b/phpBB/includes/acp/acp_groups.php @@ -359,7 +359,7 @@ class acp_groups { if (isset($group_row['group_avatar']) && $group_row['group_avatar']) { - avatar_delete('group', $group_row); + avatar_delete('group', $group_row, true); } } diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 9e83281f92..53fb65d0f0 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1761,7 +1761,7 @@ function validate_jabber($jid) /** * Remove avatar */ -function avatar_delete($mode, $row) +function avatar_delete($mode, $row, $clean_db = false) { global $phpbb_root_path, $config, $db, $user; @@ -1774,6 +1774,10 @@ function avatar_delete($mode, $row) } } + if ($clean_db) + { + avatar_remove_db($row[$mode . '_avatar']); + } $filename = get_avatar_filename($row[$mode . '_avatar']); if (file_exists($phpbb_root_path . $config['avatar_path'] . '/' . $filename)) { @@ -2415,6 +2419,22 @@ function group_correct_avatar($group_id, $old_entry) } } + +/** +* Remove avatar also for users not having the group as default +*/ +function avatar_remove_db($avatar_name) +{ + global $config, $db; + + $sql = 'UPDATE ' . USERS_TABLE . " + SET user_avatar = '', + user_avatar_type = 0 + WHERE user_avatar = '" . $db->sql_escape($avatar_name) . '\''; + $db->sql_query($sql); +} + + /** * Group Delete */ diff --git a/phpBB/includes/ucp/ucp_groups.php b/phpBB/includes/ucp/ucp_groups.php index c964bffec5..d926801b2f 100644 --- a/phpBB/includes/ucp/ucp_groups.php +++ b/phpBB/includes/ucp/ucp_groups.php @@ -548,7 +548,7 @@ class ucp_groups { if (isset($group_row['group_avatar']) && $group_row['group_avatar']) { - avatar_delete('group', $group_row); + avatar_delete('group', $group_row, true); } } From f31c53963a15d09d5fe942c9951e04bd7a655919 Mon Sep 17 00:00:00 2001 From: David M Date: Sat, 9 Jun 2007 14:58:50 +0000 Subject: [PATCH 084/136] - Oracle gives us null instead of '', this is now fixed (thanks APTX) - Oracle can now explain queries git-svn-id: file:///svn/phpbb/trunk@7741 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/db/oracle.php | 69 +++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php index bddf1602b3..ff0a8f53f7 100644 --- a/phpBB/includes/db/oracle.php +++ b/phpBB/includes/db/oracle.php @@ -386,12 +386,18 @@ class dbal_oracle extends dbal $result_row = array(); foreach ($row as $key => $value) { + // Oracle treats empty strings as null + if (is_null($value)) + { + $value = ''; + } + // OCI->CLOB? if (is_object($value)) { $value = $value->load(); } - + $result_row[strtolower($key)] = $value; } @@ -550,6 +556,67 @@ class dbal_oracle extends dbal switch ($mode) { case 'start': + + $html_table = false; + + // Grab a plan table, any will do + $sql = "SELECT table_name + FROM USER_TABLES + WHERE table_name LIKE '%PLAN_TABLE%'"; + $stmt = ociparse($this->db_connect_id, $sql); + ociexecute($stmt); + $result = array(); + + if (ocifetchinto($stmt, $result, OCI_ASSOC + OCI_RETURN_NULLS)) + { + $table = $result['TABLE_NAME']; + + // This is the statement_id that will allow us to track the plan + $statement_id = substr(md5($query), 0, 30); + + // Remove any stale plans + $stmt2 = ociparse($this->db_connect_id, "DELETE FROM $table WHERE statement_id='$statement_id'"); + ociexecute($stmt2); + ocifreestatement($stmt2); + + // Explain the plan + $sql = "EXPLAIN PLAN + SET STATEMENT_ID = '$statement_id' + FOR $query"; + $stmt2 = ociparse($this->db_connect_id, $sql); + ociexecute($stmt2); + ocifreestatement($stmt2); + + // Get the data from the plan + $sql = "SELECT operation, options, object_name, object_type, cardinality, cost + FROM plan_table + START WITH id = 0 AND statement_id = '$statement_id' + CONNECT BY PRIOR id = parent_id + AND statement_id = '$statement_id'"; + $stmt2 = ociparse($this->db_connect_id, $sql); + ociexecute($stmt2); + + $row = array(); + while (ocifetchinto($stmt2, $row, OCI_ASSOC + OCI_RETURN_NULLS)) + { + $html_table = $this->sql_report('add_select_row', $query, $html_table, $row); + } + + ocifreestatement($stmt2); + + // Remove the plan we just made, we delete them on request anyway + $stmt2 = ociparse($this->db_connect_id, "DELETE FROM $table WHERE statement_id='$statement_id'"); + ociexecute($stmt2); + ocifreestatement($stmt2); + } + + ocifreestatement($stmt); + + if ($html_table) + { + $this->html_hold .= ''; + } + break; case 'fromcache': From e41b3b89437c166588e2ae77f02c85d1c238665b Mon Sep 17 00:00:00 2001 From: David M Date: Sat, 9 Jun 2007 17:00:50 +0000 Subject: [PATCH 085/136] #12279 - Thanks to ToonArmy git-svn-id: file:///svn/phpbb/trunk@7742 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/install/convertors/functions_phpbb20.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 77b88b5715..efe432d243 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -257,6 +257,7 @@ p a {
  • [Fix] UTF-8 support in theme and template editors (Bug #12251)
  • [Fix] Allow for posts per page in the MCP to change during topic selection (Bug #12067)
  • [Fix] Remove group avatars upon deletion from all profiles, not just the people having the group as default (Bug #12275, #12267)
  • +
  • [Fix] Allow for conversions to SQLite (Bug #12279) - patch provided by ToonArmy
  • diff --git a/phpBB/install/convertors/functions_phpbb20.php b/phpBB/install/convertors/functions_phpbb20.php index 5db255f7f5..ca4f49d938 100644 --- a/phpBB/install/convertors/functions_phpbb20.php +++ b/phpBB/install/convertors/functions_phpbb20.php @@ -1727,15 +1727,15 @@ function phpbb_check_username_collisions() case 'sqlite': $create_sql = 'CREATE TABLE ' . $table_prefix . 'userconv ( user_id INTEGER NOT NULL DEFAULT \'0\', - username_clean varchar(255) NOT NULL DEFAULT \'\', + username_clean varchar(255) NOT NULL DEFAULT \'\' )'; break; } $db->sql_return_on_error(true); $db->sql_query($drop_sql); - $db->sql_query($create_sql); $db->sql_return_on_error(false); + $db->sql_query($create_sql); // now select all user_ids and usernames and then convert the username (this can take quite a while!) $sql = 'SELECT user_id, username From de739b6532f16cc187a3ef492343807229f7b3c4 Mon Sep 17 00:00:00 2001 From: David M Date: Sun, 10 Jun 2007 13:39:04 +0000 Subject: [PATCH 086/136] removed a looped regex git-svn-id: file:///svn/phpbb/trunk@7743 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/message_parser.php | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index 52e7af76cd..370a409d2f 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -1239,26 +1239,17 @@ class parse_message extends bbcode_firstpass { if ($max_smilies) { - $count = 0; - foreach ($match as $key => $smilie) + $num_matches = preg_match_all('#' . str_replace('#', '', implode('|', $match)) . '#', $this->message, $matches); + unset($matches); + + if ($num_matches !== false && $num_matches > $max_smilies) { - if ($small_count = preg_match_all($smilie, $this->message, $array)) - { - $count += $small_count; - if ($count > $max_smilies) - { - $this->warn_msg[] = sprintf($user->lang['TOO_MANY_SMILIES'], $max_smilies); - return; - } - } - $this->message = preg_replace($smilie, $replace[$key], $this->message); + $this->warn_msg[] = sprintf($user->lang['TOO_MANY_SMILIES'], $max_smilies); + return; } - $this->message = trim($this->message); - } - else - { - $this->message = trim(preg_replace($match, $replace, $this->message)); } + + $this->message = trim(preg_replace($match, $replace, $this->message)); } } From afb7f26cccf999cc4a4a1fddf25ed24b585b45e0 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Sun, 10 Jun 2007 13:42:55 +0000 Subject: [PATCH 087/136] #12287 #12219 A little clean-up in the installer (thanks ToonArmy) git-svn-id: file:///svn/phpbb/trunk@7744 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 2 ++ phpBB/includes/functions_convert.php | 13 +++++++------ phpBB/includes/functions_posting.php | 6 +++--- phpBB/install/convertors/convert_phpbb20.php | 8 +++++++- phpBB/install/install_convert.php | 1 - 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index efe432d243..80573d5483 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -258,6 +258,8 @@ p a {
  • [Fix] Allow for posts per page in the MCP to change during topic selection (Bug #12067)
  • [Fix] Remove group avatars upon deletion from all profiles, not just the people having the group as default (Bug #12275, #12267)
  • [Fix] Allow for conversions to SQLite (Bug #12279) - patch provided by ToonArmy
  • +
  • [Fix] Apply colors to guests (Bug #12219)
  • +
  • [Fix] Set the Admin group as founder_manage during conversion (Bug #12287)
  • diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php index 2723821f23..4a80b94628 100644 --- a/phpBB/includes/functions_convert.php +++ b/phpBB/includes/functions_convert.php @@ -1667,12 +1667,12 @@ function add_default_groups() global $db; $default_groups = array( - 'GUESTS' => array('', 0), - 'REGISTERED' => array('', 0), - 'REGISTERED_COPPA' => array('', 0), - 'GLOBAL_MODERATORS' => array('00AA00', 1), - 'ADMINISTRATORS' => array('AA0000', 1), - 'BOTS' => array('9E8DA7', 0) + 'GUESTS' => array('', 0, 0), + 'REGISTERED' => array('', 0, 0), + 'REGISTERED_COPPA' => array('', 0, 0), + 'GLOBAL_MODERATORS' => array('00AA00', 1, 0), + 'ADMINISTRATORS' => array('AA0000', 1, 1), + 'BOTS' => array('9E8DA7', 0, 0) ); $sql = 'SELECT * @@ -1698,6 +1698,7 @@ function add_default_groups() 'group_type' => GROUP_SPECIAL, 'group_colour' => $data[0], 'group_legend' => $data[1], + 'group_founder_manage' => $data[2] ); } diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 64612f4ca3..282e74fa7c 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -1635,7 +1635,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u 'topic_approved' => (!$auth->acl_get('f_noapprove', $data['forum_id']) && !$auth->acl_get('m_approve', $data['forum_id'])) ? 0 : 1, 'topic_title' => $subject, 'topic_first_poster_name' => (!$user->data['is_registered'] && $username) ? $username : (($user->data['user_id'] != ANONYMOUS) ? $user->data['username'] : ''), - 'topic_first_poster_colour' => (($user->data['user_id'] != ANONYMOUS) ? $user->data['user_colour'] : ''), + 'topic_first_poster_colour' => $user->data['user_colour'], 'topic_type' => $topic_type, 'topic_time_limit' => ($topic_type == POST_STICKY || $topic_type == POST_ANNOUNCE) ? ($data['topic_time_limit'] * 86400) : 0, 'topic_attachment' => (!empty($data['attachment_data'])) ? 1 : 0, @@ -1774,7 +1774,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u 'topic_last_post_time' => $current_time, 'topic_last_poster_id' => (int) $user->data['user_id'], 'topic_last_poster_name' => (!$user->data['is_registered'] && $username) ? $username : (($user->data['user_id'] != ANONYMOUS) ? $user->data['username'] : ''), - 'topic_last_poster_colour' => (($user->data['user_id'] != ANONYMOUS) ? $user->data['user_colour'] : ''), + 'topic_last_poster_colour' => $user->data['user_colour'], ); } @@ -2012,7 +2012,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u $sql_data[FORUMS_TABLE]['stat'][] = 'forum_last_post_time = ' . $current_time; $sql_data[FORUMS_TABLE]['stat'][] = 'forum_last_poster_id = ' . (int) $user->data['user_id']; $sql_data[FORUMS_TABLE]['stat'][] = "forum_last_poster_name = '" . $db->sql_escape((!$user->data['is_registered'] && $username) ? $username : (($user->data['user_id'] != ANONYMOUS) ? $user->data['username'] : '')) . "'"; - $sql_data[FORUMS_TABLE]['stat'][] = "forum_last_poster_colour = '" . (($user->data['user_id'] != ANONYMOUS) ? $db->sql_escape($user->data['user_colour']) : '') . "'"; + $sql_data[FORUMS_TABLE]['stat'][] = "forum_last_poster_colour = '" . $db->sql_escape($user->data['user_colour']) . "'"; } else if ($post_mode == 'edit_last_post') { diff --git a/phpBB/install/convertors/convert_phpbb20.php b/phpBB/install/convertors/convert_phpbb20.php index 5585a8075f..64e4c5726e 100644 --- a/phpBB/install/convertors/convert_phpbb20.php +++ b/phpBB/install/convertors/convert_phpbb20.php @@ -184,8 +184,14 @@ if (!$get_info) 'extensions', 'extension_groups' ); + + $src_db->sql_freeresult($result); } - $src_db->sql_freeresult($result); + elseif ($result) + { + $src_db->sql_freeresult($result); + } + /** * Tests for further MODs can be included here. diff --git a/phpBB/install/install_convert.php b/phpBB/install/install_convert.php index c5a6df33b6..455f8841ad 100644 --- a/phpBB/install/install_convert.php +++ b/phpBB/install/install_convert.php @@ -1247,7 +1247,6 @@ class install_convert extends module if (!$convert_row) { // move to the next batch or table - $src_db->sql_freeresult($___result); break; } From eff4e04a4e40bb4885e7275b8eb79d72a2b511c4 Mon Sep 17 00:00:00 2001 From: David M Date: Sun, 10 Jun 2007 16:13:43 +0000 Subject: [PATCH 088/136] #12189 git-svn-id: file:///svn/phpbb/trunk@7745 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/message_parser.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 80573d5483..b16491a6cb 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -260,6 +260,7 @@ p a {
  • [Fix] Allow for conversions to SQLite (Bug #12279) - patch provided by ToonArmy
  • [Fix] Apply colors to guests (Bug #12219)
  • [Fix] Set the Admin group as founder_manage during conversion (Bug #12287)
  • +
  • [Fix] Fixed a special quote BBCode case (Bug #12189)
  • diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index 370a409d2f..56c31b7818 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -690,7 +690,7 @@ class bbcode_firstpass extends bbcode if ($tok == ']') { - if ($buffer == '/quote' && sizeof($close_tags)) + if ($buffer == '/quote' && sizeof($close_tags) && substr($out, -1, 1) == '[') { // we have found a closing tag $out .= array_pop($close_tags) . ']'; From c4d442f8eb29eb12393720ea9c015307c8e50989 Mon Sep 17 00:00:00 2001 From: David M Date: Sun, 10 Jun 2007 19:50:53 +0000 Subject: [PATCH 089/136] #11833 git-svn-id: file:///svn/phpbb/trunk@7746 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/message_parser.php | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index b16491a6cb..c5d3ca86a7 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -261,6 +261,7 @@ p a {
  • [Fix] Apply colors to guests (Bug #12219)
  • [Fix] Set the Admin group as founder_manage during conversion (Bug #12287)
  • [Fix] Fixed a special quote BBCode case (Bug #12189)
  • +
  • [Fix] Correctly parse BBCodes in a post when a poll is being used (Bug #11833)
  • diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index 56c31b7818..6a00aaf4e0 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -1538,6 +1538,7 @@ class parse_message extends bbcode_firstpass // Parse Poll Option text ;) $tmp_message = $this->message; + $tmp_bitfield = $this->bbcode_bitfield; $this->message = $poll['poll_option_text']; @@ -1570,8 +1571,8 @@ class parse_message extends bbcode_firstpass } $this->message = $tmp_message; - - unset($tmp_message); + $this->bbcode_bitfield = $tmp_bitfield; + unset($tmp_message, $tmp_bitfield); if (sizeof($poll['poll_options']) == 1) { From ef48211dc55053e1e836a394d5a5509ad64ae65b Mon Sep 17 00:00:00 2001 From: David M Date: Sun, 10 Jun 2007 19:58:20 +0000 Subject: [PATCH 090/136] um, oops git-svn-id: file:///svn/phpbb/trunk@7747 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/message_parser.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index 6a00aaf4e0..8b043271bc 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -1538,17 +1538,19 @@ class parse_message extends bbcode_firstpass // Parse Poll Option text ;) $tmp_message = $this->message; - $tmp_bitfield = $this->bbcode_bitfield; $this->message = $poll['poll_option_text']; + $bbcode_bitfield = $this->bbcode_bitfield; $poll['poll_option_text'] = $this->parse($poll['enable_bbcode'], ($config['allow_post_links']) ? $poll['enable_urls'] : false, $poll['enable_smilies'], $poll['img_status'], false, false, $config['allow_post_links'], false); + $this->bbcode_bitfield = base64_encode(base64_decode($bbcode_bitfield) | base64_decode($this->bbcode_bitfield)); $this->message = $tmp_message; // Parse Poll Title $tmp_message = $this->message; $this->message = $poll['poll_title']; + $this->bbcode_bitfield = $bbcode_bitfield; $poll['poll_options'] = explode("\n", trim($poll['poll_option_text'])); $poll['poll_options_size'] = sizeof($poll['poll_options']); @@ -1570,9 +1572,9 @@ class parse_message extends bbcode_firstpass } } + $this->bbcode_bitfield = base64_encode(base64_decode($bbcode_bitfield) | base64_decode($this->bbcode_bitfield)); $this->message = $tmp_message; - $this->bbcode_bitfield = $tmp_bitfield; - unset($tmp_message, $tmp_bitfield); + unset($tmp_message); if (sizeof($poll['poll_options']) == 1) { From 056ab23bb65aea43aeb0918e7d7992a8987890a8 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sun, 10 Jun 2007 23:05:47 +0000 Subject: [PATCH 091/136] fix for #12255 - do not allow empty cleaned usernames git-svn-id: file:///svn/phpbb/trunk@7748 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 53fb65d0f0..08ccfa030f 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -143,9 +143,16 @@ function user_add($user_row, $cp_data = false) return false; } + $username_clean = utf8_clean_string($user_row['username']); + + if (empty($username_clean)) + { + return false; + } + $sql_ary = array( 'username' => $user_row['username'], - 'username_clean' => utf8_clean_string($user_row['username']), + 'username_clean' => $username_clean, 'user_password' => (isset($user_row['user_password'])) ? $user_row['user_password'] : '', 'user_pass_convert' => 0, 'user_email' => strtolower($user_row['user_email']), @@ -1262,7 +1269,7 @@ function validate_username($username, $allowed_username = false) } // ... fast checks first. - if (strpos($username, '"') !== false || strpos($username, '"') !== false) + if (strpos($username, '"') !== false || strpos($username, '"') !== false || empty($clean_username)) { return 'INVALID_CHARS'; } From 13a02f6cc5bcdb0654642135b2981633ac3996b5 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Mon, 11 Jun 2007 00:12:42 +0000 Subject: [PATCH 092/136] my round of bug fixes git-svn-id: file:///svn/phpbb/trunk@7749 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 13 +++++++--- phpBB/includes/acp/acp_prune.php | 2 +- phpBB/includes/functions.php | 2 +- phpBB/includes/functions_display.php | 2 +- phpBB/includes/message_parser.php | 4 ++-- phpBB/includes/ucp/ucp_pm_compose.php | 6 ++--- phpBB/index.php | 2 +- phpBB/language/en/posting.php | 2 ++ phpBB/posting.php | 24 +++++++++++++++---- .../styles/prosilver/template/index_body.html | 2 +- .../prosilver/template/viewforum_body.html | 6 ++--- .../subsilver2/template/forumlist_body.html | 2 +- .../subsilver2/template/viewforum_body.html | 2 +- phpBB/viewforum.php | 4 ++-- 14 files changed, 49 insertions(+), 24 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index c5d3ca86a7..e7570d1169 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -197,16 +197,16 @@ p a {
  • [Fix] Proper sync of data on topic copy (Bug #11335)
  • [Fix] Introduced ORDER BY clauses to converter queries (Bug #10697)
  • [Fix] Stopped bots from getting added to the registered users group during conversion (Bug #11283)
  • -
  • [Fix] Filled "SMILIEYS_DISABLED" template variable (Bug #11257)
  • +
  • [Fix] Filled "SMILIEYS_DISABLED" template variable (Bug #11257)
  • [Fix] Properly escaped the delimiter in disallowed username comparisons (Bug #11339)
  • [Fix] Check global purge setting (Bug #11555)
  • [Fix] Improper magic url parsing applied to already parsed [url=] bbcode tag (Bug #11429)
  • [Fix] Renamed two indicies for Oracle support (Bug #11457)
  • [Fix] Added support for ISO-8859-8(-i) in the character set convertor (Bug #11265, #12039)
  • -
  • [Fix] Added support for Oracle's "easy connect naming"
  • +
  • [Fix] Added support for Oracle's "easy connect naming"
  • [Fix] Let Mark/Unmark All work in Manage Drafts (Bug #11679)
  • [Fix] Display correct message if no attachments found in user administration (Bug #11629)
  • -
  • [Fix] Let the "Delete all board cookies" being displayed for guests too (only prosilver) (Bug #11603)
  • +
  • [Fix] Let the "Delete all board cookies" being displayed for guests too (only prosilver) (Bug #11603)
  • [Fix] Do not display view topic link in MCP while there is no link present (Bug #11573)
  • [Fix] MySQL now properly sorts by post_subject (Bug #11637)
  • [Fix] Introduced checks to stop negative postcounts (Bug #11561, #11421)
  • @@ -262,6 +262,13 @@ p a {
  • [Fix] Set the Admin group as founder_manage during conversion (Bug #12287)
  • [Fix] Fixed a special quote BBCode case (Bug #12189)
  • [Fix] Correctly parse BBCodes in a post when a poll is being used (Bug #11833)
  • +
  • [Fix] Remember attached files on PM edit (Bug #12019)
  • +
  • [Fix] Correctly display poll ending on preview (Bug #12303)
  • +
  • [Feature] Display the success message on posting longer for posts awaiting approval (Bug #12053)
  • +
  • [Fix] Display maximum and entered number of characters for the "maximum number of characters exceeded" error messages (Bug #11981)
  • +
  • [Fix] Wrongly applied setting for allowing links in private messages (used the signature setting instead of the post setting) (Bug #11945)
  • +
  • [Fix] Unread flag for multipage topic wrongly set under some conditions (Bug #12127) - fix provided by asinshesq
  • +
  • [Fix] Able to delete posts within user prune panel (Bug #11849)
  • diff --git a/phpBB/includes/acp/acp_prune.php b/phpBB/includes/acp/acp_prune.php index e4defd9d42..7405a271ed 100644 --- a/phpBB/includes/acp/acp_prune.php +++ b/phpBB/includes/acp/acp_prune.php @@ -230,6 +230,7 @@ class acp_prune if ($prune) { $action = request_var('action', 'deactivate'); + $deleteposts = request_var('deleteposts', 0); if (confirm_box(true)) { @@ -361,7 +362,6 @@ class acp_prune global $user, $db; $users = request_var('users', '', true); - $deleteposts = request_var('deleteposts', 0); if ($users) { diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index fc1e173600..b096c7319e 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -1272,7 +1272,7 @@ function update_forum_tracking_info($forum_id, $forum_last_post_time, $f_mark_ti WHERE t.forum_id = ' . $forum_id . ' AND t.topic_last_post_time > ' . $mark_time_forum . ' AND t.topic_moved_id = 0 - AND tt.topic_id IS NULL + AND (tt.topic_id IS NULL OR tt.mark_time < t.topic_last_post_time) GROUP BY t.forum_id'; $result = $db->sql_query_limit($sql, 1); $row = $db->sql_fetchrow($result); diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php index b87cf31d04..92e636af01 100644 --- a/phpBB/includes/functions_display.php +++ b/phpBB/includes/functions_display.php @@ -420,7 +420,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod } $template->assign_vars(array( - 'U_MARK_FORUMS' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $root_data['forum_id'] . '&mark=forums'), + 'U_MARK_FORUMS' => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $root_data['forum_id'] . '&mark=forums') : '', 'S_HAS_SUBFORUM' => ($visible_forums) ? true : false, 'L_SUBFORUM' => ($visible_forums == 1) ? $user->lang['SUBFORUM'] : $user->lang['SUBFORUMS'], 'LAST_POST_IMG' => $user->img('icon_topic_latest', 'VIEW_LATEST_POST')) diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index 8b043271bc..1a70a7fd80 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -367,7 +367,7 @@ class bbcode_firstpass extends bbcode * Parse code text from code tag * @private */ - function bbcode_parse_code($stx, $code) + function bbcode_parse_code($stx, &$code) { switch (strtolower($stx)) { @@ -1041,7 +1041,7 @@ class parse_message extends bbcode_firstpass if ((!$msg_len && $mode !== 'sig') || $config['max_' . $mode . '_chars'] && $msg_len > $config['max_' . $mode . '_chars']) { - $this->warn_msg[] = (!$msg_len) ? $user->lang['TOO_FEW_CHARS'] : $user->lang['TOO_MANY_CHARS']; + $this->warn_msg[] = (!$msg_len) ? $user->lang['TOO_FEW_CHARS'] : sprintf($user->lang['TOO_MANY_CHARS_' . strtoupper($mode)], $msg_len, $config['max_' . $mode . '_chars']); return $this->warn_msg; } } diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index 6718094c75..105dda1d8c 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -245,7 +245,7 @@ function compose_pm($id, $mode, $action) $enable_urls = $post['enable_magic_url']; $enable_sig = (isset($post['enable_sig'])) ? $post['enable_sig'] : 0; - $message_attachment = (isset($post['message_attachement'])) ? $post['message_attachement'] : 0; + $message_attachment = (isset($post['message_attachment'])) ? $post['message_attachment'] : 0; $message_subject = $post['message_subject']; $message_time = $post['message_time']; $bbcode_uid = $post['bbcode_uid']; @@ -538,7 +538,7 @@ function compose_pm($id, $mode, $action) } // Parse message - $message_parser->parse($enable_bbcode, ($config['allow_post_links']) ? $enable_urls : false, $enable_smilies, $img_status, $flash_status, true, $config['allow_sig_links']); + $message_parser->parse($enable_bbcode, ($config['allow_post_links']) ? $enable_urls : false, $enable_smilies, $img_status, $flash_status, true, $config['allow_post_links']); // On a refresh we do not care about message parsing errors if (sizeof($message_parser->warn_msg) && !$refresh) @@ -929,7 +929,7 @@ function compose_pm($id, $mode, $action) 'S_SIGNATURE_CHECKED' => ($sig_checked) ? ' checked="checked"' : '', 'S_LINKS_ALLOWED' => $url_status, 'S_MAGIC_URL_CHECKED' => ($urls_checked) ? ' checked="checked"' : '', - 'S_SAVE_ALLOWED' => $auth->acl_get('u_savedrafts'), + 'S_SAVE_ALLOWED' => ($auth->acl_get('u_savedrafts') && $action != 'edit') ? true : false, 'S_HAS_DRAFTS' => ($auth->acl_get('u_savedrafts') && $drafts), 'S_FORM_ENCTYPE' => $form_enctype, diff --git a/phpBB/index.php b/phpBB/index.php index 209bcfc2bd..56840df70f 100644 --- a/phpBB/index.php +++ b/phpBB/index.php @@ -116,7 +116,7 @@ $template->assign_vars(array( 'S_LOGIN_ACTION' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login'), 'S_DISPLAY_BIRTHDAY_LIST' => ($config['load_birthdays']) ? true : false, - 'U_MARK_FORUMS' => append_sid("{$phpbb_root_path}index.$phpEx", 'mark=forums'), + 'U_MARK_FORUMS' => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}index.$phpEx", 'mark=forums') : '', 'U_MCP' => ($auth->acl_get('m_') || $auth->acl_getf_global('m_')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=front', true, $user->session_id) : '') ); diff --git a/phpBB/language/en/posting.php b/phpBB/language/en/posting.php index ef3f2fb985..37334c961a 100644 --- a/phpBB/language/en/posting.php +++ b/phpBB/language/en/posting.php @@ -183,6 +183,8 @@ $lang = array_merge($lang, array( 'TOO_FEW_POLL_OPTIONS' => 'You must enter at least two poll options.', 'TOO_MANY_ATTACHMENTS' => 'Cannot add another attachment, %d is the maximum.', 'TOO_MANY_CHARS' => 'Your message contains too many characters.', + 'TOO_MANY_CHARS_POST' => 'Your message contains %1$d characters. The maximum number of allowed characters is %2$d.', + 'TOO_MANY_CHARS_SIG' => 'Your signature contains %1$d characters. The maximum number of allowed characters is %2$d.', 'TOO_MANY_POLL_OPTIONS' => 'You have tried to enter too many poll options.', 'TOO_MANY_SMILIES' => 'Your message contains too many smilies. The maximum number of smilies allowed is %d.', 'TOO_MANY_URLS' => 'Your message contains too many URLs. The maximum number of URLs allowed is %d.', diff --git a/phpBB/posting.php b/phpBB/posting.php index eb6483ffd3..7524ef41a5 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -975,11 +975,22 @@ if ($submit || $preview || $refresh) unset($message_parser); $redirect_url = submit_post($mode, $post_data['post_subject'], $post_data['username'], $post_data['topic_type'], $poll, $data, $update_message); + $post_need_approval = (!$auth->acl_get('f_noapprove', $data['forum_id']) && !$auth->acl_get('m_approve', $data['forum_id'])) ? true : false; - meta_refresh(3, $redirect_url); + // If the post need approval we will wait a lot longer. + if ($post_need_approval) + { + meta_refresh(10, $redirect_url); + $message = ($mode == 'edit') ? $user->lang['POST_EDITED_MOD'] : $user->lang['POST_STORED_MOD']; + } + else + { + meta_refresh(3, $redirect_url); + + $message = ($mode == 'edit') ? 'POST_EDITED' : 'POST_STORED'; + $message = $user->lang[$message] . '

    ' . sprintf($user->lang['VIEW_MESSAGE'], '', ''); + } - $message = (!$auth->acl_get('f_noapprove', $data['forum_id']) && !$auth->acl_get('m_approve', $data['forum_id'])) ? (($mode == 'edit') ? 'POST_EDITED_MOD' : 'POST_STORED_MOD') : (($mode == 'edit') ? 'POST_EDITED' : 'POST_STORED'); - $message = $user->lang[$message] . (($auth->acl_get('f_noapprove', $data['forum_id']) || $auth->acl_get('m_approve', $data['forum_id'])) ? '

    ' . sprintf($user->lang['VIEW_MESSAGE'], '', '') : ''); $message .= '

    ' . sprintf($user->lang['RETURN_FORUM'], '', ''); trigger_error($message); } @@ -1026,13 +1037,18 @@ if (!sizeof($error) && $preview) $parse_poll->format_display($post_data['enable_bbcode'], $post_data['enable_urls'], $post_data['enable_smilies']); + if ($post_data['poll_length']) + { + $poll_end = ($post_data['poll_length'] * 86400) + (($post_data['poll_start']) ? $post_data['poll_start'] : time()); + } + $template->assign_vars(array( 'S_HAS_POLL_OPTIONS' => (sizeof($post_data['poll_options'])), 'S_IS_MULTI_CHOICE' => ($post_data['poll_max_options'] > 1) ? true : false, 'POLL_QUESTION' => $parse_poll->message, - 'L_POLL_LENGTH' => ($post_data['poll_length']) ? sprintf($user->lang['POLL_RUN_TILL'], $user->format_date($post_data['poll_length'] + $post_data['poll_start'])) : '', + 'L_POLL_LENGTH' => ($post_data['poll_length']) ? sprintf($user->lang['POLL_RUN_TILL'], $user->format_date($poll_end)) : '', 'L_MAX_VOTES' => ($post_data['poll_max_options'] == 1) ? $user->lang['MAX_OPTION_SELECT'] : sprintf($user->lang['MAX_OPTIONS_SELECT'], $post_data['poll_max_options'])) ); diff --git a/phpBB/styles/prosilver/template/index_body.html b/phpBB/styles/prosilver/template/index_body.html index bda83dcc82..fbfdaa7e62 100644 --- a/phpBB/styles/prosilver/template/index_body.html +++ b/phpBB/styles/prosilver/template/index_body.html @@ -8,7 +8,7 @@
  • {L_SEARCH_UNANSWERED}{L_SEARCH_NEW}{L_SEARCH_ACTIVE_TOPICS}
  • -
  • {L_MARK_FORUMS_READ}
  • +
  • {L_MARK_FORUMS_READ}
  • diff --git a/phpBB/styles/prosilver/template/viewforum_body.html b/phpBB/styles/prosilver/template/viewforum_body.html index e92a359ca8..d7ba9e7669 100644 --- a/phpBB/styles/prosilver/template/viewforum_body.html +++ b/phpBB/styles/prosilver/template/viewforum_body.html @@ -26,7 +26,7 @@ - + @@ -59,7 +59,7 @@

    {L_DIMENSIONS_EXPLAIN}
    -
    -
    +
    +
    +
    +
    +

    {L_AUTOMATIC_EXPLAIN}
    +
    +
    +
    +

    {L_AUTOMATIC_EXPLAIN}
    +
    +
    +
    diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index e7570d1169..2f4bc5b848 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -269,6 +269,7 @@ p a {
  • [Fix] Wrongly applied setting for allowing links in private messages (used the signature setting instead of the post setting) (Bug #11945)
  • [Fix] Unread flag for multipage topic wrongly set under some conditions (Bug #12127) - fix provided by asinshesq
  • [Fix] Able to delete posts within user prune panel (Bug #11849)
  • +
  • [Feature] Allow to specify dimensions of images manually on imageset config (Bug #11675)
  • diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php index cc3a54ad04..5f3aa024fc 100644 --- a/phpBB/includes/acp/acp_styles.php +++ b/phpBB/includes/acp/acp_styles.php @@ -1209,7 +1209,8 @@ parse_css_file = {PARSE_CSS_FILE} $imgpath = request_var('imgpath', ''); $imgsize = request_var('imgsize', false); $imgwidth = request_var('imgwidth', 0); - + $imgheight = request_var('imgheight', 0); + $imgname = preg_replace('#[^a-z0-9\-+_]#i', '', $imgname); $imgpath = str_replace('..', '.', $imgpath); @@ -1269,7 +1270,8 @@ parse_css_file = {PARSE_CSS_FILE} { // If imgwidth and imgheight are non-zero grab the actual size // from the image itself ... we ignore width settings for the poll center image - $imgwidth = $imgheight = 0; + $imgwidth = request_var('imgwidth', 0); + $imgheight = request_var('imgheight', 0); $imglang = ''; if ($imgpath && !file_exists("{$phpbb_root_path}styles/$imageset_path/imageset/$imgpath")) @@ -1279,10 +1281,16 @@ parse_css_file = {PARSE_CSS_FILE} if ($imgsize && $imgpath) { - list($imgwidth, $imgheight) = getimagesize("{$phpbb_root_path}styles/$imageset_path/imageset/$imgpath"); + if (!$imgwidth || !$imgheight) + { + list($imgwidth_file, $imgheight_file) = getimagesize("{$phpbb_root_path}styles/$imageset_path/imageset/$imgpath"); + $imgwidth = ($imgwidth) ? $imgwidth : $imgwidth_file; + $imgheight = ($imgheight) ? $imgheight : $imgheight_file; + } $imgwidth = ($imgname != 'poll_center') ? (int) $imgwidth : 0; $imgheight = (int) $imgheight; - } + } + if (strpos($imgpath, '/') !== false) { @@ -1442,7 +1450,8 @@ parse_css_file = {PARSE_CSS_FILE} 'L_TITLE' => $user->lang[$this->page_title], 'L_EXPLAIN' => $user->lang[$this->page_title . '_EXPLAIN'], 'IMAGE_OPTIONS' => $img_options, - 'IMAGE_SIZE' => $imgsize_bool, + 'IMAGE_SIZE' => $image_width, + 'IMAGE_HEIGHT' => $image_height, 'IMAGE_REQUEST' => $image_request, 'U_ACTION' => $this->u_action . "&action=edit&id=$imageset_id", 'U_BACK' => $this->u_action, diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php index 3e9c5655e8..ef41ede5c4 100644 --- a/phpBB/includes/mcp/mcp_topic.php +++ b/phpBB/includes/mcp/mcp_topic.php @@ -417,7 +417,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject) $post_id_list = array(); while ($row = $db->sql_fetchrow($result)) { - // If splitted from selected post (split_beyond), we split the unapproved items too. + // If split from selected post (split_beyond), we split the unapproved items too. if (!$row['post_approved'] && !$auth->acl_get('m_approve', $row['forum_id'])) { // continue; diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php index aada3a4ee0..92e6d77dfb 100644 --- a/phpBB/language/en/acp/common.php +++ b/phpBB/language/en/acp/common.php @@ -466,8 +466,8 @@ $lang = array_merge($lang, array( 'LOG_POST_EDITED' => 'Edited post “%1$s” written by
    » %2$s', 'LOG_REPORT_CLOSED' => 'Closed report
    » %s', 'LOG_REPORT_DELETED' => 'Deleted report
    » %s', - 'LOG_SPLIT_DESTINATION' => 'Moved splitted posts
    » to %s', - 'LOG_SPLIT_SOURCE' => 'Splitted posts
    » from %s', + 'LOG_SPLIT_DESTINATION' => 'Moved split posts
    » to %s', + 'LOG_SPLIT_SOURCE' => 'Split posts
    » from %s', 'LOG_TOPIC_DELETED' => 'Deleted topic
    » %s', 'LOG_TOPIC_APPROVED' => 'Approved topic
    » %s', diff --git a/phpBB/language/en/acp/styles.php b/phpBB/language/en/acp/styles.php index 8dc5d21775..4f7472e5ff 100644 --- a/phpBB/language/en/acp/styles.php +++ b/phpBB/language/en/acp/styles.php @@ -44,6 +44,7 @@ $lang = array_merge($lang, array( 'ADD_THEME' => 'Create theme', 'ADD_THEME_EXPLAIN' => 'Here you can add a new theme. Depending on your server configuration and file permissions you may have additional options here. For example you may be able to base this theme on an existing one. You may also be able to upload or import (from the store directory) a theme archive. If you upload or import an archive the theme name can be optionally taken from the archive name (to do this leave the theme name blank).', 'ARCHIVE_FORMAT' => 'Archive file type', + 'AUTOMATIC_EXPLAIN' => 'Leave blank to attempt automatic detection.', 'BACKGROUND' => 'Background', 'BACKGROUND_COLOUR' => 'Background colour', From 0c75bd4b8d07bb6ab5e184e2ea477371a94f99b3 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Mon, 11 Jun 2007 13:54:38 +0000 Subject: [PATCH 094/136] A minor language-file fix. #12245 git-svn-id: file:///svn/phpbb/trunk@7751 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/install/schemas/schema_data.sql | 10 +++++----- phpBB/language/en/install.php | 4 ++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/phpBB/install/schemas/schema_data.sql b/phpBB/install/schemas/schema_data.sql index 5615273e10..8745e349c7 100644 --- a/phpBB/install/schemas/schema_data.sql +++ b/phpBB/install/schemas/schema_data.sql @@ -678,11 +678,11 @@ INSERT INTO phpbb_icons (icons_url, icons_width, icons_height, icons_order, disp INSERT INTO phpbb_icons (icons_url, icons_width, icons_height, icons_order, display_on_posting) VALUES ('smile/question.gif', 16, 16, 6, 1); INSERT INTO phpbb_icons (icons_url, icons_width, icons_height, icons_order, display_on_posting) VALUES ('smile/alert.gif', 16, 16, 7, 1); -# -- reasons - the report_description here is not used, only to fill up the db. ;) -INSERT INTO phpbb_reports_reasons (reason_title, reason_description, reason_order) VALUES ('warez', 'The reported post contains links to pirated or illegal software', 1); -INSERT INTO phpbb_reports_reasons (reason_title, reason_description, reason_order) VALUES ('spam', 'The reported post has for only purpose to advertise for a website or another product', 2); -INSERT INTO phpbb_reports_reasons (reason_title, reason_description, reason_order) VALUES ('off_topic', 'The reported post is off topic', 3); -INSERT INTO phpbb_reports_reasons (reason_title, reason_description, reason_order) VALUES ('other', 'The reported post does not fit into any other category (please use the description field)', 4); +# -- reasons +INSERT INTO phpbb_reports_reasons (reason_title, reason_description, reason_order) VALUES ('warez', '{L_REPORT_WAREZ}', 1); +INSERT INTO phpbb_reports_reasons (reason_title, reason_description, reason_order) VALUES ('spam', '{L_REPORT_SPAM}', 2); +INSERT INTO phpbb_reports_reasons (reason_title, reason_description, reason_order) VALUES ('off_topic', '{L_REPORT_OFF_TOPIC}', 3); +INSERT INTO phpbb_reports_reasons (reason_title, reason_description, reason_order) VALUES ('other', '{L_REPORT_OTHER}', 4); # -- extension_groups INSERT INTO phpbb_extension_groups (group_name, cat_id, allow_group, download_mode, upload_icon, max_filesize, allowed_forums) VALUES ('{L_EXT_GROUP_IMAGES}', 1, 1, 1, '', 0, ''); diff --git a/phpBB/language/en/install.php b/phpBB/language/en/install.php index 881859b728..8f37b52c09 100755 --- a/phpBB/language/en/install.php +++ b/phpBB/language/en/install.php @@ -552,6 +552,10 @@ $lang = array_merge($lang, array( 'FORUMS_TEST_FORUM_TITLE' => 'Test Forum 1', 'RANKS_SITE_ADMIN_TITLE' => 'Site Admin', + 'REPORT_WAREZ' => 'The post contains links to illegal or pirated software.', + 'REPORT_SPAM' => 'The reported post has the only purpose to advertise for a website or another product.', + 'REPORT_OFF_TOPIC' => 'The reported post is off topic.', + 'REPORT_OTHER' => 'The reported post does not fit into any other category, please use the description field.', 'SMILIES_ARROW' => 'Arrow', 'SMILIES_CONFUSED' => 'Confused', From 154463e87cf5e963e9900c4ff646ea8533001ff4 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Mon, 11 Jun 2007 19:29:12 +0000 Subject: [PATCH 095/136] support RTL for menu switch git-svn-id: file:///svn/phpbb/trunk@7752 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/style/admin.css | 11 +++++++++++ phpBB/adm/style/overall_header.html | 20 ++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css index 380cf9f3f5..f81c56846d 100644 --- a/phpBB/adm/style/admin.css +++ b/phpBB/adm/style/admin.css @@ -351,6 +351,12 @@ span.corners-bottom span { margin-left: 2px; } +.rtl #toggle { + left: 75%; + margin-right: 0; + margin-left: 6px; +} + #toggle-handle { display: block; width: 18px; @@ -359,6 +365,11 @@ span.corners-bottom span { background-image: url(../images/toggle.gif); } +.rtl #toggle-handle { + background-image: url(../images/toggle.gif); + background-position: 100% 50%; +} + /* Menu */ #menu { float: left; diff --git a/phpBB/adm/style/overall_header.html b/phpBB/adm/style/overall_header.html index d75d89ab13..4cc4dbd678 100644 --- a/phpBB/adm/style/overall_header.html +++ b/phpBB/adm/style/overall_header.html @@ -129,11 +129,17 @@ function switch_menu() main.style.width = '93%'; menu_state = 'hidden'; menu.style.display = 'none'; - toggle.style.left = '0'; toggle.style.width = '20px'; handle.style.backgroundImage = 'url(images/toggle.gif)'; - handle.style.backgroundPosition = '100% 50%'; handle.style.backgroundRepeat = 'no-repeat'; + + + handle.style.backgroundPosition = '0% 50%'; + toggle.style.left = '96%'; + + handle.style.backgroundPosition = '100% 50%'; + toggle.style.left = '0'; + break; // show @@ -141,11 +147,17 @@ function switch_menu() main.style.width = '76%'; menu_state = 'shown'; menu.style.display = 'block'; - toggle.style.left = '15%'; toggle.style.width = '5%'; handle.style.backgroundImage = 'url(images/toggle.gif)'; - handle.style.backgroundPosition = '0% 50%'; handle.style.backgroundRepeat = 'no-repeat'; + + + handle.style.backgroundPosition = '100% 50%'; + toggle.style.left = '75%'; + + handle.style.backgroundPosition = '0% 50%'; + toggle.style.left = '15%'; + break; } } From 6160b613bcd3cc814252541b5c7171093bba5d10 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Tue, 12 Jun 2007 21:24:22 +0000 Subject: [PATCH 096/136] correctly re-assign query result git-svn-id: file:///svn/phpbb/trunk@7753 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/db/firebird.php | 2 +- phpBB/includes/db/mssql.php | 2 +- phpBB/includes/db/mssql_odbc.php | 2 +- phpBB/includes/db/mysql.php | 2 +- phpBB/includes/db/mysqli.php | 2 +- phpBB/includes/db/oracle.php | 2 +- phpBB/includes/db/postgres.php | 2 +- phpBB/includes/db/sqlite.php | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/phpBB/includes/db/firebird.php b/phpBB/includes/db/firebird.php index 4b3a15dd8d..ad3c58671a 100644 --- a/phpBB/includes/db/firebird.php +++ b/phpBB/includes/db/firebird.php @@ -298,7 +298,7 @@ class dbal_firebird extends dbal * Seek to given row number * rownum is zero-based */ - function sql_rowseek($rownum, $query_id = false) + function sql_rowseek($rownum, &$query_id) { global $cache; diff --git a/phpBB/includes/db/mssql.php b/phpBB/includes/db/mssql.php index bbbe8a6de3..76aa3e2366 100644 --- a/phpBB/includes/db/mssql.php +++ b/phpBB/includes/db/mssql.php @@ -236,7 +236,7 @@ class dbal_mssql extends dbal * Seek to given row number * rownum is zero-based */ - function sql_rowseek($rownum, $query_id = false) + function sql_rowseek($rownum, &$query_id) { global $cache; diff --git a/phpBB/includes/db/mssql_odbc.php b/phpBB/includes/db/mssql_odbc.php index 52942ac3bd..ed64cb3f7c 100644 --- a/phpBB/includes/db/mssql_odbc.php +++ b/phpBB/includes/db/mssql_odbc.php @@ -226,7 +226,7 @@ class dbal_mssql_odbc extends dbal * Seek to given row number * rownum is zero-based */ - function sql_rowseek($rownum, $query_id = false) + function sql_rowseek($rownum, &$query_id) { global $cache; diff --git a/phpBB/includes/db/mysql.php b/phpBB/includes/db/mysql.php index c20e73315a..f83019f58b 100644 --- a/phpBB/includes/db/mysql.php +++ b/phpBB/includes/db/mysql.php @@ -212,7 +212,7 @@ class dbal_mysql extends dbal * Seek to given row number * rownum is zero-based */ - function sql_rowseek($rownum, $query_id = false) + function sql_rowseek($rownum, &$query_id) { global $cache; diff --git a/phpBB/includes/db/mysqli.php b/phpBB/includes/db/mysqli.php index 6f54b5c8b3..4f433a309a 100644 --- a/phpBB/includes/db/mysqli.php +++ b/phpBB/includes/db/mysqli.php @@ -192,7 +192,7 @@ class dbal_mysqli extends dbal * Seek to given row number * rownum is zero-based */ - function sql_rowseek($rownum, $query_id = false) + function sql_rowseek($rownum, &$query_id) { global $cache; diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php index ff0a8f53f7..0059acb1dc 100644 --- a/phpBB/includes/db/oracle.php +++ b/phpBB/includes/db/oracle.php @@ -411,7 +411,7 @@ class dbal_oracle extends dbal * Seek to given row number * rownum is zero-based */ - function sql_rowseek($rownum, $query_id = false) + function sql_rowseek($rownum, &$query_id) { global $cache; diff --git a/phpBB/includes/db/postgres.php b/phpBB/includes/db/postgres.php index 94bc70fa6a..e85a8d8f3f 100644 --- a/phpBB/includes/db/postgres.php +++ b/phpBB/includes/db/postgres.php @@ -264,7 +264,7 @@ class dbal_postgres extends dbal * Seek to given row number * rownum is zero-based */ - function sql_rowseek($rownum, $query_id = false) + function sql_rowseek($rownum, &$query_id) { global $cache; diff --git a/phpBB/includes/db/sqlite.php b/phpBB/includes/db/sqlite.php index 8a50c546a7..398d044672 100644 --- a/phpBB/includes/db/sqlite.php +++ b/phpBB/includes/db/sqlite.php @@ -188,7 +188,7 @@ class dbal_sqlite extends dbal * Seek to given row number * rownum is zero-based */ - function sql_rowseek($rownum, $query_id = false) + function sql_rowseek($rownum, &$query_id) { global $cache; From 9693f31404037cce3067f249d1cbbb93ef705cab Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Tue, 12 Jun 2007 21:29:16 +0000 Subject: [PATCH 097/136] add bidi.css for RTL support - we still use .rtl to be able to put special rules within the parsed stylesheet. since bidi.css is included after colours.css we ommit any colours there too. Still a lot to do here - i saw a lot of areas in need of some love (jumpbox, top links, topic/post icons, forum pagination) git-svn-id: file:///svn/phpbb/trunk@7754 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 2 + .../prosilver/template/overall_footer.html | 12 +- .../prosilver/template/overall_header.html | 22 +- phpBB/styles/prosilver/theme/bidi.css | 714 ++++++++++++++++++ phpBB/styles/prosilver/theme/buttons.css | 24 +- phpBB/styles/prosilver/theme/colours.css | 52 +- phpBB/styles/prosilver/theme/common.css | 11 - phpBB/styles/prosilver/theme/tweaks.css | 4 - 8 files changed, 784 insertions(+), 57 deletions(-) create mode 100644 phpBB/styles/prosilver/theme/bidi.css diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 2f4bc5b848..b50e1de896 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -188,6 +188,7 @@ p a {
  • [Fix] (X)HTML issues within the templates (Bug #11255, #11255)
  • [Fix] Tiny language and grammar changes
  • [Fix] Several style related fixes, mainly fixing cross-browser issues
  • +
  • [Fix] Several RTL fixes within prosilver
  • [Fix] MCP looses forum_id in some panels (Bug #11255)
  • [Fix] Moderation queue used unfriendly notification of no posts/topics (Bug #11291)
  • [Fix] Array in Oracle DBAL not always set (Bug #11475)
  • @@ -270,6 +271,7 @@ p a {
  • [Fix] Unread flag for multipage topic wrongly set under some conditions (Bug #12127) - fix provided by asinshesq
  • [Fix] Able to delete posts within user prune panel (Bug #11849)
  • [Feature] Allow to specify dimensions of images manually on imageset config (Bug #11675)
  • +
  • [Fix] Correctly re-assign query result id after seeking rows (MSSQL/Firebird) (Bug #12369)
  • diff --git a/phpBB/styles/prosilver/template/overall_footer.html b/phpBB/styles/prosilver/template/overall_footer.html index 19fd7ad3eb..a1da979548 100644 --- a/phpBB/styles/prosilver/template/overall_footer.html +++ b/phpBB/styles/prosilver/template/overall_footer.html @@ -6,15 +6,13 @@
    diff --git a/phpBB/styles/prosilver/template/overall_header.html b/phpBB/styles/prosilver/template/overall_header.html index bb5ca7e35b..30640453f3 100644 --- a/phpBB/styles/prosilver/template/overall_header.html +++ b/phpBB/styles/prosilver/template/overall_header.html @@ -89,6 +89,9 @@ {T_THEME_DATA} + + + @@ -125,7 +128,8 @@ diff --git a/phpBB/styles/prosilver/theme/bidi.css b/phpBB/styles/prosilver/theme/bidi.css new file mode 100644 index 0000000000..23bfdc45f3 --- /dev/null +++ b/phpBB/styles/prosilver/theme/bidi.css @@ -0,0 +1,714 @@ +/* proSilver RTL definitions +---------------------------------------- */ + +/** +* common.css +*/ +.rtl h1 { + margin-right: 0; + margin-left: 200px; +} + +.rtl p.right { + text-align: left; +} + +/* Main blocks +---------------------------------------- */ +.rtl #logo { + float: right; + padding: 10px 10px 0 13px; +} + +/* Search box +--------------------------------------------- */ +.rtl #search-box { + float: left; + text-align: left; + margin-right: 0; + margin-left: 5px; +} + +.rtl #search-box li { + text-align: left; +} + +.rtl #search-box img { + margin-right: 0; + margin-left: 3px; +} + +.rtl #site-description { + float: right; +} + +.rtl #site-description h1 { + margin-left: 0; +} + +/* Round cornered boxes and backgrounds +---------------------------------------- */ +.rtl .post { + background-position: 0 0; +} + +/* Horizontal lists +----------------------------------------*/ +.rtl ul.linklist li { + float: right; + margin-right: 0; + margin-left: 5px; +} + +.rtl ul.linklist li.rightside, .rtl p.rightside { + float: left; + margin-right: 5px; + margin-left: 0; + text-align: left; +} + +/* Table styles +----------------------------------------*/ +.rtl table.table1 thead th { + padding: 0 3px 4px 0; +} + +.rtl table.table1 thead th span { + padding-left: 0; + padding-right: 7px; +} + +.rtl table.table1 tbody th { + text-align: right; +} + +/* Specific column styles */ +.rtl table.table1 .name { text-align: right; } +.rtl table.table1 .joined { text-align: right; } +.rtl table.table1 .active { text-align: right; } +.rtl table.table1 .info { text-align: right; } +.rtl table.table1 thead .autocol { padding-left: 0; padding-right: 1em; } + +.rtl table.table1 span.rank-img { + float: left; +} + +.rtl table.info tbody th { + text-align: left; +} + +.rtl .forumbg table.table1 { + margin: 0 -1px -1px -2px; +} + +/* Misc layout styles +---------------------------------------- */ +/* column[1-2] styles are containers for two column layouts + Also see tweaks.css */ +.rtl .column1 { + float: right; + clear: right; +} + +.rtl .column2 { + float: left; + clear: left; +} + +/* General classes for placing floating blocks */ +.rtl .left-box { + float: right; + text-align: right; +} + +.rtl .right-box { + float: left; + text-align: left; +} + +.rtl dl.details dt { + float: right; + text-align: left; +} + +.rtl dl.details dd { + margin-right: 16em; + margin-left: 0; + padding-right: 5px; + padding-left: 0; +} + +/* Pagination +---------------------------------------- */ +.rtl .pagination { + text-align: left; + float: left; +} + +/* Pagination in viewforum for multipage topics */ +.rtl .row .pagination { + float: left; + padding: 1px 0 1px 15px; +} + +/* Miscellaneous styles +---------------------------------------- */ +.rtl #forum-permissions { + float: left; + padding-right: 5px; + padding-left: 0; + margin-right: 5px; + margin-left: 0; + text-align: left; +} + +/** +* links.css +*/ + +/* Back to top of page */ +.rtl .back2top { + text-align: left; +} + +.rtl a.top { + float: left; +} + +.rtl a.top2 { + padding-left: 0; + padding-right: 15px; +} + +/* Arrow links */ +/* +a.up { background: none no-repeat left center; } +a.down { background: none no-repeat right center; } +a.left { background: none no-repeat 3px 60%; } +a.right { background: none no-repeat 95% 60%; } + +a.up, a.up:link, a.up:active, a.up:visited { + padding-left: 10px; +} + +a.up:hover { + background-position: left top; + background-color: transparent; +} + +a.down, a.down:link, a.down:active, a.down:visited { + padding-right: 10px; +} + +a.down:hover { + background-position: right bottom; +} +*/ + +.rtl a.left, .rtl a.left:active, .rtl a.left:visited { + padding-left: 0; + padding-right: 12px; +} + +/* +a.left:hover { + background-position: 0 60%; +} +*/ + +.rtl a.right, .rtl a.right:active, .rtl a.right:visited { + padding-left: 12px; + padding-right: 0; +} +/* +a.right:hover { + background-position: 100% 60%; +} +*/ + +/** +* content.css +*/ +.rtl ul.topiclist dt { + float: right; +} + +.rtl ul.topiclist dd { + float: right; + border-right-width: 1px; + border-right-style: solid; + border-left: none; +} + +.rtl ul.topiclist li.row dt a.subforum { + padding: 0 12px 0 0; + background-position: 100% 100%; +} + +.rtl .forum-image { + float: right; + margin-right: 0; + margin-left: 5px; +} + +.rtl li.header dt, .rtl li.header dd { + border-right-width: 0; +} + +.rtl li.header dd { + margin-left: 0; + margin-right: 1px; +} + +.rtl dl.icon { + background-position: 99.5% 50%; +} + +.rtl li.header dl.icon dt { + /* Tweak for headers alignment when folder icon used */ + padding-right: 0; + padding-left: 44px; +} + +.rtl dl.icon dt { + padding-left: 0; + padding-right: 45px; /* Space for folder icon */ +} + +.rtl dd.lastpost span, .rtl ul.topiclist dd.searchby span, .rtl ul.topiclist dd.info span, .rtl ul.topiclist dd.time span, .rtl dd.redirect span, .rtl dd.moderation span { + padding-left: 0; + padding-right: 5px; +} + +.rtl dd.mark { + float: left !important; +} + +.rtl ul.topiclist dd.searchextra { + margin-left: 0; + margin-right: 5px; + border-right: none; +} + +/* Post body styles +----------------------------------------*/ +.rtl .postbody { + float: right; +} + +/* Topic review panel +----------------------------------------*/ +.rtl #topicreview { + padding-right: 0; + padding-left: 5px; +} + +/* Content container styles +----------------------------------------*/ +.rtl .content ul, .rtl .content ol { + margin-right: 3em; + margin-left: 0; +} + +/* Post author */ +.rtl p.author { + margin: 0 0 0.6em 15em; +} + +.rtl .signature { + clear: right; +} + +.rtl .notice { + clear: right; +} + +/* Jump to post link for now */ +.rtl ul.searchresults { + text-align: left; +} + +/* BB Code styles +----------------------------------------*/ +/* Quote block */ +.rtl blockquote { + margin: 0.5em 25px 0 1px; +} + +.rtl blockquote blockquote { + /* Nested quotes */ + margin: 0.5em 15px 0 1px; +} + +.rtl blockquote cite { + /* Username/source of quoter */ + margin-right: 20px; + margin-left: 0; +} + +.rtl blockquote dl.codebox { + margin-right: 0; +} + +/* Attachments +----------------------------------------*/ +.rtl .attachbox { + float: right; + margin: 5px 0 5px 5px; + clear: right; +} + +.rtl .attachbox dd { + clear: right; +} + +.rtl .attachbox p { + clear: right; +} + +.rtl .attachbox p.stats { + clear: right; +} + +/* Post poll styles +----------------------------------------*/ +.rtl fieldset.polls dt { + text-align: right; + float: right; + border-left: none; +} + +.rtl fieldset.polls dd { + float: right; + border-right: none; + margin-right: 0; +} + +.rtl fieldset.polls dd div { + text-align: left; +} + +.rtl .pollbar1, .rtl .pollbar2, .rtl .pollbar3, .rtl .pollbar4, .rtl .pollbar5 { + border-left-width: 1px; + border-left-style: solid; + border-right: none; +} + +/* Poster profile block +----------------------------------------*/ +.rtl .postprofile { + border-left: none; + border-right-width: 1px; + border-right-style: solid; + float: left; +/* text-align: right; */ +} + +.rtl .pm .postprofile { + border-right-width: 1px; + border-right-style: solid; + border-left: none; +} + +.rtl .postprofile dd, .rtl .postprofile dt { + margin-left: 0; + margin-right: 8px; +} + +.rtl .online { + background-position: 0 0; +} + +.rtl dl.pmlist dd { + margin-right: 61% !important; + margin-left: 0 !important; +} + +/** +* buttons.css +*/ +/* Rollover buttons + Based on: http://wellstyled.com/css-nopreload-rollovers.html +----------------------------------------*/ +.rtl .buttons { + float: right; +} + +/* Rollover state */ +.rtl .buttons div { + float: right; + margin: 0 0 0 5px; +} + +/* Sub-header (navigation bar) +--------------------------------------------- */ +.rtl a.print, .rtl a.sendemail, .rtl a.fontsize { + text-align: right; +} + +/* Icon images +---------------------------------------- */ +.rtl .sitehome, .rtl .icon-faq, .rtl .icon-members, .rtl .icon-home, .rtl .icon-ucp, .rtl .icon-register, .rtl .icon-logout, +.rtl .icon-bookmark, .rtl .icon-bump, .rtl .icon-subscribe, .rtl .icon-unsubscribe, .rtl .icon-pages, .rtl .icon-search { + background-position: 100% 50%; + padding: 1px 17px 0 0; +} + +/* Poster profile icons +----------------------------------------*/ +/* Rollover state */ +.rtl ul.profile-icons li { + float: right; + margin: 0 0 3px 6px; +} + +/* Positioning of moderator icons */ +.rtl .postbody ul.profile-icons { + float: left; +} + +/* Fix profile icon default margins */ +.rtl ul.profile-icons li.edit-icon { margin: 0 3px 0 0; } +.rtl ul.profile-icons li.quote-icon { margin: 0 10px 0 0; } +.rtl ul.profile-icons li.info-icon, .rtl ul.profile-icons li.report-icon { margin: 0 0 0 3px; } + +/** +* cp.css +*/ +/* proSilver Control Panel Styles +---------------------------------------- */ + + +/* Main CP box +----------------------------------------*/ +.rtl #cp-menu { + float: right; +} + +.rtl #cp-main { + float: right; +} + +.rtl #cp-main .panel ol { + margin-right: 2em; + margin-left: 0; +} + +.rtl #cp-main .pagination { + float: left; +} + +.rtl #cp-main .buttons { + margin-right: 0; + margin-left: 0; +} + +/* CP tabbed menu +----------------------------------------*/ +.rtl #tabs { + margin: 20px 7px -1px 0; +} + +.rtl #tabs a { + float: right; +} + +/*.rtl #tabs a span { + float: right; +}*/ + +/* Mini tabbed menu used in MCP +----------------------------------------*/ +.rtl #minitabs { + margin: -20px 0 0 7px; +} + +.rtl #minitabs li { + float: left; + margin-right: 2px; + margin-left: 0; +} + +/* UCP navigation menu +----------------------------------------*/ + +/* Preferences pane layout +----------------------------------------*/ +.rtl #cp-main h2 { + margin-left: 0; + margin-right: 10px; +} + +/* Friends list */ +.rtl .cp-mini { + margin: 10px 5px 10px 15px; +} + +/* PM Styles +----------------------------------------*/ + +/* Defined rules list for PM options */ +.rtl ol.def-rules { + padding-right: 0; +} + +/* PM marking colours */ +.rtl .pm-legend { + border-right-width: 10px; + border-right-style: solid; + border-left-width: 0; + padding-left: 0; + padding-right: 3px; +} + +/* Avatar gallery */ +.rtl #gallery label { + float: right; +} + +/** +* forms.css +*/ + +/* General form styles +----------------------------------------*/ + +.rtl option { + padding-right: 0; + padding-left: 1em; +} + +.rtl label { + padding-right: 0; + padding-left: 5px; +} + +/* Definition list layout for forms +---------------------------------------- */ +.rtl fieldset dt { + float: right; + text-align: right; +} + +.rtl fieldset dd { + margin-left: 0; + margin-right: 41%; +} + +/* Specific layout 1 */ +.rtl fieldset.fields1 dt { + border-left-width: 0; + border-right-width: 1px; +} + +.rtl fieldset.fields1 dd { + margin-right: 10em; + margin-left: 0; + border-right-width: 0; + border-left-width: 1px; +} + +/* Specific layout 2 */ +.rtl fieldset.fields2 dt { + border-right-width: 1px; + border-left-width: 0; +} + +.rtl fieldset.fields2 dd { + margin-right: 16em; + margin-left: 0; + border-left-width: 1px; + border-right-width: 0; +} + +/* Form elements */ +.rtl dt label { + text-align: right; +} + +.rtl dd input, .rtl dd textarea { + margin-left: 3px; + margin-right: 0; +} + +/* Quick-login on index page */ +.rtl fieldset.quick-login input.inputbox { + margin-left: 5px; + margin-right: 0; +} + +.rtl fieldset.quick-login label { + padding-left: 2px; + padding-right: 0; +} + +/* Display options on viewtopic/viewforum pages */ +.rtl fieldset.display-options label { + padding-left: 2px; + padding-right: 0; +} + +/* Display actions for ucp and mcp pages */ +.rtl fieldset.display-actions { + text-align: left; + padding-left: 1em; + padding-right: 0; +} + +.rtl fieldset.display-actions label { + padding-left: 2px; + padding-right: 0; +} + +/* MCP forum selection*/ +.rtl fieldset.forum-selection { + float: left; +} + +.rtl fieldset.forum-selection2 { + float: left; +} + +/* Jumpbox */ +.rtl fieldset.jumpbox { + text-align: left; +} + +.rtl fieldset.quickmod { + float: left; + text-align: left; +} + +/* Posting page styles +----------------------------------------*/ + +/* Emoticons panel */ +.rtl #smiley-box { + float: left; +} + +/* Form button styles +---------------------------------------- */ + +/* Topic and forum Search */ +.rtl .search-box { + margin-right: 5px; + margin-left: 0; + float: right; +} + +.rtl input.search { + background-position: right 1px; + padding-right: 17px; + padding-left: 0; +} + +/** +* tweaks.css +*/ + +* html .rtl #search-box { + margin-left: 35px; + margin-right: 0; +} + diff --git a/phpBB/styles/prosilver/theme/buttons.css b/phpBB/styles/prosilver/theme/buttons.css index 7e402f4b16..b3a4e68705 100644 --- a/phpBB/styles/prosilver/theme/buttons.css +++ b/phpBB/styles/prosilver/theme/buttons.css @@ -10,10 +10,6 @@ height: auto; } -.rtl .button { - float: right; -} - /* Rollover state */ .buttons div { float: left; @@ -21,11 +17,6 @@ background-position: 0 100%; } -.rtl .button div { - float: right; - margin: 0 0 0 5px; -} - /* Rolloff state */ .buttons div a { display: block; @@ -93,19 +84,13 @@ a.fontsize:hover { /* Icon images ---------------------------------------- */ .sitehome, .icon-faq, .icon-members, .icon-home, .icon-ucp, .icon-register, .icon-logout, -.icon-bookmark, .icon-bump, .icon-subscribe, .icon-unsubscribe, .icon-pages, .icon-search{ +.icon-bookmark, .icon-bump, .icon-subscribe, .icon-unsubscribe, .icon-pages, .icon-search { background-position: 0 50%; background-repeat: no-repeat; background-image: none; padding: 1px 0 0 17px; } -.rtl .sitehome, .rtl .icon-faq, .rtl .icon-members, .rtl .icon-home, .rtl .icon-ucp, .rtl .icon-register, .rtl .icon-logout, -.rtl .icon-bookmark, .rtl .icon-bump, .rtl .icon-subscribe, .rtl .icon-unsubscribe, .rtl .icon-pages, .rtl .icon-search{ - background-position: 100% 50%; - padding: 1px 17px 0 0; -} - /* Poster profile icons ----------------------------------------*/ ul.profile-icons { @@ -120,10 +105,6 @@ ul.profile-icons li { background-position: 0 100%; } -.rtl ul.profile-icons li { - margin: 0 0 3px 6px; -} - /* Rolloff state */ ul.profile-icons li a { display: block; @@ -186,6 +167,3 @@ ul.profile-icons li.edit-icon { margin: 0 0 0 3px; } ul.profile-icons li.quote-icon { margin: 0 0 0 10px; } ul.profile-icons li.info-icon, ul.profile-icons li.report-icon { margin: 0 3px 0 0; } -.rtl ul.profile-icons li.edit-icon { margin: 0 3px 0 0; } -.rtl ul.profile-icons li.quote-icon { margin: 0 10px 0 0; } -.rtl ul.profile-icons li.info-icon, .rtl ul.profile-icons li.report-icon { margin: 0 0 0 3px; } diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index e533b8f070..104ada6185 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -372,6 +372,11 @@ ul.topiclist dd { border-left-color: #FFFFFF; } +.rtl ul.topiclist dd { + border-right-color: #fff; + border-left-color: none; +} + ul.topiclist li.row dt a.subforum.read { background-image: url("{IMG_SUBFORUM_READ_SRC}"); } @@ -397,6 +402,11 @@ li.row:hover dd { border-left-color: #CCCCCC; } +.rtl li.row:hover dd { + border-right-color: #CCCCCC; + border-left-color: none; +} + li.header dt, li.header dd { color: #FFFFFF; } @@ -507,8 +517,7 @@ dl.codebox code { color: #666666; } -.attachbox p.stats -{ +.attachbox p.stats { color: #666666; } @@ -555,36 +564,60 @@ fieldset.polls dd div { color: #FFFFFF; } +.rtl .pollbar1, .rtl .pollbar2, .rtl .pollbar3, .rtl .pollbar4, .rtl .pollbar5 { + border-right-color: none; +} + .pollbar1 { background-color: #AA2346; border-bottom-color: #74162C; border-right-color: #74162C; } +.rtl .pollbar1 { + border-left-color: #74162C; +} + .pollbar2 { background-color: #BE1E4A; border-bottom-color: #8C1C38; border-right-color: #8C1C38; } +.rtl .pollbar2 { + border-left-color: #8C1C38; +} + .pollbar3 { background-color: #D11A4E; border-bottom-color: #AA2346; border-right-color: #AA2346; } +.rtl .pollbar3 { + border-left-color: #AA2346; +} + .pollbar4 { background-color: #E41653; border-bottom-color: #BE1E4A; border-right-color: #BE1E4A; } +.rtl .pollbar4 { + border-left-color: #BE1E4A; +} + .pollbar5 { background-color: #F81157; border-bottom-color: #D11A4E; border-right-color: #D11A4E; } +.rtl .pollbar5 { + border-left-color: #D11A4E; +} + /* Poster profile block ----------------------------------------*/ .postprofile { @@ -592,10 +625,20 @@ fieldset.polls dd div { border-left-color: #FFFFFF; } +.rtl .postprofile { + border-right-color: #FFFFFF; + border-left-color: none; +} + .pm .postprofile { border-left-color: #DDDDDD; } +.rtl .pm .postprofile { + border-right-color: #DDDDDD; + border-left-color: none; +} + .postprofile strong { color: #000000; } @@ -604,6 +647,11 @@ fieldset.polls dd div { background-image: url("{T_IMAGESET_LANG_PATH}/icon_user_online.gif"); } +.rtl .online { + background-image: url("{T_IMAGESET_LANG_PATH}/icon_user_online_rtl.gif"); +} + + /* -------------------------------------------------------------- Colours and backgrounds for buttons.css diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index f870a87d3c..5ee56f2f0d 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -147,13 +147,6 @@ a#logo:hover { white-space: nowrap; /* For Opera */ } -.rtl #search-box { - float: left; - text-align: left; - margin-right: 0; - margin-left: 5px; -} - #search-box #keywords { width: 95px; background-color: #FFF; @@ -184,10 +177,6 @@ a#logo:hover { width: 70%; } -.rtl #site-description { - float: right; -} - #site-description h1 { margin-right: 0; } diff --git a/phpBB/styles/prosilver/theme/tweaks.css b/phpBB/styles/prosilver/theme/tweaks.css index e3a2557fc5..15ef6450f6 100644 --- a/phpBB/styles/prosilver/theme/tweaks.css +++ b/phpBB/styles/prosilver/theme/tweaks.css @@ -58,7 +58,3 @@ dl.icon { margin-right: 35px; } -* html .rtl #search-box { - margin-right: 0; - margin-left: 35px; -} \ No newline at end of file From 6813967ae1024d386c6f829256a66f9391791dda Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Thu, 14 Jun 2007 15:03:52 +0000 Subject: [PATCH 098/136] Changing the behaviour of the hideonline permission. Test the current setting before altering the memory limit during install(Bug #12195) And another language var. git-svn-id: file:///svn/phpbb/trunk@7755 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 3 ++- phpBB/includes/functions.php | 22 ++------------- phpBB/includes/session.php | 27 +++++++++++++++++++ phpBB/includes/ucp/ucp_pm_viewmessage.php | 2 +- phpBB/install/index.php | 25 ++++++++++++++++- phpBB/language/en/ucp.php | 1 + phpBB/memberlist.php | 2 +- .../template/ucp_prefs_personal.html | 2 +- .../template/ucp_prefs_personal.html | 2 +- phpBB/viewonline.php | 2 +- phpBB/viewtopic.php | 2 +- 11 files changed, 62 insertions(+), 28 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index b50e1de896..583b22804b 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -272,7 +272,8 @@ p a {
  • [Fix] Able to delete posts within user prune panel (Bug #11849)
  • [Feature] Allow to specify dimensions of images manually on imageset config (Bug #11675)
  • [Fix] Correctly re-assign query result id after seeking rows (MSSQL/Firebird) (Bug #12369)
  • - +
  • [Feature] Make effect of a changed hideonline permission instantaneous
  • +
  • [Fix] Do not overwrite larger memory values in the installer (Bug #12195)
  • diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index b096c7319e..9059352bb7 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -2130,24 +2130,6 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa // append/replace SID (may change during the session for AOL users) $redirect = reapply_sid($redirect); - // Make sure the user is able to hide his session - if (!$viewonline) - { - $check_auth = new auth(); - $check_auth->acl($user->data); - - // Reset online status if not allowed to hide the session... - if (!$check_auth->acl_get('u_hideonline')) - { - $sql = 'UPDATE ' . SESSIONS_TABLE . ' - SET session_viewonline = 1 - WHERE session_user_id = ' . $user->data['user_id']; - $db->sql_query($sql); - } - - unset($check_auth); - } - // Special case... the user is effectively banned, but we allow founders to login if (defined('IN_CHECK_BAN') && $result['user_row']['user_type'] != USER_FOUNDER) { @@ -3959,7 +3941,7 @@ function page_header($page_title = '', $display_online_list = true) $user_colour = ''; } - if ($row['user_allow_viewonline'] && $row['session_viewonline']) + if ($row['session_viewonline']) { $user_online_link = $row['username']; $logged_visible_online++; @@ -3970,7 +3952,7 @@ function page_header($page_title = '', $display_online_list = true) $logged_hidden_online++; } - if (($row['user_allow_viewonline'] && $row['session_viewonline']) || $auth->acl_get('u_viewonline')) + if (($row['session_viewonline']) || $auth->acl_get('u_viewonline')) { if ($row['user_type'] <> USER_IGNORE) { diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php index 5e22576fdc..4f1732f30c 100644 --- a/phpBB/includes/session.php +++ b/phpBB/includes/session.php @@ -1506,6 +1506,33 @@ class user extends session trigger_error('BOARD_UNAVAILABLE'); } } + + // Make sure the user is able to hide his session + if (!$this->data['session_viewonline']) + { + // Reset online status if not allowed to hide the session... + if (!$auth->acl_get('u_hideonline')) + { + $sql = 'UPDATE ' . SESSIONS_TABLE . ' + SET session_viewonline = 1 + WHERE session_user_id = ' . $this->data['user_id']; + $db->sql_query($sql); + $this->data['session_viewonline'] = 1; + } + } + elseif (!$this->data['user_allow_viewonline']) + { + // the user wants to hide and is allowed to -> cloaking device on. + if ($auth->acl_get('u_hideonline')) + { + $sql = 'UPDATE ' . SESSIONS_TABLE . ' + SET session_viewonline = 0 + WHERE session_user_id = ' . $this->data['user_id']; + $db->sql_query($sql); + $this->data['session_viewonline'] = 0; + } + } + // Does the user need to change their password? If so, redirect to the // ucp profile reg_details page ... of course do not redirect if we're already in the ucp diff --git a/phpBB/includes/ucp/ucp_pm_viewmessage.php b/phpBB/includes/ucp/ucp_pm_viewmessage.php index aa88bfe65f..673da2e819 100644 --- a/phpBB/includes/ucp/ucp_pm_viewmessage.php +++ b/phpBB/includes/ucp/ucp_pm_viewmessage.php @@ -406,7 +406,7 @@ function get_user_information($user_id, $user_row) $update_time = $config['load_online_time'] * 60; if ($row) { - $user_row['online'] = (time() - $update_time < $row['online_time'] && ($row['viewonline'] && $user_row['user_allow_viewonline'])) ? true : false; + $user_row['online'] = (time() - $update_time < $row['online_time'] && ($row['viewonline'])) ? true : false; } } diff --git a/phpBB/install/index.php b/phpBB/install/index.php index 656b6fed95..5a1b997b73 100755 --- a/phpBB/install/index.php +++ b/phpBB/install/index.php @@ -104,7 +104,30 @@ else // Try to override some limits - maybe it helps some... @set_time_limit(0); -@ini_set('memory_limit', '128M'); +$mem_limit = @ini_get('memory_limit'); +if (!empty($mem_limit )) +{ + $unit = strtolower(substr($mem_limit, -1, 1)); + $mem_limit = (int)$mem_limit; + if ($unit == 'k') + { + $mem_limit = floor($mem_limit/1024); + } + elseif ($unit == 'g') + { + $mem_limit *= 1024; + } + elseif (is_numeric($unit)) + { + $mem_limit = floor($mem_limit/1048576); + } + $mem_limit = max(128, $mem_limit) . 'M'; +} +else +{ + $mem_limit = '128M'; +} +@ini_set('memory_limit', $mem_limit ); // Include essential scripts require($phpbb_root_path . 'includes/functions.' . $phpEx); diff --git a/phpBB/language/en/ucp.php b/phpBB/language/en/ucp.php index 6a46ad96fb..304b9952d1 100644 --- a/phpBB/language/en/ucp.php +++ b/phpBB/language/en/ucp.php @@ -210,6 +210,7 @@ $lang = array_merge($lang, array( 'GLOBAL_ANNOUNCEMENT' => 'Global announcement', 'HIDE_ONLINE' => 'Hide my online status', + 'HIDE_ONLINE_EXPLAIN' => 'Changing this setting to "No" won\'t become effective until your next visit to the board.', 'HOLD_NEW_MESSAGES' => 'Do not accept new messages (New messages will be held back until enough space is available)', 'HOLD_NEW_MESSAGES_SHORT' => 'New messages will be held back', diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php index f6420e33f3..3458d45fec 100644 --- a/phpBB/memberlist.php +++ b/phpBB/memberlist.php @@ -1434,7 +1434,7 @@ function show_profile($data) if ($config['load_onlinetrack']) { $update_time = $config['load_online_time'] * 60; - $online = (time() - $update_time < $data['session_time'] && ((isset($data['session_viewonline']) && $data['user_allow_viewonline']) || $auth->acl_get('u_viewonline'))) ? true : false; + $online = (time() - $update_time < $data['session_time'] && ((isset($data['session_viewonline'])) || $auth->acl_get('u_viewonline'))) ? true : false; } else { diff --git a/phpBB/styles/prosilver/template/ucp_prefs_personal.html b/phpBB/styles/prosilver/template/ucp_prefs_personal.html index b8c70841d7..fea21f9693 100644 --- a/phpBB/styles/prosilver/template/ucp_prefs_personal.html +++ b/phpBB/styles/prosilver/template/ucp_prefs_personal.html @@ -32,7 +32,7 @@
    -
    +

    {L_HIDE_ONLINE_EXPLAIN}
    diff --git a/phpBB/styles/subsilver2/template/ucp_prefs_personal.html b/phpBB/styles/subsilver2/template/ucp_prefs_personal.html index ffff4a4280..3546a127f7 100644 --- a/phpBB/styles/subsilver2/template/ucp_prefs_personal.html +++ b/phpBB/styles/subsilver2/template/ucp_prefs_personal.html @@ -41,7 +41,7 @@ - {L_HIDE_ONLINE}: + {L_HIDE_ONLINE}:
    {L_HIDE_ONLINE_EXPLAIN} checked="checked" />{L_YES}   checked="checked" />{L_NO} diff --git a/phpBB/viewonline.php b/phpBB/viewonline.php index 4a862c4367..f655718d7e 100644 --- a/phpBB/viewonline.php +++ b/phpBB/viewonline.php @@ -139,7 +139,7 @@ while ($row = $db->sql_fetchrow($result)) $row['username'] = '' . $row['username'] . ''; } - if (!$row['user_allow_viewonline'] || !$row['session_viewonline']) + if (!$row['session_viewonline']) { $view_online = ($auth->acl_get('u_viewonline')) ? true : false; $logged_hidden_online++; diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index e65388d35e..2f6aac1fc6 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -1100,7 +1100,7 @@ if ($config['load_onlinetrack'] && sizeof($id_cache)) $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'] && $user_cache[$row['session_user_id']]['viewonline']) || $auth->acl_get('u_viewonline'))) ? true : false; + $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); } From e5151b0fc62c054f71ebe530070420bb6ff463c1 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Thu, 14 Jun 2007 15:24:09 +0000 Subject: [PATCH 099/136] *grumble* git-svn-id: file:///svn/phpbb/trunk@7756 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 2 +- phpBB/includes/session.php | 2 +- phpBB/install/convertors/convert_phpbb20.php | 2 +- phpBB/install/index.php | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 08ccfa030f..50e84fca84 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -2172,7 +2172,7 @@ function avatar_process_user(&$error, $custom_userdata = false) $sql_ary['user_avatar'] = ''; $sql_ary['user_avatar_type'] = $sql_ary['user_avatar_width'] = $sql_ary['user_avatar_height'] = 0; } - elseif (!empty($userdata['user_avatar'])) + else if (!empty($userdata['user_avatar'])) { // Only update the dimensions diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php index 4f1732f30c..54f0167ab2 100644 --- a/phpBB/includes/session.php +++ b/phpBB/includes/session.php @@ -1520,7 +1520,7 @@ class user extends session $this->data['session_viewonline'] = 1; } } - elseif (!$this->data['user_allow_viewonline']) + else if (!$this->data['user_allow_viewonline']) { // the user wants to hide and is allowed to -> cloaking device on. if ($auth->acl_get('u_hideonline')) diff --git a/phpBB/install/convertors/convert_phpbb20.php b/phpBB/install/convertors/convert_phpbb20.php index 64e4c5726e..0e14757885 100644 --- a/phpBB/install/convertors/convert_phpbb20.php +++ b/phpBB/install/convertors/convert_phpbb20.php @@ -187,7 +187,7 @@ if (!$get_info) $src_db->sql_freeresult($result); } - elseif ($result) + else if ($result) { $src_db->sql_freeresult($result); } diff --git a/phpBB/install/index.php b/phpBB/install/index.php index 5a1b997b73..101ea8e0c6 100755 --- a/phpBB/install/index.php +++ b/phpBB/install/index.php @@ -113,11 +113,11 @@ if (!empty($mem_limit )) { $mem_limit = floor($mem_limit/1024); } - elseif ($unit == 'g') + else if ($unit == 'g') { $mem_limit *= 1024; } - elseif (is_numeric($unit)) + else if (is_numeric($unit)) { $mem_limit = floor($mem_limit/1048576); } From 8b9ae084490ea32c3722da533777109121ab3bf9 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 15 Jun 2007 07:36:22 +0000 Subject: [PATCH 100/136] Small fix, thanks Black_Hole #12427 git-svn-id: file:///svn/phpbb/trunk@7757 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/utf/data/recode_cjk.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/utf/data/recode_cjk.php b/phpBB/includes/utf/data/recode_cjk.php index b40728b65d..f3f9a256d7 100644 --- a/phpBB/includes/utf/data/recode_cjk.php +++ b/phpBB/includes/utf/data/recode_cjk.php @@ -7455,7 +7455,7 @@ function gb2312($string) function sjis($string) { - static $array = array( + static $transform = array( "\x5C"=>"\xC2\xA5", "\x7E"=>"\xE2\x80\xBE", "\x81\x40"=>"\xE3\x80\x80", From ae0bf42808d9af32b2895d26a207086d4b0df82a Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 15 Jun 2007 11:07:25 +0000 Subject: [PATCH 101/136] Bug #12337 git-svn-id: file:///svn/phpbb/trunk@7758 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 4 +++- phpBB/includes/acp/auth.php | 13 +++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 583b22804b..07f33f3dbd 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -274,7 +274,9 @@ p a {
  • [Fix] Correctly re-assign query result id after seeking rows (MSSQL/Firebird) (Bug #12369)
  • [Feature] Make effect of a changed hideonline permission instantaneous
  • [Fix] Do not overwrite larger memory values in the installer (Bug #12195)
  • - +
  • [Fix] Order forums on role permission mask (Bug #12337)
  • + +
    Top diff --git a/phpBB/includes/acp/auth.php b/phpBB/includes/acp/auth.php index 669613c589..77b199b8a5 100644 --- a/phpBB/includes/acp/auth.php +++ b/phpBB/includes/acp/auth.php @@ -587,7 +587,8 @@ class auth_admin extends auth // Get forum names $sql = 'SELECT forum_id, forum_name FROM ' . FORUMS_TABLE . ' - WHERE ' . $db->sql_in_set('forum_id', array_keys($hold_ary)); + WHERE ' . $db->sql_in_set('forum_id', array_keys($hold_ary)) . ' + ORDER BY left_id'; $result = $db->sql_query($sql); $forum_names = array(); @@ -597,16 +598,12 @@ class auth_admin extends auth } $db->sql_freeresult($result); - foreach ($hold_ary as $forum_id => $auth_ary) + foreach ($forum_names as $forum_id => $forum_name) { - // If there is no forum present the database holds auth information for a non-existent forum... continue then - if ($forum_id && !isset($forum_names[$forum_id])) - { - continue; - } + $auth_ary = $hold_ary[$forum_id]; $template->assign_block_vars('role_mask', array( - 'NAME' => ($forum_id == 0) ? $user->lang['GLOBAL_MASK'] : $forum_names[$forum_id], + 'NAME' => ($forum_id == 0) ? $user->lang['GLOBAL_MASK'] : $forum_name, 'FORUM_ID' => $forum_id) ); From 0cbe30842cebf3ec8e1b6dc7397715a85acecc6e Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 15 Jun 2007 14:33:48 +0000 Subject: [PATCH 102/136] #12423 git-svn-id: file:///svn/phpbb/trunk@7759 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/acp/acp_styles.php | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 07f33f3dbd..73a86748c8 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -275,6 +275,7 @@ p a {
  • [Feature] Make effect of a changed hideonline permission instantaneous
  • [Fix] Do not overwrite larger memory values in the installer (Bug #12195)
  • [Fix] Order forums on role permission mask (Bug #12337)
  • +
  • [Fix] Show "no image" image when a non-selectable item was selected in the acp imageset editor - IE (Bug #12423)
  • diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php index 5f3aa024fc..2d175b53b1 100644 --- a/phpBB/includes/acp/acp_styles.php +++ b/phpBB/includes/acp/acp_styles.php @@ -1452,7 +1452,8 @@ parse_css_file = {PARSE_CSS_FILE} 'IMAGE_OPTIONS' => $img_options, 'IMAGE_SIZE' => $image_width, 'IMAGE_HEIGHT' => $image_height, - 'IMAGE_REQUEST' => $image_request, + 'IMAGE_REQUEST' => (empty($image_filename)) ? 'images/no_image.png' : $image_request, + 'TEST' => (empty($image_filename)) ? 'test' : 'tast', 'U_ACTION' => $this->u_action . "&action=edit&id=$imageset_id", 'U_BACK' => $this->u_action, 'NAME' => $imageset_name, From 87c4ec75e38b2433dc84b1c0d12ed04d9a8409a8 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 15 Jun 2007 15:18:51 +0000 Subject: [PATCH 103/136] #12429 git-svn-id: file:///svn/phpbb/trunk@7760 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_convert.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php index 4a80b94628..3fcbde0841 100644 --- a/phpBB/includes/functions_convert.php +++ b/phpBB/includes/functions_convert.php @@ -1226,7 +1226,7 @@ function get_config() if (!sizeof($convert_config)) { - $convert->p_master->error($lang['CONV_ERROR_CONFIG_EMPTY'], __LINE__, __FILE__); + $convert->p_master->error($user->lang['CONV_ERROR_CONFIG_EMPTY'], __LINE__, __FILE__); } return $convert_config; From db1014f02d4b7d68ecf7a3b938921e473b97c15b Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 15 Jun 2007 16:52:54 +0000 Subject: [PATCH 104/136] well, oops. #12441 git-svn-id: file:///svn/phpbb/trunk@7761 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/session.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php index 54f0167ab2..b03bc16588 100644 --- a/phpBB/includes/session.php +++ b/phpBB/includes/session.php @@ -1508,7 +1508,7 @@ class user extends session } // Make sure the user is able to hide his session - if (!$this->data['session_viewonline']) + if (if isset($this->data['session_viewonline']) && !$this->data['session_viewonline']) { // Reset online status if not allowed to hide the session... if (!$auth->acl_get('u_hideonline')) From 0f8ec0d2f6f86ce6e4fba8153ec1aafee791175e Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 15 Jun 2007 16:58:28 +0000 Subject: [PATCH 105/136] err... git-svn-id: file:///svn/phpbb/trunk@7762 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/session.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php index b03bc16588..ebc8852beb 100644 --- a/phpBB/includes/session.php +++ b/phpBB/includes/session.php @@ -543,7 +543,6 @@ class session $SID = '?sid='; $_SID = ''; - return true; } else @@ -1508,7 +1507,7 @@ class user extends session } // Make sure the user is able to hide his session - if (if isset($this->data['session_viewonline']) && !$this->data['session_viewonline']) + if (isset($this->data['session_viewonline']) && !$this->data['session_viewonline']) { // Reset online status if not allowed to hide the session... if (!$auth->acl_get('u_hideonline')) From 5127dc441a6fbfcd7b8427f3bf84b27d104eaff4 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Fri, 15 Jun 2007 17:19:27 +0000 Subject: [PATCH 106/136] This should be a better fix for #12441 Should also fix #12393 git-svn-id: file:///svn/phpbb/trunk@7763 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/session.php | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 73a86748c8..3b327a646a 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -276,6 +276,7 @@ p a {
  • [Fix] Do not overwrite larger memory values in the installer (Bug #12195)
  • [Fix] Order forums on role permission mask (Bug #12337)
  • [Fix] Show "no image" image when a non-selectable item was selected in the acp imageset editor - IE (Bug #12423)
  • +
  • [Fix] Update session information without new pageload (Bug #12393, Bug #12441)
  • diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php index ebc8852beb..29d364e89b 100644 --- a/phpBB/includes/session.php +++ b/phpBB/includes/session.php @@ -617,8 +617,10 @@ class session $this->set_login_key(); } + // refresh data $SID = '?sid=' . $this->session_id; $_SID = $this->session_id; + $this->data = array_merge($this->data, $sql_ary); if (!$bot) { @@ -643,7 +645,7 @@ class session $SID = '?sid='; $_SID = ''; } - + return true; } @@ -1507,7 +1509,7 @@ class user extends session } // Make sure the user is able to hide his session - if (isset($this->data['session_viewonline']) && !$this->data['session_viewonline']) + if (!$this->data['session_viewonline']) { // Reset online status if not allowed to hide the session... if (!$auth->acl_get('u_hideonline')) From 7fa7b0ba7afd81ad4dfc4ef9e0c3cd00b54d4fe7 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sat, 16 Jun 2007 09:17:53 +0000 Subject: [PATCH 107/136] - fix button issues with rtl languages - fix direction of pagination (the crampted display in FF seems to be a bug in FF itself) git-svn-id: file:///svn/phpbb/trunk@7764 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/styles/prosilver/theme/bidi.css | 13 +++++++++++-- phpBB/styles/prosilver/theme/colours.css | 15 +++++---------- phpBB/styles/prosilver/theme/common.css | 2 +- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/phpBB/styles/prosilver/theme/bidi.css b/phpBB/styles/prosilver/theme/bidi.css index 23bfdc45f3..39bd1fb51c 100644 --- a/phpBB/styles/prosilver/theme/bidi.css +++ b/phpBB/styles/prosilver/theme/bidi.css @@ -151,6 +151,16 @@ padding: 1px 0 1px 15px; } +.rtl .pagination span { + direction: ltr; +} + +.rtl .pagination span.page-sep { + display: inline; + visibility: hidden; + position: absolute; +} + /* Miscellaneous styles ---------------------------------------- */ .rtl #forum-permissions { @@ -436,7 +446,6 @@ a.right:hover { /* Rollover state */ .rtl .buttons div { - float: right; margin: 0 0 0 5px; } @@ -457,7 +466,7 @@ a.right:hover { /* Poster profile icons ----------------------------------------*/ /* Rollover state */ -.rtl ul.profile-icons li { +.rtl .postprofile ul.profile-icons li { float: right; margin: 0 0 3px 6px; } diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index 104ada6185..ba089c7ce6 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -374,7 +374,7 @@ ul.topiclist dd { .rtl ul.topiclist dd { border-right-color: #fff; - border-left-color: none; + border-left-color: transparent; } ul.topiclist li.row dt a.subforum.read { @@ -404,7 +404,7 @@ li.row:hover dd { .rtl li.row:hover dd { border-right-color: #CCCCCC; - border-left-color: none; + border-left-color: transparent; } li.header dt, li.header dd { @@ -565,7 +565,7 @@ fieldset.polls dd div { } .rtl .pollbar1, .rtl .pollbar2, .rtl .pollbar3, .rtl .pollbar4, .rtl .pollbar5 { - border-right-color: none; + border-right-color: transparent; } .pollbar1 { @@ -627,7 +627,7 @@ fieldset.polls dd div { .rtl .postprofile { border-right-color: #FFFFFF; - border-left-color: none; + border-left-color: transparent; } .pm .postprofile { @@ -636,7 +636,7 @@ fieldset.polls dd div { .rtl .pm .postprofile { border-right-color: #DDDDDD; - border-left-color: none; + border-left-color: transparent; } .postprofile strong { @@ -647,11 +647,6 @@ fieldset.polls dd div { background-image: url("{T_IMAGESET_LANG_PATH}/icon_user_online.gif"); } -.rtl .online { - background-image: url("{T_IMAGESET_LANG_PATH}/icon_user_online_rtl.gif"); -} - - /* -------------------------------------------------------------- Colours and backgrounds for buttons.css diff --git a/phpBB/styles/prosilver/theme/common.css b/phpBB/styles/prosilver/theme/common.css index 5ee56f2f0d..c1a0c504ca 100644 --- a/phpBB/styles/prosilver/theme/common.css +++ b/phpBB/styles/prosilver/theme/common.css @@ -467,7 +467,7 @@ dl.details dd { } .pagination span.page-sep { - display:none; + display: none; } li.pagination { From 88af4b93ea2056692fa42360eabe56d4ee4cedf7 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sat, 16 Jun 2007 09:52:49 +0000 Subject: [PATCH 108/136] code is always left to right - #12389 git-svn-id: file:///svn/phpbb/trunk@7765 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/styles/prosilver/theme/bidi.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/phpBB/styles/prosilver/theme/bidi.css b/phpBB/styles/prosilver/theme/bidi.css index 39bd1fb51c..e95dcb355d 100644 --- a/phpBB/styles/prosilver/theme/bidi.css +++ b/phpBB/styles/prosilver/theme/bidi.css @@ -360,6 +360,10 @@ a.right:hover { margin-right: 0; } +.rtl code { + direction: ltr; +} + /* Attachments ----------------------------------------*/ .rtl .attachbox { From 27c082d99ccf135f807de624a3e215e9d5c04b34 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sat, 16 Jun 2007 12:25:36 +0000 Subject: [PATCH 109/136] #12433 (attention: new language variable which *will* give php notices for those using a language pack not having this added variable) git-svn-id: file:///svn/phpbb/trunk@7766 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/language/en/posting.php | 1 + phpBB/posting.php | 8 ++++---- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 3b327a646a..ea8e88d13e 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -277,6 +277,7 @@ p a {
  • [Fix] Order forums on role permission mask (Bug #12337)
  • [Fix] Show "no image" image when a non-selectable item was selected in the acp imageset editor - IE (Bug #12423)
  • [Fix] Update session information without new pageload (Bug #12393, Bug #12441)
  • +
  • [Fix] Let polls be edited correctly (Bug #12433)
  • diff --git a/phpBB/language/en/posting.php b/phpBB/language/en/posting.php index 37334c961a..79b380b14f 100644 --- a/phpBB/language/en/posting.php +++ b/phpBB/language/en/posting.php @@ -144,6 +144,7 @@ $lang = array_merge($lang, array( 'POLL_MAX_OPTIONS_EXPLAIN' => 'This is the number of options each user may select when voting.', 'POLL_OPTIONS' => 'Poll options', 'POLL_OPTIONS_EXPLAIN' => 'Place each option on a new line. You may enter up to %d options.', + 'POLL_OPTIONS_EDIT_EXPLAIN' => 'Place each option on a new line. You may enter up to %d options. If you remove or add options all previous votes will be reset.', 'POLL_QUESTION' => 'Poll question', 'POLL_TITLE_TOO_LONG' => 'The poll title must contain fewer than 100 characters.', 'POLL_TITLE_COMP_TOO_LONG' => 'The parsed size of your poll title is too large, consider removing BBCodes or smilies.', diff --git a/phpBB/posting.php b/phpBB/posting.php index 7524ef41a5..d5dcc0e14a 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -753,7 +753,7 @@ if ($submit || $preview || $refresh) $post_data['poll_last_vote'] = (isset($post_data['poll_last_vote'])) ? $post_data['poll_last_vote'] : 0; if ($post_data['poll_option_text'] && - ($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id'] && (!$post_data['poll_last_vote'] || $auth->acl_get('m_edit', $forum_id)))) + ($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id']/* && (!$post_data['poll_last_vote'] || $auth->acl_get('m_edit', $forum_id))*/)) && $auth->acl_get('f_poll', $forum_id)) { $poll = array( @@ -1028,7 +1028,7 @@ if (!sizeof($error) && $preview) $preview_subject = censor_text($post_data['post_subject']); // Poll Preview - if (!$poll_delete && ($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id'] && (!$post_data['poll_last_vote'] || $auth->acl_get('m_edit', $forum_id)))) + if (!$poll_delete && ($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id']/* && (!$post_data['poll_last_vote'] || $auth->acl_get('m_edit', $forum_id))*/)) && $auth->acl_get('f_poll', $forum_id)) { $parse_poll = new parse_message($post_data['poll_title']); @@ -1309,7 +1309,7 @@ $template->assign_vars(array( display_custom_bbcodes(); // Poll entry -if (($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id'] && (!$post_data['poll_last_vote'] || $auth->acl_get('m_edit', $forum_id)))) +if (($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id']/* && (!$post_data['poll_last_vote'] || $auth->acl_get('m_edit', $forum_id))*/)) && $auth->acl_get('f_poll', $forum_id)) { $template->assign_vars(array( @@ -1318,7 +1318,7 @@ if (($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_ 'S_POLL_DELETE' => ($mode == 'edit' && sizeof($post_data['poll_options']) && ((!$post_data['poll_last_vote'] && $post_data['poster_id'] == $user->data['user_id'] && $auth->acl_get('f_delete', $forum_id)) || $auth->acl_get('m_delete', $forum_id))), 'S_POLL_DELETE_CHECKED' => (!empty($poll_delete)) ? true : false, - 'L_POLL_OPTIONS_EXPLAIN' => sprintf($user->lang['POLL_OPTIONS_EXPLAIN'], $config['max_poll_options']), + 'L_POLL_OPTIONS_EXPLAIN' => sprintf($user->lang['POLL_OPTIONS_' . (($mode == 'edit') ? 'EDIT_' : '') . 'EXPLAIN'], $config['max_poll_options']), 'VOTE_CHANGE_CHECKED' => (!empty($post_data['poll_vote_change'])) ? ' checked="checked"' : '', 'POLL_TITLE' => (isset($post_data['poll_title'])) ? $post_data['poll_title'] : '', From 367f5103d96b192dfca453e6c1a9e4f1a96b8122 Mon Sep 17 00:00:00 2001 From: David M Date: Sat, 16 Jun 2007 13:49:49 +0000 Subject: [PATCH 110/136] - Oracle can't handle IN clauses with more than 1000 elements (Bug #12449) - Firebird can now work properly in PHP4 git-svn-id: file:///svn/phpbb/trunk@7767 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 2 + phpBB/includes/db/firebird.php | 53 +++++++++++-------- phpBB/includes/db/oracle.php | 46 +++++++++++----- phpBB/includes/functions_convert.php | 2 +- .../install/convertors/functions_phpbb20.php | 2 +- 5 files changed, 69 insertions(+), 36 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index ea8e88d13e..de03665e09 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -278,6 +278,8 @@ p a {
  • [Fix] Show "no image" image when a non-selectable item was selected in the acp imageset editor - IE (Bug #12423)
  • [Fix] Update session information without new pageload (Bug #12393, Bug #12441)
  • [Fix] Let polls be edited correctly (Bug #12433)
  • +
  • [Fix] Overcome Oracle's inability to handle IN() clauses with over one thousand elements (Bug #12449)
  • +
  • [Fix] Simulate Firebird's affected rows mechanism for older versions of PHP
  • diff --git a/phpBB/includes/db/firebird.php b/phpBB/includes/db/firebird.php index ad3c58671a..6139d8608b 100644 --- a/phpBB/includes/db/firebird.php +++ b/phpBB/includes/db/firebird.php @@ -27,6 +27,7 @@ class dbal_firebird extends dbal { var $last_query_text = ''; var $service_handle = false; + var $affected_rows = 0; /** * Connect to server @@ -109,13 +110,11 @@ class dbal_firebird extends dbal if ($this->query_result === false) { - $prepared = false; + $array = array(); // We overcome Firebird's 32767 char limit by binding vars if (strlen($query) > 32767) { - $array = array(); - - if (preg_match('/^(INSERT INTO[^(]+)\\(([^()]+)\\) VALUES[^(]+\\((.*?)\\)$/s', $query, $regs)) + if (preg_match('/^(INSERT INTO[^(]++)\\(([^()]+)\\) VALUES[^(]++\\((.*?)\\)$/s', $query, $regs)) { if (strlen($regs[3]) > 32767) { @@ -134,45 +133,55 @@ class dbal_firebird extends dbal } $query = $regs[1] . '(' . $regs[2] . ') VALUES (' . implode(', ', $inserts) . ')'; - unset($art); - - $prepared = true; } } - else if (preg_match_all('/^(UPDATE ([\\w_]++)\\s+SET )(\\w+ = (?:\'(?:[^\']++|\'\')*+\'|\\d+)(?:, \\w+ = (?:\'(?:[^\']++|\'\')*+\'|\\d+))*+)\\s+(WHERE.*)$/s', $query, $data, PREG_SET_ORDER)) + else if (preg_match('/^(UPDATE ([\\w_]++)\\s+SET )([\\w_]++\\s*=\\s*(?:\'(?:[^\']++|\'\')*+\'|\\d+)(?:,\\s*[\\w_]++\\s*=\\s*(?:\'(?:[^\']++|\'\')*+\'|\\d+))*+)\\s+(WHERE.*)$/s', $query, $data)) { - if (strlen($data[0][3]) > 32767) + if (strlen($data[3]) > 32767) { - $update = $data[0][1]; - $where = $data[0][4]; - preg_match_all('/(\\w++) = (\'(?:[^\']++|\'\')*+\'|\\d++)/', $data[0][3], $temp, PREG_SET_ORDER); + $update = $data[1]; + $where = $data[4]; + preg_match_all('/(\\w++)\\s*=\\s*(\'(?:[^\']++|\'\')*+\'|\\d++)/', $data[3], $temp, PREG_SET_ORDER); unset($data); - $art = array(); + $cols = array(); foreach ($temp as $value) { if (!empty($value[2]) && $value[2][0] === "'" && strlen($value[2]) > 32769) // check to see if this thing is greater than the max + 'x2 { $array[] = str_replace("''", "'", substr($value[2], 1, -1)); - $art[] = $value[1] . '=?'; + $cols[] = $value[1] . '=?'; } else { - $art[] = $value[1] . '=' . $value[2]; + $cols[] = $value[1] . '=' . $value[2]; } } - $query = $update . implode(', ', $art) . ' ' . $where; - unset($art); - - $prepared = true; + $query = $update . implode(', ', $cols) . ' ' . $where; + unset($cols); } } } - if ($prepared) + if (!function_exists('ibase_affected_rows') && (preg_match('/^UPDATE ([\w_]++)\s+SET [\w_]++\s*=\s*(?:\'(?:[^\']++|\'\')*+\'|\d+)(?:,\s*[\w_]++\s*=\s*(?:\'(?:[^\']++|\'\')*+\'|\d+))*+\s+(WHERE.*)$/s', $query, $regs) || preg_match('/^DELETE FROM ([\w_]++)\s*WHERE\s*(.*)$/s', $query, $regs))) { - $p_query = ibase_prepare($this->db_connect_id, $query); + $affected_sql = 'SELECT COUNT(*) as num_rows_affected FROM ' . $regs[1] . ' ' . $regs[2]; + + if (!($temp_q_id = @ibase_query($this->db_connect_id, $affected_sql))) + { + return false; + } + + $temp_result = @ibase_fetch_assoc($temp_q_id); + @ibase_free_result($temp_q_id); + + $this->affected_rows = ($temp_result) ? $temp_result['NUM_ROWS_AFFECTED'] : false; + } + + if (sizeof($array)) + { + $p_query = @ibase_prepare($this->db_connect_id, $query); array_unshift($array, $p_query); $this->query_result = call_user_func_array('ibase_execute', $array); unset($array); @@ -252,7 +261,7 @@ class dbal_firebird extends dbal } else { - return ($this->query_result) ? true : false; + return $this->affected_rows; } } diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php index 0059acb1dc..709cb653e9 100644 --- a/phpBB/includes/db/oracle.php +++ b/phpBB/includes/db/oracle.php @@ -144,24 +144,47 @@ class dbal_oracle extends dbal $sub_exp = substr($val[5], strpos($val[5], '(') + 1, -1); $extra = false; preg_match_all('/\'(?>[^\']++|\'\')*+\'|\d++/', $sub_exp, $sub_vals, PREG_PATTERN_ORDER); + $i = 0; foreach ($sub_vals[0] as $sub_val) { + // two things: + // 1) This determines if an empty string was in the IN clausing, making us turn it into a NULL comparison + // 2) This fixes the 1000 list limit that Oracle has (ORA-01795) if ($sub_val !== "''") { - $in_clause[] = $sub_val; + $in_clause[(int) $i++/1000][] = $sub_val; } else { $extra = true; } } - if (!$extra) + if (!$extra && $i < 1000) { $out .= $val[0]; } else { - $out .= ' ' . $val[1] . ' (' . $val[2]. ' ' . (isset($val[6]) ? $val[6] : '') . 'IN(' . implode(', ', $in_clause) . ') OR ' . $val[2] . ' is ' . (isset($val[6]) ? $val[6] : '') . 'NULL)'; + $out .= ' ' . $val[1] . '('; + $in_array = array(); + + // constuct each IN() clause + foreach ($in_clause as $in_values) + { + $in_array[] = $val[2] . ' ' . (isset($val[6]) ? $val[6] : '') . 'IN(' . implode(', ', $in_values) . ')'; + } + + // Join the IN() clauses against a few ORs (IN is just a nicer OR anyway) + $out .= implode(' OR ', $in_array); + + // handle the empty string case + if ($extra) + { + $out .= ' OR ' . $val[2] . ' is ' . (isset($val[6]) ? $val[6] : '') . 'NULL'; + } + $out .= ')'; + + unset($in_array, $in_clause); } } } @@ -211,7 +234,7 @@ class dbal_oracle extends dbal // We overcome Oracle's 4000 char limit by binding vars if (strlen($query) > 4000) { - if (preg_match('/^(INSERT INTO[^(]+)\\(([^()]+)\\) VALUES[^(]+\\((.*?)\\)$/s', $query, $regs)) + if (preg_match('/^(INSERT INTO[^(]++)\\(([^()]+)\\) VALUES[^(]++\\((.*?)\\)$/s', $query, $regs)) { if (strlen($regs[3]) > 4000) { @@ -231,34 +254,33 @@ class dbal_oracle extends dbal } $query = $regs[1] . '(' . $regs[2] . ') VALUES (' . implode(', ', $inserts) . ')'; - unset($art); } } - else if (preg_match_all('/^(UPDATE [\\w_]++\\s+SET )([\\w_]+ = (?:\'(?:[^\']++|\'\')*+\'|\\d+)(?:, [\\w_]+ = (?:\'(?:[^\']++|\'\')*+\'|\\d+))*+)\\s+(WHERE.*)$/s', $query, $data, PREG_SET_ORDER)) + else if (preg_match_all('/^(UPDATE [\\w_]++\\s+SET )([\\w_]++\\s*=\\s*(?:\'(?:[^\']++|\'\')*+\'|\\d+)(?:,\\s*[\\w_]++\\s*=\\s*(?:\'(?:[^\']++|\'\')*+\'|\\d+))*+)\\s+(WHERE.*)$/s', $query, $data, PREG_SET_ORDER)) { if (strlen($data[0][2]) > 4000) { $update = $data[0][1]; $where = $data[0][3]; - preg_match_all('/([\\w_]++) = (\'(?:[^\']++|\'\')*+\'|\\d++)/', $data[0][2], $temp, PREG_SET_ORDER); + preg_match_all('/([\\w_]++)\\s*=\\s*(\'(?:[^\']++|\'\')*+\'|\\d++)/', $data[0][2], $temp, PREG_SET_ORDER); unset($data); - $art = array(); + $cols = array(); foreach ($temp as $value) { if (!empty($value[2]) && $value[2][0] === "'" && strlen($value[2]) > 4002) // check to see if this thing is greater than the max + 'x2 { - $art[] = $value[1] . '=:' . strtoupper($value[1]); + $cols[] = $value[1] . '=:' . strtoupper($value[1]); $array[$value[1]] = str_replace("''", "'", substr($value[2], 1, -1)); } else { - $art[] = $value[1] . '=' . $value[2]; + $cols[] = $value[1] . '=' . $value[2]; } } - $query = $update . implode(', ', $art) . ' ' . $where; - unset($art); + $query = $update . implode(', ', $cols) . ' ' . $where; + unset($cols); } } } diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php index 3fcbde0841..058412429c 100644 --- a/phpBB/includes/functions_convert.php +++ b/phpBB/includes/functions_convert.php @@ -1475,7 +1475,7 @@ function mass_auth($ug_type, $forum_id, $ug_id, $acl_list, $setting = ACL_NO) { $sql = 'SELECT role_id FROM ' . ACL_ROLES_TABLE . " - WHERE role_description = 'ROLE_DESCRIPTION_" . $db->sql_escape($acl_list) . "'"; + WHERE role_name = 'ROLE_" . $db->sql_escape($acl_list) . "'"; $result = $db->sql_query_limit($sql, 1); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); diff --git a/phpBB/install/convertors/functions_phpbb20.php b/phpBB/install/convertors/functions_phpbb20.php index ca4f49d938..5c7bf2f903 100644 --- a/phpBB/install/convertors/functions_phpbb20.php +++ b/phpBB/install/convertors/functions_phpbb20.php @@ -1711,7 +1711,7 @@ function phpbb_check_username_collisions() break; case 'oracle': - $create_sql = 'CREATE TABLE ' . $table_prefix . 'userconv + $create_sql = 'CREATE TABLE ' . $table_prefix . 'userconv ( user_id number(8) NOT NULL, username_clean varchar2(255) DEFAULT \'\' )'; From 27d83c7e2f665531f61d0b2163121bbc403b79e4 Mon Sep 17 00:00:00 2001 From: David M Date: Sat, 16 Jun 2007 14:11:27 +0000 Subject: [PATCH 111/136] #12377 git-svn-id: file:///svn/phpbb/trunk@7768 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/acp/acp_bbcodes.php | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index de03665e09..c624d9d004 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -280,6 +280,7 @@ p a {
  • [Fix] Let polls be edited correctly (Bug #12433)
  • [Fix] Overcome Oracle's inability to handle IN() clauses with over one thousand elements (Bug #12449)
  • [Fix] Simulate Firebird's affected rows mechanism for older versions of PHP
  • +
  • [Fix] Custom BBCodes properly handle lowercasing of parameterized tags (Bug #12377)
  • diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php index 99d7831390..1c43daf642 100644 --- a/phpBB/includes/acp/acp_bbcodes.php +++ b/phpBB/includes/acp/acp_bbcodes.php @@ -118,7 +118,7 @@ class acp_bbcodes // Make sure the user didn't pick a "bad" name for the BBCode tag. $hard_coded = array('code', 'quote', 'quote=', 'attachment', 'attachment=', 'b', 'i', 'url', 'url=', 'img', 'size', 'size=', 'color', 'color=', 'u', 'list', 'list=', 'email', 'email=', 'flash', 'flash='); - if (($action == 'modify' && $data['bbcode_tag'] !== $row['bbcode_tag']) || ($action == 'create')) + if (($action == 'modify' && strtolower($data['bbcode_tag']) !== strtolower($row['bbcode_tag'])) || ($action == 'create')) { $sql = 'SELECT 1 as test FROM ' . BBCODES_TABLE . " @@ -383,6 +383,7 @@ class acp_bbcodes // Lowercase tags $bbcode_tag = preg_replace('/.*?\[([a-z0-9_-]+=?).*/i', '$1', $bbcode_match); + $bbcode_search = preg_replace('/.*?\[([a-z0-9_-]+)=?.*/i', '$1', $bbcode_match); if (!preg_match('/^[a-zA-Z0-9_-]+=?$/', $bbcode_tag)) { @@ -390,10 +391,10 @@ class acp_bbcodes trigger_error($user->lang['BBCODE_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING); } - $fp_match = preg_replace('#\[/?' . $bbcode_tag . '#ie', "strtolower('\$0')", $fp_match); - $fp_replace = preg_replace('#\[/?' . $bbcode_tag . '#ie', "strtolower('\$0')", $fp_replace); - $sp_match = preg_replace('#\[/?' . $bbcode_tag . '#ie', "strtolower('\$0')", $sp_match); - $sp_replace = preg_replace('#\[/?' . $bbcode_tag . '#ie', "strtolower('\$0')", $sp_replace); + $fp_match = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $fp_match); + $fp_replace = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $fp_replace); + $sp_match = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $sp_match); + $sp_replace = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $sp_replace); return array( 'bbcode_tag' => $bbcode_tag, From 827ecf9f30b73943e4736043c33578f2b3acdecf Mon Sep 17 00:00:00 2001 From: David M Date: Sat, 16 Jun 2007 14:18:27 +0000 Subject: [PATCH 112/136] #11927 git-svn-id: file:///svn/phpbb/trunk@7769 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/install/convertors/functions_phpbb20.php | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index c624d9d004..3b6679250d 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -281,6 +281,7 @@ p a {
  • [Fix] Overcome Oracle's inability to handle IN() clauses with over one thousand elements (Bug #12449)
  • [Fix] Simulate Firebird's affected rows mechanism for older versions of PHP
  • [Fix] Custom BBCodes properly handle lowercasing of parameterized tags (Bug #12377)
  • +
  • [Fix] Update the forum_id sequence for PostgreSQL during conversion (Bug #11927)
  • diff --git a/phpBB/install/convertors/functions_phpbb20.php b/phpBB/install/convertors/functions_phpbb20.php index 5c7bf2f903..ec282c8f46 100644 --- a/phpBB/install/convertors/functions_phpbb20.php +++ b/phpBB/install/convertors/functions_phpbb20.php @@ -92,8 +92,6 @@ function phpbb_insert_forums() $db->sql_query('SET IDENTITY_INSERT ' . FORUMS_TABLE . ' ON'); break; } - - $cats_added = array(); while ($row = $src_db->sql_fetchrow($result)) @@ -281,6 +279,10 @@ function phpbb_insert_forums() switch ($db->sql_layer) { + case 'postgres': + $db->sql_query("SELECT SETVAL('" . FORUMS_TABLE . "_seq',(select case when max(forum_id)>0 then max(forum_id)+1 else 1 end from " . FORUMS_TABLE . '));'); + break; + case 'mssql': case 'mssql_odbc': $db->sql_query('SET IDENTITY_INSERT ' . FORUMS_TABLE . ' OFF'); From 288abe60d268f3aff5c77d0bed7f4b1c0ad6f0fb Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sat, 16 Jun 2007 16:28:11 +0000 Subject: [PATCH 113/136] *** empty log message *** git-svn-id: file:///svn/phpbb/trunk@7770 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 - phpBB/includes/acp/acp_styles.php | 1 - 2 files changed, 2 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 3b6679250d..3f028bb85c 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -1,4 +1,3 @@ - diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php index 2d175b53b1..9f2b3579e8 100644 --- a/phpBB/includes/acp/acp_styles.php +++ b/phpBB/includes/acp/acp_styles.php @@ -1453,7 +1453,6 @@ parse_css_file = {PARSE_CSS_FILE} 'IMAGE_SIZE' => $image_width, 'IMAGE_HEIGHT' => $image_height, 'IMAGE_REQUEST' => (empty($image_filename)) ? 'images/no_image.png' : $image_request, - 'TEST' => (empty($image_filename)) ? 'test' : 'tast', 'U_ACTION' => $this->u_action . "&action=edit&id=$imageset_id", 'U_BACK' => $this->u_action, 'NAME' => $imageset_name, From fe7242f37ca7df9330acf953d0b9a1dd1a41da7a Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sun, 17 Jun 2007 08:24:10 +0000 Subject: [PATCH 114/136] a tiny fix git-svn-id: file:///svn/phpbb/trunk@7771 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/install/install_update.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/phpBB/install/install_update.php b/phpBB/install/install_update.php index a7f288bc0b..3a68e271ed 100644 --- a/phpBB/install/install_update.php +++ b/phpBB/install/install_update.php @@ -270,7 +270,7 @@ class install_update extends module $template->assign_vars(array( 'S_DB_UPDATE' => true, 'S_DB_UPDATE_FINISHED' => ($config['version'] == $this->latest_version) ? true : false, - 'U_DB_UPDATE' => append_sid($phpbb_root_path . 'install/database_update.' . $phpEx, 'type=1&language=' . $language), + 'U_DB_UPDATE' => append_sid($phpbb_root_path . 'install/database_update.' . $phpEx, 'type=1&language=' . $user->data['user_lang']), 'U_DB_UPDATE_ACTION' => append_sid($this->p_master->module_url, "mode=$mode&sub=update_db"), 'U_ACTION' => append_sid($this->p_master->module_url, "mode=$mode&sub=file_check"), )); @@ -1175,8 +1175,8 @@ class install_update extends module { // Adjust the update info file to hold some specific style-related information $info['custom'] = array(); - - /* Get custom installed styles... +/* + // Get custom installed styles... $sql = 'SELECT template_name, template_path FROM ' . STYLES_TEMPLATE_TABLE . " WHERE LOWER(template_name) NOT IN ('subsilver2', 'prosilver')"; @@ -1194,16 +1194,16 @@ class install_update extends module foreach ($info['files'] as $filename) { // Template update? - if (strpos(strtolower($filename), 'styles/subsilver2/template/') === 0) + if (strpos(strtolower($filename), 'styles/prosilver/template/') === 0) { foreach ($templates as $row) { - $info['custom'][$filename][] = str_replace('/subsilver2/', '/' . $row['template_path'] . '/', $filename); + $info['custom'][$filename][] = str_replace('/prosilver/', '/' . $row['template_path'] . '/', $filename); } } } } - */ +*/ } break; From eda4a3576018ea7adc589b68bd2dcfd83c0bbe7a Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Mon, 18 Jun 2007 07:33:42 +0000 Subject: [PATCH 115/136] #12519 git-svn-id: file:///svn/phpbb/trunk@7772 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_convert.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php index 058412429c..414f6f2f20 100644 --- a/phpBB/includes/functions_convert.php +++ b/phpBB/includes/functions_convert.php @@ -2089,7 +2089,7 @@ function fix_empty_primary_groups() */ function remove_invalid_users() { - global $convert, $db; + global $convert, $db, $phpEx, $phpbb_root_path; // username_clean is UNIQUE $sql = 'SELECT user_id From eaed6d806eb98abb9e16829ef223b25a8dae72f7 Mon Sep 17 00:00:00 2001 From: David M Date: Mon, 18 Jun 2007 12:05:58 +0000 Subject: [PATCH 116/136] - tiny changes git-svn-id: file:///svn/phpbb/trunk@7773 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/db/mssql.php | 37 +++++++++++--------------------- phpBB/includes/db/mssql_odbc.php | 30 -------------------------- phpBB/includes/db/mysqli.php | 1 - 3 files changed, 12 insertions(+), 56 deletions(-) diff --git a/phpBB/includes/db/mssql.php b/phpBB/includes/db/mssql.php index 76aa3e2366..1077a005b8 100644 --- a/phpBB/includes/db/mssql.php +++ b/phpBB/includes/db/mssql.php @@ -372,35 +372,22 @@ class dbal_mssql extends dbal switch ($mode) { case 'start': - $explain_query = $query; - if (preg_match('/UPDATE ([a-z0-9_]+).*?WHERE(.*)/s', $query, $m)) + $html_table = false; + @mssql_query('SET SHOWPLAN_TEXT ON;', $this->db_connect_id); + if ($result = @mssql_query($query, $this->db_connect_id)) { - $explain_query = 'SELECT * FROM ' . $m[1] . ' WHERE ' . $m[2]; - } - else if (preg_match('/DELETE FROM ([a-z0-9_]+).*?WHERE(.*)/s', $query, $m)) - { - $explain_query = 'SELECT * FROM ' . $m[1] . ' WHERE ' . $m[2]; - } - - if (preg_match('/^SELECT/', $explain_query)) - { - $html_table = false; - @mssql_query('SET SHOWPLAN_TEXT ON;', $this->db_connect_id); - if ($result = @mssql_query($explain_query, $this->db_connect_id)) + @mssql_next_result($result); + while ($row = @mssql_fetch_row($result)) { - @mssql_next_result($result); - while ($row = @mssql_fetch_row($result)) - { - $html_table = $this->sql_report('add_select_row', $query, $html_table, $row); - } + $html_table = $this->sql_report('add_select_row', $query, $html_table, $row); } - @mssql_query('SET SHOWPLAN_TEXT OFF;', $this->db_connect_id); - @mssql_free_result($result); + } + @mssql_query('SET SHOWPLAN_TEXT OFF;', $this->db_connect_id); + @mssql_free_result($result); - if ($html_table) - { - $this->html_hold .= ''; - } + if ($html_table) + { + $this->html_hold .= ''; } break; diff --git a/phpBB/includes/db/mssql_odbc.php b/phpBB/includes/db/mssql_odbc.php index ed64cb3f7c..7770862447 100644 --- a/phpBB/includes/db/mssql_odbc.php +++ b/phpBB/includes/db/mssql_odbc.php @@ -359,36 +359,6 @@ class dbal_mssql_odbc extends dbal switch ($mode) { case 'start': - $explain_query = $query; - if (preg_match('/UPDATE ([a-z0-9_]+).*?WHERE(.*)/s', $query, $m)) - { - $explain_query = 'SELECT * FROM ' . $m[1] . ' WHERE ' . $m[2]; - } - else if (preg_match('/DELETE FROM ([a-z0-9_]+).*?WHERE(.*)/s', $query, $m)) - { - $explain_query = 'SELECT * FROM ' . $m[1] . ' WHERE ' . $m[2]; - } - - if (preg_match('/^SELECT/', $explain_query)) - { - $html_table = false; - @odbc_exec($this->db_connect_id, 'SET SHOWPLAN_TEXT ON;'); - if ($result = @odbc_exec($this->db_connect_id, $explain_query)) - { - @odbc_next_result($result); - while ($row = @odbc_fetch_array($result)) - { - $html_table = $this->sql_report('add_select_row', $query, $html_table, $row); - } - } - @odbc_exec($this->db_connect_id, 'SET SHOWPLAN_TEXT OFF;'); - @odbc_free_result($result); - - if ($html_table) - { - $this->html_hold .= ''; - } - } break; case 'fromcache': diff --git a/phpBB/includes/db/mysqli.php b/phpBB/includes/db/mysqli.php index 4f433a309a..42a1057970 100644 --- a/phpBB/includes/db/mysqli.php +++ b/phpBB/includes/db/mysqli.php @@ -408,7 +408,6 @@ class dbal_mysqli extends dbal break; } - @mysqli_query($this->db_connect_id, "SET profiling = 0;"); } } From 2599387b28db8ae42993c6272750cbd5e6b56d9c Mon Sep 17 00:00:00 2001 From: David M Date: Mon, 18 Jun 2007 12:16:12 +0000 Subject: [PATCH 117/136] #12473 git-svn-id: file:///svn/phpbb/trunk@7774 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/acp/acp_bbcodes.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 3f028bb85c..46719dfea8 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -281,6 +281,7 @@ p a {
  • [Fix] Simulate Firebird's affected rows mechanism for older versions of PHP
  • [Fix] Custom BBCodes properly handle lowercasing of parameterized tags (Bug #12377)
  • [Fix] Update the forum_id sequence for PostgreSQL during conversion (Bug #11927)
  • +
  • [Fix] Allow for multiple tags containing URL and LOCAL_URL tokens (Bug #12473)
  • diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php index 1c43daf642..65c1f9026d 100644 --- a/phpBB/includes/acp/acp_bbcodes.php +++ b/phpBB/includes/acp/acp_bbcodes.php @@ -295,10 +295,10 @@ class acp_bbcodes // @todo Make sure to change this too if something changed in message parsing $tokens = array( 'URL' => array( - '!([a-z0-9]+://)?([^< "\r\n\t\]]*)!ie' => "(('\$1') ? '\$1\$2' : 'http://\$2')" + '!([a-z0-9]+://)?([^< "\r\n\t\]]*?)!ie' => "(('\$1') ? '\$1\$2' : 'http://\$2')" ), 'LOCAL_URL' => array( - '!([^:]+/[^< "\r\n\t\]]*)!' => '$1' + '!([^:]+/[^< "\r\n\t\]]*?)!' => '$1' ), 'EMAIL' => array( '!([a-z0-9]+[a-z0-9\-\._]*@(?:(?:[0-9]{1,3}\.){3,5}[0-9]{1,3}|[a-z0-9]+[a-z0-9\-\._]*\.[a-z]+))!i' => '$1' From 5f62e8feda7a3b406ff8f3b7d82171491f34ce5a Mon Sep 17 00:00:00 2001 From: David M Date: Mon, 18 Jun 2007 13:08:48 +0000 Subject: [PATCH 118/136] #11313 git-svn-id: file:///svn/phpbb/trunk@7775 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/docs/CHANGELOG.html | 1 + phpBB/includes/functions_admin.php | 20 ++++++++++++++++++++ phpBB/includes/mcp/mcp_queue.php | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 46719dfea8..0e6dc600cd 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -282,6 +282,7 @@ p a {
  • [Fix] Custom BBCodes properly handle lowercasing of parameterized tags (Bug #12377)
  • [Fix] Update the forum_id sequence for PostgreSQL during conversion (Bug #11927)
  • [Fix] Allow for multiple tags containing URL and LOCAL_URL tokens (Bug #12473)
  • +
  • [Fix] Properly display forum list in the MCP Queue (Bug #11313)
  • diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index 185b0d35d2..f522670e5d 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -257,11 +257,31 @@ function get_forum_list($acl_list = 'f_list', $id_only = true, $postable_only = $result = $db->sql_query($sql, $expire_time); $forum_rows = array(); + + $right = $padding = 0; + $padding_store = array('0' => 0); + while ($row = $db->sql_fetchrow($result)) { + if ($row['left_id'] < $right) + { + $padding++; + $padding_store[$row['parent_id']] = $padding; + } + else if ($row['left_id'] > $right + 1) + { + // Ok, if the $padding_store for this parent is empty there is something wrong. For now we will skip over it. + // @todo digging deep to find out "how" this can happen. + $padding = (isset($padding_store[$row['parent_id']])) ? $padding_store[$row['parent_id']] : $padding; + } + + $right = $row['right_id']; + $row['padding'] = $padding; + $forum_rows[] = $row; } $db->sql_freeresult($result); + unset($padding_store); } $rowset = array(); diff --git a/phpBB/includes/mcp/mcp_queue.php b/phpBB/includes/mcp/mcp_queue.php index 277fd58927..d3af2caa24 100644 --- a/phpBB/includes/mcp/mcp_queue.php +++ b/phpBB/includes/mcp/mcp_queue.php @@ -274,7 +274,7 @@ class mcp_queue $forum_options = ''; foreach ($forum_list_approve as $row) { - $forum_options .= ''; + $forum_options .= ''; } $sort_days = $total = 0; From e58c913488029ceb963766e3953448822c2daf0f Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Mon, 18 Jun 2007 14:10:19 +0000 Subject: [PATCH 119/136] RTL changes with the help from arod-1 and dodo5000 git-svn-id: file:///svn/phpbb/trunk@7776 89ea8834-ac86-4346-8a33-228a782c2dd0 --- .../styles/prosilver/template/index_body.html | 2 +- phpBB/styles/prosilver/template/jumpbox.html | 8 +-- .../styles/prosilver/template/mcp_forum.html | 4 +- phpBB/styles/prosilver/template/mcp_logs.html | 4 +- .../prosilver/template/mcp_notes_user.html | 4 +- .../styles/prosilver/template/mcp_queue.html | 4 +- .../prosilver/template/mcp_reports.html | 4 +- .../styles/prosilver/template/mcp_whois.html | 4 +- .../prosilver/template/memberlist_body.html | 4 +- .../prosilver/template/message_body.html | 2 +- .../prosilver/template/overall_header.html | 2 + .../prosilver/template/posting_editor.html | 2 +- .../prosilver/template/search_results.html | 10 +-- .../prosilver/template/ucp_attachments.html | 4 +- .../template/ucp_pm_message_header.html | 2 +- .../prosilver/template/ucp_pm_viewfolder.html | 4 +- .../template/ucp_pm_viewmessage.html | 8 +-- .../template/ucp_pm_viewmessage_print.html | 2 +- .../prosilver/template/viewforum_body.html | 4 +- .../prosilver/template/viewonline_body.html | 2 +- .../prosilver/template/viewtopic_body.html | 4 +- phpBB/styles/prosilver/theme/bidi.css | 71 +++++-------------- 22 files changed, 60 insertions(+), 95 deletions(-) diff --git a/phpBB/styles/prosilver/template/index_body.html b/phpBB/styles/prosilver/template/index_body.html index fbfdaa7e62..b2f43b79aa 100644 --- a/phpBB/styles/prosilver/template/index_body.html +++ b/phpBB/styles/prosilver/template/index_body.html @@ -1,6 +1,6 @@ -

    {LAST_VISIT_DATE}{CURRENT_TIME}

    +

    {LAST_VISIT_DATE}{CURRENT_TIME}

    {CURRENT_TIME}
    {L_MCP} ]

    {CURRENT_TIME}

    diff --git a/phpBB/styles/prosilver/template/jumpbox.html b/phpBB/styles/prosilver/template/jumpbox.html index 3a0979585d..369321f36d 100644 --- a/phpBB/styles/prosilver/template/jumpbox.html +++ b/phpBB/styles/prosilver/template/jumpbox.html @@ -3,13 +3,13 @@ -

    {L_RETURN_TO} {FORUM_NAME}

    +

    {L_RETURN_TO} {FORUM_NAME}

    -

    {L_RETURN_TO} {L_INDEX}

    +

    {L_RETURN_TO} {L_INDEX}

    -

    {L_RETURN_TO}: {SEARCH_TOPIC}

    +

    {L_RETURN_TO}: {SEARCH_TOPIC}

    -

    {L_RETURN_TO} {L_SEARCH_ADV}

    +

    {L_RETURN_TO} {L_SEARCH_ADV}

    diff --git a/phpBB/styles/prosilver/template/mcp_forum.html b/phpBB/styles/prosilver/template/mcp_forum.html index 7c8d1a374f..1f07777530 100644 --- a/phpBB/styles/prosilver/template/mcp_forum.html +++ b/phpBB/styles/prosilver/template/mcp_forum.html @@ -61,8 +61,8 @@
    - {L_NEXT} - {L_PREVIOUS} + {L_NEXT} + {L_PREVIOUS} diff --git a/phpBB/styles/prosilver/template/mcp_logs.html b/phpBB/styles/prosilver/template/mcp_logs.html index 4e4e782fca..fb82e4168c 100644 --- a/phpBB/styles/prosilver/template/mcp_logs.html +++ b/phpBB/styles/prosilver/template/mcp_logs.html @@ -47,8 +47,8 @@
    - {L_NEXT} - {L_PREVIOUS} + {L_NEXT} + {L_PREVIOUS} diff --git a/phpBB/styles/prosilver/template/mcp_notes_user.html b/phpBB/styles/prosilver/template/mcp_notes_user.html index 817c7d235b..bb47956a57 100644 --- a/phpBB/styles/prosilver/template/mcp_notes_user.html +++ b/phpBB/styles/prosilver/template/mcp_notes_user.html @@ -87,8 +87,8 @@
    - {L_NEXT} - {L_PREVIOUS} + {L_NEXT} + {L_PREVIOUS} diff --git a/phpBB/styles/prosilver/template/mcp_queue.html b/phpBB/styles/prosilver/template/mcp_queue.html index 2db8f88640..744b46e380 100644 --- a/phpBB/styles/prosilver/template/mcp_queue.html +++ b/phpBB/styles/prosilver/template/mcp_queue.html @@ -60,8 +60,8 @@
    - {L_NEXT} - {L_PREVIOUS} + {L_NEXT} + {L_PREVIOUS} diff --git a/phpBB/styles/prosilver/template/mcp_reports.html b/phpBB/styles/prosilver/template/mcp_reports.html index 04e64265f2..89c9276f3d 100644 --- a/phpBB/styles/prosilver/template/mcp_reports.html +++ b/phpBB/styles/prosilver/template/mcp_reports.html @@ -50,8 +50,8 @@
    - {L_NEXT} - {L_PREVIOUS} + {L_NEXT} + {L_PREVIOUS} diff --git a/phpBB/styles/prosilver/template/mcp_whois.html b/phpBB/styles/prosilver/template/mcp_whois.html index 4906816635..2bd065996c 100644 --- a/phpBB/styles/prosilver/template/mcp_whois.html +++ b/phpBB/styles/prosilver/template/mcp_whois.html @@ -4,9 +4,9 @@ diff --git a/phpBB/styles/prosilver/template/memberlist_body.html b/phpBB/styles/prosilver/template/memberlist_body.html index 3cf276cec6..081352924e 100644 --- a/phpBB/styles/prosilver/template/memberlist_body.html +++ b/phpBB/styles/prosilver/template/memberlist_body.html @@ -146,8 +146,8 @@
    - {L_PREVIOUS} - {L_NEXT} + {L_PREVIOUS} + {L_NEXT}
    diff --git a/phpBB/styles/prosilver/template/message_body.html b/phpBB/styles/prosilver/template/message_body.html index 1fb30a21cf..a1b6ddd530 100644 --- a/phpBB/styles/prosilver/template/message_body.html +++ b/phpBB/styles/prosilver/template/message_body.html @@ -4,7 +4,7 @@

    {MESSAGE_TITLE}

    {MESSAGE_TEXT}

    -

    {L_RETURN_TO_SEARCH_ADV}

    +

    {L_RETURN_TO_SEARCH_ADV}

    diff --git a/phpBB/styles/prosilver/template/overall_header.html b/phpBB/styles/prosilver/template/overall_header.html index 30640453f3..1f8bd75718 100644 --- a/phpBB/styles/prosilver/template/overall_header.html +++ b/phpBB/styles/prosilver/template/overall_header.html @@ -89,9 +89,11 @@ {T_THEME_DATA} + + diff --git a/phpBB/styles/prosilver/template/posting_editor.html b/phpBB/styles/prosilver/template/posting_editor.html index 7ce6f86dea..0e903b1b05 100644 --- a/phpBB/styles/prosilver/template/posting_editor.html +++ b/phpBB/styles/prosilver/template/posting_editor.html @@ -157,7 +157,7 @@

    -
    {attach_row.FILENAME}
    +
    {attach_row.FILENAME}
      diff --git a/phpBB/styles/prosilver/template/search_results.html b/phpBB/styles/prosilver/template/search_results.html index 104193bff2..e62f8f73bc 100644 --- a/phpBB/styles/prosilver/template/search_results.html +++ b/phpBB/styles/prosilver/template/search_results.html @@ -4,9 +4,9 @@

    {L_IGNORED_TERMS}: {IGNORED_WORDS}

    -

    {L_RETURN_TO}: {SEARCH_TOPIC}

    +

    {L_RETURN_TO}: {SEARCH_TOPIC}

    -

    {L_RETURN_TO_SEARCH_ADV}

    +

    {L_RETURN_TO_SEARCH_ADV}

    @@ -116,7 +116,7 @@ @@ -135,8 +135,8 @@
    - {L_PREVIOUS} - {L_NEXT} + {L_PREVIOUS} + {L_NEXT} diff --git a/phpBB/styles/prosilver/template/ucp_attachments.html b/phpBB/styles/prosilver/template/ucp_attachments.html index 9c4701c1ee..165cf86032 100644 --- a/phpBB/styles/prosilver/template/ucp_attachments.html +++ b/phpBB/styles/prosilver/template/ucp_attachments.html @@ -45,8 +45,8 @@
    - {L_NEXT} - {L_PREVIOUS} + {L_NEXT} + {L_PREVIOUS} diff --git a/phpBB/styles/prosilver/template/ucp_pm_message_header.html b/phpBB/styles/prosilver/template/ucp_pm_message_header.html index 4a026fccac..2cc3107548 100644 --- a/phpBB/styles/prosilver/template/ucp_pm_message_header.html +++ b/phpBB/styles/prosilver/template/ucp_pm_message_header.html @@ -19,7 +19,7 @@