Forum. MyNuke.ru

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

Soniks 31.10.2005 15:20

Обновляем форум phpBB 2.0.17 до 2.0.18
 
Инструкция по обновлению форума BBtoNuke (встроенный в нюку phpbb) с версии 2.0.17 до 2.0.18

Часть 1

Открываем modules/Forums/admin/admin_board.php
Находим (110):
PHP код:
 $confirm_yes = ($new['enable_confirm']) ? 'checked="checked"' '';
$confirm_no = (!$new['enable_confirm']) ? 'checked="checked"' ''

Ниже добавляем:
PHP код:
 $allow_autologin_yes = ($new['allow_autologin']) ? 'checked="checked"' '';
$allow_autologin_no = (!$new['allow_autologin']) ? 'checked="checked"' ''

Находим (175):
PHP код:
 "L_ADMIN" => $lang['Acc_Admin'], 
"L_VISUAL_CONFIRM" => $lang['Visual_confirm'], 
"L_VISUAL_CONFIRM_EXPLAIN" => $lang['Visual_confirm_explain'], 

Ниже добавляем:
PHP код:
 "L_ALLOW_AUTOLOGIN" => $lang['Allow_autologin'],
"L_ALLOW_AUTOLOGIN_EXPLAIN" => $lang['Allow_autologin_explain'],
"L_AUTOLOGIN_TIME" => $lang['Autologin_time'],
"L_AUTOLOGIN_TIME_EXPLAIN" => $lang['Autologin_time_explain'], 

Находим (264):
PHP код:
 "ACTIVATION_ADMIN_CHECKED" => $activation_admin
"CONFIRM_ENABLE" => $confirm_yes,
"CONFIRM_DISABLE" => $confirm_no

Ниже находим строку:
PHP код:
 "ACTIVATION_NONE_CHECKED" => $activation_none

Заменяем ее на:
PHP код:
 'ALLOW_AUTOLOGIN_YES' => $allow_autologin_yes,
'ALLOW_AUTOLOGIN_NO' => $allow_autologin_no,
'AUTOLOGIN_TIME' => (int) $new['max_autologin_time'], 

Открываем modules/Forums/admin/admin_disallow.php
Находим (48):
PHP код:
 message_die(MESSAGE$lang['Fields_empty']); 

Заменяем на:
PHP код:
 message_die(GENERAL_MESSAGE$lang['Fields_empty']); 

Открываем modules/Forums/admin/admin_smilies.php
Находим 2 раза (410,454):
PHP код:
 message_die(MESSAGE$lang['Fields_empty']); 

Заменяем на:
PHP код:
 message_die(GENERAL_MESSAGE$lang['Fields_empty']); 

Находин (446):
PHP код:
 $smile_code = ( isset($HTTP_POST_VARS['smile_code']) ) ? $HTTP_POST_VARS['smile_code'] : $HTTP_GET_VARS['smile_code'];
     
$smile_url = ( isset($HTTP_POST_VARS['smile_url']) ) ? $HTTP_POST_VARS['smile_url'] : $HTTP_GET_VARS['smile_url']; 

Ниже добавляем:
PHP код:
 $smile_url phpbb_ltrim(basename($smile_url), "'"); 

Открываем modules/Forums/admin/admin_styles.php
Находим (584):
PHP код:
 "L_SIMPLE_NAME" => $lang['Simple_name'],
     
"L_VALUE" => $lang['Value'],
     
"L_STYLESHEET" => $lang['Stylesheet'], 

Ниже добавляем:
PHP код:
 "L_STYLESHEET_EXPLAIN" => $lang['Stylesheet_explain'], 

Открываем modules/Forums/admin/admin_ug_auth.php
Находим (253):
PHP код:
 $sql "SELECT *
                                FROM " 
FORUMS_TABLE " f
                                ORDER BY forum_order"


Заменяем на:
PHP код:
 $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'


Находим (868):
PHP код:
 if( count($name) )
{
$t_usergroup_list $t_pending_list '';
    for(
$i 0$i count($ug_info); $i++)
    {
     
$ug = ( $mode == 'user' ) ? 'group&' POST_GROUPS_URL 'user&' POST_USERS_URL

Заменяем на:
PHP код:
 $t_usergroup_list $t_pending_list '';
if( 
count($name) )
{
for(
$i 0$i count($ug_info); $i++)
{
    
$ug = ( $mode == 'user' ) ? 'group&' POST_GROUPS_URL 'user&' POST_USERS_URL

Находим (885):
PHP код:
 else
{
$t_usergroup_list $lang['None'];


Заменяем на:
PHP код:
 $t_usergroup_list = ($t_usergroup_list == '') ? $lang['None'] : $t_usergroup_list;
$t_pending_list = ($t_pending_list == '') ? $lang['None'] : $t_pending_list

Открываем modules/Forums/admin/admin_user_ban.php
Находим (158):
PHP код:
 if (preg_match('#^(([a-z0-9&.-_+])|(\*))+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*?[a-z]+$#is'trim($email_list_temp[$i]))) 

Заменяем на:
PHP код:
 if (preg_match('/^(([a-z0-9&\'\.\-_\+])|(\*))+@(([a-z0-9\-])|(\*))+\.([a-z0-9\-]+\.)*?[a-z]+$/is'trim($email_list_temp[$i]))) 

Открываем modules/Forums/admin/admin_users.php
Находим (75):
PHP код:
 if( $HTTP_POST_VARS['deleteuser'] ) 

Заменяем на:
PHP код:
 if( $HTTP_POST_VARS['deleteuser'] && ( $userdata['user_id'] != $user_id ) ) 

Находим (260):
PHP код:
 $user_avatar_local = ( isset( $HTTP_POST_VARS['avatarselect'] ) && !empty($HTTP_POST_VARS['submitavatar'] ) && $board_config['allow_avatar_local'] ) ? $HTTP_POST_VARS['avatarselect'] : ( ( isset( $HTTP_POST_VARS['avatarlocal'] ) ) ? $HTTP_POST_VARS['avatarlocal'] : '' ); 

Ниже добавляем:
PHP код:
 $user_avatar_category = ( isset($HTTP_POST_VARS['avatarcatname']) && $board_config['allow_avatar_local'] ) ? htmlspecialchars($HTTP_POST_VARS['avatarcatname']) : '' 

Находим (300):
PHP код:
 $user_avatar $user_avatar_local

Заменяем на:
PHP код:
 $user_avatar $user_avatar_category '/' $user_avatar_local

Находим (652):
PHP код:
 $avatar_sql ", user_avatar = '" str_replace("\'""''"$user_avatar_local) . "', user_avatar_type = " USER_AVATAR_GALLERY

Заменяем на:
PHP код:
 $avatar_sql ", user_avatar = '" str_replace("\'""''"phpbb_ltrim(basename($user_avatar_category), "'") . '/' phpbb_ltrim(basename($user_avatar_local), "'")) . "', user_avatar_type = " USER_AVATAR_GALLERY

Находим (829):
PHP код:
 $avatar_images[$file][$avatar_row_count][$avatar_col_count] = $file "/" $sub_file

Заменяем на:
PHP код:
 $avatar_images[$file][$avatar_row_count][$avatar_col_count] = $sub_file

Находим (874):
PHP код:
 "AVATAR_IMAGE" => "../" $board_config['avatar_gallery_path'] . "/" $avatar_images[$category][$i][$j]) 

Заменяем на:
PHP код:
 "AVATAR_IMAGE" => "../" $board_config['avatar_gallery_path'] . '/' $category '/' $avatar_images[$category][$i][$j]) 

Находим (885):
PHP код:
 $s_hidden_fields '<input type="hidden" name="mode" value="edit" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="coppa" value="' $coppa '" />'

Заменяем на:
PHP код:
 $s_hidden_fields '<input type="hidden" name="mode" value="edit" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="coppa" value="' $coppa '" /><input type="hidden" name="avatarcatname" value="' $category '" />'

Находим (941):
PHP код:
 $s_hidden_fields .= '<input type="hidden" name="avatarlocal" value="' $user_avatar_local '" />'

Заменяем на:
PHP код:
 $s_hidden_fields .= '<input type="hidden" name="avatarlocal" value="' $user_avatar_local '" /><input type="hidden" name="avatarcatname" value="' $user_avatar_category '" />'

Soniks 02.11.2005 12:26

Часть 2

Открываем modules/Forums/admin/index.php
Находим (570):
PHP код:
 if ($fsock = @fsockopen('www.phpbb.com'80$errno$errstr)) 

Заменяем на:
PHP код:
 if ($fsock = @fsockopen('www.phpbb.com'80$errno$errstr10)) 

Находим (605):
PHP код:
 $version_info .= '<br />' sprintf($lang['Latest_version_info'], $latest_version) . sprintf($lang['Current_version_info'], '2' $board_config['version']) . '</p>'

Заменяем на:
PHP код:
 $version_info .= '<br />' sprintf($lang['Latest_version_info'], $latest_version) . ' ' sprintf($lang['Current_version_info'], '2' $board_config['version']) . '</p>'

Открываем modules/Forums/admin/page_footer_admin.php
Находим (28):
PHP код:
 //
// Show the overall footer.
// 

Выше добавляем:
PHP код:
 global $do_gzip_compress

Находим (39):
PHP код:
 'TRANSLATION_INFO' => $lang['TRANSLATION_INFO']) 

Заменяем на:
PHP код:
 'TRANSLATION_INFO' => (isset($lang['TRANSLATION_INFO'])) ? $lang['TRANSLATION_INFO'] : ((isset($lang['TRANSLATION'])) ? $lang['TRANSLATION'] : '')) 


Открываем modules/Forums/common.php
Находим (31):
PHP код:
 // The following code (unsetting globals) was contributed by Matt Kavanagh
 
// PHP5 with register_long_arrays off?
if (!isset($HTTP_POST_VARS) && isset($_POST)) 

Заменяем на:
PHP код:
 // The following code (unsetting globals)
// Thanks to Matt Kavanagh and Stefan Esser for providing feedback as well as patch files
 
// PHP5 with register_long_arrays off?
if (@phpversion() >= '5.0.0' && (!@ini_get('register_long_arrays') || @ini_get('register_long_arrays') == '0' || strtolower(@ini_get('register_long_arrays')) == 'off')) 

Находим (49):
PHP код:
 if (@phpversion() < '4.0.0')
{
// PHP3 path; in PHP3, globals are _always_ registered
 
// We 'flip' the array of variables to test like this so that
// we can validate later with isset($test[$var]) (no in_array())
$test = array('HTTP_GET_VARS' => NULL'HTTP_POST_VARS' => NULL'HTTP_COOKIE_VARS' => NULL'HTTP_SERVER_VARS' => NULL'HTTP_ENV_VARS' => NULL'HTTP_POST_FILES' => NULL'phpEx' => NULL'phpbb_root_path' => NULL);
 
// Loop through each input array
@reset($test);
while (list(
$input,) = @each($test))
{
    while (list(
$var,) = @each($$input))
    {
     
// Validate the variable to be unset
     
if (!isset($test[$var]) && $var != 'test' && $var != 'input')
     {
     unset($
$var);
     }
    }
}
}
else if (@
ini_get('register_globals') == '1' || strtolower(@ini_get('register_globals')) == 'on'

Заменяем на:
PHP код:
 // Protect against GLOBALS tricks
if (isset($HTTP_POST_VARS['GLOBALS']) || isset($HTTP_POST_FILES['GLOBALS']) || isset($HTTP_GET_VARS['GLOBALS']) || isset($HTTP_COOKIE_VARS['GLOBALS']))
{
die(
"Hacking attempt");
}
 
// Protect against HTTP_SESSION_VARS tricks
if (isset($HTTP_SESSION_VARS) && !is_array($HTTP_SESSION_VARS))
{
die(
"Hacking attempt");
}
 
if (@
ini_get('register_globals') == '1' || strtolower(@ini_get('register_globals')) == 'on'

Находим (69):
PHP код:
 if (!isset($HTTP_SESSION_VARS)) 

Заменяем на:
PHP код:
 if (!isset($HTTP_SESSION_VARS) || !is_array($HTTP_SESSION_VARS)) 

Находим (193):
PHP код:
 include("includes/functions.php");
include(
"db/db.php");


Ниже добавляем:
PHP код:
 // We do not need this any longer, unset for safety purposes
unset($dbpasswd); 


Открываем db/mysql.php
Находим (262):
PHP код:
 $result $this->rowset[$query_id][$field]; 

Заменяем на:
PHP код:
 $result $this->rowset[$query_id][0][$field]; 


Открываем db/mysql4.php
Находим (274):
PHP код:
 $result $this->rowset[$query_id][$field]; 

Заменяем на:
PHP код:
 $result $this->rowset[$query_id][0][$field]; 


Открываем modules/Forums/groupcp.php
Находим (107):
PHP код:
 $temp_url append_sid("search.$phpEx?search_author=" urlencode($username) . "&amp;showresults=posts");
$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>'

Заменяем на:
PHP код:
 $temp_url append_sid("search.$phpEx?search_author=" urlencode($row['username']) . "&amp;showresults=posts");
$search_img '<a href="' $temp_url '"><img src="' $images['icon_search'] . '" alt="' sprintf($lang['Search_user_posts'], $row['username']) . '" title="' sprintf($lang['Search_user_posts'], $row['username']) . '" border="0" /></a>';
$search '<a href="' $temp_url '">' sprintf($lang['Search_user_posts'], $row['username']) . '</a>'

Находим (1228):
PHP код:
 //
// Load and process templates
// 

Ниже добавляем:
PHP код:
 $page_title $lang['Group_Control_Panel']; 


Открываем includes/bbcode.php
Находим (433):
PHP код:
 $match = array("pos" => $curr_pos"tag" => $which_start_tag"index" => $start_tag_index);
bbcode_array_push($stack$match); 

Заменяем на:
PHP код:
 $match = array("pos" => $curr_pos"tag" => $which_start_tag"index" => $start_tag_index);
array_push($stack$match); 

Находим (455):
PHP код:
 // We need to do 2 replacements now.
$match bbcode_array_pop($stack); 

Заменяем на:
PHP код:
 // We need to do 2 replacements now.
$match array_pop($stack); 

Найти (522):
PHP код:
 $match bbcode_array_pop($stack);
$curr_pos $match['pos']; 

Заменить на:
PHP код:
 $match array_pop($stack);
$curr_pos $match['pos']; 

Находим (763):
PHP код:
 $orig[] = "/(?<=.\W|\W.|^\W)" phpbb_preg_quote($smilies[$i]['code'], "/") . "(?=.\W|\W.|\W$)/"

Заменяем на:
PHP код:
 $orig[] = "/(?<=.\W|\W.|^\W)" preg_quote($smilies[$i]['code'], "/") . "(?=.\W|\W.|\W$)/"


Открываем includes/constants.php
Находим (138):
PHP код:
 define('SESSIONS_TABLE'$prefix.'_bbsessions'); 

Ниже добавляем:
PHP код:
 define('SESSIONS_KEYS_TABLE'$prefix.'_bbsessions_keys'); 


Открываем includes/emailer.php
Находим 2 раза (209,219):
PHP код:
 $drop_header .= '[\r\n]*?' phpbb_preg_quote($match[1], '#'); 

Заменяем на:
PHP код:
 $drop_header .= '[\r\n]*?' preg_quote($match[1], '#'); 

Находим (305):
PHP код:
 $str preg_replace('#' phpbb_preg_quote($spacer'#') . '$#'''$str); 

Заменяем на:
PHP код:
 $str preg_replace('#' preg_quote($spacer'#') . '$#'''$str); 


Открываем includes/functions.php
Находим (86):
PHP код:
 // added at phpBB 2.0.12 to fix a bug in PHP 4.3.10 (only supporting charlist in php >= 4.1.0) 

Выше добавляем:
PHP код:
 /**
* This function is a wrapper for ltrim, as charlist is only supported in php >= 4.1.0
* Added in phpBB 2.0.18
*/
function phpbb_ltrim($str$charlist false)
{
if (
$charlist === false)
{
return 
ltrim($str);
}
 
$php_version explode('.'PHP_VERSION);
// php version < 4.1.0
if ((int) $php_version[0] < || ((int) $php_version[0] == && (int) $php_version[1] < 1))
{
while (
$str{0} == $charlist)
{
$str substr($str1);
}
}
else
{
$str ltrim($str$charlist);
}
return 
$str;


Находим (594):
PHP код:
 $orig_word[] = '#\b(' str_replace('\*''\w*?'phpbb_preg_quote($row['word'], '#')) . ')\b#i'

Заменяем на:
PHP код:
 $orig_word[] = '#\b(' str_replace('\*''\w*?'preg_quote($row['word'], '#')) . ')\b#i'

Soniks 02.11.2005 22:31

Часть 3

Открываем includes/functions_admin.php
Находим (76):
PHP код:
 $sql "SELECT forum_id, forum_name
    FROM " 
FORUMS_TABLE 
    ORDER BY cat_id, forum_order"


Заменяем на:
PHP код:
 $sql 'SELECT f.forum_id, f.forum_name
FROM ' 
CATEGORIES_TABLE ' c, ' FORUMS_TABLE ' f
WHERE f.cat_id = c.cat_id 
ORDER BY c.cat_order, f.forum_order'


Находим (187):
PHP код:
 $sql = ( $row['total_posts'] ) ? "UPDATE " TOPICS_TABLE " SET topic_replies = " . ( $row['total_posts'] - ) . ", topic_first_post_id = " $row['first_post'] . ", topic_last_post_id = " $row['last_post'] . " WHERE topic_id = '$id'" "DELETE FROM " TOPICS_TABLE " WHERE topic_id = '$id'";
                                if ( !
$db->sql_query($sql) )
                                {
                                        
message_die(GENERAL_ERROR'Could not update topic'''__LINE____FILE__$sql);
                                } 

Заменяем на:
PHP код:
 if ($row['total_posts'])
     {
        
// Correct the details of this topic
        
$sql 'UPDATE ' TOPICS_TABLE 
         SET topic_replies = ' 
. ($row['total_posts'] - 1) . ', topic_first_post_id = ' $row['first_post'] . ', topic_last_post_id = ' $row['last_post'] . "
         WHERE topic_id = 
$id";
 
        if (!
$db->sql_query($sql))
        {
         
message_die(GENERAL_ERROR'Could not update topic'''__LINE____FILE__$sql);
        }
     }
     else
     {
        
// There are no replies to this topic
        // Check if it is a move stub
        
$sql 'SELECT topic_moved_id 
         FROM ' 
TOPICS_TABLE 
         WHERE topic_id = 
$id";
 
        if (!(
$result $db->sql_query($sql)))
        {
         
message_die(GENERAL_ERROR'Could not get topic ID'''__LINE____FILE__$sql);
        }
 
        if (
$row $db->sql_fetchrow($result))
        {
         if (!
$row['topic_moved_id'])
         {
         
$sql 'DELETE FROM ' TOPICS_TABLE " WHERE topic_id = $id";
 
         if (!
$db->sql_query($sql))
         {
         
message_die(GENERAL_ERROR'Could not remove topic'''__LINE____FILE__$sql);
         }
         }
        }
 
        
$db->sql_freeresult($result);
     } 


Открываем includes/functions_post.php
Находим (216):
PHP код:
 function submit_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id, &$topic_type, &$bbcode_on, &$html_on, &$smilies_on, &$attach_sig, &$bbcode_uid, &$post_username, &$post_subject, &$post_message, &$poll_title, &$poll_options, &$poll_length

Заменяем на:
PHP код:
 function submit_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id, &$topic_type, &$bbcode_on, &$html_on, &$smilies_on, &$attach_sig, &$bbcode_uid$post_username$post_subject$post_message$poll_title, &$poll_options, &$poll_length

Находим (579):
PHP код:
 if ($mode == 'delete')
        {
                
$delete_sql = (!$post_data['first_post'] && !$post_data['last_post']) ? " AND user_id = " $userdata['user_id'] : '';
                
$sql "DELETE FROM " TOPICS_WATCH_TABLE " WHERE topic_id = '$topic_id'" $delete_sql;
                if (!
$db->sql_query($sql))
                {
                        
message_die(GENERAL_ERROR'Could not change topic notify data'''__LINE____FILE__$sql);
                }
        }
        else 

Заменяем на:
PHP код:
 if ($mode != 'delete'

Находим (760):
PHP код:
 $page_title $lang['Emoticons'] . " - $topic_title"

Заменяем на:
PHP код:
 $page_title $lang['Emoticons']; 


Открываем includes/functions_search.php
Находим (95):
PHP код:
 function split_words(&$entry$mode 'post'

Заменяем на:
PHP код:
 function split_words($entry$mode 'post'


Открываем includes/functions_validate.php
Находим (41):
PHP код:
 $sql "SELECT username
                FROM " 
USERS_TABLE "
                WHERE LOWER(username) = '" 
strtolower($username) . "'";
        if (
$result $db->sql_query($sql))
        {
                if (
$row $db->sql_fetchrow($result)) 

Заменяем на:
PHP код:
 $sql "SELECT username
                FROM " 
USERS_TABLE "
                WHERE LOWER(username) = '" 
strtolower($username) . "'";
        if (
$result $db->sql_query($sql))
        {
                while (
$row $db->sql_fetchrow($result)) 

Находим (78):
PHP код:
 if (preg_match("#\b(" str_replace("\*"".*?"phpbb_preg_quote($row['disallow_username'], '#')) . ")\b#i"$username)) 

Заменяем на:
PHP код:
 if (preg_match("#\b(" str_replace("\*"".*?"preg_quote($row['disallow_username'], '#')) . ")\b#i"$username)) 

Находим (97):
PHP код:
 if (preg_match("#\b(" str_replace("\*"".*?"phpbb_preg_quote($row['word'], '#')) . ")\b#i"$username)) 

Заменяем на:
PHP код:
 if (preg_match("#\b(" str_replace("\*"".*?"preg_quote($row['word'], '#')) . ")\b#i"$username)) 


Открываем includes/page_header.php
Находим (472):
PHP код:
 $template->assign_block_vars('switch_user_logged_out', array()); 

Ниже добавляем:
PHP код:
 //
// Allow autologin?
//
if (!isset($board_config['allow_autologin']) || $board_config['allow_autologin'] )
{
$template->assign_block_vars('switch_allow_autologin', array());
$template->assign_block_vars('switch_user_logged_out.switch_a  llow_autologin', array());



Открываем includes/page_tail.php
Находим (28):
PHP код:
 //
// Show the overall footer.
// 

Выше добавляем:
PHP код:
 global $do_gzip_compress

Ноходим (40):
PHP код:
 'TRANSLATION_INFO' => ( isset($lang['TRANSLATION_INFO']) ) ? $lang['TRANSLATION_INFO'] : ''

Заменяем на:
PHP код:
 'TRANSLATION_INFO' => (isset($lang['TRANSLATION_INFO'])) ? $lang['TRANSLATION_INFO'] : ((isset($lang['TRANSLATION'])) ? $lang['TRANSLATION'] : ''), 


Часть 4

Открываем includes/sessions.php
Находим (62):
PHP код:
 $last_visit 0;
$current_time time();
$expiry_time $current_time $board_config['session_length'];
//
// Try and pull the last time stored in a cookie, if it exists
//
$sql "SELECT *
FROM " 
USERS_TABLE "
WHERE user_id = '
$user_id'";
if ( !(
$result $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR'Could not obtain lastvisit data from user table'''__LINE____FILE__$sql);
}
$userdata $db->sql_fetchrow($result);
if ( 
$user_id != ANONYMOUS )
{
$auto_login_key $userdata['user_password'];
if ( 
$auto_create )
{
if ( isset(
$sessiondata['autologinid']) && $userdata['user_active'] )
{
    
// We have to login automagically
    
if( $sessiondata['autologinid'] === $auto_login_key )
    {
     
// autologinid matches password
     
$login 1;
     
$enable_autologin 1;
    }
    else
    {
     
// No match; don't login, set as anonymous user
     
$login 0;
     
$enable_autologin 0;
     
$user_id $userdata['user_id'] = ANONYMOUS;
     
$sql 'SELECT * FROM ' USERS_TABLE ' WHERE user_id = ' ANONYMOUS;
     
$result $db->sql_query($sql);
     
$userdata $db->sql_fetchrow($result);
     
$db->sql_freeresult($result);
    }
}
else
{
    
// Autologin is not set. Don't login, set as anonymous user
    
$login 0;
    
$enable_autologin 0;
    
$user_id $userdata['user_id'] = ANONYMOUS;
    
$sql 'SELECT * FROM ' USERS_TABLE ' WHERE user_id = ' ANONYMOUS;
    
$result $db->sql_query($sql);
    
$userdata $db->sql_fetchrow($result);
    
$db->sql_freeresult($result);
}
}
else
{
$login 1;
}
}
else
{
$login 0;
$enable_autologin 0;
}
//
// Initial ban check against user id, IP and email address
// 

Заменяем на:
PHP код:
 $last_visit 0;
$current_time time();
 
//
// Are auto-logins allowed?
// If allow_autologin is not set or is true then they are
// (same behaviour as old 2.0.x session code)
//
if (isset($board_config['allow_autologin']) && !$board_config['allow_autologin'])
{
$enable_autologin $sessiondata['autologinid'] = false;
}
 
// 
// First off attempt to join with the autologin value if we have one
// If not, just use the user_id value
//
$userdata = array();
 
if (
$user_id != ANONYMOUS)
{
if (isset(
$sessiondata['autologinid']) && (string) $sessiondata['autologinid'] != '' && $user_id)
    {
    
$sql 'SELECT u.* 
     FROM ' 
USERS_TABLE ' u, ' SESSIONS_KEYS_TABLE ' k
     WHERE u.user_id = ' 
. (int) $user_id "
     AND u.user_active = 1
     AND k.user_id = u.user_id
     AND k.key_id = '" 
md5($sessiondata['autologinid']) . "'";
    if (!(
$result $db->sql_query($sql)))
     {
     
message_die(CRITICAL_ERROR'Error doing DB query userdata row fetch'''__LINE____FILE__$sql);
     }
 
    
$userdata $db->sql_fetchrow($result);
    
$db->sql_freeresult($result);
 
    
$enable_autologin $login 1;
    }
else if (!
$auto_create)
{
    
$sessiondata['autologinid'] = '';
    
$sessiondata['userid'] = $user_id;
 
    
$sql 'SELECT *
     FROM ' 
USERS_TABLE '
     WHERE user_id = ' 
. (int) $user_id '
     AND user_active = 1'
;
    if (!(
$result $db->sql_query($sql)))
    {
     
message_die(CRITICAL_ERROR'Error doing DB query userdata row fetch'''__LINE____FILE__$sql);
    }
 
    
$userdata $db->sql_fetchrow($result);
    
$db->sql_freeresult($result);
 
     
$login 1;
    }
}
 
//
// At this point either $userdata should be populated or
// one of the below is true
// * Key didn't match one in the DB
// * User does not exist
// * User is inactive
//
if (!sizeof($userdata) || !is_array($userdata) || !$userdata)
{
$sessiondata['autologinid'] = '';
$sessiondata['userid'] = $user_id ANONYMOUS;
$enable_autologin $login 0;
 
$sql 'SELECT *
    FROM ' 
USERS_TABLE '
    WHERE user_id = ' 
. (int) $user_id;
if (!(
$result $db->sql_query($sql)))
{
    
message_die(CRITICAL_ERROR'Error doing DB query userdata row fetch'''__LINE____FILE__$sql);
}
 
$userdata $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}
 
 
//
// Initial ban check against user id, IP and email address
// 

Находим (228):
PHP код:
 {// ( $userdata['user_session_time'] > $expiry_time && $auto_create ) ? $userdata['user_lastvisit'] : ( 

Заменяем на:
PHP код:
 

Находим (245):
PHP код:
 $sessiondata['autologinid'] = (!$admin) ? (( $enable_autologin && $sessionmethod == SESSION_METHOD_COOKIE ) ? $auto_login_key '') : $sessiondata['autologinid']; 

Заменяем на:
PHP код:
 //
// Regenerate the auto-login key
//
if ($enable_autologin)
{
    list(
$sec$usec) = explode(' 'microtime());
    
mt_srand(hexdec(substr($session_id08)) + (float) $sec + ((float) $usec 1000000));
    
$auto_login_key uniqid(mt_rand(), true);
 
    if (isset(
$sessiondata['autologinid']) && (string) $sessiondata['autologinid'] != '')
    {
     
$sql 'UPDATE ' SESSIONS_KEYS_TABLE "
     SET last_ip = '
$user_ip', key_id = '" md5($auto_login_key) . "', last_login = $current_time
     WHERE key_id = '" 
md5($sessiondata['autologinid']) . "'";
    }
    else
    {
     
$sql 'INSERT INTO ' SESSIONS_KEYS_TABLE "(key_id, user_id, last_ip, last_login)
     VALUES ('" 
md5($auto_login_key) . "', $user_id, '$user_ip', $current_time)";
    }
 
    if ( !
$db->sql_query($sql) )
    {
     
message_die(CRITICAL_ERROR'Error updating session key'''__LINE____FILE__$sql);
    }
 
    
$sessiondata['autologinid'] = $auto_login_key;
    unset(
$auto_login_key);
}
else
{
    
$sessiondata['autologinid'] = '';
}
 
// $sessiondata['autologinid'] = (!$admin) ? (( $enable_autologin && $sessionmethod == SESSION_METHOD_COOKIE ) ? $auto_login_key : '') : $sessiondata['autologinid']; 

Найдите (291):
PHP код:
 $userdata['session_admin'] = $admin

Ниже добавьте:
PHP код:
 $userdata['session_key'] = $sessiondata['autologinid']; 

Найдите (404):
PHP код:
 //
     // Delete expired sessions
     //
     
$expiry_time $current_time $board_config['session_length'];
     
$sql "DELETE FROM " SESSIONS_TABLE "
     WHERE session_time < '
$expiry_time'
     AND session_id <> '
$session_id'";
     if ( !
$db->sql_query($sql) )
     {
     
message_die(CRITICAL_ERROR'Error clearing sessions table'''__LINE____FILE__$sql);
     } 

Замените на:
PHP код:
 session_clean($userdata['session_id']); 

Находим (432):
PHP код:
 //
// session_end closes out a session
// deleting the corresponding entry
// in the sessions table
//
function session_end($session_id$user_id)
{
global 
$db$lang$board_config$HTTP_COOKIE_VARS$HTTP_GET_VARS$SID

Заменяем на:
PHP код:
 /**
* Terminates the specified session
* It will delete the entry in the sessions table for this session,
* remove the corresponding auto-login key and reset the cookies
*/
function session_end($session_id$user_id)
{
global 
$db$lang$board_config$userdata$HTTP_COOKIE_VARS$HTTP_GET_VARS$SID

Находим и удаляем (448):
PHP код:
 //
// Pull cookiedata or grab the URI propagated sid
//
if ( isset($HTTP_COOKIE_VARS[$cookiename '_sid']) )
{
$session_id = isset( $HTTP_COOKIE_VARS[$cookiename '_sid'] ) ? $HTTP_COOKIE_VARS[$cookiename '_sid'] : '';
$sessionmethod SESSION_METHOD_COOKIE;
}
else
{
$session_id = ( isset($HTTP_GET_VARS['sid']) ) ? $HTTP_GET_VARS['sid'] : '';
$sessionmethod SESSION_METHOD_GET;


Находим (456):
PHP код:
 $sql "DELETE FROM " SESSIONS_TABLE 

Заменяем на:
PHP код:
 $sql 'DELETE FROM ' SESSIONS_TABLE 

Находим (461):
PHP код:
 message_die(CRITICAL_ERROR'Error removing user session'''__LINE____FILE__$sql);


Ниже добавляем:
PHP код:
 //
// Remove this auto-login entry (if applicable)
//
if ( isset($userdata['session_key']) && $userdata['session_key'] != '' )
{
$autologin_key md5($userdata['session_key']);
$sql 'DELETE FROM ' SESSIONS_KEYS_TABLE '
    WHERE user_id = ' 
. (int) $user_id "
     AND key_id = '
$autologin_key'";
if ( !
$db->sql_query($sql) )
{
    
message_die(CRITICAL_ERROR'Error removing auto-login key'''__LINE____FILE__$sql);
}
}
 
//
// We expect that message_die will be called after this function,
// but just in case it isn't, reset $userdata to the details for a guest
//
$sql 'SELECT *
FROM ' 
USERS_TABLE '
WHERE user_id = ' 
ANONYMOUS;
if ( !(
$result $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR'Error obtaining user details'''__LINE____FILE__$sql);
}
if ( !(
$userdata $db->sql_fetchrow($result)) )
{
message_die(CRITICAL_ERROR'Error obtaining user details'''__LINE____FILE__$sql);
}
$db->sql_freeresult($result); 

Находим (503):
PHP код:
 //
// Append $SID to a url. Borrowed from phplib and modified. This is an 

Выше добавляем:
PHP код:
 /**
* Removes expired sessions and auto-login keys from the database
*/
function session_clean($session_id)
{
global 
$board_config$db;
 
//
// Delete expired sessions
//
$sql 'DELETE FROM ' SESSIONS_TABLE 
WHERE session_time < ' 
. (time() - (int) $board_config['session_length']) . 
    AND session_id <> '
$session_id'";
if ( !
$db->sql_query($sql) )
{
message_die(CRITICAL_ERROR'Error clearing sessions table'''__LINE____FILE__$sql);
}
 
//
// Delete expired auto-login keys
// If max_autologin_time is not set then keys will never be deleted
// (same behaviour as old 2.0.x session code)
//
if (!empty($board_config['max_autologin_time']) && $board_config['max_autologin_time'] > 0)
{
$sql 'DELETE FROM ' SESSIONS_KEYS_TABLE '
    WHERE last_login < ' 
. (time() - (86400 * (int) $board_config['max_autologin_time']));
$db->sql_query($sql);
}
 
return 
true;


Находим (600):
PHP код:
 if ( !empty($SID) && !preg_match('#sid=#'$url) )
{
$url .= ( ( strpos($url'?') != false ) ? ( ( $non_html_amp ) ? '&' '&amp;' ) : '?' ) . $SID;


Заменяем на:
PHP код:
 if ( !empty($SID) && !preg_match('#sid=#'$url) )
{
$url .= ( ( strpos($url'?') !== false ) ? ( ( $non_html_amp ) ? '&' '&amp;' ) : '?' ) . $SID;


Soniks 04.11.2005 00:38

Часть 5
Открываем includes/smtp.php
Находим (31):
PHP код:
 while (substr($server_response31) != ' '

Выше добавьте:
PHP код:
 $server_response ''


Открываем includes/usercp_activate.php
Находим (50):
PHP код:
 if (intval($board_config['require_activation']) == USER_ACTIVATION_ADMIN && $userdata['user_level'] != ADMIN)
{
message_die(GENERAL_MESSAGE$lang['Not_Authorised']);


Замените на:
PHP код:
 if (intval($board_config['require_activation']) == USER_ACTIVATION_ADMIN && $row['user_newpasswd'] == '')
    {
    if (!
$userdata['session_logged_in'])
    {
     
redirect(append_sid('login.' $phpEx '?redirect=profile.' $phpEx '&mode=activate&' POST_USERS_URL '=' $row['user_id'] . '&act_key=' trim($HTTP_GET_VARS['act_key'])));
    }
    else if (
$userdata['user_level'] != ADMIN)
    {
     
message_die(GENERAL_MESSAGE$lang['Not_Authorised']);
    }
    } 


Открываем includes/usercp_avatar.php
Находим (71):
PHP код:
 function user_avatar_gallery($mode, &$error, &$error_msg$avatar_filename)
{
        global 
$board_config;
$avatar_filename str_replace(array('../''..\\''./''.\\'), ''$avatar_filename);
if (
$avatar_filename{0} == '/' || $avatar_filename{0} == "\\")
{
return 
'';
}
        if ( 
file_exists(@phpbb_realpath($board_config['avatar_gallery_path'] . '/' $avatar_filename)) && ($mode == 'editprofile') )
        {
                
$return ", user_avatar = '" str_replace("\'""''"$avatar_filename) . "', user_avatar_type = " USER_AVATAR_GALLERY;
        }
        else 

Заменяем на:
PHP код:
 function user_avatar_gallery($mode, &$error, &$error_msg$avatar_filename$avatar_category)
{
global 
$board_config;
 
$avatar_filename phpbb_ltrim(basename($avatar_filename), "'");
$avatar_category phpbb_ltrim(basename($avatar_category), "'");
 
if(!
preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is'$avatar_filename))
{
    return 
'';
}
 
if (
$avatar_filename == "" || $avatar_category == "")
{
return 
'';

 
if ( 
file_exists(@phpbb_realpath($board_config['avatar_gallery_path'] . '/' $avatar_category '/' $avatar_filename)) && ($mode == 'editprofile') )
{
$return ", user_avatar = '" str_replace("\'""''"$avatar_category '/' $avatar_filename) . "', user_avatar_type = " USER_AVATAR_GALLERY;
}
else 

Находим (123):
PHP код:
 $ini_val = ( @phpversion() >= '4.0.0' ) ? 'ini_get' 'get_cfg_var'

Ниже добавляем:
PHP код:
 $width $height 0;
$type ''

Находим (185):
PHP код:
 list($width$height) = @getimagesize($tmp_filename); 

Заменяем на:
PHP код:
 list($width$height$type) = @getimagesize($tmp_filename); 

Находим (211):
PHP код:
 list($width$height) = @getimagesize($avatar_filename); 

Заменяем на:
PHP код:
 list($width$height$type) = @getimagesize($avatar_filename); 

Находим (219):
PHP код:
 if ( $width && $height && $width <= $board_config['avatar_max_width'] && $height <= $board_config['avatar_max_height'] ) 

Выше добавляем:
PHP код:
 switch ($type)
{
// GIF
case 1:
    if (
$imgtype != '.gif')
    {
     @
unlink($tmp_filename);
     
message_die(GENERAL_ERROR'Unable to upload file'''__LINE____FILE__);
    }
break;
 
// JPG, JPC, JP2, JPX, JB2
case 2:
case 
9:
case 
10:
case 
11:
case 
12:
    if (
$imgtype != '.jpg' && $imgtype != '.jpeg')
    {
     @
unlink($tmp_filename);
     
message_die(GENERAL_ERROR'Unable to upload file'''__LINE____FILE__);
    }
break;
 
// PNG
case 3:
    if (
$imgtype != '.png')
    {
     @
unlink($tmp_filename);
     
message_die(GENERAL_ERROR'Unable to upload file'''__LINE____FILE__);
}
break;
 
default:
@
unlink($tmp_filename);
    
message_die(GENERAL_ERROR'Unable to upload file'''__LINE____FILE__);


Находим (261):
PHP код:
 if ( file_exists(@phpbb_realpath('./' $board_config['avatar_path'] . '/' $current_avatar)) )
    {
     @
unlink('./' $board_config['avatar_path'] . '/' $current_avatar);
    } 

Заменяем на:
PHP код:
 user_avatar_delete($current_type$current_avatar); 

Находим (327):
PHP код:
 $avatar_images[$file][$avatar_row_count][$avatar_col_count] = $file '/' $sub_file

Заменяем на:
PHP код:
 $avatar_images[$file][$avatar_row_count][$avatar_col_count] = $sub_file

Находим (373):
PHP код:
 "AVATAR_IMAGE" => $board_config['avatar_gallery_path'] . '/' $avatar_images[$category][$i][$j], 

Заменяем на:
PHP код:
 "AVATAR_IMAGE" => $board_config['avatar_gallery_path'] . '/' $category '/' $avatar_images[$category][$i][$j], 

Находим (385):
PHP код:
 $s_hidden_vars '<input type="hidden" name="sid" value="' $session_id '" /><input type="hidden" name="agreed" value="true" />'

Заменяем на:
PHP код:
 $s_hidden_vars '<input type="hidden" name="sid" value="' $session_id '" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="avatarcatname" value="' $category '" />'

Soniks 04.11.2005 17:33

Открываем includes/usercp_register.php
Находим (76):
PHP код:
 $error FALSE

Ниже добавляем:
PHP код:
 $error_msg ''

Находим (157):
PHP код:
 $attachsig = ( isset($HTTP_POST_VARS['attachsig']) ) ? ( (intval($HTTP_POST_VARS['attachsig'])) ? TRUE ) : 0

Заменяем на:
PHP код:
 $attachsig = ( isset($HTTP_POST_VARS['attachsig']) ) ? ( (intval($HTTP_POST_VARS['attachsig'])) ? TRUE ) : $userdata['user_attachsig']; 

Находим (195):
PHP код:
 $user_avatar_local = ( isset($HTTP_POST_VARS['avatarselect']) && !empty($HTTP_POST_VARS['submitavatar']) && $board_config['allow_avatar_local'] ) ? htmlspecialchars($HTTP_POST_VARS['avatarselect']) : ( ( isset($HTTP_POST_VARS['avatarlocal']) ) ? htmlspecialchars($HTTP_POST_VARS['avatarlocal']) : '' ); 

Ниже добавляем:
PHP код:
 $user_avatar_category = ( isset($HTTP_POST_VARS['avatarcatname']) && $board_config['allow_avatar_local'] ) ? htmlspecialchars($HTTP_POST_VARS['avatarcatname']) : '' 

Находим (204):
PHP код:
 $user_avatar = ( empty($user_avatar_loc) && $mode == 'editprofile' ) ? $userdata['user_avatar'] : '';
        
$user_avatar_type = ( empty($user_avatar_loc) && $mode == 'editprofile' ) ? $userdata['user_avatar_type'] : ''

Заменяем на:
PHP код:
 $user_avatar = ( empty($user_avatar_local) && $mode == 'editprofile' ) ? $userdata['user_avatar'] : '';
$user_avatar_type = ( empty($user_avatar_local) && $mode == 'editprofile' ) ? $userdata['user_avatar_type'] : ''

Находим (224):
PHP код:
 $signature stripslashes($signature);
                
$user_lang stripslashes($user_lang);
                
$user_dateformat stripslashes($user_dateformat);
                if ( !isset(
$HTTP_POST_VARS['cancelavatar']))
                {
                        
$user_avatar $user_avatar_local;
                        
$user_avatar_type USER_AVATAR_GALLERY;
                } 

Заменяем на:
PHP код:
 $signature htmlspecialchars(stripslashes($signature));
 
    
$user_lang stripslashes($user_lang);
    
$user_dateformat stripslashes($user_dateformat);
 
    if ( !isset(
$HTTP_POST_VARS['cancelavatar']))
    {
     
$user_avatar $user_avatar_category '/' $user_avatar_local;
     
$user_avatar_type USER_AVATAR_GALLERY;
    } 

Находим (441):
PHP код:
 if ( $signature_bbcode_uid == '' 

Заменяешь на:
PHP код:
 if ( !isset($signature_bbcode_uid) || $signature_bbcode_uid == '' 

Находим (478):
PHP код:
 if ( @file_exists(@phpbb_realpath('./' $board_config['avatar_path'] . '/' $userdata['user_avatar'])) && $userdata['user_avatar_type'] == USER_AVATAR_UPLOAD )
                {
                        @
unlink(@phpbb_realpath('./' $board_config['avatar_path'] . '/' $userdata['user_avatar']));
                } 

Заменяем на:
PHP код:
 user_avatar_delete($userdata['user_avatar_type'], $userdata['user_avatar']); 

Находим (483):
PHP код:
 if ( @file_exists(@phpbb_realpath('./' $board_config['avatar_path'] . '/' $userdata['user_avatar'])) && $userdata['user_avatar_type'] == USER_AVATAR_UPLOAD )
                {
                        @
unlink(@phpbb_realpath('./' $board_config['avatar_path'] . '/' $userdata['user_avatar']));
                } 

Заменяем на:
PHP код:
 user_avatar_delete($userdata['user_avatar_type'], $userdata['user_avatar']); 

[/PHP]
Находим (536):
PHP код:
 $emailer->from($board_config['board_email']);
                                
$emailer->replyto($board_config['board_email']);
                                
$emailer->use_template('user_activate'stripslashes($user_lang));
                                
$emailer->email_address($email);
                                
$emailer->set_subject($lang['Reactivate']);
                                
$emailer->assign_vars(array(
                                        
'SITENAME' => $board_config['sitename'],
                                        
'USERNAME' => preg_replace($unhtml_specialchars_match$unhtml_specialchars_replacesubstr(str_replace("\'""'"$username), 025)),
                                        
'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />'"\n""-- \n" $board_config['board_email_sig']) : '',
                                        
'U_ACTIVATE' => $server_url '&mode=activate&' POST_USERS_URL '=' $user_id '&act_key=' $user_actkey)
                                );
 
                                
$emailer->send();
                                
$emailer->reset(); 

Заменяем на:
PHP код:
 if ( $board_config['require_activation'] != USER_ACTIVATION_ADMIN )
     {
     
$emailer->from($board_config['board_email']);
     
$emailer->replyto($board_config['board_email']);
 
     
$emailer->use_template('user_activate'stripslashes($user_lang));
     
$emailer->email_address($email);
     
$emailer->set_subject($lang['Reactivate']);
 
     
$emailer->assign_vars(array(
        
'SITENAME' => $board_config['sitename'],
     
'USERNAME' => preg_replace($unhtml_specialchars_match$unhtml_specialchars_replacesubstr(str_replace("\'""'"$username), 025)),
        
'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />'"\n""-- \n" $board_config['board_email_sig']) : '',
 
        
'U_ACTIVATE' => $server_url '?mode=activate&' POST_USERS_URL '=' $user_id '&act_key=' $user_actkey)
     );
     
$emailer->send();
     
$emailer->reset();
     }
     else if ( 
$board_config['require_activation'] == USER_ACTIVATION_ADMIN )
     {
     
$sql 'SELECT user_email, user_lang 
        FROM ' 
USERS_TABLE '
        WHERE user_level = ' 
ADMIN;
 
     if ( !(
$result $db->sql_query($sql)) )
     {
     
message_die(GENERAL_ERROR'Could not select Administrators'''__LINE____FILE__$sql);
     }
 
     while (
$row $db->sql_fetchrow($result))
     {
        
$emailer->from($board_config['board_email']);
        
$emailer->replyto($board_config['board_email']);
 
        
$emailer->email_address(trim($row['user_email']));
        
$emailer->use_template("admin_activate"$row['user_lang']);
        
$emailer->set_subject($lang['Reactivate']);
 
        
$emailer->assign_vars(array(
         
'USERNAME' => preg_replace($unhtml_specialchars_match$unhtml_specialchars_replacesubstr(str_replace("\'""'"$username), 025)),
         
'EMAIL_SIG' => str_replace('<br />'"\n""-- \n" $board_config['board_email_sig']),
 
         
'U_ACTIVATE' => $server_url '?mode=activate&' POST_USERS_URL '=' $user_id '&act_key=' $user_actkey)
        );
        
$emailer->send();
        
$emailer->reset();
     }
     
$db->sql_freeresult($result);
     } 

Находим (874):
PHP код:
 display_avatar_gallery($mode$avatar_category$user_id$email$current_email$coppa$username$email, &$new_password, &$cur_password$password_confirm$icq$aim$msn$yim$website$location$occupation$interests$signature$viewemail$notifypm$popup_pm$notifyreply$attachsig$allowhtml$allowbbcode$allowsmilies$allowviewonline$user_style$user_lang$user_timezone$user_dateformat$userdata['session_id']); 

Заменяем на:
PHP код:
 display_avatar_gallery($mode$avatar_category$user_id$email$current_email$coppa$username$email$new_password$cur_password$password_confirm$icq$aim$msn$yim$website$location$occupation$interests$signature$viewemail$notifypm$popup_pm$notifyreply$attachsig$allowhtml$allowbbcode$allowsmilies$allowviewonline$user_style$user_lang$user_timezone$user_dateformat$userdata['session_id']); 

Находим (885):
PHP код:
 if ( !isset($user_template) )
        {
                
$selected_template $board_config['system_template'];
        } 

Заменяем на:
PHP код:
 if ( !isset($user_style) )
{
$user_style $board_config['default_style'];


Находим (920):
PHP код:
 $s_hidden_fields .= '<input type="hidden" name="avatarlocal" value="' $user_avatar_local '" />'

Заменяем на:
PHP код:
 $s_hidden_fields .= '<input type="hidden" name="avatarlocal" value="' $user_avatar_local '" /><input type="hidden" name="avatarcatname" value="' $user_avatar_category '" />'

Soniks 06.11.2005 02:43

Часть 6

Открываем includes/usercp_sendpasswd.php
Находим (53):
PHP код:
 $key_len = ( $str_len ) ? $key_len 6

Заменяем на:
PHP код:
 $key_len = ($key_len 6) ? $key_len 6


Открываем includes/usercp_viewprofile.php
Находим (177):
PHP код:
 $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>'

Заменяем на:
PHP код:
 $search_img '<a href="' $temp_url '"><img src="' $images['icon_search'] . '" alt="' sprintf($lang['Search_user_posts'], $profiledata['username']) . '" title="' sprintf($lang['Search_user_posts'], $profiledata['username']) . '" border="0" /></a>'


Открываем modules/Forums/index.php
Находим (194):
PHP код:
 // Obtain a list of topic ids which contain
        // posts made since user last visited
        //
        
if ( $userdata['session_logged_in'] )
        { 

Ниже добавьте:
PHP код:
 // 60 days limit
if ($userdata['user_lastvisit'] < (time() - 5184000))
{
    
$userdata['user_lastvisit'] = time() - 5184000;



Открываем modules/Forums/language/lang_english/email/topic_notify.tpl
Находим (4):
Код HTML:
Hello {USERNAME},

Замените на:
Код HTML:
Hello,


Открываем modules/Forums/language/lang_russian/email/topic_notify.tpl
Находим (4):
Код HTML:
Здравствуйте, {USERNAME}!

Заменяем на:
Код HTML:
Здравствуйте,


Открываем modules/Forums/language/lang_english/lang_admin.php
Находим (338):
PHP код:
 //
// Forum Management
// 

Выше добавьте:
PHP код:
 // Autologin Keys - added 2.0.18
$lang['Allow_autologin'] = 'Allow automatic logins';
$lang['Allow_autologin_explain'] = 'Determines whether users are allowed to select to be automatically logged in when visiting the forum';
$lang['Autologin_time'] = 'Automatic login key expiry';
$lang['Autologin_time_explain'] = 'How long a autologin key is valid for in days if the user does not visit the board. Set to zero to disable expiry.'

Найдите (630):
PHP код:
 $lang['Stylesheet'] = 'CSS Stylesheet'

Ниже добавьте:
PHP код:
 $lang['Stylesheet_explain'] = 'Filename for CSS stylesheet to use for this theme.'


Открываем modules/Forums/language/lang_russian/lang_admin.php
Находим (327):
PHP код:
 //
// Forum Management
// 

Выше добавьте:
PHP код:
 // Autologin Keys - added 2.0.18
$lang['Allow_autologin'] = 'Разрешить автоматическую авторизацию';
$lang['Allow_autologin_explain'] = 'Разрешено ли пользователям выбирать, автоматическую авторизацию, посещая форум';
$lang['Autologin_time'] = 'Истечение Автоматической авторизации';
$lang['Autologin_time_explain'] = 'Сколько дней не посещения форума пользователем, система будет хранить информацию о нем. Наберите нолю, чтобы отключить истечение срока.'

Найдите (615):
PHP код:
 $lang['Stylesheet'] = 'Файл стилей CSS'

Ниже добавляем:
PHP код:
 $lang['Stylesheet_explain'] = 'Имя файла для таблицы стилей CSS, используемый для этой темы.'


Открываем modules/Forums/language/lang_english/lang_main.php
Находим и удаляем (277):
PHP код:
 $lang['Send_email'] = 'Send e-mail to user'

Находим и удаляем (369):
PHP код:
 $lang['Delete_post'] = 'Delete this post'

Находим и удаляем (528):
PHP код:
 $lang['Email'] = 'E-mail'

Находим и удаляем (530):
PHP код:
 $lang['Search_user_posts'] = 'Search for posts by this user'

Находим и удаляем (603):
PHP код:
 $lang['Too_many_registers'] = 'You have made too many registration attempts. Please try again later.'


Открываем modules/Forums/language/lang_russian/lang_main.php
Находим и удаляем (265):
PHP код:
 $lang['Send_email'] = 'Отправить e-mail '// Followed by username of poster 

Находим и удаляем (357):
PHP код:
 $lang['Delete_post'] = 'Удалить сообщение'

Находим и удаляем (516):
PHP код:
 $lang['Email'] = 'E-mail'

Находим и удаляем (518):
PHP код:
 $lang['Search_user_posts'] = 'Искать все собщения этого пользователя'

Soniks 07.11.2005 02:21

Часть 7
Открываем modules/Forums/login.php
Находим (138):

PHP код:
 else if( ( isset($HTTP_GET_VARS['logout']) || isset($HTTP_POST_VARS['logout']) ) && $userdata['session_logged_in'] )


Ниже добавьте:
PHP код:
 // session id check
if ($sid == '' || $sid != $userdata['session_id'])
{
    
message_die(GENERAL_ERROR'Invalid_session');


Находим (182):
PHP код:
 if( isset($HTTP_POST_VARS['redirect']) || isset($HTTP_GET_VARS['redirect']) ) 

Выше добавляем:
PHP код:
 $forward_page ''

Находим (193):
PHP код:
 if(count($forward_match) > 1)
    { 

Ниже находим и удаляем:
PHP код:
 $forward_page ''

Находим и удаляем (215):
PHP код:
 else
{
$forward_page '';


Находим (223):
PHP код:
 make_jumpbox('viewforum.'.$phpEx$forum_id); 

Заменяем на:
PHP код:
 make_jumpbox('viewforum.'.$phpEx); 


Открываем modules/Forums/modcp.php
Находим (232):

PHP код:
 message_die(MESSAGEsprintf($lang['Sorry_auth_delete'], $is_auth['auth_delete_type'])); 

Заменяем на:
PHP код:
 message_die(GENERAL_MESSAGEsprintf($lang['Sorry_auth_delete'], $is_auth['auth_delete_type'])); 

Находим (1085):
PHP код:
 'U_SEARCHPOSTS' => append_sid("search.$phpEx?search_author=" urlencode($username) . "&amp;showresults=topics")) 

Заменяем на:
PHP код:
 'U_SEARCHPOSTS' => append_sid("search.$phpEx?search_author=" . (($id == ANONYMOUS) ? 'Anonymous' urlencode($username)) . "&amp;showresults=topics")) 


Открываем modules/Forums/posting.php
Находим (70):

PHP код:
 $refresh $preview || $poll_add || $poll_edit || $poll_delete

Ниже добавляем:
PHP код:
 $orig_word $replacement_word = array(); 

Находим (76):
PHP код:
 $topic_type = ( !empty($HTTP_POST_VARS['topictype']) ) ? intval($HTTP_POST_VARS['topictype']) : POST_NORMAL

Ниже добавляем:
PHP код:
 $topic_type = ( in_array($topic_type, array(POST_NORMALPOST_STICKYPOST_ANNOUNCE)) ) ? $topic_type POST_NORMAL

Находим (205):
PHP код:
 $sql "SELECT f.*, t.topic_status, t.topic_title 

Заменяем на:
PHP код:
 $sql "SELECT f.*, t.topic_status, t.topic_title, t.topic_type 

Находим (220):
PHP код:
 $select_sql = ( !$submit ) ? ", t.topic_title, p.enable_bbcode, p.enable_html, p.enable_smilies, p.enable_sig, p.post_username, pt.post_subject, pt.post_text, pt.bbcode_uid, u.username, u.user_id, u.user_sig" ''

Заменяем на:
PHP код:
 $select_sql = (!$submit) ? ', t.topic_title, p.enable_bbcode, p.enable_html, p.enable_smilies, p.enable_sig, p.post_username, pt.post_subject, pt.post_text, pt.bbcode_uid, u.username, u.user_id, u.user_sig, u.user_sig_bbcode_uid' ''

Находим (329):
PHP код:
 $post_data['first_post'] = ( $mode == 'newtopic' ) ? true 0;
                
$post_data['last_post'] = false;
                
$post_data['has_poll'] = false;
                
$post_data['edit_poll'] = false;
        } 

Выше добавляем:
PHP код:
 if ( $mode == 'newtopic' )
{
    
$post_data['topic_type'] = POST_NORMAL;


Ниже добавляем (найденного):
PHP код:
 if ( $mode == 'poll_delete' && !isset($poll_id) )
{
message_die(GENERAL_MESSAGE$lang['No_such_post']);


Находим (660):
PHP код:
 $user_sig = ( $post_info['user_sig'] != '' && $board_config['allow_sig'] ) ? $post_info['user_sig'] : ''

Ниже добавляем:
PHP код:
 $userdata['user_sig_bbcode_uid'] = $post_info['user_sig_bbcode_uid']; 


Открываем modules/Private_Messages/index.php
Находим (344):

PHP код:
 if ( $sent_info['sent_items'] >= $board_config['max_sentbox_privmsgs'] ) 

Заменяем на:
PHP код:
 if ($board_config['max_sentbox_privmsgs'] && $sent_info['sent_items'] >= $board_config['max_sentbox_privmsgs']) 

Находим (588):
PHP код:
 $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>'

Заменяем на:
PHP код:
 $search_img '<a href="' $temp_url '"><img src="' $images['icon_search'] . '" alt="' sprintf($lang['Search_user_posts'], $username_from) . '" title="' sprintf($lang['Search_user_posts'], $username_from) . '" border="0" /></a>';
$search '<a href="' $temp_url '">' sprintf($lang['Search_user_posts'], $username_from) . '</a>'

Находим (966):
PHP код:
 if ( $saved_info['savebox_items'] >= $board_config['max_savebox_privmsgs'] ) 

Заменяем на:
PHP код:
 if ($board_config['max_savebox_privmsgs'] && $saved_info['savebox_items'] >= $board_config['max_savebox_privmsgs'] ) 

Находим (1196):
PHP код:
 if ( $submit 

Выше добавляем:
PHP код:
 if ($submit && $mode == 'edit')
{
$sql 'SELECT privmsgs_from_userid
    FROM ' 
PRIVMSGS_TABLE '
    WHERE privmsgs_id = ' 
. (int) $privmsg_id '
     AND privmsgs_from_userid = ' 
$userdata['user_id'];
if (!(
$result $db->sql_query($sql)))
{
    
message_die(GENERAL_ERROR"Could not obtain message details"""__LINE____FILE__$sql);
}
 
if (!(
$row $db->sql_fetchrow($result)))
{
    
message_die(GENERAL_MESSAGE$lang['No_such_post']);
}
$db->sql_freeresult($result);
 
unset(
$row);


Находим (1231):
PHP код:
 $to_userdata $db->sql_fetchrow($result); 

Заменяем на:
PHP код:
 if (!($to_userdata $db->sql_fetchrow($result)))
    {
     
$error TRUE;
     
$error_msg $lang['No_such_user'];
    } 

Найходим (1304):
PHP код:
 if ( $inbox_info['inbox_items'] >= $board_config['max_inbox_privmsgs'] ) 

Заменяем на:
PHP код:
 if ($board_config['max_inbox_privmsgs'] && $inbox_info['inbox_items'] >= $board_config['max_inbox_privmsgs']) 

Находим (1402):
PHP код:
 'USERNAME' => $to_username

Заменяем на:
PHP код:
 'USERNAME' => stripslashes($to_username), 

Находим (1508):
PHP код:
 if ( $mode == 'edit' 

Заменяем на:
PHP код:
 else if ( $mode == 'edit' 

Находим (1593):
PHP код:
 $privmsg_subject $privmsg_message ''

Заменяем на:
PHP код:
 $privmsg_subject $privmsg_message $to_username ''

Находим и удаляем (1888):
PHP код:
 'S_NAMES_SELECT' => $user_names_select


Открываем modules/Forums/search.php
Находим (271):
PHP код:
 $split_search = ( !strstr($multibyte_charset$lang['ENCODING']) ) ?  split_words(clean_words('search'stripslashes($search_keywords), $stopword_array$synonym_array), 'search') : split(' '$search_keywords); 

Заменяем на:
PHP код:
 $stripped_keywords stripslashes($search_keywords);
$split_search = ( !strstr($multibyte_charset$lang['ENCODING']) ) ?  split_words(clean_words('search'$stripped_keywords$stopword_array$synonym_array), 'search') : split(' '$search_keywords); 
unset(
$stripped_keywords); 

Находим (1318):
PHP код:
 ORDER BY c.cat_idf.forum_order"; 

Заменяем на:
PHP код:
 ORDER BY c.cat_orderf.forum_order"; 

Soniks 07.11.2005 03:24

Часть 8

Открываем modules/Forums/templates/subSilver/admin/board_config_body.tpl
Находим (40):

Код HTML:
<td class="row2"><input type="radio" name="enable_confirm" value="1" {CONFIRM_ENABLE} />{L_YES}&nbsp; &nbsp;<input type="radio" name="enable_confirm" value="0" {CONFIRM_DISABLE} />{L_NO}</td> </tr> <tr>

Ниже добавляем:
Код HTML:
<td class="row1">{L_ALLOW_AUTOLOGIN}<br /><span class="gensmall">{L_ALLOW_AUTOLOGIN_EXPLAIN}</span></td> <td class="row2"><input type="radio" name="allow_autologin" value="1" {ALLOW_AUTOLOGIN_YES} />{L_YES}&nbsp; &nbsp;<input type="radio" name="allow_autologin" value="0" {ALLOW_AUTOLOGIN_NO} />{L_NO}</td> </tr> <tr> <td class="row1">{L_AUTOLOGIN_TIME} <br /><span class="gensmall">{L_AUTOLOGIN_TIME_EXPLAIN}</span></td> <td class="row2"><input class="post" type="text" size="3" maxlength="4" name="max_autologin_time" value="{AUTOLOGIN_TIME}" /></td> </tr> <tr>


Открываем modules/Forums/templates/subSilver/admin/forum_admin_body.tpl
Находим (16):

Код HTML:
<td class="catRight" align="center" valign="middle"><span class="gen">&nbsp</span></td>

Заменяем на:
Код HTML:
<td class="catRight" align="center" valign="middle"><span class="gen">&nbsp;</span></td>


Открываем modules/Forums/templates/subSilver/admin/index_frameset.tpl
Находим (1):
Код HTML:
<html>

Заменяем на:
Код HTML:
<html dir="{S_CONTENT_DIRECTION}">


Открываем modules/Forums/templates/subSilver/admin/page_header.tpl
Находим (2):
Код HTML:
<html>

Заменяем на:
Код HTML:
<html dir="{S_CONTENT_DIRECTION}">


Открываем modules/Forums/templates/subSilver/admin/styles_addnew_body.tpl
Находим (19):
Код HTML:
</table></form>

Заменяем на:
Код HTML:
</table>


Открываем modules/Forums/templates/subSilver/admin/styles_edit_body.tpl
Находим (24):
Код HTML:
<td class="row1">{L_STYLESHEET}:<br /><span class="gensmall">Filename for CSS stylesheet to use for this theme.</span></td>

Заменяем на:
Код HTML:
<td class="row1">{L_STYLESHEET}:<br /><span class="gensmall">{L_STYLESHEET_EXPLAIN}</span></td>


Открываем modules/Forums/templates/subSilver/admin/styles_list_body.tpl
Находим (21):
Код HTML:
</table></form>

Заменяем на:
Код HTML:
</table>


Открываем modules/Forums/templates/subSilver/admin/user_edit_body.tpl
Находим (239):
Код HTML:
<input class="post" type="text" name="avatarurl" size="40" class="post" style="width: 200px" />

Заменяем на:
Код HTML:
<input class="post" type="text" name="avatarurl" size="40" style="width: 200px" />

Находим (247):
Код HTML:
<input class="post" type="text" name="avatarremoteurl" size="40" class="post" style="width: 200px" />

Заменяем на:
Код HTML:
<input class="post" type="text" name="avatarremoteurl" size="40" style="width: 200px" />


Все последующие изменения надо производить в двух директориях:
modules/Forums/templates/subSilver/
и
themes/DeepBlue/forums/

вместо subSilver или DeepBlue могут быть ваши используемые темы оформления.

Открываем groupcp_info_body.tpl
Находим (36):
Код HTML:
<td class="row2"><span class="gen"><span class="gen"><input type="radio" name="group_type" value="{S_GROUP_OPEN_TYPE}" {S_GROUP_OPEN_CHECKED} /> {L_GROUP_OPEN} &nbsp;&nbsp;<input type="radio" name="group_type" value="{S_GROUP_CLOSED_TYPE}" {S_GROUP_CLOSED_CHECKED} /> {L_GROUP_CLOSED} &nbsp;&nbsp;<input type="radio" name="group_type" value="{S_GROUP_HIDDEN_TYPE}" {S_GROUP_HIDDEN_CHECKED} /> {L_GROUP_HIDDEN} &nbsp;&nbsp; <input class="mainoption" type="submit" name="groupstatus" value="{L_UPDATE}" /></span></td>

Заменяем на:
Код HTML:
<td class="row2"><span class="gen"><input type="radio" name="group_type" value="{S_GROUP_OPEN_TYPE}" {S_GROUP_OPEN_CHECKED} /> {L_GROUP_OPEN} &nbsp;&nbsp;<input type="radio" name="group_type" value="{S_GROUP_CLOSED_TYPE}" {S_GROUP_CLOSED_CHECKED} /> {L_GROUP_CLOSED} &nbsp;&nbsp;<input type="radio" name="group_type" value="{S_GROUP_HIDDEN_TYPE}" {S_GROUP_HIDDEN_CHECKED} /> {L_GROUP_HIDDEN} &nbsp;&nbsp; <input class="mainoption" type="submit" name="groupstatus" value="{L_UPDATE}" /></span></td>

Находим (102):
Код HTML:
<td class="catBottom" colspan="8" align="right"><span class="cattitle"> <input type="submit" name="remove" value="{L_REMOVE_SELECTED}" class="mainoption" />

Заменяем на:
Код HTML:
<td class="catBottom" colspan="8" align="right"> <span class="cattitle"><input type="submit" name="remove" value="{L_REMOVE_SELECTED}" class="mainoption" /></span>


Открываем index_body.tpl
Находим (44):
Код HTML:
<td align="left"><span class="gensmall"><a href="{U_MARK_READ}" class="gensmall">{L_MARK_FORUMS_READ}</a></span></td>

Заменить на:
Код HTML:
<td align="left"> <!-- BEGIN switch_user_logged_in --> <span class="gensmall"><a href="{U_MARK_READ}" class="gensmall">{L_MARK_FORUMS_READ}</a></span> <!-- END switch_user_logged_in --> </td>

Находим (79):
Код HTML:
<input class="post" type="password" name="password" size="10" maxlength="32" />

Ниже добавляем:
Код HTML:
<!-- BEGIN switch_allow_autologin -->

Находим (82):
Код HTML:
<input class="text" type="checkbox" name="autologin" />

Ниже добавляем:
Код HTML:
<!-- END switch_allow_autologin -->


Открываем login_body.tpl
Находим (31):
Код HTML:
<tr align="center"> <td colspan="2"><span class="gen">{L_AUTO_LOGIN}: <input type="checkbox" name="autologin" /></span></td> </tr>

Выше добавляем:
Код HTML:
<!-- BEGIN switch_allow_autologin -->

Ниже добавляем (найденного):
Код HTML:
<!-- END switch_allow_autologin -->

Soniks 07.11.2005 23:22

Открываем profile_add_body.tpl
В строках типа:
Код HTML:
<input type="text" name="icq" class="post"style="width: 100px" size="10" maxlength="15" value="{ICQ}" />

находим (9 раз):
Код HTML:
"style

и меняем на:
Код HTML:
" style

т.е. будет:
Код HTML:
<input type="text" name="icq" class="post" style="width: 100px" size="10" maxlength="15" value="{ICQ}" />


Открываем search_body.tpl
Находим (34):
Код HTML:
<td class="row2" valign="middle" nowrap="nowrap"><span class="genmed"><select class="post" name="sort_by">{S_SORT_OPTIONS}</select><br /><input type="radio" name="sort_dir" value="ASC" /> {L_SORT_ASCENDING}<br /><input type="radio" name="sort_dir" value="DESC" checked /> {L_SORT_DESCENDING}</span>&nbsp;</td>

Заменяем на:
Код HTML:
<td class="row2" valign="middle" nowrap="nowrap"><span class="genmed"><select class="post" name="sort_by">{S_SORT_OPTIONS}</select><br /><input type="radio" name="sort_dir" value="ASC" /> {L_SORT_ASCENDING}<br /><input type="radio" name="sort_dir" value="DESC" checked="checked" /> {L_SORT_DESCENDING}</span>&nbsp;</td>


Открываем modules/Forums/templates/subSilver/subSilver.cfg
Находим (80):
PHP код:
 $images['topic_watch'] = ""

Заменяем на:
PHP код:
 $images['Topic_watch'] = ""


Открываем modules/Forums/viewtopic.php
Находим (60):
PHP код:
 if ( !isset($topic_id) && !isset($post_id) ) 

Заменяем на:
PHP код:
 if (!$topic_id && !$post_id

Находим (120):
PHP код:
 AND t.forum_id t2.forum_id 

Ниже добавляем:
PHP код:
 AND t.topic_moved_id 

Находим (147):
PHP код:
 $join_sql_table = ( empty($post_id) ) ? '' ", " POSTS_TABLE " p, " POSTS_TABLE " p2 ";
$join_sql = ( empty($post_id) ) ? "t.topic_id = '$topic_id'" "p.post_id = '$post_id' AND t.topic_id = p.topic_id AND p2.topic_id = p.topic_id AND p2.post_id <= '$post_id'";
$count_sql = ( empty($post_id) ) ? '' ", COUNT(p2.post_id) AS prev_posts";
$order_sql = ( empty($post_id) ) ? '' "GROUP BY p.post_id, t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments ORDER BY p.post_id ASC"

Заменяем на:
PHP код:
 $join_sql_table = (!$post_id) ? '' ", " POSTS_TABLE " p, " POSTS_TABLE " p2 ";
$join_sql = (!$post_id) ? "t.topic_id = '$topic_id'" "p.post_id = '$post_id' AND t.topic_id = p.topic_id AND p2.topic_id = p.topic_id AND p2.post_id <= '$post_id'";
$count_sql = (!$post_id) ? '' ", COUNT(p2.post_id) AS prev_posts";
$order_sql = (!$post_id) ? '' "GROUP BY p.post_id, t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments ORDER BY p.post_id ASC"

Находим (189):
PHP код:
 $redirect = ( isset($post_id) ) ? POST_POST_URL "=$post_idPOST_TOPIC_URL "=$topic_id";
$redirect .= ( isset($start) ) ? "&start=$start''

Заменяем на:
PHP код:
 $redirect = ($post_id) ? POST_POST_URL "=$post_idPOST_TOPIC_URL "=$topic_id";
$redirect .= ($start) ? "&start=$start''

Находим (209):
PHP код:
 if ( !empty($post_id) ) 

Заменить на:
PHP код:
 if ($post_id

Находим (505):
PHP код:
 $highlight_match .= (($highlight_match != '') ? '|' '') . str_replace('*''\w*'phpbb_preg_quote($words[$i], '#')); 

Заменяем на:
PHP код:
 $highlight_match .= (($highlight_match != '') ? '|' '') . str_replace('*''\w*'preg_quote($words[$i], '#')); 

Находим (1028):
PHP код:
 $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>'

Заменяем на:
PHP код:
 $search_img '<a href="' $temp_url '"><img src="' $images['icon_search'] . '" alt="' sprintf($lang['Search_user_posts'], $postrow[$i]['username']) . '" title="' sprintf($lang['Search_user_posts'], $postrow[$i]['username']) . '" border="0" /></a>'
Находим (1104):
PHP код:
 if ( $board_config['allow_bbcode'] )
{
if ( 
$user_sig != '' && $user_sig_bbcode_uid != '' )
{
    
$user_sig = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($user_sig$user_sig_bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si'']'$user_sig);
}
 
if ( 
$bbcode_uid != '' )
{
    
$message = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($message$bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si'']'$message);
}


Заменяем на:
PHP код:
 if ($user_sig != '' && $user_sig_bbcode_uid != '')
{
$user_sig = ($board_config['allow_bbcode']) ? bbencode_second_pass($user_sig$user_sig_bbcode_uid) : preg_replace("/\:$user_sig_bbcode_uid/si"''$user_sig);
}
 
if (
$bbcode_uid != '')
{
$message = ($board_config['allow_bbcode']) ? bbencode_second_pass($message$bbcode_uid) : preg_replace("/\:$bbcode_uid/si"''$message);



Выполняем SQL-запрос:
Код:
CREATE TABLE nuke_bbsessions_keys (key_id varchar(32) DEFAULT '0' NOT NULL, user_id mediumint(8) DEFAULT '0' NOT NULL, last_ip varchar(8) DEFAULT '0' NOT NULL, last_login int(11) DEFAULT '0' NOT NULL, PRIMARY KEY (key_id, user_id), KEY last_login (last_login))

Код:
UPDATE nuke_users SET user_active = 0 WHERE user_id = '1'

Код:
INSERT INTO nuke_bbconfig (config_name, config_value) VALUES ('allow_autologin', '1')

Код:
INSERT INTO nuke_bbconfig (config_name, config_value) VALUES ('max_autologin_time', '0')

Код:
DELETE FROM nuke_bbsessions

Код:
UPDATE nuke_bbconfig SET config_value='.0.18' where config_name='version'


На этом апгрейд форума закончен:jumplol:

ifahr 08.11.2005 18:36

абалдеть, кто нибудь пробовал, работает или нет?

sid 08.11.2005 20:07

ну я поставил патч! вроде всё работает :)

Soniks 08.11.2005 21:42

ifahr работает!

Opteron 10.11.2005 00:19

Мкачал выложенный в архиве BBtonuke218 ==> не работает линк с главной на форум, что делать???

Soniks 10.11.2005 01:58

Opteron что и где не работает?

Opteron 10.11.2005 21:38

ну вобщем при нажатии на ссылку форум ничего не происзодит, иначе говоря поле где должен был отображаться форум пустое, все блоки и шапка самого сайта видны, а форум нет. при этом в админ панель форума захожу нормально...

а это может быть связано с тем, что нюка 7.6???

sid 10.11.2005 21:42

а базу обновляли?? хотя там ток 1 таблица добавляется :)

Opteron 10.11.2005 21:45

а как обнавлять? запустил инстал_апгрейд...

sid 10.11.2005 21:47

ну и всё, там добавляется ток 1 таблица помоему!!! но эт никакой роли не играет!

Soniks 10.11.2005 22:43

Opteron а версию BBtoNuke какую скачали с патчем? а у вас он установлен?

SHKIPER 11.11.2005 17:15

ну чтож, сейчас приступимс.
а внешние отличия (изменения) будут?

Soniks 11.11.2005 18:53

SHKIPER нет, не будут

Master 12.11.2005 08:43

У меня нету вот этой части в форуме BBtoNuke 2.0.17 форум был установлен вместе с патчем 3.1 для нюки

нету этой части

Часть 8

Открываем modules/Forums/templates/subSilver/admin/board_config_body.tpl
Находим (40);

PHP код:
 <td class="row2"><input type="radio" name="enable_confirm" value="1" {CONFIRM_ENABLE} />{L_YES}&nbsp; &nbsp;<input type="radio" name="enable_confirm" value="0" {CONFIRM_DISABLE} />{L_NO}</td>
</
tr>
<
tr


Ниже добавляем:

PHP код:
 <td class="row1">{L_ALLOW_AUTOLOGIN}<br /><span class="gensmall">{L_ALLOW_AUTOLOGIN_EXPLAIN}</span></td>
<
td class="row2"><input type="radio" name="allow_autologin" value="1" {ALLOW_AUTOLOGIN_YES} />{L_YES}&nbsp; &nbsp;<input type="radio" name="allow_autologin" value="0" {ALLOW_AUTOLOGIN_NO} />{L_NO}</td>
</
tr>
<
tr>
<
td class="row1">{L_AUTOLOGIN_TIME} <br /><span class="gensmall">{L_AUTOLOGIN_TIME_EXPLAIN}</span></td>
<
td class="row2"><input class="post" type="text" size="3" maxlength="4" name="max_autologin_time" value="{AUTOLOGIN_TIME}" /></td>
</
tr>
<
tr


Соникс подскажи что делать! но этого там и на самом деле нету!

sid 12.11.2005 12:34

поставь уже готовый форум! обнови, в файлах есть BBtoNuke2-18 + 3.1

BriaN 12.11.2005 13:56

Объясняю почему нету там такой строчки:

Код HTML:
<td class="row2"><input type="radio" name="enable_confirm" value="1" {CONFIRM_ENABLE} />{L_YES}&nbsp; &nbsp;<input type="radio" name="enable_confirm" value="0" {CONFIRM_DISABLE} />{L_NO}</td> </tr> <tr>


Данная строка показывает в админ панеле в конфиге, выключатель, включить ли код при регистрации или нет, это разумеется играет роль в обычном форуме, но в bbtonuke это просто так весит, по этому в готовых версиях bbtonuke обновлениях данная строка была вырезана в шаблоне дабы не путать юзверей.

Открываешь modules/Forums/templates/subSilver/admin/board_config_body.tpl

Находишь:

Код HTML:
<td class="row2"><input type="radio" name="require_activation" value="{ACTIVATION_NONE}" {ACTIVATION_NONE_CHECKED} />{L_NONE}&nbsp; &nbsp;<input type="radio" name="require_activation" value="{ACTIVATION_USER}" {ACTIVATION_USER_CHECKED} />{L_USER}&nbsp; &nbsp;<input type="radio" name="require_activation" value="{ACTIVATION_ADMIN}" {ACTIVATION_ADMIN_CHECKED} />{L_ADMIN}</td> </tr> <tr>


Ниже добавляешь:

Код HTML:
<td class="row1">{L_ALLOW_AUTOLOGIN}<br /><span class="gensmall">{L_ALLOW_AUTOLOGIN_EXPLAIN}</span></td> <td class="row2"><input type="radio" name="allow_autologin" value="1" {ALLOW_AUTOLOGIN_YES} />{L_YES}&nbsp; &nbsp;<input type="radio" name="allow_autologin" value="0" {ALLOW_AUTOLOGIN_NO} />{L_NO}</td> </tr> <tr> <td class="row1">{L_AUTOLOGIN_TIME} <br /><span class="gensmall">{L_AUTOLOGIN_TIME_EXPLAIN}</span></td> <td class="row2"><input class="post" type="text" size="3" maxlength="4" name="max_autologin_time" value="{AUTOLOGIN_TIME}" /></td> </tr> <tr>


Вот и всё. :wink:

Master 12.11.2005 18:45

Ок спасибо за помощь! просто в патчах форума от http://www.nukeresources.com/ у них там не убран этот код! вот по этому я и запутался!

MadMan 15.12.2005 01:47

чезанахер???!!!
поставил все в точности ничего не пропустил после уседных тестов заметил что не обновляются аватары из галереи
выбираешь аватар - сохраняешь профайл - и ничего! (хотя в 2,0,17 было все нормально)
а если с компа грузишь то все нормально!
и еще вроде не работает фунция подписки на тему - не отправляються сообщения на мыло!

Soniks 16.12.2005 22:49

MadMan лично проверил, аваторы работают и подписка тоже

cebep 20.06.2006 17:25

при изменении файла constats.php перестают отображаться форумы

сохранение аватар из галерей не работает ..

Soniks 21.06.2006 01:20

cebep обновление до конца выполнили? SQL запросы делали? какие ошибки выдает, что происходит?

cebep 03.07.2006 00:41

Soniks все выполнял, ошибок никаких не происходит ..

Soniks 04.07.2006 22:05

cebep попробуйте еще раз переделать, и включите вывод ошибок на экран


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

Copyright © 2005 by Soniks