Version 2.2.2

This commit is contained in:
Neo committed 2025-12-19 00:24:35 -08:00
1 parent 22f1b963ee
commit a3bb603c96
858 files changed
+479463 -188140

No files matched your search

+26
View File
@@ -1,4 +1,30 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.2.2
| Invision Power Board INSTALLER
| ========================================
| 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: Monday 05th of March 2007 10:10:55 PM
| Release: e3790216629e5a2aaf37070b32237f06
| 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
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+----------------------------------------------------------------------------
| Action controller for done page
+----------------------------------------------------------------------------
*/
/**
* Invision Power Board
* Action controller for done page
+31
View File
@@ -1,4 +1,30 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.2.2
| Invision Power Board INSTALLER
| ========================================
| 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: Monday 05th of March 2007 10:10:55 PM
| Release: e3790216629e5a2aaf37070b32237f06
| 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
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+----------------------------------------------------------------------------
| Action controller for EULA page
+----------------------------------------------------------------------------
*/
/**
* Invision Power Board
* Action controller for EULA page
@@ -15,6 +41,11 @@ class action_eula
function run()
{
if( isset($this->install->ipsclass->input['mysql_codepage']) AND $this->install->ipsclass->input['mysql_codepage'] != 'none' )
{
$this->install->saved_data['mysql_codepage'] = $this->install->ipsclass->input['mysql_codepage'];
}
/* Page Output */
$this->install->template->append( $this->install->template->eula_page( nl2br($this->install->product_license) ) );
$this->install->template->next_action = '?p=install';
File diff suppressed because it is too large. Load diff
+18
View File
@@ -11,6 +11,24 @@ class action_login
function action_login( & $install )
{
$this->install =& $install;
$this->install->ipsclass->login_type = 'username';
if( $this->install->ipsclass->DB->field_exists( "conf_id", "conf_settings" ) )
{
$this->install->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'conf_settings', 'where' => "conf_key IN('ipbli_usertype','converge_login_method')", 'order' => 'conf_key ASC' ) );
$this->install->ipsclass->DB->exec_query();
while( $r = $this->install->ipsclass->DB->fetch_row() )
{
$r['conf_value'] = $r['conf_value'] ? $r['conf_value'] : $r['conf_default'];
if( $r['conf_value'] )
{
$this->install->ipsclass->login_type = $r['conf_value'];
}
}
}
}
function run()
+146 -103
View File
@@ -11,6 +11,24 @@ class action_overview
function action_overview( & $install )
{
$this->install =& $install;
$this->install->ipsclass->login_type = 'username';
if( $this->install->ipsclass->DB->field_exists( "conf_id", "conf_settings" ) )
{
$this->install->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'conf_settings', 'where' => "conf_key IN('ipbli_usertype','converge_login_method')", 'order' => 'conf_key ASC' ) );
$this->install->ipsclass->DB->exec_query();
while( $r = $this->install->ipsclass->DB->fetch_row() )
{
$r['conf_value'] = $r['conf_value'] ? $r['conf_value'] : $r['conf_default'];
if( $r['conf_value'] )
{
$this->install->ipsclass->login_type = $r['conf_value'];
}
}
}
}
function run()
@@ -22,109 +40,118 @@ class action_overview
if ( empty($this->install->ipsclass->input['username']) )
{
$this->install->template->append( $this->install->template->login_page( "You must enter a username before proceeding" ) );
$this->install->template->append( $this->install->template->login_page( "Íåîáõîäèìî óêàçàòü èìÿ ïîëüçîâàòåëÿ" ) );
$this->install->template->next_action = '?p=overview';
return;
}
$this->install->ipsclass->input['username'] = str_replace( '|', '&#124;', $this->install->ipsclass->input['username'] );
if ( empty($this->install->ipsclass->input['password']) )
{
$this->install->template->append( $this->install->template->login_page( "You must enter a password before proceeding" ) );
$this->install->template->append( $this->install->template->login_page( "Íåîáõîäèìî óêàçàòü ïàðîëü" ) );
$this->install->template->next_action = '?p=overview';
return;
}
//----------------------------------
// Attempt to get the details from the
// DB
//----------------------------------
$this->install->ipsclass->DB->query("SELECT m.*, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE LOWER(name)='".strtolower($this->install->ipsclass->input['username'])."'");
$mem = $this->install->ipsclass->DB->fetch_row();
//----------------------------------
// Attempt to get the details from the
// DB
//----------------------------------
if( $this->install->ipsclass->login_type == 'username' )
{
$this->install->ipsclass->DB->query("SELECT m.*, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE LOWER(name)='".strtolower($this->install->ipsclass->input['username'])."'");
}
else
{
$this->install->ipsclass->DB->query("SELECT m.*, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE LOWER(email)='".strtolower($this->install->ipsclass->input['username'])."'");
}
$mem = $this->install->ipsclass->DB->fetch_row();
//----------------------------------
// Get perms
//----------------------------------
if ( empty($mem['id']) )
{
$this->install->template->append( $this->install->template->login_page( "Could not find a record matching that username, please check the spelling" ) );
$this->install->template->next_action = '?p=overview';
return;
}
//----------------------------------
// Load converge member
//----------------------------------
if( !$this->install->ipsclass->DB->field_exists( 'converge_id', 'members_converge' ) OR
( isset($this->install->saved_data['vid']) AND $this->install->saved_data['vid'] < 10003 ) )
{
$pass = md5( $this->install->ipsclass->input['password'] );
if ( $pass != $mem['password'] AND $pass != $mem['legacy_password'] )
{
$this->install->template->append( $this->install->template->login_page( "The password you entered is not correct" ) );
$this->install->template->next_action = '?p=overview';
return;
}
else
{
if ($mem['g_access_cp'] != 1)
{
$this->install->template->append( $this->install->template->login_page( "You do not have access to the administrative CP" ) );
$this->install->template->next_action = '?p=overview';
return;
}
else
{
$this->install->ipsclass->member = $mem;
$this->install->saved_data['loginkey'] = $mem['password'] ? md5($mem['password']) : md5($mem['legacy_password']);
$this->install->saved_data['securekey'] = $this->install->ipsclass->return_md5_check();
$this->install->saved_data['mid'] = $mem['id'];
}
}
}
else
{
$this->install->ipsclass->converge->converge_load_member($mem['email']);
if ( ! $this->install->ipsclass->converge->member['converge_id'] )
{
$this->install->template->append( $this->install->template->login_page( "Could not find a record matching that username, please check the spelling" ) );
$this->install->template->next_action = '?p=overview';
return;
}
//----------------------------------
// Get perms
//----------------------------------
if ( empty($mem['id']) )
{
$this->install->template->append( $this->install->template->login_page( "Ïîëüçîâàòåëü ñ óêàçàííûìè èìåíåì íå ñóùåñòâóåò â ñèñòåìå" ) );
$this->install->template->next_action = '?p=overview';
return;
}
//----------------------------------
// Load converge member
//----------------------------------
if( !$this->install->ipsclass->DB->field_exists( 'converge_id', 'members_converge' ) OR
( isset($this->install->saved_data['vid']) AND $this->install->saved_data['vid'] < 10003 ) )
{
$pass = md5( $this->install->ipsclass->input['password'] );
if ( $pass != $mem['password'] AND $pass != $mem['legacy_password'] )
{
$this->install->template->append( $this->install->template->login_page( "Ââåäåííûé ïàðîëü íåâåðåí" ) );
$this->install->template->next_action = '?p=overview';
return;
}
else
{
if ($mem['g_access_cp'] != 1)
{
$this->install->template->append( $this->install->template->login_page( "Âû íå îáëàäàåòå ïðàâàìè àäìèíèñòðàòîðà" ) );
$this->install->template->next_action = '?p=overview';
return;
}
else
{
$this->install->ipsclass->member = $mem;
$this->install->saved_data['loginkey'] = $mem['password'] ? md5($mem['password']) : md5($mem['legacy_password']);
$this->install->saved_data['securekey'] = $this->install->ipsclass->return_md5_check();
$this->install->saved_data['mid'] = $mem['id'];
}
}
}
else
{
$this->install->ipsclass->converge->converge_load_member($mem['email']);
if ( ! $this->install->ipsclass->converge->member['converge_id'] )
{
$this->install->template->append( $this->install->template->login_page( "Ïîëüçîâàòåëü ñ óêàçàííûìè email íå ñóùåñòâóåò â ñèñòåìå" ) );
$this->install->template->next_action = '?p=overview';
return;
}
//----------------------------------
// Check converge pass
//----------------------------------
//----------------------------------
// Check converge pass
//----------------------------------
$pass = md5( $this->install->ipsclass->input['password'] );
if ( $this->install->ipsclass->converge->converge_authenticate_member( $pass ) != TRUE )
{
$this->install->template->append( $this->install->template->login_page( "The password you entered is not correct" ) );
$this->install->template->next_action = '?p=overview';
return;
}
else
{
if ($mem['g_access_cp'] != 1)
{
$this->install->template->append( $this->install->template->login_page( "You do not have access to the administrative CP" ) );
$this->install->template->next_action = '?p=overview';
return;
}
else
{
$this->install->ipsclass->member = $mem;
$this->install->saved_data['loginkey'] = $mem['member_login_key'];
$this->install->saved_data['securekey'] = $this->install->ipsclass->return_md5_check();
$this->install->saved_data['mid'] = $mem['id'];
}
}
}
$pass = md5( $this->install->ipsclass->input['password'] );
if ( $this->install->ipsclass->converge->converge_authenticate_member( $pass ) != TRUE )
{
$this->install->template->append( $this->install->template->login_page( "Ââåäåííûé ïàðîëü íåâåðåí" ) );
$this->install->template->next_action = '?p=overview';
return;
}
else
{
if ($mem['g_access_cp'] != 1)
{
$this->install->template->append( $this->install->template->login_page( "Âû íå îáëàäàåòå ïðàâàìè àäìèíèñòðàòîðà" ) );
$this->install->template->next_action = '?p=overview';
return;
}
else
{
$this->install->ipsclass->member = $mem;
$this->install->saved_data['loginkey'] = $mem['member_login_key'];
$this->install->saved_data['securekey'] = $this->install->ipsclass->return_md5_check();
$this->install->saved_data['mid'] = $mem['id'];
}
}
}
$this->install->get_version_latest();
@@ -132,19 +159,19 @@ class action_overview
$error = array();
if ( ! $this->install->last_poss_id )
{
$error[] = "An error has occured, we are unable to determine the current version or if there are any required upgrade files left to run";
$error[] = "Íå óäàëîñü îïðåäåëèòü ïîñëåäíþþ äîñòóïíóþ âåðñèþ ïðîäóêòà.";
}
if ( count($this->install->versions) == 0 )
{
$error[] = "Could not locate the required upgrade script: 'upg_{$this->install->last_poss_id}/version_history.php'";
$error[] = "Íå óäàëîñü íàéòè ñêðèïò äëÿ îáíîâëåíèÿ: 'upg_{$this->install->last_poss_id}/version_history.php'";
}
if ( ! $this->install->current_version )
{
$error[] = "An error has occured, we are unable to determine the current version or if there are any required upgrade files left to run";
$error[] = "Íå óäàëîñü îïðåäåëèòü âåðñèþ óñòàíîâëåííîãî ïðîäóêòà";
}
if ( $this->install->last_poss_id <= $this->install->current_version )
if ( $this->install->last_poss_id AND $this->install->last_poss_id <= $this->install->current_version )
{
$error[] = "Your installation is up to date; no upgrade required";
$error[] = "Ó âàñ óñòàíîâëåíà ïîñëåäíÿÿ äîñòóïíàÿ âåðñèÿ ïðîäóêòà. Îáíîâëåíèå íå òðåáóåòñÿ.";
}
$checkfiles = array( ROOT_PATH ."resources/ipb_templates.xml",
@@ -181,7 +208,7 @@ class action_overview
{
if ( ! file_exists($cf) )
{
$error[] = "Cannot locate the file '$cf'.";
$error[] = "Ìàñòåð íå ñìîã íàéòè íåîáõîäèìûé äëÿ ðàáîòû ôàéë '$cf'.";
}
}
@@ -189,7 +216,7 @@ class action_overview
{
if ( ! is_writeable($cf) )
{
$error[] = "Cannot write to the file or folder '$cf'. Please CHMOD to 0777.";
$error[] = "Ðåñóðñ (ôàéë èëè äèðåêòîðèÿ) '$cf' íå äîñòóïåí äëÿ çàïèñè. Ïîæàëóéñòà èçìåíèòå CHMOD íà 0777.";
}
}
@@ -201,7 +228,7 @@ class action_overview
return;
}
$current_version = $this->install->current_version == '00000' ? 'not installed' : $this->install->versions[ $this->install->current_version ];
$current_version = $this->install->current_version == '00000' ? 'íå óñòàíîâëåí' : $this->install->versions[ $this->install->current_version ];
if ( $this->install->current_version == '00000' )
{
@@ -209,14 +236,14 @@ class action_overview
}
else
{
$summary .= "Upgrade from ".$this->install->versions[ $this->install->current_version ]." to ".$this->install->versions[ $this->install->last_poss_id ];
$summary .= "îáíîâëåíèå ".$this->install->versions[ $this->install->current_version ]." äî âåðñèè ".$this->install->versions[ $this->install->last_poss_id ];
}
//-----------------------------------------
// Time check...
//-----------------------------------------
$summary .= "<br /><br /><strong>Checking 'resources' directory files</strong>";
$summary .= "<br /><br /><strong>Ïðîâåðêà âàëèäíîñòè ðåñóðñ-ôàéëîâ</strong>";
$_flag = 0;
foreach ( $timecheck as $cf )
@@ -226,19 +253,35 @@ class action_overview
if ( $time_to_check AND $_time AND ( ( $time_to_check - (86400 * 7) ) > $_time ) )
{
$_flag = 1;
$summary .= "<div style='color:red'>&middot;" . str_replace( ROOT_PATH, '', $cf ) . ' may be out of date</div>';
$summary .= "<div style='color:red'>&middot;" . str_replace( ROOT_PATH, '', $cf ) . ' ìîæåò áûòü óñòàðåâøèì</div>';
}
}
if ( $_flag )
{
$summary .= "<br /><div>Please check the above files to make sure they have been uploaded from the ".$this->install->versions[ $this->install->last_poss_id ]." download";
$summary .= "<br /><div>Ïîæàëóéñòà óáåäèòåñü, ÷òî ôàéëû èç ñïèñêà çàêà÷àíû èç äèñòðèáóòèâà ".$this->install->versions[ $this->install->last_poss_id ]." âåðñèè";
}
else
{
$summary .= "<div style='color:green'>All files checked OK</div>";
$summary .= "<div style='color:green'>Âñå ðåñóðñ-ôàéëû âàëèäíû</div>";
}
if ( $cp = $this->install->get_db_codepage() )
{
$summary .= "
<br />
<strong>Êîäèðîâêà òàáëèö â MySQL</strong>
<table width='100%' cellspacing='0' cellpadding='0' align='left' border='0'>
<tr>
<td class='title'><div style='color:gray; font-weight:normal;'>Íå èçìåíÿéòå, åñëè íå óâåðåíû.</div></td>
<td class='content'><input type='text' name='mysql_codepage' class='sql_form' value='" . $cp . "'></td>
</tr>
</table>";
} else {
$summary .= "<input type='hidden' name='mysql_codepage' value='none'>";
}
/* Page Output */
$this->install->template->append( $this->install->template->overview_page( $current_version, $summary ) );
$this->install->template->next_action = '?p=eula';
+58 -12
View File
@@ -1,4 +1,30 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.2.2
| Invision Power Board INSTALLER
| ========================================
| 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: Monday 05th of March 2007 10:10:55 PM
| Release: e3790216629e5a2aaf37070b32237f06
| 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
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+----------------------------------------------------------------------------
| Invision Installer Framework
+----------------------------------------------------------------------------
*/
/**
* Invision Power Board
* Invision Installer Framework
@@ -105,7 +131,7 @@ class class_installer
if ( PHP_VERSION < $this->version_php_min )
{
$errors[] = 'Your PHP installation is too old to run this product, please upgrade before continuing.';
$errors[] = 'Âåðñèÿ PHP, óñòàíîâëåííàÿ íà âàøåì ñåðâåðå, íå óäîâëåòâîðÿåò ñèñòåìíûì òðåáîâàíèÿì ïðîäóêòà. Äëÿ ïðîäîëæåíèÿ óñòàíîâêè íåîáõîäèìî îáíîâèòü PHP.';
}
/**
@@ -121,7 +147,7 @@ class class_installer
{
if( ! ( is_dir( $_d) && is_readable( $_d ) ) )
{
$errors[] = 'A required directory could not be located: "' . $_d . '"';
$errors[] = 'Íå âîçìîæíî íàéòè òðåáóåìóþ äèðåêòîðèþ: "' . $_d . '"';
}
}
}
@@ -132,7 +158,7 @@ class class_installer
{
if( ! ( file_exists( $_f) && is_readable( $_f ) ) )
{
$errors[] = 'A required file could not be located: "' . $_f . '"';
$errors[] = 'Íå âîçìîæíî íàéòè òðåáóåìûé ôàéë: "' . $_f . '"';
}
}
}
@@ -146,7 +172,7 @@ class class_installer
{
if( ! is_writeable( $_d ) )
{
$errors[] = 'Can not write to directory: "' . $_d . '", please CHMOD to 777';
$errors[] = 'Äèðåêòîðèÿ: "' . str_replace( INS_DOC_ROOT_PATH, '', $_d ) . '" íå äîñòóïíà äëÿ çàïèñè, ïîæàëóéñòà èçìåíèòå ïðàâà äîñòóïà (CHMOD) íà 777';
}
}
@@ -154,7 +180,7 @@ class class_installer
{
if( ! is_writeable( $_f ) )
{
$errors[] = 'Can not write to file: "' . $_f . '", please CHMOD to 777';
$errors[] = 'Ôàéë: "' . str_replace( INS_DOC_ROOT_PATH, '', $_f ) . '" íå äîñòóïåí äëÿ çàïèñè, ïîæàëóéñòà èçìåíèòå ïðàâà äîñòóïà (CHMOD) íà 777';
}
}
}
@@ -177,11 +203,11 @@ class class_installer
$config = $xml->xml_parse_document( $config );
// Set Info
$this->product_name = $xml->xml_array['installdata']['package']['name']['VALUE'];
$this->product_license = $xml->xml_array['installdata']['package']['license']['VALUE'];
$this->product_version = $xml->xml_array['installdata']['package']['version']['VALUE'];
$this->product_long_version = $xml->xml_array['installdata']['package']['versionlong']['VALUE'];
$this->build_id = $xml->xml_array['installdata']['package']['build']['VALUE'];
$this->product_name = $this->ipsclass->txt_convert_charsets($xml->xml_array['installdata']['package']['name']['VALUE'], 'UTF-8');
$this->product_license = $this->ipsclass->txt_convert_charsets($xml->xml_array['installdata']['package']['license']['VALUE'], 'UTF-8');
$this->product_version = $this->ipsclass->txt_convert_charsets($xml->xml_array['installdata']['package']['version']['VALUE'], 'UTF-8');
$this->product_long_version = $this->ipsclass->txt_convert_charsets($xml->xml_array['installdata']['package']['versionlong']['VALUE'], 'UTF-8');
$this->build_id = $this->ipsclass->txt_convert_charsets($xml->xml_array['installdata']['package']['build']['VALUE'], 'UTF-8');
}
/**
@@ -199,6 +225,22 @@ class class_installer
@fclose( $fh );
}
/**
* class_installer::read_file
*
* Simple method for reading a file
*
* @param string $name Full name, including path, of file to read
* @return string $content file's body
*/
function read_file( $name )
{
$fh = @fopen( $name, "r" );
$content = @fread( $fh, filesize( $name ) );
@fclose( $fh );
return $content;
}
/**
* class_installer::create_admin_converge
*
@@ -238,7 +280,7 @@ class class_installer
/* Open directory */
$dh = @opendir( $path );
while( $f = @readdir( $dh ) )
while( false !== ( $f = @readdir( $dh ) ) )
{
if( $f != '.' && $f != '..' )
{
@@ -346,7 +388,11 @@ class class_installer
{
if( !md5($member['legacy_password']) == $this->loginkey )
{
$member = array();
$this->ipsclass->DB->query( "SELECT m.*, g.* FROM ibf_members m
LEFT JOIN ibf_groups g ON ( m.mgroup=g.g_id )
WHERE m.member_login_key='{$this->loginkey}' and m.id='{$this->member_id}'" );
$member = $this->ipsclass->DB->fetch_row();
}
}
}
+1 -1
View File
@@ -10,7 +10,7 @@
* the full path
* @since 2.0.0.2005-01-01
*/
define( 'INS_ROOT_PATH', str_replace( "//", "/", str_replace( "/core", "", str_replace( "\\", "/", dirname( __FILE__ ) ) ) ) . "/" );
define( 'INS_ROOT_PATH', str_replace( "//", "/", preg_replace( "#/core$#is", "", str_replace( "\\", "/", dirname( __FILE__ ) ) ) ) . "/" );
/**
* DOC ROOT PATH
-720
View File
@@ -1,720 +0,0 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board v<{%dyn.down.var.human.version%}>
| ========================================
| by Matthew Mecham
| (c) 2001 - 2004 Invision Power Services
| http://www.invisionpower.com
| ========================================
| Web: http://www.invisionboard.com
| Time: <{%dyn.down.var.time%}>
| Release: <{%dyn.down.var.md5%}>
| Email: matt@invisionpower.com
| Licence Info: http://www.invisionboard.com/?license
+---------------------------------------------------------------------------
|
| > IPB UPGRADE LOADER
| > Script written by Matt Mecham
| > Date started: 21st April 2004
| > Interesting fact: Radiohead rock (still)
+--------------------------------------------------------------------------
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
class core_functions
{
/*-------------------------------------------------------------------------*/
// CONSTRUCTOR
/*-------------------------------------------------------------------------*/
function core_functions()
{
}
/*-------------------------------------------------------------------------*/
// FINISH _EVERYTHING_
/*-------------------------------------------------------------------------*/
function upgrade_complete()
{
$this->ipsclass->template->content .= "
<div class='tableborder'>
<div class='maintitle'>IPB Upgrade Complete!</div>
<div class='tdrow1' style='padding:6px'>You have now been upgraded!
<br /><br />
You may want to disable permissions on the script 'upgrade/index.php' to increase security or rename the 'upgrade' directory.
</div>
</div>
";
$this->ipsclass->template->output();
}
/*-------------------------------------------------------------------------*/
// Continue with error
/*-------------------------------------------------------------------------*/
function show_error( $msg, $nextact )
{
$this->ipsclass->template->content .= "
<div class='tableborder'>
<div class='maintitle'>Error!</div>
<div class='tdrow1' style='padding:6px'>The following database error(s) were returned:</b>
<br /><br />$msg
<div align='center'><span style='font-weight:bold;font-size:14px'>&raquo; <a href='index.php?act={$nextact}&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}'>Continue regardless?</a></span></div>
</div>
</div>
";
$this->ipsclass->template->output();
}
/*-------------------------------------------------------------------------*/
// REBUILD TEMPLATES
/*-------------------------------------------------------------------------*/
function rebuild_templates_cache()
{
//-----------------------------------
// Get ACP library
//-----------------------------------
require_once( ROOT_PATH.'sources/lib/admin_cache_functions.php' );
$acp = new admin_cache_functions();
$acp->ipsclass =& $this->ipsclass;
$justdone = intval($this->ipsclass->input['justdone']);
$justdone = $justdone ? $justdone : 1;
//-----------------------------------
// Get skins
//-----------------------------------
$this->ipsclass->DB->simple_construct( array( 'select' => '*',
'from' => 'skin_sets',
'where' => 'set_skin_set_id > '.$justdone,
'order' => 'set_skin_set_id',
'limit' => array( 0, 1 )
) );
$this->ipsclass->DB->simple_exec();
//-----------------------------------
// Got a biggun?
//-----------------------------------
$r = $this->ipsclass->DB->fetch_row();
if ( $r['set_skin_set_id'] )
{
$acp->_rebuild_all_caches( array($r['set_skin_set_id']) );
$extra = implode( "<br />", $acp->messages );
$this->ipsclass->core->redirect( "index.php?act=templatescache&justdone={$r['set_skin_set_id']}&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "Rebuild cache for skin set {$r['set_name']}<br />{$extra}<br />Proceeding to the next skin..." );
}
else
{
$this->ipsclass->core->redirect( "index.php?act=finish&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "No more skins to rebuild..." );
}
}
/*-------------------------------------------------------------------------*/
// REBUILD TEMPLATES
/*-------------------------------------------------------------------------*/
function rebuild_templates()
{
//-----------------------------------
// Get XML
//-----------------------------------
require_once( KERNEL_PATH.'class_xml.php' );
$xml = new class_xml();
$xml->lite_parser = 1;
//-----------------------------------
// Get XML file (TEMPLATES)
//-----------------------------------
$xmlfile = ROOT_PATH.'ipb_templates.xml';
$setting_content = implode( "", file($xmlfile) );
//-------------------------------
// Unpack the datafile (TEMPLATES)
//-------------------------------
$xml->xml_parse_document( $setting_content );
//-------------------------------
// (TEMPLATES)
//-------------------------------
if ( ! is_array( $xml->xml_array['templateexport']['templategroup']['template'] ) )
{
install_error("Error with ipb_templates.xml - could not process XML properly");
}
foreach( $xml->xml_array['templateexport']['templategroup']['template'] as $id => $entry )
{
$row = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'suid',
'from' => 'skin_templates',
'where' => "group_name='{$entry[ 'group_name' ]['VALUE']}' AND func_name='{$entry[ 'func_name' ]['VALUE']}' and set_id=1"
) );
if ( $row['suid'] )
{
$this->ipsclass->DB->do_update( 'skin_templates', array( 'func_data' => $entry[ 'func_data' ]['VALUE'],
'section_content' => $entry[ 'section_content' ]['VALUE'],
'updated' => time()
)
, 'suid='.$row['suid'] );
}
else
{
$this->ipsclass->DB->do_insert( 'skin_templates', array( 'func_data' => $entry[ 'func_data' ]['VALUE'],
'func_name' => $entry[ 'func_name' ]['VALUE'],
'section_content' => $entry[ 'section_content' ]['VALUE'],
'group_name' => $entry[ 'group_name' ]['VALUE'],
'updated' => time(),
'set_id' => 1
) );
}
}
//-----------------------------------
// Boink..
//-----------------------------------
$this->ipsclass->core->redirect( "index.php?act=templatescache&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "Master templates rebuilt, proceeding to recache templates..." );
}
/*-------------------------------------------------------------------------*/
// REBUILD CACHES
/*-------------------------------------------------------------------------*/
function rebuild_caches()
{
//-------------------------------------------------------------
// BBCODE
//-------------------------------------------------------------
$this->ipsclass->cache['bbcode'] = array();
$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'custom_bbcode' ) );
$bbcode = $this->ipsclass->DB->simple_exec();
while ( $r = $this->ipsclass->DB->fetch_row($bbcode) )
{
$this->ipsclass->cache['bbcode'][] = $r;
}
$this->ipsclass->update_cache( array( 'name' => 'bbcode', 'array' => 1, 'deletefirst' => 1 ) );
//-------------------------------------------------------------
// Forum cache
//-------------------------------------------------------------
$this->ipsclass->update_forum_cache();
//-------------------------------------------------------------
// Group Cache
//-------------------------------------------------------------
$this->ipsclass->cache['group_cache'] = array();
$this->ipsclass->DB->simple_construct( array( 'select' => "*",
'from' => 'groups'
) );
$this->ipsclass->DB->simple_exec();
while ( $i = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->cache['group_cache'][ $i['g_id'] ] = $i;
}
$this->ipsclass->update_cache( array( 'name' => 'group_cache', 'array' => 1, 'deletefirst' => 1 ) );
//-------------------------------------------------------------
// Systemvars
//-------------------------------------------------------------
$this->ipsclass->cache['systemvars'] = array();
$result = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'count(*) as cnt', 'from' => 'mail_queue' ) );
$this->ipsclass->cache['systemvars']['mail_queue'] = intval( $result['cnt'] );
$this->ipsclass->cache['systemvars']['task_next_run'] = time() + 3600;
$this->ipsclass->update_cache( array( 'name' => 'systemvars', 'array' => 1, 'deletefirst' => 1 ) );
//-----------------------------------------
// Moderators
//-----------------------------------------
$this->ipsclass->cache['moderators'] = array();
require_once( ROOT_PATH.'sources/action_admin/moderator.php' );
$mod = new ad_moderator();
$mod->ipsclass =& $this->ipsclass;
$mod->rebuild_moderator_cache();
//-----------------------------------------
// Cal events / Birthdays
//-----------------------------------------
require_once( ROOT_PATH . 'sources/action_admin/calendars.php' );
$calendars = new ad_calendars();
$calendars->ipsclass =& $this->ipsclass;
$calendars->calendar_rebuildcache( 0 );
//-------------------------------------------------------------
// Ranks
//-------------------------------------------------------------
$this->ipsclass->cache['ranks'] = array();
$this->ipsclass->DB->simple_construct( array( 'select' => 'id, title, pips, posts',
'from' => 'titles',
'order' => "posts DESC",
) );
$this->ipsclass->DB->simple_exec();
while ($i = $this->ipsclass->DB->fetch_row())
{
$this->ipsclass->cache['ranks'][ $i['id'] ] = array(
'TITLE' => $i['title'],
'PIPS' => $i['pips'],
'POSTS' => $i['posts'],
);
}
$this->ipsclass->update_cache( array( 'name' => 'ranks', 'array' => 1, 'deletefirst' => 1 ) );
//-------------------------------------------------------------
// SETTINGS
//-------------------------------------------------------------
require_once( ROOT_PATH . 'sources/action_admin/settings.php' );
$settings = new ad_settings();
$settings->ipsclass =& $this->ipsclass;
$settings->setting_rebuildcache();
//-------------------------------------------------------------
// EMOTICONS
//-------------------------------------------------------------
require_once( ROOT_PATH . 'sources/action_admin/emoticons.php' );
$emoticons = new ad_emoticons();
$emoticons->ipsclass =& $this->ipsclass;
$emoticons->emoticon_rebuildcache();
//-------------------------------------------------------------
// LANGUAGES
//-------------------------------------------------------------
$this->ipsclass->cache['languages'] = array();
$this->ipsclass->DB->simple_construct( array( 'select' => 'ldir,lname', 'from' => 'languages' ) );
$this->ipsclass->DB->simple_exec();
while ( $r = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->cache['languages'][] = $r;
}
$this->ipsclass->update_cache( array( 'name' => 'languages', 'array' => 1, 'deletefirst' => 1 ) );
//-------------------------------------------------------------
// ATTACHMENT TYPES
//-------------------------------------------------------------
$this->ipsclass->cache['attachtypes'] = array();
$this->ipsclass->DB->simple_construct( array( 'select' => 'atype_extension,atype_mimetype,atype_post,atype_photo,atype_img', 'from' => 'attachments_type', 'where' => "atype_photo=1 OR atype_post=1" ) );
$this->ipsclass->DB->simple_exec();
while ( $r = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->cache['attachtypes'][ $r['atype_extension'] ] = $r;
}
$this->ipsclass->update_cache( array( 'name' => 'attachtypes', 'array' => 1, 'deletefirst' => 1 ) );
$this->ipsclass->core->redirect( "index.php?act=templates&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}", "Caches rebuilt, proceeding to rebuild templates..." );
}
/*-------------------------------------------------------------------------*/
// MODULE RUN - Look for next, or finish up...
/*-------------------------------------------------------------------------*/
function module_complete()
{
$message = array();
//--------------------------------
// Upgrade templates
//--------------------------------
if ( @file_exists( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/components.php' ) )
{
require_once( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/components.php' );
$this->ipsclass->DB->do_update( 'skin_sets', array( 'set_css' => $CSS,
'set_cache_css' => $CSS,
'set_wrapper' => $WRAPPER,
'set_cache_wrapper' => $WRAPPER,
), 'set_skin_set_id=1' );
$message[] = "Template components updated...";
}
//--------------------------------
// ACP Perms
//--------------------------------
if ( @file_exists( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/ipb_acpperms.xml' ) )
{
//-------------------------------
// Load module...
//-------------------------------
require_once( ROOT_PATH . 'sources/action_admin/acppermissions.php' );
$settings = new ad_acppermissions();
$settings->ipsclass =& $this->ipsclass;
//-------------------------------
// Set location
//-------------------------------
$this->ipsclass->input['file_location'] = UPGRADE_DIR.'/upg_'.$this->ipsclass->current_upgrade.'/ipb_acpperms.xml';
//-------------------------------
// Run it
//-------------------------------
$settings->acpperms_xml_import( 1 );
$message[] = $this->ipsclass->main_msg;
}
//--------------------------------
// Settings
//--------------------------------
if ( @file_exists( THIS_PATH.'upg_'.$this->ipsclass->current_upgrade.'/ipb_settings_partial.xml' ) )
{
//-------------------------------
// Load module...
//-------------------------------
require_once( ROOT_PATH . 'sources/action_admin/settings.php' );
$settings = new ad_settings();
$settings->ipsclass =& $this->ipsclass;
//-------------------------------
// Set location
//-------------------------------
$this->ipsclass->input['file_location'] = UPGRADE_DIR.'/upg_'.$this->ipsclass->current_upgrade.'/ipb_settings_partial.xml';
//-------------------------------
// Run it
//-------------------------------
$settings->settings_do_import( 1 );
$message[] = $this->ipsclass->main_msg;
}
//------------------------------------------
// Update DB
//------------------------------------------
$this->ipsclass->DB->do_insert( 'upgrade_history', array( 'upgrade_version_id' => $this->ipsclass->current_upgrade,
'upgrade_version_human' => $this->ipsclass->versions[ $this->ipsclass->current_upgrade ],
'upgrade_date' => time(),
'upgrade_mid' => $this->ipsclass->input['mid']
) );
//------------------------------------------
// Anymore to run?
//------------------------------------------
if ( $this->ipsclass->last_poss_id != $this->ipsclass->current_upgrade )
{
$this->ipsclass->core->redirect( "index.php?act=work&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}",
implode( "<br />", $message ) . "<br />Upgrade module complete, moving on to the next upgrade module...." );
}
else
{
$this->ipsclass->template->content .= "
<div class='tableborder'>
<div class='maintitle'>IPB Upgrade Complete</div>
<div class='tdrow1' style='padding:6px'>".implode( "<br />", $message ) . "<br />
You have now been upgraded from {$this->ipsclass->versions[$this->ipsclass->current_version]} to {$this->ipsclass->versions[$this->ipsclass->current_upgrade]}
<br /><br />
The next few final steps will check for updated settings and recache your cached data (forums, groups, moderators, etc) and rebuild your master templates to ensure
that all the template additions and modifications are updated.
<br /><br />
<div align='center'><span style='font-weight:bold;font-size:14px'>&raquo; <a href='index.php?act=recache&loginkey={$this->ipsclass->input['loginkey']}&securekey={$this->ipsclass->input['securekey']}&mid={$this->ipsclass->input['mid']}'>Proceed...</a></span></div>
</div>
</div>
";
$this->ipsclass->template->output();
}
}
/*-------------------------------------------------------------------------*/
// Redirect
/*-------------------------------------------------------------------------*/
function redirect($url, $text, $time=2)
{
$this->ipsclass->template->content .= "<meta http-equiv='refresh' content=\"{$time}; url={$url}\">
<div class='tableborder'>
<div class='maintitle'>Redirecting</div>
<div class='tdrow1' style='padding:8px'>
<div style='font-size:12px'>$text
<br />
<br />
<center><a href='{$url}'>Click here if not redirected...</a></center>
</div>
</div>
</div>";
$this->ipsclass->template->output("Redirecting...");
}
/*-------------------------------------------------------------------------*/
// SHOW LOG IN SCREEN
/*-------------------------------------------------------------------------*/
function login_screen($msg='')
{
$alert = "";
if ( ! file_exists( ROOT_PATH.'ipb_templates.xml' ) )
{
$alert .= "<div class='warnbox'><b>Cannot locate XML templates</b><br />This should be located in 'ipb_templates.xml' please ensure this file is uploaded (recreating the file structure if needed) before continuing.
<br /><strong>Failure to upload this file will mean that your templates will not be updated.</strong></div>";
}
if ( ! is_writeable( CACHE_PATH . 'cache/skin_cache' ) )
{
$alert .= "<div class='warnbox'><strong>WARNING: cache/skin_cache is not writeable</strong><br />
Please check the CHMOD value on this folder before continuing. Failure to do so could mean that
your skin files will not be installed correctly.</div>";
}
if ( $alert )
{
$this->ipsclass->template->content .= "{$alert}";
$this->ipsclass->template->output("WARNING");
exit();
}
if ( $msg != "" )
{
$msg = "<div class='warnbox'>$msg</div><br />";
}
$this->ipsclass->template->content .= "
<form action='index.php?act=login' method='post' name='theAdminForm'>
{$msg}
<div>
<strong>You must log in with your forums administrative log in details to access the upgrade system.
<br />Upgrading from {$this->ipsclass->versions[$this->ipsclass->current_version]} to {$this->ipsclass->versions[$this->ipsclass->current_upgrade]}</strong>
</div>
<br />
<div class='tableborder'>
<div class='maintitle'>Verification Required - Please Log In</div>
<table width='100%' cellspacing='0' cellpadding='5' align='center' border='0'>
<tr>
<td class='tdrow1' width='40%' valign='middle'>Your Forums Username:</td>
<td class='tdrow2' width='60%' valign='middle'><input type='text' style='width:100%' name='username' value=''></td>
</tr>
<tr>
<td class='tdrow1' width='40%' valign='middle'>Your Forums Password:</td>
<td class='tdrow2' width='60%' valign='middle'><input type='password' style='width:100%' name='password' value=''></td>
</tr>
<tr>
<td class='pformstrip' colspan='2'><div align='center'><input type='submit' value='Log in' id='button' accesskey='s'></div></td>
</tr>
</table>
</div>
</form>";
$this->ipsclass->template->output("Log In");
}
/*-------------------------------------------------------------------------*/
// Authorise da membah
/*-------------------------------------------------------------------------*/
function get_member()
{
$member = array( 'id' => 0 );
$this->ipsclass->loginkey = $this->check_md5( isset($this->ipsclass->input['loginkey']) ? $this->ipsclass->input['loginkey'] : '' );
$this->ipsclass->securekey = $this->check_md5( isset($this->ipsclass->input['securekey']) ? $this->ipsclass->input['securekey'] : '' );
$this->ipsclass->member_id = trim(intval( isset($this->ipsclass->input['mid']) ? $this->ipsclass->input['mid'] : 0 ) );
if ( ! $this->ipsclass->loginkey or ! $this->ipsclass->securekey )
{
return $member;
}
$this->ipsclass->DB->build_query( array( 'select' => 'm.*,g.*',
'from' => array( 'members' => 'm' ),
'where' => "m.member_login_key='{$this->ipsclass->loginkey}' and m.id='{$this->ipsclass->member_id}'",
'limit' => array( 0, 1 ),
'add_join' => array( 1 => array( 'type' => 'left',
'from' => array( 'groups' => 'g' ),
'where' => 'g.g_id=m.mgroup',
) )
) );
$this->ipsclass->DB->exec_query();
$member = $this->ipsclass->DB->fetch_row();
return $member;
}
/*-------------------------------------------------------------------------*/
// Get the current version and the next version to upgrade to..
/*-------------------------------------------------------------------------*/
function get_version_latest()
{
$this->ipsclass->current_version = '';
$this->ipsclass->current_upgrade = '';
//------------------------------------------
// Copy & pop DB array and get next
// upgrade script
//------------------------------------------
$tmp = $this->ipsclass->db_contents;
$this->ipsclass->current_version = array_pop( $tmp );
//------------------------------------------
// Get the next upgrade script
//------------------------------------------
ksort( $this->ipsclass->dir_contents );
foreach( $this->ipsclass->dir_contents as $i => $a )
{
if ( $a > $this->ipsclass->current_version )
{
if ( ! $this->ipsclass->current_upgrade )
{
$this->ipsclass->current_upgrade = $a;
}
$this->ipsclass->modules_to_run[] = $this->ipsclass->versions[ $a ];
}
}
}
/*-------------------------------------------------------------------------*/
// GET INFO FROM THE DERTABASTIC
/*-------------------------------------------------------------------------*/
function get_db_structure()
{
$vers = array();
$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'upgrade_history', 'order' => 'upgrade_version_id ASC' ) );
$this->ipsclass->DB->simple_exec();
while( $r = $this->ipsclass->DB->fetch_row() )
{
$vers[ $r['upgrade_version_id'] ] = $r['upgrade_version_id'];
}
return $vers;
}
/*-------------------------------------------------------------------------*/
// Get dir structure..
/*-------------------------------------------------------------------------*/
function get_dir_structure()
{
$return = array();
//------------------------------------------
// Get the folder names
//------------------------------------------
$dh = opendir( THIS_PATH );
while ( $file = readdir( $dh ) )
{
if ( is_dir( THIS_PATH."/".$file ) )
{
if ( $file != "." && $file != ".." )
{
if ( strstr( $file, 'upg_' ) )
{
$tmp = str_replace( "upg_", "", $file );
$return[ $tmp ] = $tmp;
}
}
}
}
closedir( $dh );
sort($return);
return $return;
}
/*-------------------------------------------------------------------------*/
// Check to see if its a 'real' MD5
/*-------------------------------------------------------------------------*/
function check_md5($t)
{
$t = preg_replace( "#[^a-z0-9]#", "", trim($t) );
if ( strlen($t) != 32 )
{
return '';
}
else
{
return $t;
}
}
}
?>
+87 -50
View File
@@ -57,11 +57,11 @@ class install_template
foreach( $_pages as $position => $data )
{
$this->install_pages[ $data['file'] ] = $data['menu'];
$this->install_pages[ $data['file'] ] = $this->ipsclass->txt_convert_charsets( $data['menu'], 'UTF-8' );
}
}
$this->install_pages['done'] = 'Finish';
$this->install_pages['done'] = 'Çàâåðøåíèå';
/* Set Current Page */
$this->page_current = ( $this->ipsclass->input['p'] ) ? $this->ipsclass->input['p'] : 'login';
@@ -146,7 +146,8 @@ echo <<<EOF
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>IPS Upgrader</title>
<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>
@@ -168,7 +169,7 @@ echo <<<EOF
<div id='ipswrapper'>
<div class='main_shell'>
<h1><img src='images/package_icon.gif' align='absmiddle' /> Welcome to the IPB Upgrader</h1>
<h1><img src='images/package_icon.gif' align='absmiddle' /> Èíñòðóìåíò îáíîâëåíèÿ Invision Power Services</h1>
<div class='content_shell'>
<div class='package'>
<div>
@@ -195,7 +196,7 @@ echo <<<EOF
</div>
<div style='vertical-align: middle'>
<h2>{$this->product_name} Upgrade</h2>
<h2>Îáíîâëåíèå {$this->product_name}</h2>
<!--<strong>{$this->product_version}</strong>-->
</div>
</div>
@@ -210,7 +211,7 @@ echo <<<EOF
<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='Cancel Upgrade' onclick="window.location='index.php';return false;">
<input type='button' class='nav_button' value='Ïðåêðàòèòü îáíîâëåíèå' onclick="window.location='index.php';return false;">
</div>
<div style='float: right'>
@@ -221,19 +222,19 @@ if( ! $this->hide_next )
if( $this->next_action == 'disabled' )
{
echo <<<EOF
<input type='submit' class='nav_button' value='Upgrade can not continue...' disabled='disabled'>
<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='Continue regardless?'>
<input type='submit' class='nav_button' value='Âñå ðàâíî ïðîäîëæèòü'>
EOF;
}
else
{
echo <<<EOF
<input type='submit' class='nav_button' value='Next >'>
<input type='submit' class='nav_button' value='Äàëüøå >'>
EOF;
}
}
@@ -247,7 +248,7 @@ echo <<<EOF
EOF;
echo date("Y");
echo <<<EOF
Invision Power Services, Inc.
Invision Power Services, Inc. & IBResource, LTD
</div>
</div>
@@ -267,6 +268,7 @@ EOF;
// ------------------------------------------------------------
function login_page( $msg='' )
{
$output = "";
if ( $msg )
{
$extra = "<div class='warning'>
@@ -276,31 +278,49 @@ EOF;
}
return <<<EOF
$output .= <<<EOF
<br />
<div>
<div style='float: left; margin-right: 7px; margin-left: 5px;'>
<img src='images/wizard.gif' align='absmiddle' />
</div>
<div>
Welcome to the upgrade routine for {$this->product_name}. This wizard will guide you through the upgrade process.
Âàñ ïðèâåòñòâóåò ìàñòåð îáíîâëåíèÿ {$this->product_name}. Îí ïîìîæåò âàì îáíîâèòü óñòàíîâëåííûé ïðîäóêò äî ïîñëåäíåé âåðñèè.
</div>
</div>
<br/>{$extra}
<h3>Verification Required - Please Log In</h3>
You must log in with your forums administrative log in details to access the upgrade system.<br />
<h3>Îáÿçàòåëüíàÿ ïðîâåðêà &mdash; àâòîðèçàöèÿ</h3>
Äëÿ ðàáîòû ñ ìàñòåðîì âàì íåîáõîäèìî âîéòè â ñèñòåìó ïîä ó÷åòíîé çàïèñüþ ñ ïðàâàìè àäìèíèñòðàòîðà.<br />
<br />
<table width='100%' cellspacing='0' cellpadding='5' align='center' border='0'>
<tr>
<td width='40%' valign='middle'>Your Forum Username:</td>
<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'>Your Forum Password:</td>
<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;
}
// ------------------------------------------------------------
@@ -315,14 +335,15 @@ return <<<EOF
<img src='images/wizard.gif' align='absmiddle' />
</div>
<div>
Welcome to the upgrader for {$this->product_name}. This wizard will guide you through the upgrade process.
Âàñ ïðèâåòñòâóåò ìàñòåð îáíîâëåíèÿ {$this->product_name}. Îí ïîìîæåò âàì îáíîâèòü óñòàíîâëåííûé ïðîäóêò äî ïîñëåäíåé âåðñèè.
</div>
</div>
<br/>
<h3>Upgrade summary</h3>
Current version: $current_version.<br />
This script will: $summary<br />
<h3>Èíôîðìàöèÿ</h3>
Òåêóùàÿ âåðñèÿ: $current_version.<br />
Ìàñòåð îñóùåñòâèò $summary<br />
<br />
EOF;
}
@@ -343,7 +364,7 @@ check_eula = function()
}
else
{
alert( 'You must agree to the license before continuing' );
alert( 'Âû äîëæíû ïðèíÿòü ïîëüçîâàòåëüñêîå ñîãëàøåíèå, ïðåæäå ÷åì ïðîäîëæèòü îáíîâëåíèå' );
return false;
}
}
@@ -352,13 +373,13 @@ document.getElementById( 'install-form' ).onsubmit = check_eula;
</script>
Please read and agree to the End User License Agreement before continuing.<br /><br />
Ïîæàëóéñòà ïðî÷èòàéòå è ïðèìèòå ïîëüçîâàòåëüñêîå ñîãëàøåíèå.<br /><br />
<div class='eula'>
$eula
</div>
<input type='checkbox' name='eula' id='eula'><strong> I agree to the license agreement</strong>
<input type='checkbox' name='eula' id='eula'><strong> ß ïðèíèìàþ</strong>
EOF;
@@ -368,23 +389,35 @@ EOF;
// ------------------------------------------------------------
// Install Page Splash Template
// ------------------------------------------------------------
function install_page()
function install_page( $show_manual=0 )
{
return <<<EOF
$output = "";
$output = <<<EOF
<br />
The upgrader is now ready to complete the upgrade of your {$this->product_name}. Click <strong>Start</strong> to
begin the automatic process!<br /><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' /> Update my help files if changes are found</li>
<li><img src='images/link.gif' align='absmiddle' /> <input type='checkbox' name='man' id='man' value='1' /> Show me manual upgrade steps for SQL queries to prevent timeouts</li>
<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='Start upgrade...'>
<input type='submit' class='nav_button' value='Çàïóñòèòü îáíîâëåíèå...'>
</div>
EOF;
return $output;
}
// ------------------------------------------------------------
@@ -417,7 +450,7 @@ $HTML .= <<<EOF
</ul>
<br />
<div style='float: right'>
<input type='submit' class='nav_button' value='Click here if not forwarded' />
<input type='submit' class='nav_button' value='Íàæìèòå ñþäà, åñëè âàñ íå ïåðåìåñòèëî àâòîìàòè÷åñêè' />
</div>
EOF;
@@ -454,20 +487,20 @@ EOF;
function install_template_skinrevert( $skin_name="" )
{
$HTML = <<<EOF
<br /><h3><b>Revert skin changes?</b></h3><br />
During upgrades, there are often changes to the skin templates to fix bugs or add new features.<br /><br />
If you do not revert changes you have made to your skin templates, you will not see the changes we have made, however if you have modified
your skin templates reverting the skin changes will cause you to <i><b>lose</b></i> the customizations you have made.<br /><br />
If you have not made many customizations to your skins, it is recommended that you choose to revert your skin changes.<br /><br />
If you have custom skins installed, or have heavily modified your skin templates, it is recommended that you use the skin difference tool
available in your admin control panel after the upgrade is complete to apply new changes to your templates instead.<br /><br />
<br /><h3><b>Óäàëåíèå èçìåíåíèé â ñòèëÿõ</b></h3><br />
Âî âðåìÿ îáíîâëåíèÿ ÷àñòî âîçíèêàåò íåîáõîäèìîñòü âíîñèòü èçìåíåíèÿ â øàáëîíû ñòèëÿ ÷òîáû èñïðàâèòü îøèáêè è äîáàâèòü íîâûå âîçìîæíîñòè.<br /><br />
Åñëè âû íå çàõîòèòå óäàëÿòü èçìåíåíèÿ â øàáëîíàõ ñòèëÿ, ìàñòåð îáíîâëåíèÿ íå ñìîæåò âíåñòè èçìåíåíèÿ. Îäíàêî åñëè âû óäàëèòå èçìåíåíèÿ â ñòèëÿõ
âû <i><b>ïîòåðÿåòå</b></i> âñþ ïðîäåëàííóþ ðàáîòó ïî èçìåíåíèþ ñòàíäàðòíîãî ñòèëÿ.<br /><br />
Ïî-ýòîìó ìû ðåêîììåíäóåì âàì óäàëÿòü èçìåíåíèÿ â ñòèëå òîëüêî â òîì ñëó÷àå, åñëè èçìåíåíèé áûëî ìàëî. Åñëè æå ó âàñ ñîáñòâåííûé ñòèëü èëè áîëüøîå êîëè÷åñòâî
èçìåíåíèé â øàáëîíàõ îò ìîäèôèêàöèé ìû ðåêîììåíäóåì îòêëþ÷èòü îïöèþ óäàëåíèÿ èçìåíåíèé è âîñïîëüçîâàòüñÿ èíñòðóìåíòîì ñðàâíåíèÿ ñòèëåé äëÿ äîáàâëåíèÿ èçìåíåíèé
â ðó÷íóþ.<br /><br />
<h3>Do you wish to revert changes made to '<b>{$skin_name}</b>'?</h3>
<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' /> Revert changes to all of my skins</li>
<li><img src='images/link.gif' align='absmiddle' /> <input type='radio' name='do' value='1' /> Revert changes to '{$skin_name}'</li>
<li><img src='images/link.gif' align='absmiddle' /> <input type='radio' name='do' value='none' /> Do not revert changes to any of my skins</li>
<li><img src='images/link.gif' align='absmiddle' /> <input type='radio' name='do' value='0' /> Do not revert changes to '{$skin_name}'</li>
<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;
@@ -481,14 +514,18 @@ EOF;
{
$HTML .= <<<EOF
<br />
<img src='images/install_done.gif' align='absmiddle' />&nbsp;&nbsp;<span class='done_text'>Upgrade complete!</span><br /><br />
Congratulations, your <a href='$url'>{$this->product_name}</a> is now up to date and ready to use! Below are some
links you may find useful.<br /><br /><br />
<h3>Useful Links</h3>
<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://www.invisionpower.com/landing/?p=clientarea'>Client area</a></li>
<li><img src='images/link.gif' align='absmiddle' /> <a href='http://www.invisionpower.com/landing/?p=docs-ipd'>Documentation</a></li>
<li><img src='images/link.gif' align='absmiddle' /> <a href='http://www.invisionpower.com/landing/?p=forums'>IPS Company Forum</a></li>
<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;