You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(193) |
Nov
(393) |
Dec
(347) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(401) |
Feb
(232) |
Mar
(343) |
Apr
(129) |
May
(129) |
Jun
(116) |
Jul
(189) |
Aug
(129) |
Sep
(68) |
Oct
(172) |
Nov
(298) |
Dec
(148) |
2003 |
Jan
(264) |
Feb
(210) |
Mar
(322) |
Apr
(309) |
May
(234) |
Jun
(188) |
Jul
(215) |
Aug
(161) |
Sep
(234) |
Oct
(163) |
Nov
(110) |
Dec
(7) |
2004 |
Jan
(95) |
Feb
(107) |
Mar
(55) |
Apr
(3) |
May
(49) |
Jun
(35) |
Jul
(57) |
Aug
(43) |
Sep
(56) |
Oct
(40) |
Nov
(25) |
Dec
(21) |
2005 |
Jan
(93) |
Feb
(25) |
Mar
(22) |
Apr
(72) |
May
(45) |
Jun
(24) |
Jul
(29) |
Aug
(20) |
Sep
(50) |
Oct
(93) |
Nov
(69) |
Dec
(183) |
2006 |
Jan
(185) |
Feb
(143) |
Mar
(402) |
Apr
(260) |
May
(322) |
Jun
(367) |
Jul
(234) |
Aug
(299) |
Sep
(206) |
Oct
(288) |
Nov
(338) |
Dec
(307) |
2007 |
Jan
(296) |
Feb
(250) |
Mar
(261) |
Apr
(434) |
May
(539) |
Jun
(274) |
Jul
(440) |
Aug
(190) |
Sep
(128) |
Oct
(249) |
Nov
(86) |
Dec
(51) |
2008 |
Jan
(177) |
Feb
(67) |
Mar
(61) |
Apr
(48) |
May
(56) |
Jun
(97) |
Jul
(60) |
Aug
(64) |
Sep
(151) |
Oct
(79) |
Nov
(109) |
Dec
(123) |
2009 |
Jan
(70) |
Feb
(70) |
Mar
(73) |
Apr
(80) |
May
(22) |
Jun
(193) |
Jul
(191) |
Aug
(181) |
Sep
(120) |
Oct
(48) |
Nov
(24) |
Dec
|
From: Meik S. <acy...@ph...> - 2009-09-30 14:51:41
|
Author: acydburn Date: Wed Sep 30 15:50:49 2009 New Revision: 10197 Log: update acp forums copy style to look like the rest of the ACP Modified: branches/phpBB-3_0_0/phpBB/adm/style/acp_forums_copy_perm.html Modified: branches/phpBB-3_0_0/phpBB/adm/style/acp_forums_copy_perm.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/adm/style/acp_forums_copy_perm.html (original) --- branches/phpBB-3_0_0/phpBB/adm/style/acp_forums_copy_perm.html Wed Sep 30 15:50:49 2009 *************** *** 1,21 **** <!-- INCLUDE overall_header.html --> <form id="confirm" method="post" action="{S_COPY_ACTION}"> <fieldset> - <h1>{L_COPY_PERMISSIONS}</h1> - <p>{L_COPY_PERMISSIONS_EXPLAIN}</p> - <p>{L_ACL_LINK}</p> <dl> <dt><label for="forum_perm_from">{L_COPY_PERMISSIONS}:</label><br /><span>{L_COPY_PERMISSIONS_EXPLAIN}</span></dt> <dd><select id="forum_perm_from" name="forum_perm_from"><option value="0">{L_NO_PERMISSIONS}</option>{S_FORUM_OPTIONS}</select></dd> </dl> <div style="text-align: center;">{S_FORM_TOKEN}{S_HIDDEN_FIELDS} ! <input type="submit" name="update" value="{L_CONTINUE}" class="button2" /> </div> - </fieldset> ! </form> <!-- INCLUDE overall_footer.html --> --- 1,22 ---- <!-- INCLUDE overall_header.html --> + <h1>{L_COPY_PERMISSIONS}</h1> + + <p>{L_COPY_PERMISSIONS_EXPLAIN}</p> + <p>{L_ACL_LINK}</p> + <form id="confirm" method="post" action="{S_COPY_ACTION}"> <fieldset> <dl> <dt><label for="forum_perm_from">{L_COPY_PERMISSIONS}:</label><br /><span>{L_COPY_PERMISSIONS_EXPLAIN}</span></dt> <dd><select id="forum_perm_from" name="forum_perm_from"><option value="0">{L_NO_PERMISSIONS}</option>{S_FORUM_OPTIONS}</select></dd> </dl> <div style="text-align: center;">{S_FORM_TOKEN}{S_HIDDEN_FIELDS} ! <input type="submit" name="update" value="{L_CONTINUE}" class="button2" /> </div> </fieldset> ! </form> <!-- INCLUDE overall_footer.html --> |
From: Meik S. <acy...@ph...> - 2009-09-29 14:52:43
|
Author: acydburn Date: Tue Sep 29 15:51:58 2009 New Revision: 10196 Log: Fix Bug #52125, regression from r9678 for Bug #46225 Modified: branches/phpBB-3_0_0/phpBB/includes/mcp/mcp_main.php Modified: branches/phpBB-3_0_0/phpBB/includes/mcp/mcp_main.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/mcp/mcp_main.php (original) --- branches/phpBB-3_0_0/phpBB/includes/mcp/mcp_main.php Tue Sep 29 15:51:58 2009 *************** *** 813,819 **** foreach ($data as $topic_id => $row) { ! add_log('mod', $row['forum_id'], $topic_id, 'LOG_DELETE_' . ($row['topic_moved_id'] ? 'SHADOW_' : '') . 'TOPIC', $row['topic_title']); } $return = delete_topics('topic_id', $topic_ids); --- 813,826 ---- foreach ($data as $topic_id => $row) { ! if ($row['topic_moved_id']) ! { ! add_log('mod', $row['forum_id'], $topic_id, 'LOG_DELETE_SHADOW_TOPIC', $row['topic_title']); ! } ! else ! { ! add_log('mod', $row['forum_id'], $topic_id, 'LOG_DELETE_TOPIC', $row['topic_title'], $row['topic_first_poster_name']); ! } } $return = delete_topics('topic_id', $topic_ids); *************** *** 897,903 **** foreach ($post_data as $id => $row) { ! add_log('mod', $row['forum_id'], $row['topic_id'], 'LOG_DELETE_POST', $row['post_subject']); } // Now delete the posts, topics and forums are automatically resync'ed --- 904,911 ---- foreach ($post_data as $id => $row) { ! $post_username = ($row['poster_id'] == ANONYMOUS && !empty($row['post_username'])) ? $row['post_username'] : $row['username']; ! add_log('mod', $row['forum_id'], $row['topic_id'], 'LOG_DELETE_POST', $row['post_subject'], $post_username); } // Now delete the posts, topics and forums are automatically resync'ed |
From: Meik S. <acy...@ph...> - 2009-09-29 14:49:10
|
Author: acydburn Date: Tue Sep 29 15:48:24 2009 New Revision: 10195 Log: Fix Bug #52055 - php notices if phpbb.com is not reachable Modified: branches/phpBB-3_0_0/phpBB/includes/acp/acp_update.php Modified: branches/phpBB-3_0_0/phpBB/includes/acp/acp_update.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/acp/acp_update.php (original) --- branches/phpBB-3_0_0/phpBB/includes/acp/acp_update.php Tue Sep 29 15:48:24 2009 *************** *** 39,44 **** --- 39,49 ---- $info = obtain_latest_version_info(request_var('versioncheck_force', false), true); + if ($info === false) + { + trigger_error('VERSIONCHECK_FAIL', E_USER_WARNING); + } + $info = explode("\n", $info); $latest_version = trim($info[0]); |
From: Henry S. <kel...@ph...> - 2009-09-28 14:08:19
|
Author: Kellanved Date: Mon Sep 28 14:31:30 2009 New Revision: 10194 Log: #52095 Authorised by: AcydBurn That should finally fix the issue for rtl Modified: branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha.html branches/phpBB-3_0_0/phpBB/styles/prosilver/template/captcha_recaptcha.html branches/phpBB-3_0_0/phpBB/styles/subsilver2/template/captcha_recaptcha.html Modified: branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha.html (original) --- branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha.html Mon Sep 28 14:31:30 2009 *************** *** 8,14 **** }; // ]]> </script> ! <script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}" /> <script type="text/javascript"> // <![CDATA[ <!-- IF S_CONTENT_DIRECTION eq 'rtl' --> --- 8,14 ---- }; // ]]> </script> ! <script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}"></script> <script type="text/javascript"> // <![CDATA[ <!-- IF S_CONTENT_DIRECTION eq 'rtl' --> Modified: branches/phpBB-3_0_0/phpBB/styles/prosilver/template/captcha_recaptcha.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/styles/prosilver/template/captcha_recaptcha.html (original) --- branches/phpBB-3_0_0/phpBB/styles/prosilver/template/captcha_recaptcha.html Mon Sep 28 14:31:30 2009 *************** *** 20,26 **** }; // ]]> </script> ! <script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}" /> <script type="text/javascript"> // <![CDATA[ <!-- IF S_CONTENT_DIRECTION eq 'rtl' --> --- 20,26 ---- }; // ]]> </script> ! <script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}"></script> <script type="text/javascript"> // <![CDATA[ <!-- IF S_CONTENT_DIRECTION eq 'rtl' --> Modified: branches/phpBB-3_0_0/phpBB/styles/subsilver2/template/captcha_recaptcha.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/styles/subsilver2/template/captcha_recaptcha.html (original) --- branches/phpBB-3_0_0/phpBB/styles/subsilver2/template/captcha_recaptcha.html Mon Sep 28 14:31:30 2009 *************** *** 13,19 **** }; // ]]> </script> ! <script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}" /> <script type="text/javascript"> // <![CDATA[ <!-- IF S_CONTENT_DIRECTION eq 'rtl' --> --- 13,19 ---- }; // ]]> </script> ! <script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}" ></script> <script type="text/javascript"> // <![CDATA[ <!-- IF S_CONTENT_DIRECTION eq 'rtl' --> |
From: Henry S. <kel...@ph...> - 2009-09-28 13:08:51
|
Author: Kellanved Date: Mon Sep 28 14:08:33 2009 New Revision: 10193 Log: Fail without notices when no questions are provided Authorised by: AcydBurn Modified: branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php Modified: branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php (original) --- branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php Mon Sep 28 14:08:33 2009 *************** *** 349,355 **** global $config, $db, $user; $error = ''; ! if (!$this->confirm_id) { $error = $user->lang['CONFIRM_QUESTION_WRONG']; --- 349,360 ---- global $config, $db, $user; $error = ''; ! ! if (!sizeof($this->question_ids)) ! { ! return false; ! } ! if (!$this->confirm_id) { $error = $user->lang['CONFIRM_QUESTION_WRONG']; *************** *** 388,393 **** --- 393,403 ---- { global $db, $user; + + if (!sizeof($this->question_ids)) + { + return false; + } $this->confirm_id = md5(unique_id($user->ip)); $this->question = (int) array_rand($this->question_ids); *************** *** 409,414 **** --- 419,429 ---- function reselect_question() { global $db, $user; + + if (!sizeof($this->question_ids)) + { + return false; + } $this->question = (int) array_rand($this->question_ids); $this->solved = 0; *************** *** 449,454 **** --- 464,474 ---- function load_answer() { global $db, $user; + + if (!sizeof($this->question_ids)) + { + return false; + } $sql = 'SELECT con.question_id, attempts, question_text, strict FROM ' . CAPTCHA_QA_CONFIRM_TABLE . ' con, ' . CAPTCHA_QUESTIONS_TABLE . " qes |
From: Henry S. <kel...@ph...> - 2009-09-28 10:41:06
|
Author: Kellanved Date: Mon Sep 28 11:40:20 2009 New Revision: 10192 Log: #52095 Authorised by: AcydBurn Modified: branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha.html branches/phpBB-3_0_0/phpBB/styles/prosilver/template/captcha_recaptcha.html branches/phpBB-3_0_0/phpBB/styles/subsilver2/template/captcha_recaptcha.html Modified: branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha.html (original) --- branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha.html Mon Sep 28 11:40:20 2009 *************** *** 4,10 **** <script type="text/javascript"> // <![CDATA[ var RecaptchaOptions = { ! lang : '{L_RECAPTCHA_LANG}', }; // ]]> </script> --- 4,10 ---- <script type="text/javascript"> // <![CDATA[ var RecaptchaOptions = { ! lang : '{L_RECAPTCHA_LANG}', }; // ]]> </script> Modified: branches/phpBB-3_0_0/phpBB/styles/prosilver/template/captcha_recaptcha.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/styles/prosilver/template/captcha_recaptcha.html (original) --- branches/phpBB-3_0_0/phpBB/styles/prosilver/template/captcha_recaptcha.html Mon Sep 28 11:40:20 2009 *************** *** 15,21 **** <script type="text/javascript"> // <![CDATA[ var RecaptchaOptions = { ! lang : '{L_RECAPTCHA_LANG}', tabindex : <!-- IF $CAPTCHA_TAB_INDEX -->{$CAPTCHA_TAB_INDEX}<!-- ELSE -->10<!-- ENDIF --> }; // ]]> --- 15,21 ---- <script type="text/javascript"> // <![CDATA[ var RecaptchaOptions = { ! lang : '{L_RECAPTCHA_LANG}', tabindex : <!-- IF $CAPTCHA_TAB_INDEX -->{$CAPTCHA_TAB_INDEX}<!-- ELSE -->10<!-- ENDIF --> }; // ]]> Modified: branches/phpBB-3_0_0/phpBB/styles/subsilver2/template/captcha_recaptcha.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/styles/subsilver2/template/captcha_recaptcha.html (original) --- branches/phpBB-3_0_0/phpBB/styles/subsilver2/template/captcha_recaptcha.html Mon Sep 28 11:40:20 2009 *************** *** 8,14 **** <script type="text/javascript"> // <![CDATA[ var RecaptchaOptions = { ! lang : '{L_RECAPTCHA_LANG}', tabindex : <!-- IF $CAPTCHA_TAB_INDEX -->{$CAPTCHA_TAB_INDEX}<!-- ELSE -->10<!-- ENDIF --> }; // ]]> --- 8,14 ---- <script type="text/javascript"> // <![CDATA[ var RecaptchaOptions = { ! lang : '{L_RECAPTCHA_LANG}', tabindex : <!-- IF $CAPTCHA_TAB_INDEX -->{$CAPTCHA_TAB_INDEX}<!-- ELSE -->10<!-- ENDIF --> }; // ]]> |
From: Henry S. <kel...@ph...> - 2009-09-28 10:27:06
|
Author: Kellanved Date: Mon Sep 28 11:26:18 2009 New Revision: 10191 Log: #52095 Authorised by: AcydBurn Modified: branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha.html branches/phpBB-3_0_0/phpBB/styles/prosilver/template/captcha_recaptcha.html branches/phpBB-3_0_0/phpBB/styles/subsilver2/template/captcha_recaptcha.html Modified: branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha.html (original) --- branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha.html Mon Sep 28 11:26:18 2009 *************** *** 1,13 **** <!-- IF S_RECAPTCHA_AVAILABLE --> <dl> <dd> ! <script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}"> // <![CDATA[ var RecaptchaOptions = { ! lang : {L_RECAPTCHA_LANG} }; // ]]> </script> <noscript> --- 1,21 ---- <!-- IF S_RECAPTCHA_AVAILABLE --> <dl> <dd> ! <script type="text/javascript"> // <![CDATA[ var RecaptchaOptions = { ! lang : '{L_RECAPTCHA_LANG}', }; // ]]> </script> + <script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}" /> + <script type="text/javascript"> + // <![CDATA[ + <!-- IF S_CONTENT_DIRECTION eq 'rtl' --> + document.getElementById('recaptcha_table').style.direction = 'ltr'; + <!-- ENDIF --> + // ]]> + </script> <noscript> Modified: branches/phpBB-3_0_0/phpBB/styles/prosilver/template/captcha_recaptcha.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/styles/prosilver/template/captcha_recaptcha.html (original) --- branches/phpBB-3_0_0/phpBB/styles/prosilver/template/captcha_recaptcha.html Mon Sep 28 11:26:18 2009 *************** *** 12,27 **** <dl> <dt><label>{L_CONFIRM_CODE}</label>:<br /><span>{L_RECAPTCHA_EXPLAIN}</span></dt> <dd> ! ! <script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}"> // <![CDATA[ var RecaptchaOptions = { ! lang : {L_RECAPTCHA_LANG}, tabindex : <!-- IF $CAPTCHA_TAB_INDEX -->{$CAPTCHA_TAB_INDEX}<!-- ELSE -->10<!-- ENDIF --> }; // ]]> </script> ! <noscript> <div> <object data="{RECAPTCHA_SERVER}/noscript?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}" type="text/html" height="300" width="500"></object><br /> --- 12,33 ---- <dl> <dt><label>{L_CONFIRM_CODE}</label>:<br /><span>{L_RECAPTCHA_EXPLAIN}</span></dt> <dd> ! <script type="text/javascript"> // <![CDATA[ var RecaptchaOptions = { ! lang : '{L_RECAPTCHA_LANG}', tabindex : <!-- IF $CAPTCHA_TAB_INDEX -->{$CAPTCHA_TAB_INDEX}<!-- ELSE -->10<!-- ENDIF --> }; // ]]> </script> ! <script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}" /> ! <script type="text/javascript"> ! // <![CDATA[ ! <!-- IF S_CONTENT_DIRECTION eq 'rtl' --> ! document.getElementById('recaptcha_table').style.direction = 'ltr'; ! <!-- ENDIF --> ! // ]]> ! </script> <noscript> <div> <object data="{RECAPTCHA_SERVER}/noscript?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}" type="text/html" height="300" width="500"></object><br /> Modified: branches/phpBB-3_0_0/phpBB/styles/subsilver2/template/captcha_recaptcha.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/styles/subsilver2/template/captcha_recaptcha.html (original) --- branches/phpBB-3_0_0/phpBB/styles/subsilver2/template/captcha_recaptcha.html Mon Sep 28 11:26:18 2009 *************** *** 5,17 **** <tr> <td class="row1"><b class="genmed">{L_CONFIRM_CODE}:</b><br /><span class="gensmall">{L_RECAPTCHA_EXPLAIN}</span></td> <td class="row2"> ! <script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}"> ! //<![CDATA[ ! var RecaptchaOptions = { ! lang : {L_RECAPTCHA_LANG} ! }; ! // ]]> ! </script> <noscript> <iframe src="{RECAPTCHA_SERVER}/noscript?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}" height="300" width="500" frameborder="0"></iframe><br /> --- 5,26 ---- <tr> <td class="row1"><b class="genmed">{L_CONFIRM_CODE}:</b><br /><span class="gensmall">{L_RECAPTCHA_EXPLAIN}</span></td> <td class="row2"> ! <script type="text/javascript"> ! // <![CDATA[ ! var RecaptchaOptions = { ! lang : '{L_RECAPTCHA_LANG}', ! tabindex : <!-- IF $CAPTCHA_TAB_INDEX -->{$CAPTCHA_TAB_INDEX}<!-- ELSE -->10<!-- ENDIF --> ! }; ! // ]]> ! </script> ! <script type="text/javascript" src="{RECAPTCHA_SERVER}/challenge?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}" /> ! <script type="text/javascript"> ! // <![CDATA[ ! <!-- IF S_CONTENT_DIRECTION eq 'rtl' --> ! document.getElementById('recaptcha_table').style.direction = 'ltr'; ! <!-- ENDIF --> ! // ]]> ! </script> <noscript> <iframe src="{RECAPTCHA_SERVER}/noscript?k={RECAPTCHA_PUBKEY}{RECAPTCHA_ERRORGET}" height="300" width="500" frameborder="0"></iframe><br /> |
From: Meik S. <acy...@ph...> - 2009-09-25 17:06:34
|
Author: acydburn Date: Fri Sep 25 18:05:47 2009 New Revision: 10190 Log: Tag phpBB 3.0.6 Release Candidate 2 Added: tags/release_3_0_6-RC2/ - copied from r10189, branches/phpBB-3_0_0/ |
From: Meik S. <acy...@ph...> - 2009-09-25 16:43:11
|
Author: acydburn Date: Fri Sep 25 17:42:52 2009 New Revision: 10189 Log: alt instead of title, fix XHTML issue reported in ticket #51945 (i will not announce this change, the code changes package for RC2 and the final release will include it though, the RC1 one will not be updated to reflect this change) Modified: branches/phpBB-3_0_0/phpBB/styles/prosilver/template/forumlist_body.html Modified: branches/phpBB-3_0_0/phpBB/styles/prosilver/template/forumlist_body.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/styles/prosilver/template/forumlist_body.html (original) --- branches/phpBB-3_0_0/phpBB/styles/prosilver/template/forumlist_body.html Fri Sep 25 17:42:52 2009 *************** *** 27,33 **** <li class="row"> <dl class="icon" style="background-image: url({forumrow.FORUM_FOLDER_IMG_SRC}); background-repeat: no-repeat;"> <dt title="{forumrow.FORUM_FOLDER_IMG_ALT}"> ! <!-- IF S_ENABLE_FEEDS and forumrow.S_FEED_ENABLED --><!-- <a class="feed-icon-forum" title="{L_FEED} - {forumrow.FORUM_NAME}" href="{U_FEED}?f={forumrow.FORUM_ID}"><img src="{T_THEME_PATH}/images/feed.gif" title="{L_FEED} - {forumrow.FORUM_NAME}" /></a> --><!-- ENDIF --> <!-- IF forumrow.FORUM_IMAGE --><span class="forum-image">{forumrow.FORUM_IMAGE}</span><!-- ENDIF --> <a href="{forumrow.U_VIEWFORUM}" class="forumtitle">{forumrow.FORUM_NAME}</a><br /> --- 27,33 ---- <li class="row"> <dl class="icon" style="background-image: url({forumrow.FORUM_FOLDER_IMG_SRC}); background-repeat: no-repeat;"> <dt title="{forumrow.FORUM_FOLDER_IMG_ALT}"> ! <!-- IF S_ENABLE_FEEDS and forumrow.S_FEED_ENABLED --><!-- <a class="feed-icon-forum" title="{L_FEED} - {forumrow.FORUM_NAME}" href="{U_FEED}?f={forumrow.FORUM_ID}"><img src="{T_THEME_PATH}/images/feed.gif" alt="{L_FEED} - {forumrow.FORUM_NAME}" /></a> --><!-- ENDIF --> <!-- IF forumrow.FORUM_IMAGE --><span class="forum-image">{forumrow.FORUM_IMAGE}</span><!-- ENDIF --> <a href="{forumrow.U_VIEWFORUM}" class="forumtitle">{forumrow.FORUM_NAME}</a><br /> |
From: Meik S. <acy...@ph...> - 2009-09-25 10:28:08
|
Author: acydburn Date: Fri Sep 25 11:27:19 2009 New Revision: 10188 Log: add recent important additions/fixes to the changelog Modified: branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html Modified: branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html (original) --- branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html Fri Sep 25 11:27:19 2009 *************** *** 211,216 **** --- 211,219 ---- <li>[Fix] Fix icon alignment for forums with large descriptions in subsilver2. (Bug #50445)</li> <li>[Fix] Correctly display underlined links placed in last line in viewtopic. (Bug #14811 - Patch by primehalo)</li> <li>[Fix] Only check whether forum image exists if forum image is specified. (Bug #51905)</li> + <li>[Fix] Fixed database backup and restore with Oracle DBMS.</li> + <li>[Fix] Fixed database updater for changes to columns having default value in MSSQL (adding/dropping constraints)</li> + <li>[Change] Database updater now supports checking for existing/missing indexes.</li> <li>[Change] submit_post() now accepts force_approved_state key passed to $data to indicate new posts being approved (true) or unapproved (false).</li> <li>[Change] Change the data format of the default file ACM to be more secure from tampering and have better performance.</li> <li>[Change] Template engine now permits to a limited extent variable includes.</li> |
From: Meik S. <acy...@ph...> - 2009-09-25 09:42:07
|
Author: acydburn Date: Fri Sep 25 10:41:49 2009 New Revision: 10187 Log: prepare for RC2 Modified: branches/phpBB-3_0_0/phpBB/includes/constants.php branches/phpBB-3_0_0/phpBB/install/database_update.php branches/phpBB-3_0_0/phpBB/install/schemas/schema_data.sql Modified: branches/phpBB-3_0_0/phpBB/includes/constants.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/constants.php (original) --- branches/phpBB-3_0_0/phpBB/includes/constants.php Fri Sep 25 10:41:49 2009 *************** *** 25,31 **** */ // phpBB Version ! define('PHPBB_VERSION', '3.0.6-RC1'); // QA-related // define('PHPBB_QA', 1); --- 25,31 ---- */ // phpBB Version ! define('PHPBB_VERSION', '3.0.6-RC2'); // QA-related // define('PHPBB_QA', 1); Modified: branches/phpBB-3_0_0/phpBB/install/database_update.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/install/database_update.php (original) --- branches/phpBB-3_0_0/phpBB/install/database_update.php Fri Sep 25 10:41:49 2009 *************** *** 1510,1523 **** $no_updates = false; break; ! // Changes from 3.0.6-RC1 to 3.0.6-RC2 case '3.0.6-RC1': - - // We check if there is an index for log_time within the logs table - - - // If so, we remove it - break; } } --- 1510,1517 ---- $no_updates = false; break; ! // No changes from 3.0.6-RC1 to 3.0.6-RC2 case '3.0.6-RC1': break; } } Modified: branches/phpBB-3_0_0/phpBB/install/schemas/schema_data.sql ============================================================================== *** branches/phpBB-3_0_0/phpBB/install/schemas/schema_data.sql (original) --- branches/phpBB-3_0_0/phpBB/install/schemas/schema_data.sql Fri Sep 25 10:41:49 2009 *************** *** 239,245 **** 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.6-RC1'); 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'); --- 239,245 ---- 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.6-RC2'); 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: Joas S. <nic...@ph...> - 2009-09-25 08:42:30
|
Author: nickvergessen Date: Fri Sep 25 09:41:47 2009 New Revision: 10186 Log: Fix Bug #51835 - editing posts with attachments - regression from r9843 introduced in #48265 Authorised by: AcydBurn Modified: branches/phpBB-3_0_0/phpBB/includes/message_parser.php branches/phpBB-3_0_0/phpBB/includes/ucp/ucp_pm_compose.php branches/phpBB-3_0_0/phpBB/posting.php Modified: branches/phpBB-3_0_0/phpBB/includes/message_parser.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/message_parser.php (original) --- branches/phpBB-3_0_0/phpBB/includes/message_parser.php Fri Sep 25 09:41:47 2009 *************** *** 1345,1351 **** /** * Parse Attachments */ ! function parse_attachments($form_name, $mode, $forum_id, $submit, $preview, $refresh, $is_message = false, $post_msg_id = 0, $topic_id = 0) { global $config, $auth, $user, $phpbb_root_path, $phpEx, $db; --- 1345,1351 ---- /** * Parse Attachments */ ! function parse_attachments($form_name, $mode, $forum_id, $submit, $preview, $refresh, $is_message = false) { global $config, $auth, $user, $phpbb_root_path, $phpEx, $db; *************** *** 1498,1524 **** 'filesize' => $filedata['filesize'], 'filetime' => $filedata['filetime'], 'thumbnail' => $filedata['thumbnail'], ! 'is_orphan' => ($post_msg_id) ? 0 : 1, 'in_message' => ($is_message) ? 1 : 0, 'poster_id' => $user->data['user_id'], ); - if ($post_msg_id) - { - $sql_ary['post_msg_id'] = $post_msg_id; - if ($topic_id) - { - $sql_ary['topic_id'] = $topic_id; - } - set_config_count('upload_dir_size', $filedata['filesize'], true); - set_config_count('num_files', 1, true); - } - $db->sql_query('INSERT INTO ' . ATTACHMENTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); $new_entry = array( 'attach_id' => $db->sql_nextid(), ! 'is_orphan' => ($post_msg_id) ? 0 : 1, 'real_filename' => $filedata['real_filename'], 'attach_comment'=> $this->filename_data['filecomment'], ); --- 1498,1513 ---- 'filesize' => $filedata['filesize'], 'filetime' => $filedata['filetime'], 'thumbnail' => $filedata['thumbnail'], ! 'is_orphan' => 1, 'in_message' => ($is_message) ? 1 : 0, 'poster_id' => $user->data['user_id'], ); $db->sql_query('INSERT INTO ' . ATTACHMENTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); $new_entry = array( 'attach_id' => $db->sql_nextid(), ! 'is_orphan' => 1, 'real_filename' => $filedata['real_filename'], 'attach_comment'=> $this->filename_data['filecomment'], ); Modified: branches/phpBB-3_0_0/phpBB/includes/ucp/ucp_pm_compose.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/ucp/ucp_pm_compose.php (original) --- branches/phpBB-3_0_0/phpBB/includes/ucp/ucp_pm_compose.php Fri Sep 25 09:41:47 2009 *************** *** 669,690 **** } // Parse Attachments - before checksum is calculated ! if ($action == 'edit') ! { ! $message_parser->parse_attachments('fileupload', $action, 0, $submit, $preview, $refresh, true, $msg_id); ! if (sizeof($message_parser->attachment_data)) ! { ! // Update attachment indicators for pms having attachments now, as a precaution if the pm does not get stored by submit ! $sql = 'UPDATE ' . PRIVMSGS_TABLE . ' ! SET message_attachment = 1 ! WHERE msg_id = ' . $msg_id; ! $db->sql_query($sql); ! } ! } ! else ! { ! $message_parser->parse_attachments('fileupload', $action, 0, $submit, $preview, $refresh, true); ! } if (sizeof($message_parser->warn_msg) && !($remove_u || $remove_g || $add_to || $add_bcc)) { --- 669,675 ---- } // Parse Attachments - before checksum is calculated ! $message_parser->parse_attachments('fileupload', $action, 0, $submit, $preview, $refresh, true); if (sizeof($message_parser->warn_msg) && !($remove_u || $remove_g || $add_to || $add_bcc)) { Modified: branches/phpBB-3_0_0/phpBB/posting.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/posting.php (original) --- branches/phpBB-3_0_0/phpBB/posting.php Fri Sep 25 09:41:47 2009 *************** *** 742,769 **** } // Parse Attachments - before checksum is calculated ! if ($mode == 'edit') ! { ! $message_parser->parse_attachments('fileupload', $mode, $forum_id, $submit, $preview, $refresh, false, $post_id, $topic_id); ! if (sizeof($message_parser->attachment_data)) ! { ! // Update attachment indicators for post/topic having attachments now, as a precaution if the post does not get stored by submit ! $sql = 'UPDATE ' . POSTS_TABLE . ' ! SET post_attachment = 1 ! WHERE post_id = ' . $post_id; ! $db->sql_query($sql); ! ! $sql = 'UPDATE ' . TOPICS_TABLE . ' ! SET topic_attachment = 1 ! WHERE topic_id = ' . $topic_id; ! $db->sql_query($sql); ! } ! } ! else ! { ! $message_parser->parse_attachments('fileupload', $mode, $forum_id, $submit, $preview, $refresh); ! } ! // Grab md5 'checksum' of new message $message_md5 = md5($message_parser->message); --- 742,748 ---- } // Parse Attachments - before checksum is calculated ! $message_parser->parse_attachments('fileupload', $mode, $forum_id, $submit, $preview, $refresh); // Grab md5 'checksum' of new message $message_md5 = md5($message_parser->message); |
From: Meik S. <acy...@ph...> - 2009-09-24 15:36:53
|
Author: acydburn Date: Thu Sep 24 16:36:05 2009 New Revision: 10185 Log: I think i need to check other DBMS more often. :/ - fix index check for sqlite, firebird and oracle - add check for unique index - fix changing default value for column in mssql (add constraint) Modified: branches/phpBB-3_0_0/phpBB/includes/db/db_tools.php branches/phpBB-3_0_0/phpBB/install/database_update.php Modified: branches/phpBB-3_0_0/phpBB/includes/db/db_tools.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/db/db_tools.php (original) --- branches/phpBB-3_0_0/phpBB/includes/db/db_tools.php Thu Sep 24 16:36:05 2009 *************** *** 1190,1200 **** // For hexadecimal values do not use single quotes if (strpos($column_data[1], '0x') === 0) { ! $sql_default .= 'DEFAULT (' . $column_data[1] . ') '; } else { ! $sql_default .= 'DEFAULT (' . ((is_numeric($column_data[1])) ? $column_data[1] : "'{$column_data[1]}'") . ') '; } } --- 1190,1202 ---- // For hexadecimal values do not use single quotes if (strpos($column_data[1], '0x') === 0) { ! $return_array['default'] = 'DEFAULT (' . $column_data[1] . ') '; ! $sql_default .= $return_array['default']; } else { ! $return_array['default'] = 'DEFAULT (' . ((is_numeric($column_data[1])) ? $column_data[1] : "'{$column_data[1]}'") . ') '; ! $sql_default .= $return_array['default']; } } *************** *** 1781,1787 **** case 'firebird': $sql = "SELECT LOWER(RDB\$INDEX_NAME) as index_name FROM RDB\$INDICES ! WHERE RDB\$RELATION_NAME = " . strtoupper($table_name) . " AND RDB\$UNIQUE_FLAG IS NULL AND RDB\$FOREIGN_KEY IS NULL"; $col = 'index_name'; --- 1783,1789 ---- case 'firebird': $sql = "SELECT LOWER(RDB\$INDEX_NAME) as index_name FROM RDB\$INDICES ! WHERE RDB\$RELATION_NAME = '" . strtoupper($table_name) . "' AND RDB\$UNIQUE_FLAG IS NULL AND RDB\$FOREIGN_KEY IS NULL"; $col = 'index_name'; *************** *** 1808,1815 **** case 'oracle': $sql = "SELECT index_name FROM user_indexes ! WHERE table_name = '" . $table_name . "' ! AND generated = 'N'"; $col = 'index_name'; break; --- 1810,1818 ---- case 'oracle': $sql = "SELECT index_name FROM user_indexes ! WHERE table_name = '" . strtoupper($table_name) . "' ! AND generated = 'N' ! AND uniqueness = 'NONUNIQUE'"; $col = 'index_name'; break; *************** *** 1870,1875 **** --- 1873,1899 ---- case 'mssql': $statements[] = 'ALTER TABLE [' . $table_name . '] ALTER COLUMN [' . $column_name . '] ' . $column_data['column_type_sql']; + + if (!empty($column_data['default'])) + { + // Using TRANSACT-SQL for this statement because we do not want to have colliding data if statements are executed at a later stage + $statements[] = "DECLARE @drop_default_name VARCHAR(100), @cmd VARCHAR(1000) + SET @drop_default_name = + (SELECT so.name FROM sysobjects so + JOIN sysconstraints sc ON so.id = sc.constid + WHERE object_name(so.parent_obj) = '{$table_name}' + AND so.xtype = 'D' + AND sc.colid = (SELECT colid FROM syscolumns + WHERE id = object_id('{$table_name}') + AND name = '{$column_name}')) + IF @drop_default_name <> '' + BEGIN + SET @cmd = 'ALTER TABLE [{$table_name}] DROP CONSTRAINT [' + @drop_default_name + ']' + EXEC(@cmd) + END + SET @cmd = 'ALTER TABLE [{$table_name}] ADD CONSTRAINT [DF_{$table_name}_{$column_name}_1] {$column_data['default']} FOR [{$column_name}]' + EXEC(@cmd)"; + } break; case 'mysql_40': Modified: branches/phpBB-3_0_0/phpBB/install/database_update.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/install/database_update.php (original) --- branches/phpBB-3_0_0/phpBB/install/database_update.php Thu Sep 24 16:36:05 2009 *************** *** 2003,2009 **** { foreach ($index_array as $index_name => $column) { ! if ($this->sql_index_exists($table, $index_name)) { continue; } --- 2003,2009 ---- { foreach ($index_array as $index_name => $column) { ! if ($this->sql_unique_index_exists($table, $index_name)) { continue; } *************** *** 2338,2344 **** } /** ! * Check if a specified index exists in table * * @param string $table_name Table to check the index at * @param string $index_name The index name to check --- 2338,2344 ---- } /** ! * Check if a specified index exists in table. Does not return PRIMARY KEY and UNIQUE indexes. * * @param string $table_name Table to check the index at * @param string $index_name The index name to check *************** *** 2373,2379 **** case 'firebird': $sql = "SELECT LOWER(RDB\$INDEX_NAME) as index_name FROM RDB\$INDICES ! WHERE RDB\$RELATION_NAME = " . strtoupper($table_name) . " AND RDB\$UNIQUE_FLAG IS NULL AND RDB\$FOREIGN_KEY IS NULL"; $col = 'index_name'; --- 2373,2379 ---- case 'firebird': $sql = "SELECT LOWER(RDB\$INDEX_NAME) as index_name FROM RDB\$INDICES ! WHERE RDB\$RELATION_NAME = '" . strtoupper($table_name) . "' AND RDB\$UNIQUE_FLAG IS NULL AND RDB\$FOREIGN_KEY IS NULL"; $col = 'index_name'; *************** *** 2400,2411 **** case 'oracle': $sql = "SELECT index_name FROM user_indexes ! WHERE table_name = '" . $table_name . "' ! AND generated = 'N'"; break; case 'sqlite': ! $sql = "PRAGMA index_info('" . $table_name . "');"; $col = 'name'; break; } --- 2400,2413 ---- case 'oracle': $sql = "SELECT index_name FROM user_indexes ! WHERE table_name = '" . strtoupper($table_name) . "' ! AND generated = 'N' ! AND uniqueness = 'NONUNIQUE'"; ! $col = 'index_name'; break; case 'sqlite': ! $sql = "PRAGMA index_list('" . $table_name . "');"; $col = 'name'; break; } *************** *** 2418,2423 **** --- 2420,2554 ---- continue; } + // These DBMS prefix index name with the table name + switch ($this->sql_layer) + { + case 'firebird': + case 'oracle': + case 'postgres': + case 'sqlite': + $row[$col] = substr($row[$col], strlen($table_name) + 1); + break; + } + + if (strtolower($row[$col]) == strtolower($index_name)) + { + $this->db->sql_freeresult($result); + return true; + } + } + $this->db->sql_freeresult($result); + + return false; + } + + /** + * Check if a specified UNIQUE index exists in table. + * + * @param string $table_name Table to check the index at + * @param string $index_name The index name to check + * + * @return bool True if index exists, else false + */ + function sql_unique_index_exists($table_name, $index_name) + { + if ($this->sql_layer == 'mssql') + { + $sql = "EXEC sp_statistics '$table_name'"; + $result = $this->db->sql_query($sql); + + while ($row = $this->db->sql_fetchrow($result)) + { + // Usually NON_UNIQUE is the column we want to check, but we allow for both + if ($row['TYPE'] == 3) + { + if (strtolower($row['INDEX_NAME']) == strtolower($index_name)) + { + $this->db->sql_freeresult($result); + return true; + } + } + } + $this->db->sql_freeresult($result); + return false; + } + + switch ($this->sql_layer) + { + case 'firebird': + $sql = "SELECT LOWER(RDB\$INDEX_NAME) as index_name + FROM RDB\$INDICES + WHERE RDB\$RELATION_NAME = '" . strtoupper($table_name) . "' + AND RDB\$UNIQUE_FLAG IS NOT NULL + AND RDB\$FOREIGN_KEY IS NULL"; + $col = 'index_name'; + break; + + case 'postgres': + $sql = "SELECT ic.relname as index_name, i.indisunique + FROM pg_class bc, pg_class ic, pg_index i + WHERE (bc.oid = i.indrelid) + AND (ic.oid = i.indexrelid) + AND (bc.relname = '" . $table_name . "') + AND (i.indisprimary != 't')"; + $col = 'index_name'; + break; + + case 'mysql_40': + case 'mysql_41': + $sql = 'SHOW KEYS + FROM ' . $table_name; + $col = 'Key_name'; + break; + + case 'oracle': + $sql = "SELECT index_name, table_owner + FROM user_indexes + WHERE table_name = '" . strtoupper($table_name) . "' + AND generated = 'N' + AND uniqueness = 'UNIQUE' + AND index_name LIKE 'U_%'"; + $col = 'index_name'; + break; + + case 'sqlite': + $sql = "PRAGMA index_list('" . $table_name . "') WHERE unique = 1;"; + $col = 'name'; + break; + } + + $result = $this->db->sql_query($sql); + while ($row = $this->db->sql_fetchrow($result)) + { + if (($this->sql_layer == 'mysql_40' || $this->sql_layer == 'mysql_41') && ($row['Non_unique'] || $row[$col] == 'PRIMARY')) + { + continue; + } + + if ($this->sql_layer == 'sqlite' && !$row['unique']) + { + continue; + } + + if ($this->sql_layer == 'postgres' && $row['indisunique'] != 't') + { + continue; + } + + // These DBMS prefix index name with the table name + switch ($this->sql_layer) + { + case 'oracle': + $row[$col] = substr($row[$col], strlen('U_' . $row['table_owner']) + 1); + break; + + case 'firebird': + case 'postgres': + case 'sqlite': + $row[$col] = substr($row[$col], strlen($table_name) + 1); + break; + } + if (strtolower($row[$col]) == strtolower($index_name)) { $this->db->sql_freeresult($result); *************** *** 2562,2572 **** // For hexadecimal values do not use single quotes if (strpos($column_data[1], '0x') === 0) { ! $sql_default .= 'DEFAULT (' . $column_data[1] . ') '; } else { ! $sql_default .= 'DEFAULT (' . ((is_numeric($column_data[1])) ? $column_data[1] : "'{$column_data[1]}'") . ') '; } } --- 2693,2705 ---- // For hexadecimal values do not use single quotes if (strpos($column_data[1], '0x') === 0) { ! $return_array['default'] = 'DEFAULT (' . $column_data[1] . ') '; ! $sql_default .= $return_array['default']; } else { ! $return_array['default'] = 'DEFAULT (' . ((is_numeric($column_data[1])) ? $column_data[1] : "'{$column_data[1]}'") . ') '; ! $sql_default .= $return_array['default']; } } *************** *** 3086,3091 **** --- 3219,3245 ---- case 'mssql': $statements[] = 'ALTER TABLE [' . $table_name . '] ALTER COLUMN [' . $column_name . '] ' . $column_data['column_type_sql']; + + if (!empty($column_data['default'])) + { + // Using TRANSACT-SQL for this statement because we do not want to have colliding data if statements are executed at a later stage + $statements[] = "DECLARE @drop_default_name VARCHAR(100), @cmd VARCHAR(1000) + SET @drop_default_name = + (SELECT so.name FROM sysobjects so + JOIN sysconstraints sc ON so.id = sc.constid + WHERE object_name(so.parent_obj) = '{$table_name}' + AND so.xtype = 'D' + AND sc.colid = (SELECT colid FROM syscolumns + WHERE id = object_id('{$table_name}') + AND name = '{$column_name}')) + IF @drop_default_name <> '' + BEGIN + SET @cmd = 'ALTER TABLE [{$table_name}] DROP CONSTRAINT [' + @drop_default_name + ']' + EXEC(@cmd) + END + SET @cmd = 'ALTER TABLE [{$table_name}] ADD CONSTRAINT [DF_{$table_name}_{$column_name}_1] {$column_data['default']} FOR [{$column_name}]' + EXEC(@cmd)"; + } break; case 'mysql_40': |
From: Andreas F. <ba...@ph...> - 2009-09-24 12:39:42
|
Author: bantu Date: Thu Sep 24 13:37:39 2009 New Revision: 10184 Log: Fix bug #51905 - Only check whether forum image exists if forum image is specified. Related to bug #39005. Authorised by: acydburn Modified: branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html branches/phpBB-3_0_0/phpBB/includes/acp/acp_forums.php Modified: branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html (original) --- branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html Thu Sep 24 13:37:39 2009 *************** *** 210,215 **** --- 210,216 ---- <li>[Fix] Do not display links to user/post search if search is disabled. (Bug #50685 - Patch by HardStyle)</li> <li>[Fix] Fix icon alignment for forums with large descriptions in subsilver2. (Bug #50445)</li> <li>[Fix] Correctly display underlined links placed in last line in viewtopic. (Bug #14811 - Patch by primehalo)</li> + <li>[Fix] Only check whether forum image exists if forum image is specified. (Bug #51905)</li> <li>[Change] submit_post() now accepts force_approved_state key passed to $data to indicate new posts being approved (true) or unapproved (false).</li> <li>[Change] Change the data format of the default file ACM to be more secure from tampering and have better performance.</li> <li>[Change] Template engine now permits to a limited extent variable includes.</li> Modified: branches/phpBB-3_0_0/phpBB/includes/acp/acp_forums.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/acp/acp_forums.php (original) --- branches/phpBB-3_0_0/phpBB/includes/acp/acp_forums.php Thu Sep 24 13:37:39 2009 *************** *** 907,913 **** array('lang' => 'FORUM_TOPICS_PAGE', 'value' => $forum_data['forum_topics_per_page'], 'column_type' => 'TINT:0'), ); ! if (!file_exists($phpbb_root_path . $forum_data['forum_image'])) { $errors[] = $user->lang['FORUM_IMAGE_NO_EXIST']; } --- 907,913 ---- array('lang' => 'FORUM_TOPICS_PAGE', 'value' => $forum_data['forum_topics_per_page'], 'column_type' => 'TINT:0'), ); ! if (!empty($forum_data['forum_image']) && !file_exists($phpbb_root_path . $forum_data['forum_image'])) { $errors[] = $user->lang['FORUM_IMAGE_NO_EXIST']; } |
From: Meik S. <acy...@ph...> - 2009-09-24 08:53:35
|
Author: acydburn Date: Thu Sep 24 09:53:17 2009 New Revision: 10183 Log: remove log_time index (was not used at all) At the same time the database updater now supports checking for existing indexes. The db tools will not have this in 3.0.6 (the db tools have a function to retrieve all indexes) and i need to test the updater on all DBMS today... Modified: branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html branches/phpBB-3_0_0/phpBB/install/database_update.php Modified: branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html (original) --- branches/phpBB-3_0_0/phpBB/docs/CHANGELOG.html Thu Sep 24 09:53:17 2009 *************** *** 212,218 **** <li>[Fix] Correctly display underlined links placed in last line in viewtopic. (Bug #14811 - Patch by primehalo)</li> <li>[Change] submit_post() now accepts force_approved_state key passed to $data to indicate new posts being approved (true) or unapproved (false).</li> <li>[Change] Change the data format of the default file ACM to be more secure from tampering and have better performance.</li> - <li>[Change] Add index on log_time to the log table to prevent slowdown on boards with many log entries. (Bug #44665 - Patch by bantu)</li> <li>[Change] Template engine now permits to a limited extent variable includes.</li> <li>[Change] Quote BBCode no longer requires the f_reply permission. (Bug #16079)</li> <li>[Change] Banning/unbanning users now generates an entry in their user notes (Bug #21825 - Patch by nickvergessen)</li> --- 212,217 ---- Modified: branches/phpBB-3_0_0/phpBB/install/database_update.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/install/database_update.php (original) --- branches/phpBB-3_0_0/phpBB/install/database_update.php Thu Sep 24 09:53:17 2009 *************** *** 8,14 **** * */ ! $updates_to_version = '3.0.6-RC1'; // Enter any version to update from to test updates. The version within the db will not be updated. $debug_from_version = false; --- 8,14 ---- * */ ! $updates_to_version = '3.0.6-RC2'; // Enter any version to update from to test updates. The version within the db will not be updated. $debug_from_version = false; *************** *** 868,876 **** ), ), 'add_index' => array( - LOG_TABLE => array( - 'log_time' => array('log_time'), - ), REPORTS_TABLE => array( 'post_id' => array('post_id'), 'pm_id' => array('pm_id'), --- 868,873 ---- *************** *** 880,885 **** --- 877,888 ---- ), ), ), + // Changes from 3.0.6-RC1 to 3.0.6-RC2 + '3.0.6-RC1' => array( + 'drop_keys' => array( + LOG_TABLE => array('log_time'), + ), + ), ); } *************** *** 1506,1511 **** --- 1509,1524 ---- $no_updates = false; break; + + // Changes from 3.0.6-RC1 to 3.0.6-RC2 + case '3.0.6-RC1': + + // We check if there is an index for log_time within the logs table + + + // If so, we remove it + + break; } } *************** *** 1902,1908 **** { if ($column_exists) { ! $sqlite_data[$table]['change_columns'][] = $result; } else { --- 1915,1922 ---- { if ($column_exists) { ! continue; ! // $sqlite_data[$table]['change_columns'][] = $result; } else { *************** *** 1924,1929 **** --- 1938,1948 ---- { foreach ($indexes as $index_name) { + if (!$this->sql_index_exists($table, $index_name)) + { + continue; + } + $result = $this->sql_index_drop($table, $index_name); if ($this->return_statements) *************** *** 1984,1989 **** --- 2003,2013 ---- { foreach ($index_array as $index_name => $column) { + if ($this->sql_index_exists($table, $index_name)) + { + continue; + } + $result = $this->sql_create_unique_index($table, $index_name, $column); if ($this->return_statements) *************** *** 2001,2006 **** --- 2025,2035 ---- { foreach ($index_array as $index_name => $column) { + if ($this->sql_index_exists($table, $index_name)) + { + continue; + } + $result = $this->sql_create_index($table, $index_name, $column); if ($this->return_statements) *************** *** 2309,2314 **** --- 2338,2435 ---- } /** + * Check if a specified index exists in table + * + * @param string $table_name Table to check the index at + * @param string $index_name The index name to check + * + * @return bool True if index exists, else false + */ + function sql_index_exists($table_name, $index_name) + { + if ($this->sql_layer == 'mssql') + { + $sql = "EXEC sp_statistics '$table_name'"; + $result = $this->db->sql_query($sql); + + while ($row = $this->db->sql_fetchrow($result)) + { + if ($row['TYPE'] == 3) + { + if (strtolower($row['INDEX_NAME']) == strtolower($index_name)) + { + $this->db->sql_freeresult($result); + return true; + } + } + } + $this->db->sql_freeresult($result); + + return false; + } + + switch ($this->sql_layer) + { + case 'firebird': + $sql = "SELECT LOWER(RDB\$INDEX_NAME) as index_name + FROM RDB\$INDICES + WHERE RDB\$RELATION_NAME = " . strtoupper($table_name) . " + AND RDB\$UNIQUE_FLAG IS NULL + AND RDB\$FOREIGN_KEY IS NULL"; + $col = 'index_name'; + break; + + case 'postgres': + $sql = "SELECT ic.relname as index_name + FROM pg_class bc, pg_class ic, pg_index i + WHERE (bc.oid = i.indrelid) + AND (ic.oid = i.indexrelid) + AND (bc.relname = '" . $table_name . "') + AND (i.indisunique != 't') + AND (i.indisprimary != 't')"; + $col = 'index_name'; + break; + + case 'mysql_40': + case 'mysql_41': + $sql = 'SHOW KEYS + FROM ' . $table_name; + $col = 'Key_name'; + break; + + case 'oracle': + $sql = "SELECT index_name + FROM user_indexes + WHERE table_name = '" . $table_name . "' + AND generated = 'N'"; + break; + + case 'sqlite': + $sql = "PRAGMA index_info('" . $table_name . "');"; + $col = 'name'; + break; + } + + $result = $this->db->sql_query($sql); + while ($row = $this->db->sql_fetchrow($result)) + { + if (($this->sql_layer == 'mysql_40' || $this->sql_layer == 'mysql_41') && !$row['Non_unique']) + { + continue; + } + + if (strtolower($row[$col]) == strtolower($index_name)) + { + $this->db->sql_freeresult($result); + return true; + } + } + $this->db->sql_freeresult($result); + + return false; + } + + /** * Private method for performing sql statements (either execute them or return them) * @access private */ |
From: Henry S. <kel...@ph...> - 2009-09-23 17:41:59
|
Author: Kellanved Date: Wed Sep 23 18:41:11 2009 New Revision: 10182 Log: #51805 Authorised by: AcydBurn Modified: branches/phpBB-3_0_0/phpBB/includes/acp/acp_users.php Modified: branches/phpBB-3_0_0/phpBB/includes/acp/acp_users.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/acp/acp_users.php (original) --- branches/phpBB-3_0_0/phpBB/includes/acp/acp_users.php Wed Sep 23 18:41:11 2009 *************** *** 1708,1713 **** --- 1708,1714 ---- $template->assign_vars(array( 'S_AVATAR' => true, + 'S_CAN_UPLOAD' => $can_upload, 'S_UPLOAD_FILE' => ($config['allow_avatar'] && $can_upload && $config['allow_avatar_upload']) ? true : false, 'S_REMOTE_UPLOAD' => ($config['allow_avatar'] && $can_upload && $config['allow_avatar_remote_upload']) ? true : false, 'S_ALLOW_REMOTE' => ($config['allow_avatar'] && $config['allow_avatar_remote']) ? true : false, |
From: Meik S. <acy...@ph...> - 2009-09-23 17:03:50
|
Author: acydburn Date: Wed Sep 23 18:03:04 2009 New Revision: 10181 Log: submit buttons in same style as other submit buttons in ACP Modified: branches/phpBB-3_0_0/phpBB/adm/style/acp_captcha.html branches/phpBB-3_0_0/phpBB/adm/style/captcha_gd_acp.html branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha_acp.html Modified: branches/phpBB-3_0_0/phpBB/adm/style/acp_captcha.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/adm/style/acp_captcha.html (original) --- branches/phpBB-3_0_0/phpBB/adm/style/acp_captcha.html Wed Sep 23 18:03:04 2009 *************** *** 54,63 **** </fieldset> <!-- ENDIF --> ! <fieldset class="submit-buttons"> ! <legend>{L_SUBMIT}</legend> ! <input class="button1" type="submit" id="main_submit" name="main_submit" value="{L_SUBMIT}" /> ! <input class="button2" type="reset" id="form_reset" name="reset" value="{L_RESET}" /> {S_FORM_TOKEN} </fieldset> </form> --- 54,65 ---- </fieldset> <!-- ENDIF --> ! <fieldset> ! <legend>{L_ACP_SUBMIT_CHANGES}</legend> ! <p class="submit-buttons"> ! <input class="button1" type="submit" id="main_submit" name="main_submit" value="{L_SUBMIT}" /> ! <input class="button2" type="reset" id="form_reset" name="reset" value="{L_RESET}" /> ! </p> {S_FORM_TOKEN} </fieldset> </form> Modified: branches/phpBB-3_0_0/phpBB/adm/style/captcha_gd_acp.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/adm/style/captcha_gd_acp.html (original) --- branches/phpBB-3_0_0/phpBB/adm/style/captcha_gd_acp.html Wed Sep 23 18:03:04 2009 *************** *** 56,66 **** </fieldset> ! <fieldset class="submit-buttons"> ! <legend>{L_SUBMIT}</legend> ! <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> ! <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> ! <input class="button2" type="submit" id="preview" name="preview" value="{L_PREVIEW}" /> <input type="hidden" name="select_captcha" value="{CAPTCHA_NAME}" /> <input type="hidden" name="configure" value="1" /> --- 56,68 ---- </fieldset> ! <fieldset> ! <legend>{L_ACP_SUBMIT_CHANGES}</legend> ! <p class="submit-buttons"> ! <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> ! <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> ! <input class="button2" type="submit" id="preview" name="preview" value="{L_PREVIEW}" /> ! </p> <input type="hidden" name="select_captcha" value="{CAPTCHA_NAME}" /> <input type="hidden" name="configure" value="1" /> Modified: branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha_acp.html ============================================================================== *** branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha_acp.html (original) --- branches/phpBB-3_0_0/phpBB/adm/style/captcha_recaptcha_acp.html Wed Sep 23 18:03:04 2009 *************** *** 34,43 **** <!-- INCLUDE {CAPTCHA_PREVIEW} --> </fieldset> ! <fieldset class="submit-buttons"> ! <legend>{L_SUBMIT}</legend> ! <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> ! <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> <input type="hidden" name="select_captcha" value="{CAPTCHA_NAME}" /> <input type="hidden" name="configure" value="1" /> --- 34,45 ---- <!-- INCLUDE {CAPTCHA_PREVIEW} --> </fieldset> ! <fieldset> ! <legend>{L_ACP_SUBMIT_CHANGES}</legend> ! <p class="submit-buttons"> ! <input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" /> ! <input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" /> ! </p> <input type="hidden" name="select_captcha" value="{CAPTCHA_NAME}" /> <input type="hidden" name="configure" value="1" /> |
From: Meik S. <acy...@ph...> - 2009-09-23 09:42:35
|
Author: acydburn Date: Wed Sep 23 10:41:54 2009 New Revision: 10180 Log: check for m_split and m_merge permission on target topic and topic icon selection (Bug #51675) Modified: branches/phpBB-3_0_0/phpBB/includes/mcp/mcp_topic.php Modified: branches/phpBB-3_0_0/phpBB/includes/mcp/mcp_topic.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/mcp/mcp_topic.php (original) --- branches/phpBB-3_0_0/phpBB/includes/mcp/mcp_topic.php Wed Sep 23 10:41:54 2009 *************** *** 259,265 **** // Display topic icons for split topic $s_topic_icons = false; ! if ($auth->acl_get('m_split', $topic_info['forum_id'])) { include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx); $s_topic_icons = posting_gen_topic_icons('', $icon_id); --- 259,265 ---- // Display topic icons for split topic $s_topic_icons = false; ! if ($auth->acl_gets('m_split', 'm_merge', (int) $topic_info['forum_id'])) { include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx); $s_topic_icons = posting_gen_topic_icons('', $icon_id); |
From: Joas S. <nic...@ph...> - 2009-09-23 08:20:10
|
Author: nickvergessen Date: Wed Sep 23 09:19:22 2009 New Revision: 10179 Log: Fix Bug #51775 - Do not unlock topics with QuickReply Authorised by: AcydBurn Modified: branches/phpBB-3_0_0/phpBB/viewtopic.php Modified: branches/phpBB-3_0_0/phpBB/viewtopic.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/viewtopic.php (original) --- branches/phpBB-3_0_0/phpBB/viewtopic.php Wed Sep 23 09:19:22 2009 *************** *** 1705,1710 **** --- 1705,1711 ---- (!$config['allow_post_links']) ? $qr_hidden_fields['disable_magic_url'] = 1 : true; ($s_attach_sig) ? $qr_hidden_fields['attach_sig'] = 1 : true; ($s_notify) ? $qr_hidden_fields['notify'] = 1 : true; + ($topic_data['topic_status'] == ITEM_LOCKED) ? $qr_hidden_fields['lock_topic'] = 1 : true; $template->assign_vars(array( 'S_QUICK_REPLY' => true, |
From: Meik S. <acy...@ph...> - 2009-09-22 15:09:24
|
Author: acydburn Date: Tue Sep 22 16:09:09 2009 New Revision: 10178 Log: Fix getting host for situations where the name/IP is not resolvable. Related to Bug #41025 Related revisions: r9387 and r10158 Modified: branches/phpBB-3_0_0/phpBB/includes/functions_messenger.php branches/phpBB-3_0_0/phpBB/includes/session.php Modified: branches/phpBB-3_0_0/phpBB/includes/functions_messenger.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/functions_messenger.php (original) --- branches/phpBB-3_0_0/phpBB/includes/functions_messenger.php Tue Sep 22 16:09:09 2009 *************** *** 1134,1140 **** global $user; $err_msg = ''; ! $local_host = (function_exists('php_uname') && function_exists('gethostbyaddr') && function_exists('gethostbyname')) ? gethostbyaddr(gethostbyname(php_uname('n'))) : $user->host; // If we are authenticating through pop-before-smtp, we // have to login ones before we get authenticated --- 1134,1157 ---- global $user; $err_msg = ''; ! ! // Here we try to determine the *real* hostname (reverse DNS entry preferrably) ! $local_host = $user->host; ! ! if (function_exists('php_uname')) ! { ! $local_host = php_uname('n'); ! ! // Able to resolve name to IP ! if (($addr = @gethostbyname($local_host)) !== $local_host) ! { ! // Able to resolve IP back to name ! if (($name = @gethostbyaddr($addr)) !== $addr) ! { ! $local_host = $name; ! } ! } ! } // If we are authenticating through pop-before-smtp, we // have to login ones before we get authenticated Modified: branches/phpBB-3_0_0/phpBB/includes/session.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/session.php (original) --- branches/phpBB-3_0_0/phpBB/includes/session.php Tue Sep 22 16:09:09 2009 *************** *** 182,188 **** else { // Set to OS hostname or localhost ! $host = (function_exists('php_uname') && function_exists('gethostbyaddr') && function_exists('gethostbyname')) ? gethostbyaddr(gethostbyname(php_uname('n'))) : 'localhost'; } } --- 182,188 ---- else { // Set to OS hostname or localhost ! $host = (function_exists('php_uname')) ? php_uname('n') : 'localhost'; } } |
Author: acydburn Date: Tue Sep 22 11:03:17 2009 New Revision: 10177 Log: Move add_log() call for captcha "configure" page to the captcha plugin, because only the plugin is able to know if the config got updated or not. Note to captcha MOD authors: please check if you have a function acp_page() and if an add_log() call is required for your plugin. Bug #51695 Modified: branches/phpBB-3_0_0/phpBB/includes/acp/acp_captcha.php branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_gd_plugin.php branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_recaptcha_plugin.php Modified: branches/phpBB-3_0_0/phpBB/includes/acp/acp_captcha.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/acp/acp_captcha.php (original) --- branches/phpBB-3_0_0/phpBB/includes/acp/acp_captcha.php Tue Sep 22 11:03:17 2009 *************** *** 31,37 **** include($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx); $captchas = phpbb_captcha_factory::get_captcha_types(); ! $selected = request_var('select_captcha', $config['captcha_plugin']); $selected = (isset($captchas['available'][$selected]) || isset($captchas['unavailable'][$selected])) ? $selected : $config['captcha_plugin']; $configure = request_var('configure', false); --- 31,37 ---- include($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx); $captchas = phpbb_captcha_factory::get_captcha_types(); ! $selected = request_var('select_captcha', $config['captcha_plugin']); $selected = (isset($captchas['available'][$selected]) || isset($captchas['unavailable'][$selected])) ? $selected : $config['captcha_plugin']; $configure = request_var('configure', false); *************** *** 48,54 **** { $config_captcha =& phpbb_captcha_factory::get_instance($selected); $config_captcha->acp_page($id, $this); - add_log('admin', 'LOG_CONFIG_VISUAL'); } else { --- 48,53 ---- Modified: branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_gd_plugin.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_gd_plugin.php (original) --- branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_gd_plugin.php Tue Sep 22 11:03:17 2009 *************** *** 80,86 **** { return true; } ! function get_name() { return 'CAPTCHA_GD'; --- 80,86 ---- { return true; } ! function get_name() { return 'CAPTCHA_GD'; *************** *** 123,128 **** --- 123,130 ---- set_config($captcha_var, $value); } } + + add_log('admin', 'LOG_CONFIG_VISUAL'); trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($module->u_action)); } else if ($submit) *************** *** 148,154 **** function execute_demo() { global $config; ! $config_old = $config; foreach ($this->captcha_vars as $captcha_var => $template_var) { --- 150,156 ---- function execute_demo() { global $config; ! $config_old = $config; foreach ($this->captcha_vars as $captcha_var => $template_var) { Modified: branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php (original) --- branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php Tue Sep 22 11:03:17 2009 *************** *** 685,690 **** --- 685,691 ---- $this->acp_add_question($data); } + add_log('admin', 'LOG_CONFIG_VISUAL'); trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($list_url)); } } Modified: branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_recaptcha_plugin.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_recaptcha_plugin.php (original) --- branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_recaptcha_plugin.php Tue Sep 22 11:03:17 2009 *************** *** 100,105 **** --- 100,107 ---- set_config($captcha_var, $value); } } + + add_log('admin', 'LOG_CONFIG_VISUAL'); trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($module->u_action)); } else if ($submit) |
From: Meik S. <acy...@ph...> - 2009-09-22 09:56:40
|
Author: acydburn Date: Tue Sep 22 10:55:50 2009 New Revision: 10176 Log: regression in r9647 (wrong fix for bug #45975) - Bug #51505 (Patch by HardStyle) Modified: branches/phpBB-3_0_0/phpBB/adm/style/admin.css Modified: branches/phpBB-3_0_0/phpBB/adm/style/admin.css ============================================================================== *** branches/phpBB-3_0_0/phpBB/adm/style/admin.css (original) --- branches/phpBB-3_0_0/phpBB/adm/style/admin.css Tue Sep 22 10:55:50 2009 *************** *** 69,76 **** h3, h4 { font-family: "Trebuchet MS", Helvetica, sans-serif; font-size: 1.20em; ! text-decoration: none; ! line-height: 1.20em; margin-top: 25px; } --- 69,76 ---- h3, h4 { font-family: "Trebuchet MS", Helvetica, sans-serif; font-size: 1.20em; ! text-decoration: none; ! line-height: 1.20em; margin-top: 25px; } *************** *** 97,104 **** height: 1px; } ! .small { ! font-size: 0.85em; } /* General links */ --- 97,104 ---- height: 1px; } ! .small { ! font-size: 0.85em; } /* General links */ *************** *** 195,201 **** width: 76%; margin: 0 0 0 3%; min-height: 350px; ! overflow-y: auto; } .rtl #main { --- 195,201 ---- width: 76%; margin: 0 0 0 3%; min-height: 350px; ! overflow-x: auto; } .rtl #main { *************** *** 203,210 **** margin: 0 3% 0 0; } ! * html #main { ! height: 350px; } #page-body.simple-page-body { --- 203,211 ---- margin: 0 3% 0 0; } ! * html #main { ! height: 350px; ! overflow-x: visible; } #page-body.simple-page-body { *************** *** 316,322 **** padding: 0; } ! span.corners-top, span.corners-bottom, span.corners-top span, span.corners-bottom span { font-size: 1px; line-height: 1px; --- 317,323 ---- padding: 0; } ! span.corners-top, span.corners-bottom, span.corners-top span, span.corners-bottom span { font-size: 1px; line-height: 1px; *************** *** 795,801 **** fieldset.quick, p.quick { margin: 0 0 5px; ! padding: 5px 0 0; border: none; background-color: transparent; text-align: right; --- 796,802 ---- fieldset.quick, p.quick { margin: 0 0 5px; ! padding: 5px 0 0; border: none; background-color: transparent; text-align: right; *************** *** 848,854 **** } /* Special case inputs */ ! select#board_timezone, select#full_folder_action { width: 95%; } --- 849,855 ---- } /* Special case inputs */ ! select#board_timezone, select#full_folder_action { width: 95%; } *************** *** 1245,1256 **** } /* Nice method for clearing floated blocks without having to insert any extra markup ! From http://www.positioniseverything.net/easyclearing.html .clearfix:after, #tabs:after, .row:after, #content:after, fieldset dl:after, #page-body:after { ! content: "."; ! display: block; ! height: 0; ! clear: both; visibility: hidden; }*/ --- 1246,1257 ---- } /* Nice method for clearing floated blocks without having to insert any extra markup ! From http://www.positioniseverything.net/easyclearing.html .clearfix:after, #tabs:after, .row:after, #content:after, fieldset dl:after, #page-body:after { ! content: "."; ! display: block; ! height: 0; ! clear: both; visibility: hidden; }*/ *************** *** 1317,1323 **** height: 1.1em; } ! /* Permission sections */ fieldset.permissions .permissions-simple { text-align: left; padding-top: 3px; --- 1318,1324 ---- height: 1.1em; } ! /* Permission sections */ fieldset.permissions .permissions-simple { text-align: left; padding-top: 3px; *************** *** 1528,1534 **** background-image: url("../images/corners_right2.gif"); } ! .permissions-panel span.corners-top, .permissions-panel span.corners-bottom, .permissions-panel span.corners-top span, .permissions-panel span.corners-bottom span { font-size: 1px; line-height: 1px; --- 1529,1535 ---- background-image: url("../images/corners_right2.gif"); } ! .permissions-panel span.corners-top, .permissions-panel span.corners-bottom, .permissions-panel span.corners-top span, .permissions-panel span.corners-bottom span { font-size: 1px; line-height: 1px; *************** *** 1606,1612 **** } .permissions-panel th.row4 { ! background-image: none; background-color: #E4E8EB; color: #536482; border: none; --- 1607,1613 ---- } .permissions-panel th.row4 { ! background-image: none; background-color: #E4E8EB; color: #536482; border: none; *************** *** 1614,1621 **** .permissions-panel th a:link, .permissions-panel th a:hover, .permissions-panel th a:visited { display: block; ! color: #FFFFFF; ! text-decoration: underline; } .permissions-panel td.permissions-yes label:hover { --- 1615,1622 ---- .permissions-panel th a:link, .permissions-panel th a:hover, .permissions-panel th a:visited { display: block; ! color: #FFFFFF; ! text-decoration: underline; } .permissions-panel td.permissions-yes label:hover { |
From: Meik S. <acy...@ph...> - 2009-09-21 18:03:21
|
Author: acydburn Date: Mon Sep 21 19:02:33 2009 New Revision: 10175 Log: And now i feel even more dirty because i had to adjust the oracle hack to allow for queries > 4k to let it recognise concatenated strings and strings having the character ")" in it. I also added fallback code in case our regex splits too much. :/ Modified: branches/phpBB-3_0_0/phpBB/includes/db/oracle.php Modified: branches/phpBB-3_0_0/phpBB/includes/db/oracle.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/db/oracle.php (original) --- branches/phpBB-3_0_0/phpBB/includes/db/oracle.php Mon Sep 21 19:02:33 2009 *************** *** 255,267 **** // 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) { $cols = explode(', ', $regs[2]); preg_match_all('/\'(?:[^\']++|\'\')*+\'|[\d-.]+/', $regs[3], $vals, PREG_PATTERN_ORDER); $inserts = $vals[0]; unset($vals); --- 255,316 ---- // We overcome Oracle's 4000 char limit by binding vars if (strlen($query) > 4000) { ! if (preg_match('/^(INSERT INTO[^(]++)\\(([^()]+)\\) VALUES[^(]++\\((.*?)\\)$/sU', $query, $regs)) { if (strlen($regs[3]) > 4000) { $cols = explode(', ', $regs[2]); + preg_match_all('/\'(?:[^\']++|\'\')*+\'|[\d-.]+/', $regs[3], $vals, PREG_PATTERN_ORDER); + if (sizeof($cols) !== sizeof($vals)) + { + // Try to replace some common data we know is from our restore script or from other sources + $regs[3] = str_replace("'||chr(47)||'", '/', $regs[3]); + $_vals = explode(', ', $regs[3]); + + $vals = array(); + $is_in_val = false; + $i = 0; + $string = ''; + + foreach ($_vals as $value) + { + if (strpos($value, "'") === false && !$is_in_val) + { + $vals[$i++] = $value; + continue; + } + + if (substr($value, -1) === "'") + { + $vals[$i] = $string . (($is_in_val) ? ', ' : '') . $value; + $string = ''; + $is_in_val = false; + + if ($vals[$i][0] !== "'") + { + $vals[$i] = "''" . $vals[$i]; + } + $i++; + continue; + } + else + { + $string .= (($is_in_val) ? ', ' : '') . $value; + $is_in_val = true; + } + } + + if ($string) + { + // New value if cols != value + $vals[(sizeof($cols) !== sizeof($vals)) ? $i : $i - 1] .= $string; + } + + $vals = array(0 => $vals); + } + $inserts = $vals[0]; unset($vals); |
From: Meik S. <acy...@ph...> - 2009-09-21 18:00:00
|
Author: acydburn Date: Mon Sep 21 18:59:39 2009 New Revision: 10174 Log: Ok, the oracle database backup never actually worked at all. We used the wrong delimiter, did not preserve correct sequence order, did not merge primary keys and uniques... i think no one ever tried to actually restore an oracle backup. Fix all of this. Modified: branches/phpBB-3_0_0/phpBB/includes/acp/acp_database.php Modified: branches/phpBB-3_0_0/phpBB/includes/acp/acp_database.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/acp/acp_database.php (original) --- branches/phpBB-3_0_0/phpBB/includes/acp/acp_database.php Mon Sep 21 18:59:39 2009 *************** *** 142,148 **** break; case 'oracle': ! $extractor->flush('TRUNCATE TABLE ' . $table_name . "\\\n"); break; default: --- 142,148 ---- break; case 'oracle': ! $extractor->flush('TRUNCATE TABLE ' . $table_name . "/\n"); break; default: *************** *** 1716,1723 **** { global $db; $sql_data = '-- Table: ' . $table_name . "\n"; ! $sql_data .= "DROP TABLE $table_name;\n"; ! $sql_data .= '\\' . "\n"; $sql_data .= "\nCREATE TABLE $table_name (\n"; $sql = "SELECT COLUMN_NAME, DATA_TYPE, DATA_PRECISION, DATA_LENGTH, NULLABLE, DATA_DEFAULT --- 1716,1722 ---- { global $db; $sql_data = '-- Table: ' . $table_name . "\n"; ! $sql_data .= "DROP TABLE $table_name\n/\n"; $sql_data .= "\nCREATE TABLE $table_name (\n"; $sql = "SELECT COLUMN_NAME, DATA_TYPE, DATA_PRECISION, DATA_LENGTH, NULLABLE, DATA_DEFAULT *************** *** 1732,1738 **** if ($row['data_type'] !== 'CLOB') { ! if ($row['data_type'] !== 'VARCHAR2') { $line .= '(' . $row['data_precision'] . ')'; } --- 1731,1737 ---- if ($row['data_type'] !== 'CLOB') { ! if ($row['data_type'] !== 'VARCHAR2' && $row['data_type'] !== 'CHAR') { $line .= '(' . $row['data_precision'] . ')'; } *************** *** 1762,1773 **** AND A.TABLE_NAME = '{$table_name}'"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { ! $rows[] = " CONSTRAINT {$row['constraint_name']} PRIMARY KEY ({$row['column_name']})"; } $db->sql_freeresult($result); $sql = "SELECT A.CONSTRAINT_NAME, A.COLUMN_NAME FROM USER_CONS_COLUMNS A, USER_CONSTRAINTS B WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME --- 1761,1780 ---- AND A.TABLE_NAME = '{$table_name}'"; $result = $db->sql_query($sql); + $primary_key = array(); + $contraint_name = ''; while ($row = $db->sql_fetchrow($result)) { ! $constraint_name = '"' . $row['constraint_name'] . '"'; ! $primary_key[] = '"' . $row['column_name'] . '"'; } $db->sql_freeresult($result); + if (sizeof($primary_key)) + { + $rows[] = " CONSTRAINT {$constraint_name} PRIMARY KEY (" . implode(', ', $primary_key) . ')'; + } + $sql = "SELECT A.CONSTRAINT_NAME, A.COLUMN_NAME FROM USER_CONS_COLUMNS A, USER_CONSTRAINTS B WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME *************** *** 1775,1798 **** AND A.TABLE_NAME = '{$table_name}'"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { ! $rows[] = " CONSTRAINT {$row['constraint_name']} UNIQUE ({$row['column_name']})"; } $db->sql_freeresult($result); $sql_data .= implode(",\n", $rows); ! $sql_data .= "\n)\n\\"; ! $sql = "SELECT A.REFERENCED_NAME ! FROM USER_DEPENDENCIES A, USER_TRIGGERS B WHERE A.REFERENCED_TYPE = 'SEQUENCE' AND A.NAME = B.TRIGGER_NAME ! AND B. TABLE_NAME = '{$table_name}'"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { ! $sql_data .= "\nCREATE SEQUENCE {$row['referenced_name']}\\\n"; } $db->sql_freeresult($result); --- 1782,1825 ---- AND A.TABLE_NAME = '{$table_name}'"; $result = $db->sql_query($sql); + $unique = array(); + $contraint_name = ''; while ($row = $db->sql_fetchrow($result)) { ! $constraint_name = '"' . $row['constraint_name'] . '"'; ! $unique[] = '"' . $row['column_name'] . '"'; } $db->sql_freeresult($result); + if (sizeof($unique)) + { + $rows[] = " CONSTRAINT {$constraint_name} UNIQUE (" . implode(', ', $unique) . ')'; + } + $sql_data .= implode(",\n", $rows); ! $sql_data .= "\n)\n/\n"; ! $sql = "SELECT A.REFERENCED_NAME, C.* ! FROM USER_DEPENDENCIES A, USER_TRIGGERS B, USER_SEQUENCES C WHERE A.REFERENCED_TYPE = 'SEQUENCE' AND A.NAME = B.TRIGGER_NAME ! AND B.TABLE_NAME = '{$table_name}' ! AND C.SEQUENCE_NAME = A.REFERENCED_NAME"; $result = $db->sql_query($sql); + + $type = request_var('type', ''); + while ($row = $db->sql_fetchrow($result)) { ! $sql_data .= "\nDROP SEQUENCE \"{$row['referenced_name']}\"\n/\n"; ! $sql_data .= "\nCREATE SEQUENCE \"{$row['referenced_name']}\""; ! ! if ($type == 'full') ! { ! $sql_data .= ' START WITH ' . $row['last_number']; ! } ! ! $sql_data .= "\n/\n"; } $db->sql_freeresult($result); *************** *** 1802,1808 **** $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { ! $sql_data .= "\nCREATE OR REPLACE TRIGGER {$row['description']}WHEN ({$row['when_clause']})\n{$row['trigger_body']}\\"; } $db->sql_freeresult($result); --- 1829,1835 ---- $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { ! $sql_data .= "\nCREATE OR REPLACE TRIGGER {$row['description']}WHEN ({$row['when_clause']})\n{$row['trigger_body']}\n/\n"; } $db->sql_freeresult($result); *************** *** 1822,1828 **** foreach ($index as $index_name => $column_names) { ! $sql_data .= "\nCREATE INDEX $index_name ON $table_name(" . implode(', ', $column_names) . ")\n\\"; } $db->sql_freeresult($result); $this->flush($sql_data); --- 1849,1855 ---- foreach ($index as $index_name => $column_names) { ! $sql_data .= "\nCREATE INDEX $index_name ON $table_name(" . implode(', ', $column_names) . ")\n/\n"; } $db->sql_freeresult($result); $this->flush($sql_data); *************** *** 1858,1864 **** // Oracle uses uppercase - we use lowercase $str_val = $row[strtolower($ary_name[$i])]; ! if (preg_match('#char|text|bool|raw#i', $ary_type[$i])) { $str_quote = ''; $str_empty = "''"; --- 1885,1891 ---- // Oracle uses uppercase - we use lowercase $str_val = $row[strtolower($ary_name[$i])]; ! if (preg_match('#char|text|bool|raw|clob#i', $ary_type[$i])) { $str_quote = ''; $str_empty = "''"; *************** *** 1892,1898 **** // Take the ordered fields and their associated data and build it // into a valid sql statement to recreate that field in the data. ! $sql_data = "INSERT INTO $table_name (" . implode(', ', $schema_fields) . ') VALUES (' . implode(', ', $schema_vals) . ");\n"; $this->flush($sql_data); } --- 1919,1925 ---- // Take the ordered fields and their associated data and build it // into a valid sql statement to recreate that field in the data. ! $sql_data = "INSERT INTO $table_name (" . implode(', ', $schema_fields) . ') VALUES (' . implode(', ', $schema_vals) . ")\n/\n"; $this->flush($sql_data); } *************** *** 2211,2218 **** function sanitize_data_oracle($text) { ! $data = preg_split('/[\0\n\t\r\b\f\'"\\\]/', $text); ! preg_match_all('/[\0\n\t\r\b\f\'"\\\]/', $text, $matches); $val = array(); --- 2238,2247 ---- function sanitize_data_oracle($text) { ! // $data = preg_split('/[\0\n\t\r\b\f\'"\/\\\]/', $text); ! // preg_match_all('/[\0\n\t\r\b\f\'"\/\\\]/', $text, $matches); ! $data = preg_split('/[\0\b\f\'\/]/', $text); ! preg_match_all('/[\0\r\b\f\'\/]/', $text, $matches); $val = array(); |
From: Henry S. <kel...@ph...> - 2009-09-21 11:37:22
|
Author: Kellanved Date: Mon Sep 21 12:36:36 2009 New Revision: 10173 Log: #50485 Authorised by: AcydBurn Modified: branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php Modified: branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php ============================================================================== *** branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php (original) --- branches/phpBB-3_0_0/phpBB/includes/captcha/plugins/phpbb_captcha_qa_plugin.php Mon Sep 21 12:36:36 2009 *************** *** 56,68 **** $this->answer = request_var('qa_answer', '', true); $this->type = (int) $type; ! $this->question_lang = $user->data['user_lang']; // we need all defined questions - shouldn't be too many, so we can just grab them // try the user's lang first $sql = 'SELECT question_id FROM ' . CAPTCHA_QUESTIONS_TABLE . " ! WHERE lang_iso = '" . $db->sql_escape($user->data['user_lang']) . "'"; $result = $db->sql_query($sql, 3600); while ($row = $db->sql_fetchrow($result)) --- 56,68 ---- $this->answer = request_var('qa_answer', '', true); $this->type = (int) $type; ! $this->question_lang = $user->lang_name; // we need all defined questions - shouldn't be too many, so we can just grab them // try the user's lang first $sql = 'SELECT question_id FROM ' . CAPTCHA_QUESTIONS_TABLE . " ! WHERE lang_iso = '" . $db->sql_escape($user->lang_name) . "'"; $result = $db->sql_query($sql, 3600); while ($row = $db->sql_fetchrow($result)) |