Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Безопасность (http://forum.mynuke.ru/forumdisplay.php?f=13)
-   -   Обновляем форум phpBB 2.0.16 до 2.0.17 (http://forum.mynuke.ru/showthread.php?t=460)

Soniks 20.07.2005 20:11

Обновляем форум phpBB 2.0.16 до 2.0.17
 
Обновляем BBtoNuke с 2.0.16 до 2.0.17
  • moduls/Forums/admin/admin_ug_auth.php

  1. Найдите - 417
    Код:
    FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . USERS_TABLE . " u WHERE ug.group_id = aa.group_id AND u.user_id = ug.user_id


    Ниже добавьте
    Код:
    AND ug.user_pending = 0

  2. Найдите - 572
    Код:
    $sql = "SELECT * FROM " . FORUMS_TABLE . " f ORDER BY forum_order";


    Замените на
    Код:
    $sql = "SELECT f.* FROM " . FORUMS_TABLE . " f, " . CATEGORIES_TABLE . " c WHERE f.cat_id = c.cat_id ORDER BY c.cat_order, f.forum_order ASC";

  3. Найдите - 608
    Код:
    $sql = "SELECT u.user_id, u.username, u.user_level, g.group_id, g.group_name, g.group_single_user FROM " . USERS_TABLE . " u, " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug WHERE ";


    Замените на
    Код:
    $sql = "SELECT u.user_id, u.username, u.user_level, g.group_id, g.group_name, g.group_single_user, ug.user_pending FROM " . USERS_TABLE . " u, " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug WHERE ";

  4. Найдите - 836
    Код:
    $t_usergroup_list = ''; for($i = 0; $i < count($ug_info); $i++) { $ug = ( $mode == 'user' ) ? 'group&amp;' . POST_GROUPS_URL : 'user&amp;' . POST_USERS_URL; $t_usergroup_list .= ( ( $t_usergroup_list != '' ) ? ', ' : '' ) . '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$ug=" . $id[$i]) . '">' . $name[$i] . '</a>';


    Замените на
    Код:
    $t_usergroup_list = $t_pending_list = ''; for($i = 0; $i < count($ug_info); $i++) { $ug = ( $mode == 'user' ) ? 'group&amp;' . POST_GROUPS_URL : 'user&amp;' . POST_USERS_URL; if (!$ug_info[$i]['user_pending']) { $t_usergroup_list .= ( ( $t_usergroup_list != '' ) ? ', ' : '' ) . '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$ug=" . $id[$i]) . '">' . $name[$i] . '</a>'; } else { $t_pending_list .= ( ( $t_pending_list != '' ) ? ', ' : '' ) . '<a href="' . append_sid("admin_ug_auth.$phpEx?mode=$ug=" . $id[$i]) . '">' . $name[$i] . '</a>'; }

  5. Найдите - 911
    Код:
    'GROUP_MEMBERSHIP' => $lang['Usergroup_members'] . ' : ' . $t_usergroup_list)


    Замените на
    Код:
    'GROUP_MEMBERSHIP' => $lang['Usergroup_members'] . ' : ' . $t_usergroup_list . '<br />' . $lang['Pending_members'] . ' : ' . $t_pending_list)
  • moduls/Forums/admin/admin_users.php

  1. Найдите - 89
    Код:
    SET poster_id = " . DELETED . ", post_username = '$username'


    Замените на
    Код:
    SET poster_id = " . DELETED . ", post_username = '" . str_replace("\\'", "''", addslashes($this_userdata['username'])) . "'

  • includes/bbcode.php


  1. Найдите - 203

    PHP код:
     $patterns[] = "#\[url\]([\w]+?://[^ \"\n\r\t<]*?)\[/url\]#is"

    $replacements[] = $bbcode_tpl['url1'];

    // [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).

    $patterns[] = "#\[url\]((www|ftp)\.[^ \"\n\r\t<]*?)\[/url\]#is";

    $replacements[] = $bbcode_tpl['url2'];

    // [url=xxxx://www.phpbb.com]phpBB[/url] code..

    $patterns[] = "#\[url=([\w]+?://[^ \"\n\r\t<]*?)\]([^?\n\r\t].*?)\[/url\]#is";

    $replacements[] = $bbcode_tpl['url3'];

    // [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).

    $patterns[] = "#\[url=((www|ftp)\.[^ \"\n\r\t<]*?)\]([^?\n\r\t].*?)\[/url\]#is"


    Замените на

    PHP код:
     $patterns[] = "#\[url\]([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\[/url\]#is";

    $replacements[] = $bbcode_tpl['url1']; 

    // [url]www.phpbb.com[/url] code.. (no xxxx:// prefix).

    $patterns[] = "#\[url\]((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\[/url\]#is";

    $replacements[] = $bbcode_tpl['url2'];

    // [url=xxxx://www.phpbb.com]phpBB[/url] code..

    $patterns[] = "#\[url=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is";

    $replacements[] = $bbcode_tpl['url3'];

    // [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).

    $patterns[] = "#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is"




  2. Найдите - 627

    Код:
    $ret = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret); // matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing // Must contain at least 2 dots. xxxx contains either alphanum, or "-" // zzzz is optional.. will contain everything up to the first space, newline, // comma, double quote or <. $ret = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret);


    Замените на

    Код:
    $ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret); // matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing // Must contain at least 2 dots. xxxx contains either alphanum, or "-" // zzzz is optional.. will contain everything up to the first space, newline, // comma, double quote or <. $ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret);

  • includes/functions.php


  1. Найдите - 120

    Код:
    if (intval($user) == 0 || $force_str)


    Замените на

    Код:
    if (!is_numeric($user) || $force_str)



  2. Найдите - 581

    Код:
    define(HAS_DIED, 1);


    Замените на

    Код:
    define('HAS_DIED', 1);




  • includes/functions_validate.php



  1. Найдите - 33

    Код:
    $username = preg_replace('#\s+#', ' ', $username); // Limit username length $username = substr(str_replace("\'", "'", $username), 0, 25); $username = str_replace("'", "''", $username);


    Замените на

    Код:
    $username = preg_replace('#\s+#', ' ', trim($username)); $username = phpbb_clean_username($username);


  • includes/usercp_activate.php



  1. Найдите - 80

    Код:
    } else if ((trim($row['user_actkey']) == trim($HTTP_GET_VARS['act_key'])) && (trim($row['user_actkey']) != '')) {


    Ниже добавьте

    Код:
    if (intval($board_config['require_activation']) == USER_ACTIVATION_ADMIN && $userdata['user_level'] != ADMIN) { message_die(GENERAL_MESSAGE, $lang['Not_Authorised']); }


  • includes/usercp_avatar.php



  1. Найдите - 89

    Код:
    function user_avatar_url($mode, &$error, &$error_msg, $avatar_filename) {


    Ниже добавьте

    Код:
    global $lang;


  • includes/usercp_viewprofile.php



  1. Найдите - 168

    Код:
    $search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . $lang['Search_user_posts'] . '" title="' . $lang['Search_user_posts'] . '" border="0" /></a>'; $search = '<a href="' . $temp_url . '">' . $lang['Search_user_posts'] . '</a>';


    Замените на

    Код:
    $search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . $lang['Search_user_posts'] . '" title="' . sprintf($lang['Search_user_posts'], $profiledata['username']) . '" border="0" /></a>'; $search = '<a href="' . $temp_url . '">' . sprintf($lang['Search_user_posts'], $profiledata['username']) . '</a>';


  • modulesPrivate_Messages/index.php



  1. Найдите - 751

    Код:
    if ( $delete_all ) { switch($folder) { case 'inbox': $delete_type = "privmsgs_to_userid = " . $userdata['user_id'] . " AND ( privmsgs_type = " . PRIVMSGS_READ_MAIL . " OR privmsgs_type = " . PRIVMSGS_NEW_MAIL . " OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )"; break; case 'outbox': $delete_type = "privmsgs_from_userid = " . $userdata['user_id'] . " AND ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . " OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )"; break; case 'sentbox': $delete_type = "privmsgs_from_userid = " . $userdata['user_id'] . " AND privmsgs_type = " . PRIVMSGS_SENT_MAIL; break; case 'savebox': $delete_type = "( ( privmsgs_from_userid = " . $userdata['user_id'] . " AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . " ) OR ( privmsgs_to_userid = " . $userdata['user_id'] . " AND privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " ) )"; break; } $sql = "SELECT privmsgs_id FROM " . PRIVMSGS_TABLE . " WHERE $delete_type"; if ( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not obtain id list to delete all messages', '', __LINE__, __FILE__, $sql); } while ( $row = $db->sql_fetchrow($result) ) { $mark_list[] = $row['privmsgs_id']; } unset($delete_type); }


    Замените на

    Код:
    $delete_sql_id = ''; if (!$delete_all) { for ($i = 0; $i < count($mark_list); $i++) { $delete_sql_id .= (($delete_sql_id != '') ? ', ' : '') . intval($mark_list[$i]); } $delete_sql_id = "AND privmsgs_id IN ($delete_sql_id)"; } switch($folder) { case 'inbox': $delete_type = "privmsgs_to_userid = " . $userdata['user_id'] . " AND ( privmsgs_type = " . PRIVMSGS_READ_MAIL . " OR privmsgs_type = " . PRIVMSGS_NEW_MAIL . " OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )"; break; case 'outbox': $delete_type = "privmsgs_from_userid = " . $userdata['user_id'] . " AND ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . " OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )"; break; case 'sentbox': $delete_type = "privmsgs_from_userid = " . $userdata['user_id'] . " AND privmsgs_type = " . PRIVMSGS_SENT_MAIL; break; case 'savebox': $delete_type = "( ( privmsgs_from_userid = " . $userdata['user_id'] . " AND privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . " ) OR ( privmsgs_to_userid = " . $userdata['user_id'] . " AND privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " ) )"; break; } $sql = "SELECT privmsgs_id FROM " . PRIVMSGS_TABLE . " WHERE $delete_type $delete_sql_id"; if ( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not obtain id list to delete messages', '', __LINE__, __FILE__, $sql); } $mark_list = array(); while ( $row = $db->sql_fetchrow($result) ) { $mark_list[] = $row['privmsgs_id']; } unset($delete_type);



  2. Найдите - 1554

    Код:
    $mode = 'reply'; } }


    Ниже добавьте

    Код:
    else { $privmsg_subject = $privmsg_message = ''; }



  3. Найдите - 2087

    Код:
    $l_box_size_status = ''; break; } }


    Ниже добавьте

    Код:
    else { $inbox_limit_img_length = $inbox_limit_pct = $l_box_size_status = ''; }


  • modules/Forums/templates/subSilver/faq_body.tpl



  1. Найдите - 37

    Код:
    <td class="{faq_block.faq_row.ROW_CLASS}" align="left" valign="top"><span class="postbody"><a name="{faq_block.faq_row.U_FAQ_ID}"></a><b>{faq_block.faq_row.FAQ_QUESTION}</b></span><br /><span class="postbody">{faq_block.faq_row.FAQ_ANSWER}<br /><a class="postlink" href="#Top">{L_BACK_TO_TOP}</a></span></td>


    Замените на

    Код:
    <td class="{faq_block.faq_row.ROW_CLASS}" align="left" valign="top"><span class="postbody"><a name="{faq_block.faq_row.U_FAQ_ID}"></a><b>{faq_block.faq_row.FAQ_QUESTION}</b></span><br /><span class="postbody">{faq_block.faq_row.FAQ_ANSWER}<br /><a class="postlink" href="#top">{L_BACK_TO_TOP}</a></span></td>


  • modules/Forums/viewtopic.php



  1. Найдите - 992

    Код:
    $search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . $lang['Search_user_posts'] . '" title="' . $lang['Search_user_posts'] . '" border="0" /></a>'; $search = '<a href="' . $temp_url . '">' . $lang['Search_user_posts'] . '</a>';


    Замените на

    Код:
    $search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . $lang['Search_user_posts'] . '" title="' . sprintf($lang['Search_user_posts'], $postrow[$i]['username']) . '" border="0" /></a>'; $search = '<a href="' . $temp_url . '">' . sprintf($lang['Search_user_posts'], $postrow[$i]['username']) . '</a>';

  • Выполните SQL-запрос

Код:
UPDATE `nuke_bbconfig` SET `config_value` = '.0.17' WHERE `config_name` = 'version'

измените префикс nuke_ на свой!

Master 20.07.2005 22:29

Жуть можно скоро лозунг писать новый форум каждый день! :wink:

mihas 23.07.2005 13:01

Soniks в очередной раз спасибо. Всегда пользуюсь твоими описаниями по обновлению форума, у меня модов полно и поэтому не могу просто поменять файлы.
P.S. Небольшой глюк появился после обновления 2.0.16 до 2.0.17, некорректно подсвечивается ссылка. Например ссылка http://google.ru/download/superfile_2_(www.sajt.ru).rar
подсвечивается не полностью а только до скобок, остальное не подсвечивается.

Soniks 24.07.2005 18:48

mihas это не глюк, это так сделали разработчики phpbb, они запретили вывод в url круглых скобок, ну если вам это так очень надо, то можете в ходе изменения (см. выше) файле includes/bbcode.php, на 2-ом этапе замените на:
PHP код:
 $ret preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+\(\)]*)#is""\\1<a href=\"\\2\" target=\"_blank\">\\2</a>"$ret);
 
// matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
 // Must contain at least 2 dots. xxxx contains either alphanum, or "-"
 // zzzz is optional.. will contain everything up to the first space, newline, 
 // comma, double quote or <.
 
$ret preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+\(\)]*)#is""\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>"$ret); 

должно сработать.

mihas 24.07.2005 18:50

я уже разобрался, спасибо. решил, что лучше все таки пусть круглые скобки останутся в запрете.


Часовой пояс GMT +4, время: 18:49.

Copyright © 2005 by Soniks