327 lines
14 KiB
PHP
327 lines
14 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 = '21009';
|
|
var $upgrade_from = '21008';
|
|
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;
|
|
case 'cal':
|
|
$this->upgrade_cal();
|
|
break;
|
|
case 'helpfiles':
|
|
$this->upgrade_helpfiles();
|
|
break;
|
|
case 'skinrevert':
|
|
$this->revert_skin_changes();
|
|
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 );
|
|
|
|
foreach( $SQL as $q )
|
|
{
|
|
$q = str_replace( "<%time%>", time(), $q );
|
|
|
|
$this->ipsclass->DB->query( $q );
|
|
|
|
$cnt++;
|
|
}
|
|
}
|
|
|
|
$this->ipsclass->core->redirect( "{$this->base_url}&workact=cal",
|
|
"$cnt çàïðîñîâ âûïîëíåíî...." );
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Update Old Calendar Events
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function upgrade_cal()
|
|
{
|
|
$cnt = 0;
|
|
$outer = $this->ipsclass->DB->query( "SELECT * FROM ibf_cal_events ORDER BY event_id ASC" );
|
|
if( $this->ipsclass->DB->get_num_rows($outer) )
|
|
{
|
|
while( $event = $this->ipsclass->DB->fetch_row( $outer ) )
|
|
{
|
|
if( $event['event_tz'] )
|
|
{
|
|
$this->ipsclass->DB->query( "UPDATE ibf_cal_events SET event_tz=0 WHERE event_id='{$event['event_id']}'" );
|
|
$cnt++;
|
|
}
|
|
}
|
|
}
|
|
|
|
$this->ipsclass->core->redirect( "{$this->base_url}&workact=helpfiles",
|
|
"$cnt êàëåíäàðíûõ ñîáûòèé îáíîâëåíî...." );
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Update help files
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function upgrade_helpfiles()
|
|
{
|
|
if(! $this->ipsclass->input['do_update'] )
|
|
{
|
|
$this->ipsclass->template->content .= "
|
|
<div class='tableborder'>
|
|
<div class='maintitle'>Âû æåëàåòå îáíîâèòü ôàéëû ïîìîùè?</div>
|
|
<div class='tdrow1' style='padding:6px'>Íåñêîëüêî ôàéëîâ ïîìîùè áûëè èçìåíåíû îò áîëåå ðàííèõ âåðñèé. Ìû ðåêîìåíäóåì çàïóñòèòü îáíîâëåíèå, òàê êàê äëÿ IPB 2.1.x ñòàðûå ôàéëû ïîìîùè â íåêîòîðûõ ìîìåíòàõ óæå íå òî÷íû.
|
|
Åñëè âû óæå èçìåíÿëè ñàìè ôàéëû ïîìîùè, òî èìåéòå ââèäó, ÷òî ïðè çàïóñêå îáíîâëåíèÿ âàøè èçìåíåíèÿ ìîãóò áûòü ïîòåðÿíû.
|
|
Ýòîò øàã îáíîâèò ïåðâûå 16 ôàéëîâ ïîìîùè â âàøåé áàçå äàííûõ. Åñëè âû íå èçìåíÿëè ñòàíäàðòíûå ôàéëû ïîìîùè, à äîáàâëÿëè íîâûå, òî îíè íå áóäóò óäàëåíû...
|
|
<br /><br /><b>Âû æåëàåòå îáíîâèòü âàøè ôàéëû ïîìîùè?</b>
|
|
<div align='left'><blockquote><span style='font-weight:bold;font-size:14px'>» <a href='{$this->base_url}&workact=helpfiles&do_update=1'>Îáíîâèòü ôàéëû ïîìîùè ...</a><br />
|
|
» <a href='{$this->base_url}&workact=skinrevert'>Ïðîïóñòèòü ýòîò ýòàï ...</a></span></blockquote></div>
|
|
";
|
|
$this->ipsclass->template->output();
|
|
}
|
|
else
|
|
{
|
|
$man = intval( $this->ipsclass->input['man'] );
|
|
$UPDATES = 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 );
|
|
|
|
foreach( $UPDATES as $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 ôàéëîâ ïîìîùè îáíîâëåíî...." );
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// Revert Skin Changes
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
function revert_skin_changes()
|
|
{
|
|
if(! $this->ipsclass->input['do_update'] )
|
|
{
|
|
$id = intval($this->ipsclass->input['skinid']) ? intval($this->ipsclass->input['skinid']) : 2;
|
|
$default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id={$id}" ) );
|
|
if( !$default['set_skin_set_id'] )
|
|
{
|
|
// Didn't find id 2, let's try by name
|
|
$default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_name='IPB Ñòàíäàðòíûé ñòèëü'" ) );
|
|
if( !$default['set_skin_set_id'] )
|
|
{
|
|
// Didn't find by name either
|
|
$default = array();
|
|
}
|
|
}
|
|
|
|
if( count( $default ) )
|
|
{
|
|
$this->ipsclass->template->content .= "
|
|
<div class='tableborder'>
|
|
<div class='maintitle'>Âû æåëàåòå âîçâðàòèòü ñòèëü â ñòàíäàðòíûé âèä (óáðàâ âñå âàøè èçìåíåíèÿ â íåì)?</div>
|
|
<div class='tdrow1' style='padding:6px'>Âî âðåìÿ îáíîâëåíèé ÷àñòî áûâàþò èçìåíåíèÿ â øàáëîíàõ IPB ãëàâíîãî ñòèëÿ, îò êîòîðîãî âàøè ñòèëè óíàñëåäîâàíû. Åñëè øàáëîíû âàøåãî ñòèëÿ íå áûëè èçìåíåíû, îíè ïðîñòî óíàñëåäóþò èçìåíåíèÿ îò øàáëîíîâ ãëàâíîãî ñòèëÿ. Äëÿ «IPB Ñòàíäàðòíûé ñòèëü» ýòî ñëó÷èòñÿ àâòîìàòè÷åñêè.<br /><br />
|
|
Äðóãèå ñòèëè, êîòîðûå áûëè èìïîðòèðîâàíû âàìè, ìîãóò èìåòü ñâîé ñîáñòâåííûé íàáîð øàáëîíîâ, îíè ìîãóò, âîçìîæíî, áûòü îáíîâëåíû âðó÷íóþ. Åñëè âàøè øàáëîíû ñòèëÿ íå îáíîâëåíû êàê ïîëîæåíî, ìîãóò âîçíèêíóòü ïðîáëåìû... Íàïðèìåð, âû ìîæåòå óâèäåòü javascript îøèáêè, èëè âû íå ñìîæåòå óâèäåòü êàêèå-òî áëîêè, ïîòîìó ÷òî îíè íå áóäóò íàéäåíû â âàøèõ øàáëîíàõ...
|
|
<br /><br />
|
|
Øàáëîíû âàøåãî Ãëàâíîãî ñòèëÿ áóäóò îáíîâëåíû àâòîìàòè÷åñêè â òå÷åíèå ïðîöåññà îáíîâëåíèÿ, îäíàêî, ÷òîáû ðàáîòàëî âñå íîðìàëüíî íà ñòàíäàðòíîì ñòèëå, ëþáûå èçìåíåíèÿ îáÿçàíû áûòü óäàëåíû. Åñëè âû õîòèòå ñäåëàòü ýòî âðó÷íóþ, âû ìîæåòå ïðîïóñòèòü ýòîò ýòàï, çàòåì ïîñëå îáíîâëåíèÿ çàéòè â àäìèíöåíòð äëÿ óäàëåíèÿ èçìåíåíèé...
|
|
Âàì áóäåò íåîáõîäèìî çàéòè â ðåäàêòèðîâàíèå «IPB 2.1 Ñòàíäàðòíûé ñòèëü» è âûáðàòü «Îáðàòèòü âñå èçìåíåíèÿ......» äëÿ èçìåíåííûõ øàáëîíîâ. Òàêæå, ñèñòåìà îáíîâëåíèÿ ìîæåò ñäåëàòü ýòî çà âàñ.<br /><br />
|
|
Èç-çà ðàçëè÷íûõ âîçìîæíîñòåé HTML äëÿ íåñòàíäàðòíûõ ñòèëåé, ñèñòåìà îáíîâëåíèÿ íå ñìîæåò èçìåíèòü ýòè ñòèëè äëÿ âàñ. Ïîñëå òîãî, êàê îáíîâëåíèå áóäåò çàâåðøåíî, ìû ðåêîìåíäóåì âàì çàïóñòèòü óòèëèòó «Ãåíåðèðîâàòü îò÷åò ñðàâíåíèÿ ñòèëåé...» â àäìèíöåíòðå äëÿ îïðåäåëåíèÿ èçìåíåíèé, âíåñåííûõ â âàø ñòèëü.
|
|
<br /><br /><b>Âû æåëàåòå óäàëèòü âíåñåííûå â ñòèëü èçìåíåíèÿ äëÿ «{$default['set_name']}»?</b><br />(<i>Åñëè ýòî íå ñòàíäàðòíûé ñòèëü, ìû ðåêîìåíäóåì âàì ïðîïóñòèòü äàííûé ýòàï è îáíîâèòü âàøè øàáëîíû âðó÷íóþ</i>)
|
|
<div align='left'><blockquote><span style='font-weight:bold;font-size:14px'>» <a href='{$this->base_url}&workact=skinrevert&do_update=1&man={$default['set_skin_set_id']}'>Äà, óäàëèòü âñå èçìåíåíèÿ â ñòèëå ...</a><br />
|
|
» <a href='index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}'>Íåò, ÿ õî÷ó ïðîïóñòèòü ýòîò ýòàï ...</a></span></blockquote></div>
|
|
";
|
|
}
|
|
else
|
|
{
|
|
$this->ipsclass->template->content .= "<div class='warnbox'><strong>«IPB Ñòàíäàðòíûé ñòèëü» íå íàéäåí</strong><br />
|
|
Ýòîò ýòàï ïîçâîëÿåò âàì âîçâðàòèòü «IPB Ñòàíäàðòíûé ñòèëü» â ñòàíäàðòíûé âèä (óáðàòü âñå âàøè èçìåíåíèÿ â íåì), ýòî äàñò ãàðàíòèþ íà òî, ÷òî îáíîâëåíèÿ ñòèëåé áóäóò óíàñëåäîâàíû äîëæíûì îáðàçîì. Âàø «IPB Ñòàíäàðòíûé ñòèëü» íå áûë íàéäåí.</div>
|
|
<br /><br />
|
|
<div align='center'><span style='font-weight:bold;font-size:14px'>» <a href='index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}'>Äàëåå ...</a></span></div>";
|
|
}
|
|
$this->ipsclass->template->output();
|
|
}
|
|
else
|
|
{
|
|
$man = intval( $this->ipsclass->input['man'] );
|
|
$cnt = 0;
|
|
|
|
$default = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id=".$man ) );
|
|
$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_templates', 'where' => "set_id=".$man ) );
|
|
$outer = $this->ipsclass->DB->simple_exec();
|
|
|
|
if( $this->ipsclass->DB->get_num_rows($outer) )
|
|
{
|
|
while( $r = $this->ipsclass->DB->fetch_row($outer) )
|
|
{
|
|
if( $r['set_id'] == 1 )
|
|
{
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
$this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_templates', 'where' => 'suid='.$r['suid'] ) );
|
|
$cnt++;
|
|
}
|
|
}
|
|
}
|
|
|
|
$next = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id>".$man, 'orderby' => 'set_skin_set_id ASC', 'limit' => array(0,1) ) );
|
|
if( $next['set_skin_set_id'] )
|
|
{
|
|
$this->ipsclass->core->redirect( "index.php?act=work&workact=skinrevert&skinid={$next['set_skin_set_id']}&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}",
|
|
"$cnt øàáëîíîâ èç ñòèëÿ '{$default['set_name']}' áûëî âîçâðàùåíî â ñòàíäàðòíûé âèä...." );
|
|
}
|
|
else
|
|
{
|
|
$this->ipsclass->core->redirect( "index.php?act=done&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}",
|
|
"$cnt øàáëîíîâ èç ñòèëÿ '{$default['set_name']}' áûëî âîçâðàùåíî â ñòàíäàðòíûé âèä...." );
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
// 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();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
?>
|