Files
IPB/upload/upgrade/upg_21010/version_upgrade.php
T
2025-12-19 00:21:15 -08:00

327 lines
15 KiB
PHP

<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
+---------------------------------------------------------------------------
|
| > IPB UPGRADE MODULE:: IPB 2.1.2 -> 2.1.3
| > Script written by Matt Mecham
| > Date started: 23rd April 2004
| > "So what, pop is dead - it's no great loss.
So many facelifts, it's face flew off"
+--------------------------------------------------------------------------
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Íåêîððåêòíûé àäðåñ</h1>Âû íå èìååòå äîñòóïà ê ýòîìó ôàéëó íàïðÿìóþ. Åñëè âû íåäàâíî îáíîâëÿëè ôîðóì, âû äîëæíû îáíîâèòü âñå ñîîòâåòñòâóþùèå ôàéëû.";
exit();
}
class version_upgrade
{
var $this_version = '21010';
var $upgrade_from = '21009';
var $first_step = 'îáíîâèò âàøó áàçó äàííûõ äëÿ âñòàâêè íîâûõ ïîëåé è òàáëèö';
var $md5_check = '';
var $base_url = '';
var $mod_to_run = '';
/*-------------------------------------------------------------------------*/
// CONSTRUCTOR
/*-------------------------------------------------------------------------*/
function version_upgrade()
{
}
function version_process()
{
$this->md5_check = $this->ipsclass->return_md5_check();
$this->base_url = "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}";
if ( is_array( $this->ipsclass->modules_to_run ) and count( $this->ipsclass->modules_to_run ) )
{
$tmp = array_shift( $this->ipsclass->modules_to_run );
$this->mod_to_run = implode( ', ', $this->ipsclass->modules_to_run );
}
if ( ! $this->mod_to_run )
{
$this->mod_to_run = 'None';
}
}
/*-------------------------------------------------------------------------*/
// Auto run..
/*-------------------------------------------------------------------------*/
function auto_run()
{
//--------------------------------
// What are we doing?
// sql => DONE
//--------------------------------
switch( $this->ipsclass->input['workact'] )
{
case 'sql':
$this->upgrade_sql();
break;
default:
$this->upgrade_intro();
break;
}
}
/*-------------------------------------------------------------------------*/
// SQL: 0
/*-------------------------------------------------------------------------*/
function upgrade_sql()
{
$man = intval( $this->ipsclass->input['man'] );
$SQL = array();
$file = '_updates.php';
$cnt = 0;
if ( file_exists( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file ) )
{
require_once( THIS_PATH . 'upg_' . $this->ipsclass->current_upgrade . '/' . strtolower($this->ipsclass->vars['sql_driver']) . $file );
// IBR Fix Portal Settings
$query1 = $this->ipsclass->DB->query("SELECT conf_title_id FROM ibf_conf_settings_titles WHERE conf_title_keyword = 'portal_poll' LIMIT 0,1");
if ( $portal_poll = $this->ipsclass->DB->fetch_row( $query1 ) )
{
$this->ipsclass->DB->build_query( array( 'select' => 'conf_id',
'from' => 'conf_settings',
'where' => 'conf_key=\'poll_poll_url\'',
'limit' => array( 0, 1 ) ) );
$this->ipsclass->DB->exec_query();
if ( $opt01 = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $portal_poll['conf_title_id'] ), 'conf_key=\'poll_poll_url\'' );
}
else
{
$this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Ââåäèòå URL òåìû ñ èìïîðòèðóåìûì îïðîñîì', 'conf_group' => $portal_poll['conf_title_id'], 'conf_description' => 'Îñòàâüòå ïóñòûì, åñëè íå õîòèòå, ÷òîáû îòîáðàæàëñÿ áëîê ñ îïðîñîì', 'conf_type' => 'input', 'conf_key' => 'poll_poll_url', 'conf_protected' => '1', 'conf_position' => '17', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) );
}
}
else
{
$this->ipsclass->DB->do_insert( 'conf_settings_titles', array( 'conf_title_keyword' => 'portal_poll', 'conf_title_title' => 'Ïîðòàë: Îïðîñ', 'conf_title_desc' => 'Íàñòðîéêè âûâîäà îïðîñà â ïîðòàë.', 'conf_title_noshow' => '1' ) );
$fix1 = $this->ipsclass->DB->query("SELECT conf_title_id FROM ibf_conf_settings_titles WHERE conf_title_keyword = 'portal_poll' LIMIT 0,1");
if ( $pix1 = $this->ipsclass->DB->fetch_row( $fix1 ) )
{
$this->ipsclass->DB->build_query( array( 'select' => 'conf_id',
'from' => 'conf_settings',
'where' => 'conf_key=\'poll_poll_url\'',
'limit' => array( 0, 1 ) ) );
$this->ipsclass->DB->exec_query();
if ( $pixopt01 = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $pix1['conf_title_id'] ), 'conf_key=\'poll_poll_url\'' );
}
else
{
$this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Ââåäèòå URL òåìû ñ èìïîðòèðóåìûì îïðîñîì', 'conf_group' => $pix1['conf_title_id'], 'conf_description' => 'Îñòàâüòå ïóñòûì, åñëè íå õîòèòå, ÷òîáû îòîáðàæàëñÿ áëîê ñ îïðîñîì', 'conf_type' => 'input', 'conf_key' => 'poll_poll_url', 'conf_protected' => '1', 'conf_position' => '17', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) );
}
}
}
$query2 = $this->ipsclass->DB->query("SELECT conf_title_id FROM ibf_conf_settings_titles WHERE conf_title_keyword = 'portal_recent_topics' LIMIT 0,1");
if ( $portal_recent = $this->ipsclass->DB->fetch_row( $query2 ) )
{
// 1
$this->ipsclass->DB->build_query( array( 'select' => 'conf_id',
'from' => 'conf_settings',
'where' => 'conf_key=\'recent_topics_discuss_number\'',
'limit' => array( 0, 1 ) ) );
$this->ipsclass->DB->exec_query();
if ( $opt02 = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $portal_recent['conf_title_id'] ), 'conf_key=\'recent_topics_discuss_number\'' );
}
else
{
$this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Êîëè÷åñòâî îòîáðàæàåìûõ òåì', 'conf_group' => $portal_recent['conf_title_id'], 'conf_description' => 'Êîëè÷åñòâî îòîáðàæàåìûõ çàãîëîâêîâ òåì äëÿ ïîðòàëüíîãî òýãà recent_discussions_last_x', 'conf_type' => 'input', 'conf_key' => 'recent_topics_discuss_number', 'conf_default' => '1','conf_protected' => '1', 'conf_position' => '9', 'conf_start_group' => 'Ïîñëåäíèå îáñóæäåíèÿ', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) );
}
// 2
$this->ipsclass->DB->build_query( array( 'select' => 'conf_id',
'from' => 'conf_settings',
'where' => 'conf_key=\'recent_topics_article_forum\'',
'limit' => array( 0, 1 ) ) );
$this->ipsclass->DB->exec_query();
if ( $opt03 = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $portal_recent['conf_title_id'] ), 'conf_key=\'recent_topics_article_forum\'' );
}
else
{
$this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Èç êàêèõ ôîðóìîâ ýêñïîðòèðîâàòü íîâîñòè?', 'conf_group' => $portal_recent['conf_title_id'], 'conf_description' => 'Âû ìîæåòå âûáèðàòü íåñêîëüêî ôîðóìîâ.', 'conf_type' => 'multi', 'conf_key' => 'recent_topics_article_forum', 'conf_extra' => '#show_forums#', 'conf_evalphp' => 'if ( $save == 1){ if ( is_array($_POST[\'recent_topics_article_forum\']) ) { $_POST[\'recent_topics_article_forum\'] = implode(\",\",$_POST[\'recent_topics_article_forum\']); } else { $_POST[\'recent_topics_article_forum\'] = \"\"; } $key = \'recent_topics_article_forum\';}if ( $show == 1 ){$key = \'recent_topics_article_forum[]\';}', 'conf_protected' => '1', 'conf_position' => '3', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) );
}
// 3
$this->ipsclass->DB->build_query( array( 'select' => 'conf_id',
'from' => 'conf_settings',
'where' => 'conf_key=\'recent_topics_article_max\'',
'limit' => array( 0, 1 ) ) );
$this->ipsclass->DB->exec_query();
if ( $opt04 = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $portal_recent['conf_title_id'] ), 'conf_key=\'recent_topics_article_max\'' );
}
else
{
$this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Êîëè÷åñòâî íîâîñòåé äëÿ îòîáðàæåíèÿ', 'conf_group' => $portal_recent['conf_title_id'], 'conf_description' => 'Êîëè÷åñòâî òåì, îòîáðàæàåìûõ â ïîðòàëüíîì òýãå recent_topics_last_x', 'conf_type' => 'input', 'conf_key' => 'recent_topics_article_max', 'conf_default' => '15','conf_protected' => '1', 'conf_position' => '4', 'conf_start_group' => 'Ïîñëåäíèå íîâîñòè', 'conf_end_group' => '1', 'conf_add_cache' => '0' ) );
}
}
else
{
$this->ipsclass->DB->do_insert( 'conf_settings_titles', array( 'conf_title_keyword' => 'portal_recent_topics', 'conf_title_title' => 'Ïîðòàë: Ïîñëåäíèå îáñóæäåíèÿ', 'conf_title_desc' => 'Íàñòðîéêè âûâîäà ïîñëåäíèõ îáñóæäåíèé â ïîðòàë', 'conf_title_noshow' => '1' ) );
$fix2 = $this->ipsclass->DB->query("SELECT conf_title_id FROM ibf_conf_settings_titles WHERE conf_title_keyword = 'portal_recent_topics' LIMIT 0,1");
if ( $pix2 = $this->ipsclass->DB->fetch_row( $fix2 ) )
{
// 1
$this->ipsclass->DB->build_query( array( 'select' => 'conf_id',
'from' => 'conf_settings',
'where' => 'conf_key=\'recent_topics_discuss_number\'',
'limit' => array( 0, 1 ) ) );
$this->ipsclass->DB->exec_query();
if ( $opt02 = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $pix2['conf_title_id'] ), 'conf_key=\'recent_topics_discuss_number\'' );
}
else
{
$this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Êîëè÷åñòâî îòîáðàæàåìûõ òåì', 'conf_group' => $pix2['conf_title_id'], 'conf_description' => 'Êîëè÷åñòâî îòîáðàæàåìûõ çàãîëîâêîâ òåì äëÿ ïîðòàëüíîãî òýãà recent_discussions_last_x', 'conf_type' => 'input', 'conf_key' => 'recent_topics_discuss_number', 'conf_default' => '1','conf_protected' => '1', 'conf_position' => '9', 'conf_start_group' => 'Ïîñëåäíèå îáñóæäåíèÿ', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) );
}
// 2
$this->ipsclass->DB->build_query( array( 'select' => 'conf_id',
'from' => 'conf_settings',
'where' => 'conf_key=\'recent_topics_article_forum\'',
'limit' => array( 0, 1 ) ) );
$this->ipsclass->DB->exec_query();
if ( $opt03 = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $pix2['conf_title_id'] ), 'conf_key=\'recent_topics_article_forum\'' );
}
else
{
$this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Èç êàêèõ ôîðóìîâ ýêñïîðòèðîâàòü íîâîñòè?', 'conf_group' => $pix2['conf_title_id'], 'conf_description' => 'Âû ìîæåòå âûáèðàòü íåñêîëüêî ôîðóìîâ.', 'conf_type' => 'multi', 'conf_key' => 'recent_topics_article_forum', 'conf_extra' => '#show_forums#', 'conf_evalphp' => 'if ( $save == 1){ if ( is_array($_POST[\'recent_topics_article_forum\']) ) { $_POST[\'recent_topics_article_forum\'] = implode(\",\",$_POST[\'recent_topics_article_forum\']); } else { $_POST[\'recent_topics_article_forum\'] = \"\"; } $key = \'recent_topics_article_forum\';}if ( $show == 1 ){$key = \'recent_topics_article_forum[]\';}', 'conf_protected' => '1', 'conf_position' => '3', 'conf_end_group' => '0', 'conf_add_cache' => '0' ) );
}
// 3
$this->ipsclass->DB->build_query( array( 'select' => 'conf_id',
'from' => 'conf_settings',
'where' => 'conf_key=\'recent_topics_article_max\'',
'limit' => array( 0, 1 ) ) );
$this->ipsclass->DB->exec_query();
if ( $opt04 = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_group' => $pix2['conf_title_id'] ), 'conf_key=\'recent_topics_article_max\'' );
}
else
{
$this->ipsclass->DB->do_insert( 'conf_settings', array( 'conf_title' => 'Êîëè÷åñòâî íîâîñòåé äëÿ îòîáðàæåíèÿ', 'conf_group' => $pix2['conf_title_id'], 'conf_description' => 'Êîëè÷åñòâî òåì, îòîáðàæàåìûõ â ïîðòàëüíîì òýãå recent_topics_last_x', 'conf_type' => 'input', 'conf_key' => 'recent_topics_article_max', 'conf_default' => '15','conf_protected' => '1', 'conf_position' => '4', 'conf_start_group' => 'Ïîñëåäíèå íîâîñòè', 'conf_end_group' => '1', 'conf_add_cache' => '0' ) );
}
}
}
// IBR Fix end
foreach( $SQL as $q )
{
$q = str_replace( "<%time%>", time(), $q );
$this->ipsclass->DB->query( $q );
$cnt++;
}
}
$this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}",
"$cnt çàïðîñîâ âûïîëíåíî...." );
}
/*-------------------------------------------------------------------------*/
// INTRO
/*-------------------------------------------------------------------------*/
function upgrade_intro()
{
$this->ipsclass->template->content .= "
<div class='tableborder'>
<div class='maintitle'>Äîáðî ïîæàëîâàòü â ñèñòåìó îáíîâëåíèÿ IPB</div>
<div class='tdrow1' style='padding:6px'>Ýòîò ìîäóëü îáíîâèò âàø ôîðóì ñ <b>{$this->ipsclass->versions[$this->upgrade_from]}</b> äî <b>{$this->ipsclass->versions[$this->this_version]}</b>
<br /><br />Ýòîò ïåðâûé ýòàï {$this->first_step}
<br />
";
if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) )
{
$this->ipsclass->template->content .= "<div class='warnbox'><strong>ÂÍÈÌÀÍÈÅ: Ïàïêà cache/skin_cache íåäîñòóïíà äëÿ çàïèñè</strong><br />
Ïîæàëóéñòà, ïðîâåðüòå CHMOD äëÿ ýòîé ïàïêè. Åñëè âû ïðîèãíîðèðóåòå ýòî ïðåäóïðåæäåíèå, òî ôàéëû ñòèëåé
ìîãóò íåêîððåêòíî óñòàíîâèòüñÿ.</div>";
}
else
{
$this->ipsclass->template->content .= "<div align='center'><span style='font-weight:bold;font-size:14px'>&raquo; <a href='{$this->base_url}&workact=sql'>Äàëåå ...</a></span></div>
</div>
</div>
<br />
<div align='center'>Ïîñëå ýòîãî ìîäóëÿ áóäåò çàïóùåíî: {$this->mod_to_run}</div>";
}
$this->ipsclass->template->output();
}
}
?>