Files
IPB/upload/upgrade/core/template.php
T
2025-12-19 00:24:35 -08:00

559 lines
17 KiB
PHP

<?php
/**
* Invision Power Board
* Template Controller for installer framework
*/
class install_template
{
var $page_title = '';
var $page_content = '';
var $page_current = '';
var $message = '';
var $hide_next = 0;
var $in_error = 0;
var $install_pages = array();
var $ipsclass;
/**
* install_template::install_template
*
* CONSTRUCTOR
*
*/
function install_template( &$ipsclass )
{
//-----------------------------------------
// INIT
//-----------------------------------------
$_pages = array();
$this->ipsclass =& $ipsclass;
//-----------------------------------------
// Grab XML file and check
//-----------------------------------------
if ( file_exists( INS_ROOT_PATH . 'installfiles/sequence.xml' ) )
{
$config = implode( '', file( INS_ROOT_PATH . 'installfiles/sequence.xml' ) );
$xml = new class_xml();
$config = $xml->xml_parse_document( $config );
//-----------------------------------------
// Loop through and sort out settings...
//-----------------------------------------
foreach( $xml->xml_array['installdata']['action'] as $id => $entry )
{
$_pages[ $entry['position']['VALUE'] ] = array( 'file' => $entry['file']['VALUE'],
'menu' => $entry['menu']['VALUE'] );
}
ksort( $_pages );
foreach( $_pages as $position => $data )
{
$this->install_pages[ $data['file'] ] = $this->ipsclass->txt_convert_charsets( $data['menu'], 'UTF-8' );
}
}
$this->install_pages['done'] = 'Çàâåðøåíèå';
/* Set Current Page */
$this->page_current = ( $this->ipsclass->input['p'] ) ? $this->ipsclass->input['p'] : 'login';
if( ! $this->install_pages[$this->page_current] )
{
$this->page_current = 'login';
}
}
/**
* install_template::set_title
*
* Sets the title for the current page
*
* @var string $title
*/
function set_title( $title )
{
$this->page_title = $title;
}
/**
* install_template::append
*
* Adds to the main body output
*
* @var string $add
*/
function append( $add )
{
$this->page_content .= $add;
}
/**
* install_template::output
*
* Builds page and sends to browser
*
*/
function output()
{
/* Build Side Bar */
$curr_reached = 0;
$this->progress = array();
foreach( $this->install_pages as $key => $page )
{
if( $key == $this->page_current )
{
$this->progress[] = array( 'step_doing', $page );
$curr_reached = 1;
}
else if( $curr_reached )
{
$this->progress[] = array( 'step_notdone', $page );
}
else
{
$this->progress[] = array( 'step_done', $page );
}
}
$this->page_template();
}
/***************************************************************
*
* HTML TEMPLATE FUNCTIONS
*
**************************************************************/
// ------------------------------------------------------------
// Main Template
// ------------------------------------------------------------
function page_template()
{
echo <<<EOF
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1251">
<title>Ìàñòåð îáíîâëåíèÿ ïðîäóêòîâ Invision Power Services </title>
<style type='text/css' media='all'>
@import url('install.css');
</style>
<script type='text/javascript'>
//<![CDATA[
if (top.location != self.location) { top.location = self.location }
var use_enhanced_js = 1;
//]]>
</script>
<script type="text/javascript" src='ips_xmlhttprequest.js'></script>
</head>
<body>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<form id='install-form' action='index.php{$this->next_action}' method='post'>
<input type='hidden' name='saved_data' value='{$this->saved_data}'>
<div id='ipswrapper'>
<div class='main_shell'>
<h1><img src='images/package_icon.gif' align='absmiddle' /> Èíñòðóìåíò îáíîâëåíèÿ Invision Power Services</h1>
<div class='content_shell'>
<div class='package'>
<div>
<div class='install_info'>
<h3>{$this->install_pages[$this->page_current]}</h3>
<ul id='progress'>
EOF;
foreach( $this->progress as $p )
{
echo "<li class='{$p[0]}'>{$p[1]}</li>";
}
echo <<<EOF
</ul>
</div>
<div class='content_wrap'>
<div style='border-bottom: 1px solid #939393; padding-bottom: 4px;'>
<div class='float_img'>
<img src='images/box.gif' />
</div>
<div style='vertical-align: middle'>
<h2>Îáíîâëåíèå {$this->product_name}</h2>
<!--<strong>{$this->product_version}</strong>-->
</div>
</div>
<div style='clear:both'></div>
{$this->page_content}
<br />
</div>
</div>
<br clear='all' />
<div class='hr'></div>
<div style='padding-top: 17px; padding-right: 15px; padding-left: 15px'>
<div style='float: left'>
<input type='button' class='nav_button' value='Ïðåêðàòèòü îáíîâëåíèå' onclick="window.location='index.php';return false;">
</div>
<div style='float: right'>
EOF;
if( ! $this->hide_next )
{
if( $this->next_action == 'disabled' )
{
echo <<<EOF
<input type='submit' class='nav_button' value='Îáíîâëåíèå íå çàâåðøåíî...' disabled='disabled'>
EOF;
}
else if( $this->in_error == 1 )
{
echo <<<EOF
<input type='submit' class='nav_button' value='Âñå ðàâíî ïðîäîëæèòü'>
EOF;
}
else
{
echo <<<EOF
<input type='submit' class='nav_button' value='Äàëüøå >'>
EOF;
}
}
echo <<<EOF
</div>
</div>
<div style='clear: both;'></div>
<div class='copyright'>
&copy;
EOF;
echo date("Y");
echo <<<EOF
Invision Power Services, Inc. & IBResource, LTD
</div>
</div>
</div>
</div>
</div>
</form>
</body>
</html>
EOF;
}
// ------------------------------------------------------------
// Login Page Template
// ------------------------------------------------------------
function login_page( $msg='' )
{
$output = "";
if ( $msg )
{
$extra = "<div class='warning'>
<div style='float: left; margin-right: 7px; margin-left: 5px'><img src='images/warning.gif' /></div>
<p>{$msg}</p>
</div><br />";
}
$output .= <<<EOF
<br />
<div>
<div style='float: left; margin-right: 7px; margin-left: 5px;'>
<img src='images/wizard.gif' align='absmiddle' />
</div>
<div>
Âàñ ïðèâåòñòâóåò ìàñòåð îáíîâëåíèÿ {$this->product_name}. Îí ïîìîæåò âàì îáíîâèòü óñòàíîâëåííûé ïðîäóêò äî ïîñëåäíåé âåðñèè.
</div>
</div>
<br/>{$extra}
<h3>Îáÿçàòåëüíàÿ ïðîâåðêà &mdash; àâòîðèçàöèÿ</h3>
Äëÿ ðàáîòû ñ ìàñòåðîì âàì íåîáõîäèìî âîéòè â ñèñòåìó ïîä ó÷åòíîé çàïèñüþ ñ ïðàâàìè àäìèíèñòðàòîðà.<br />
<br />
<table width='100%' cellspacing='0' cellpadding='5' align='center' border='0'>
<tr>
<td width='40%' valign='middle'>Âàø
EOF;
if( $this->ipsclass->login_type == 'username' )
{
$output .= <<<EOF
ëîãèí
EOF;
}
else
{
$output .= <<<EOF
e-mail
EOF;
}
$output .= <<<EOF
:</td>
<td width='60%' valign='middle'><input type='text' style='width:100%' name='username' value='' class='sql_form'></td>
</tr>
<tr>
<td width='40%' valign='middle'>Âàø ïàðîëü:</td>
<td width='60%' valign='middle'><input type='password' style='width:100%' name='password' value='' class='sql_form'></td>
</tr>
</table>
EOF;
return $output;
}
// ------------------------------------------------------------
// Overview Page Template
// ------------------------------------------------------------
function overview_page( $current_version, $summary )
{
return <<<EOF
<br />
<div>
<div style='float: left; margin-right: 7px; margin-left: 5px;'>
<img src='images/wizard.gif' align='absmiddle' />
</div>
<div>
Âàñ ïðèâåòñòâóåò ìàñòåð îáíîâëåíèÿ {$this->product_name}. Îí ïîìîæåò âàì îáíîâèòü óñòàíîâëåííûé ïðîäóêò äî ïîñëåäíåé âåðñèè.
</div>
</div>
<br/>
<h3>Èíôîðìàöèÿ</h3>
Òåêóùàÿ âåðñèÿ: $current_version.<br />
Ìàñòåð îñóùåñòâèò $summary<br />
<br />
EOF;
}
// ------------------------------------------------------------
// EULA Page Template
// ------------------------------------------------------------
function eula_page( $eula )
{
return <<<EOF
<script language='javascript'>
check_eula = function()
{
if( document.getElementById( 'eula' ).checked == true )
{
return true;
}
else
{
alert( 'Âû äîëæíû ïðèíÿòü ïîëüçîâàòåëüñêîå ñîãëàøåíèå, ïðåæäå ÷åì ïðîäîëæèòü îáíîâëåíèå' );
return false;
}
}
document.getElementById( 'install-form' ).onsubmit = check_eula;
</script>
Ïîæàëóéñòà ïðî÷èòàéòå è ïðèìèòå ïîëüçîâàòåëüñêîå ñîãëàøåíèå.<br /><br />
<div class='eula'>
$eula
</div>
<input type='checkbox' name='eula' id='eula'><strong> ß ïðèíèìàþ</strong>
EOF;
}
// ------------------------------------------------------------
// Install Page Splash Template
// ------------------------------------------------------------
function install_page( $show_manual=0 )
{
$output = "";
$output = <<<EOF
<br />
Ìàñòåð ñîáðàë âñå äàííûå è ãîòîâ íà÷àòü îáíîâëåíèå {$this->product_name}. Íàæìèòå <strong>Çàïóñòèòü îáíîâëåíèå</strong> äëÿ çàïóñêà àâòîìàòè÷åñêîãî ïðîöåññà îáíîâëåíèÿ ïðîäóêòà!<br /><br />
<ul id='links'>
<li><img src='images/link.gif' align='absmiddle' /> <input type='checkbox' name='helpfile' id='helpfile' value='1' checked='checked' /> Îáíîâèòü ðàçäåëû ïîìîùè, åñëè áóäóò íàéäåíû ðàçëè÷èÿ.</li>
EOF;
if( $show_manual == 1 )
{
$output .= <<<EOF
<li><img src='images/link.gif' align='absmiddle' /> <input type='checkbox' name='man' id='man' value='1' /> Ïîêàçûâàòü SQL çàïðîñû äëÿ ðó÷íîãî îáíîâëåíèÿ (äëÿ áîëüøèõ ôîðóìîâ). <b>Âíèìàíèå:</b> âàì áóäåò íåîáõîäèìî âûïîëíèòü âñå SQL çàïðîñû, âûâîäèìûå ìàñòåðîì, â mysql shell (êîììàíäíîé ñòðîêå). Åñëè âû ïëîõî ïðåäñòàâëÿåòå ñåáå ÷òî ýòî, ïîæàëóéñòà îáðàòèòåñü â <a href="http://www.ibresource.ru/clientarea/" target="blank">íàøó ñëóæáó ïîääåðæêè</a>.</li>
EOF;
}
$output .= <<<EOF
</ul>
<br /><br />
<div style='float: right'>
<input type='submit' class='nav_button' value='Çàïóñòèòü îáíîâëåíèå...'>
</div>
EOF;
return $output;
}
// ------------------------------------------------------------
// Install Page Refresh Template
// ------------------------------------------------------------
function install_page_refresh( $output=array() )
{
$HTML = <<<EOF
<script type='text/javascript'>
//<![CDATA[
setTimeout("form_redirect()",2000);
function form_redirect()
{
document.getElementById( 'install-form' ).submit();
}
//]]>
</script>
<ul id='auto_progress'>
EOF;
foreach( $output as $l )
{
$HTML .= <<<EOF
<li><img src='images/check.gif' align='absmiddle' /> $l</li>
EOF;
}
$HTML .= <<<EOF
</ul>
<br />
<div style='float: right'>
<input type='submit' class='nav_button' value='Íàæìèòå ñþäà, åñëè âàñ íå ïåðåìåñòèëî àâòîìàòè÷åñêè' />
</div>
EOF;
return $HTML;
}
// ------------------------------------------------------------
// Install Progress Screen
// ------------------------------------------------------------
function install_progress( $line )
{
$HTML = <<<EOF
<ul id='auto_progress'>
EOF;
foreach( $line as $l )
{
$HTML .= <<<EOF
<li><img src='images/check.gif' align='absmiddle' /> $l</li>
EOF;
}
$HTML .= <<<EOF
</ul>
EOF;
return $HTML;
}
// ------------------------------------------------------------
// Install Skin Revert
// ------------------------------------------------------------
function install_template_skinrevert( $skin_name="" )
{
$HTML = <<<EOF
<br /><h3><b>Óäàëåíèå èçìåíåíèé â ñòèëÿõ</b></h3><br />
Âî âðåìÿ îáíîâëåíèÿ ÷àñòî âîçíèêàåò íåîáõîäèìîñòü âíîñèòü èçìåíåíèÿ â øàáëîíû ñòèëÿ ÷òîáû èñïðàâèòü îøèáêè è äîáàâèòü íîâûå âîçìîæíîñòè.<br /><br />
Åñëè âû íå çàõîòèòå óäàëÿòü èçìåíåíèÿ â øàáëîíàõ ñòèëÿ, ìàñòåð îáíîâëåíèÿ íå ñìîæåò âíåñòè èçìåíåíèÿ. Îäíàêî åñëè âû óäàëèòå èçìåíåíèÿ â ñòèëÿõ
âû <i><b>ïîòåðÿåòå</b></i> âñþ ïðîäåëàííóþ ðàáîòó ïî èçìåíåíèþ ñòàíäàðòíîãî ñòèëÿ.<br /><br />
Ïî-ýòîìó ìû ðåêîììåíäóåì âàì óäàëÿòü èçìåíåíèÿ â ñòèëå òîëüêî â òîì ñëó÷àå, åñëè èçìåíåíèé áûëî ìàëî. Åñëè æå ó âàñ ñîáñòâåííûé ñòèëü èëè áîëüøîå êîëè÷åñòâî
èçìåíåíèé â øàáëîíàõ îò ìîäèôèêàöèé ìû ðåêîììåíäóåì îòêëþ÷èòü îïöèþ óäàëåíèÿ èçìåíåíèé è âîñïîëüçîâàòüñÿ èíñòðóìåíòîì ñðàâíåíèÿ ñòèëåé äëÿ äîáàâëåíèÿ èçìåíåíèé
â ðó÷íóþ.<br /><br />
<h3>Âû æåëàåòå óäàëèòü èçìåíåíèÿ â øàáëîíàõ ñòèëÿ &laquo;<b>{$skin_name}</b>&raquo;?</h3>
<ul id='links'>
<li><img src='images/link.gif' align='absmiddle' /> <input type='radio' name='do' value='all' /> Óäàëèòü èçìåíåíèÿ â øàáëîíàõ âñåõ ñòèëåé</li>
<li><img src='images/link.gif' align='absmiddle' /> <input type='radio' name='do' value='1' /> Óäàëèòü èçìåíåíèÿ â øàáëîíàõ ñòèëÿ &laquo;{$skin_name}&raquo;</li>
<li><img src='images/link.gif' align='absmiddle' /> <input type='radio' name='do' value='none' /> Íå óäàëÿòü èçìåíåíèÿ â øàáëîíàõ âñåõ ñòèëåé</li>
<li><img src='images/link.gif' align='absmiddle' /> <input type='radio' name='do' value='0' /> Íå óäàëÿòü èçìåíåíèÿ â øàáëîíàõ ñòèëÿ &laquo;{$skin_name}&raquo;</li>
</ul>
EOF;
return $HTML;
}
// ------------------------------------------------------------
// Install Done Screen
// ------------------------------------------------------------
function install_done( $url )
{
$HTML .= <<<EOF
<br />
<img src='images/install_done.gif' align='absmiddle' />&nbsp;&nbsp;<span class='done_text'>Îáíîâëåíèå çàâåðøåíî!</span><br /><br />
Ïîçäðàâëÿåì, îáíîâëåíèå <a href='$url'>{$this->product_name}</a> çàâåðøåíî!<br /><br />
Âû ñåé÷àñ äîëæíû çàéòè â àäìèíöåíòð è çàïóñòèòü óòèëèòû &laquo;Îáíîâëåíèå ñîäåðæèìîãî ñîîáùåíèé&raquo; è &laquo;Îáíîâëåíèå èíôîðìàöèè î ïðèêðåïëåííûõ ôàéëàõ&raquo; â ìåíþ ÍÀÑÒÐÎÉÊÈ -> Ïåðåñ÷åò è îáíîâëåíèå.
Ïî æåëàíèþ âû òàêæå ìîæåòå çàïóñòèòü óòèëèòû ìåæäó 2.1 è 2.2 â ðàçäåëå &laquo;Èíñòðóìåíòû î÷èñòêè&raquo;.
<br /><br />Íèæå ïðèâåäåíû íåñêîëüêî ïîëåçíûõ ññûëîê, êîòîðûå ïîìîãóò â âàøåé ðàáîòå.<br /><br /><br />
<h3>Ïîëåçíûå ññûëêè</h3>
<ul id='links'>
<li><img src='images/link.gif' align='absmiddle' /> <a href='http://external.iblink.ru/clientarea'>Êëèåíò-öåíòð</a></li>
<li><img src='images/link.gif' align='absmiddle' /> <a href='http://external.iblink.ru/docs-ipb'>Äîêóìåíòàöèÿ</a></li>
<li><img src='images/link.gif' align='absmiddle' /> <a href='http://www.ibresource.ru/forums/'>Ôîðóìû êîìïàíèè</a></li>
<li><img src='images/link.gif' align='absmiddle' /> <a href='http://external.iblink.ru/wiki'>Invison Power Book</a></li>
587 <li><img src='images/link.gif' align='absmiddle' /> <a href='http://external.ipslink.com/ipboard22/landing/?p=forums'>Ôîðóìû êîìïàíèè IPS</a></li>
</ul>
EOF;
return $HTML;
}
// ------------------------------------------------------------
// Warning Message Template
// ------------------------------------------------------------
function warning( $messages )
{
$HTML = <<<EOF
<br />
<div class='warning'>
<div style='float: left; margin-right: 7px; margin-left: 5px'><img src='images/warning.gif' /></div>
EOF;
foreach( $messages as $msg )
{
$HTML .= "<p>$msg</p>";
}
$HTML .= <<<EOF
</div><br />
EOF;
$this->append( $HTML );
}
}
?>