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

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'>&raquo; <a href='{$this->base_url}&workact=helpfiles&do_update=1'>Îáíîâèòü ôàéëû ïîìîùè ...</a><br />
&raquo; <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 ãëàâíîãî ñòèëÿ, îò êîòîðîãî âàøè ñòèëè óíàñëåäîâàíû. Åñëè øàáëîíû âàøåãî ñòèëÿ íå áûëè èçìåíåíû, îíè ïðîñòî óíàñëåäóþò èçìåíåíèÿ îò øàáëîíîâ ãëàâíîãî ñòèëÿ. Äëÿ &laquo;IPB Ñòàíäàðòíûé ñòèëü&raquo; ýòî ñëó÷èòñÿ àâòîìàòè÷åñêè.<br /><br />
Äðóãèå ñòèëè, êîòîðûå áûëè èìïîðòèðîâàíû âàìè, ìîãóò èìåòü ñâîé ñîáñòâåííûé íàáîð øàáëîíîâ, îíè ìîãóò, âîçìîæíî, áûòü îáíîâëåíû âðó÷íóþ. Åñëè âàøè øàáëîíû ñòèëÿ íå îáíîâëåíû êàê ïîëîæåíî, ìîãóò âîçíèêíóòü ïðîáëåìû... Íàïðèìåð, âû ìîæåòå óâèäåòü javascript îøèáêè, èëè âû íå ñìîæåòå óâèäåòü êàêèå-òî áëîêè, ïîòîìó ÷òî îíè íå áóäóò íàéäåíû â âàøèõ øàáëîíàõ...
<br /><br />
Øàáëîíû âàøåãî Ãëàâíîãî ñòèëÿ áóäóò îáíîâëåíû àâòîìàòè÷åñêè â òå÷åíèå ïðîöåññà îáíîâëåíèÿ, îäíàêî, ÷òîáû ðàáîòàëî âñå íîðìàëüíî íà ñòàíäàðòíîì ñòèëå, ëþáûå èçìåíåíèÿ îáÿçàíû áûòü óäàëåíû. Åñëè âû õîòèòå ñäåëàòü ýòî âðó÷íóþ, âû ìîæåòå ïðîïóñòèòü ýòîò ýòàï, çàòåì ïîñëå îáíîâëåíèÿ çàéòè â àäìèíöåíòð äëÿ óäàëåíèÿ èçìåíåíèé...
Âàì áóäåò íåîáõîäèìî çàéòè â ðåäàêòèðîâàíèå &laquo;IPB 2.1 Ñòàíäàðòíûé ñòèëü&raquo; è âûáðàòü &laquo;Îáðàòèòü âñå èçìåíåíèÿ......&raquo; äëÿ èçìåíåííûõ øàáëîíîâ. Òàêæå, ñèñòåìà îáíîâëåíèÿ ìîæåò ñäåëàòü ýòî çà âàñ.<br /><br />
Èç-çà ðàçëè÷íûõ âîçìîæíîñòåé HTML äëÿ íåñòàíäàðòíûõ ñòèëåé, ñèñòåìà îáíîâëåíèÿ íå ñìîæåò èçìåíèòü ýòè ñòèëè äëÿ âàñ. Ïîñëå òîãî, êàê îáíîâëåíèå áóäåò çàâåðøåíî, ìû ðåêîìåíäóåì âàì çàïóñòèòü óòèëèòó &laquo;Ãåíåðèðîâàòü îò÷åò ñðàâíåíèÿ ñòèëåé...&raquo; â àäìèíöåíòðå äëÿ îïðåäåëåíèÿ èçìåíåíèé, âíåñåííûõ â âàø ñòèëü.
<br /><br /><b>Âû æåëàåòå óäàëèòü âíåñåííûå â ñòèëü èçìåíåíèÿ äëÿ &laquo;{$default['set_name']}&raquo;?</b><br />(<i>Åñëè ýòî íå ñòàíäàðòíûé ñòèëü, ìû ðåêîìåíäóåì âàì ïðîïóñòèòü äàííûé ýòàï è îáíîâèòü âàøè øàáëîíû âðó÷íóþ</i>)
<div align='left'><blockquote><span style='font-weight:bold;font-size:14px'>&raquo; <a href='{$this->base_url}&workact=skinrevert&do_update=1&man={$default['set_skin_set_id']}'>Äà, óäàëèòü âñå èçìåíåíèÿ â ñòèëå ...</a><br />
&raquo; <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>&laquo;IPB Ñòàíäàðòíûé ñòèëü&raquo; íå íàéäåí</strong><br />
Ýòîò ýòàï ïîçâîëÿåò âàì âîçâðàòèòü &laquo;IPB Ñòàíäàðòíûé ñòèëü&raquo; â ñòàíäàðòíûé âèä (óáðàòü âñå âàøè èçìåíåíèÿ â íåì), ýòî äàñò ãàðàíòèþ íà òî, ÷òî îáíîâëåíèÿ ñòèëåé áóäóò óíàñëåäîâàíû äîëæíûì îáðàçîì. Âàø &laquo;IPB Ñòàíäàðòíûé ñòèëü&raquo; íå áûë íàéäåí.</div>
<br /><br />
<div align='center'><span style='font-weight:bold;font-size:14px'>&raquo; <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'>&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();
}
}
?>