327 lines
15 KiB
PHP
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'>» <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();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
?>
|