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

+34 -8
View File
@@ -1,8 +1,34 @@
<?php
/**
* Invision Power Board
* Action controller for Adresses page
*/
/*
+--------------------------------------------------------------------------
| 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 Adresses page
+----------------------------------------------------------------------------
*/
/**
* Invision Power Board
* Action controller for Adresses page
*/
class action_address
{
@@ -19,15 +45,15 @@ class action_address
if( $this->install->ipsclass->input['sub'] == 'check' )
{
/* Check Directory */
if( ! ( is_dir( $this->install->ipsclass->input['install_dir'] ) ) )
if( ! $this->install->ipsclass->input['install_dir'] OR ! ( is_dir( $this->install->ipsclass->input['install_dir'] ) ) )
{
$errors[] = 'The specified directory does not exist';
$errors[] = 'Óêàçàííûé ïóòü íå ñóùåñòâóåò â ñèñòåìå';
}
/* Check URL */
if( ! $this->install->ipsclass->input['install_dir'] )
if( ! $this->install->ipsclass->input['install_url'] )
{
$errors[] = 'You did not specify a URL';
$errors[] = 'Àäðåñ óñòàíîâêè íå óêàçàí';
}
if( is_array( $errors ) )
+31 -5
View File
@@ -1,4 +1,30 @@
<?php
<?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 admin page
+----------------------------------------------------------------------------
*/
/**
* Invision Power Board
* Action controller for admin page
@@ -20,24 +46,24 @@ class action_admin
{
if( ! $this->install->ipsclass->input['username'] )
{
$errors[] = 'You must specify a username for the admin account';
$errors[] = 'Íåîáõîäèìî óêàçàòü èìÿ ïîëüçîâàòåëÿ ';
}
if( ! $this->install->ipsclass->input['password'] )
{
$errors[] = 'You must specify a password for the admin account';
$errors[] = 'Íåîáõîäèìî óêàçàòü ïàðîëü';
}
else
{
if( $this->install->ipsclass->input['password'] != $this->install->ipsclass->input['confirm_password'] )
{
$errors[] = 'The admin passwords did not match';
$errors[] = 'Ââåäåííûå ïàðîëè íå ñîâïàäàþò';
}
}
if( ! $this->install->ipsclass->input['email'] )
{
$errors[] = 'You must sepcify an email account for the admin account';
$errors[] = 'Íåîáõîäèìî óêàçàòü e-mail àäðåñ';
}
if( is_array( $errors ) )
+43 -12
View File
@@ -1,4 +1,30 @@
<?php
<?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 DB page
+----------------------------------------------------------------------------
*/
/**
* Invision Power Board
* Action controller for DB page
@@ -21,7 +47,7 @@ class action_db
/* Make sure the fields were filled out */
if ( ! $this->install->ipsclass->input['db_host'] || ! $this->install->ipsclass->input['db_name'] || ! $this->install->ipsclass->input['db_user'] )
{
$errors[] = 'You must fill out the form completely';
$errors[] = 'Ôîðìà äîëæíà áûòü ïîëíîñòüþ çàïîëíåíà';
}
//-----------------------------------------
@@ -84,7 +110,7 @@ class action_db
}
}
}
//-----------------------------------------
// Error check
//-----------------------------------------
@@ -111,6 +137,11 @@ class action_db
if ( ! $DB->connect() )
{
$errors[] = $DB->error;
if( !count($errors) )
{
$errors[] = "Íå ïîëó÷èëîñü ñîåäèíèòüñÿ ñ ñåðâåðîì Áàçû Äàííûõ. Ïîæàëóéñòà ïåðåïðîâåðüòå âñþ èíôîðìàöèþ è ïîïðîáóéòå ñíîâà.";
}
}
//-----------------------------------------
@@ -147,14 +178,14 @@ class action_db
//-----------------------------------------
$html = "<tr>
<td colspan='2'>
<div class='warning'>
<p><strong style='color:red'>You are attempting to install in a database that already has tables from another installation</strong>
<br />If you wish to install in this database, all current tables will be dropped which means any existing data will be deleted.
You can either continue, choosing to delete all current data or you can choose another SQL table prefix.</p>
<input type='checkbox' value='1' name='_drop_tables' /><strong>DELETE ANY CURRENT TABLES BEFORE INSTALLING</strong>
</div>
</td>
<td colspan='2'>
<div class='warning'>
<p><strong style='color:red'>Âû ïûòàåòåñü óñòàíîâèòü ïðèëîæåíèå â áàçó ãäå óæå åñòü òàáëèöû îò ïðåäûäóùåé óñòàíîâêè.</strong>
<br />Åñëè âû õîòèòå ïðîäîëæèòü óñòàíîâêó, òî ïîìíèòå ÷òî âñå ñóùåñòâóþùèå òàáëèöû ñ äàííûìè áóäóò óäàëåíû.
Åñëè âû õîòèòå óñòàíîâèòü ïðèëîæåíèå ñ èñïîëüçîâàíèåì ýòîé áàçû è íå ïîòåðÿòü ñóùåñòâóþùèå òàáëèöû, èñïîëüçóéòå äðóãîé ïåðôèêñ òàáëèö.</p>
<input type='checkbox' value='1' name='_drop_tables' /><strong>ÓÄÀËÈÒÜ ÑÓÙÅÑÒÂÓÞÙÈÅ ÒÀÁËÈÖÛ ÏÐÈ ÓÑÒÀÍÎÂÊÅ</strong>
</div>
</td>
</tr>";
$this->install->template->page_content = str_replace( '<!--{TOP.SQL}-->', $html, $this->install->template->page_content );
@@ -197,7 +228,7 @@ class action_db
$dh = opendir( INS_KERNEL_PATH );
while ( $file = @readdir( $dh ) )
while ( false !== ( $file = @readdir( $dh ) ) )
{
if ( preg_match( "/^class_db_([a-zA-Z0-9]*)\.php/i", $file, $driver ) )
{
+27 -1
View File
@@ -1,4 +1,30 @@
<?php
<?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
+27 -1
View File
@@ -1,4 +1,30 @@
<?php
<?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
+10
View File
@@ -0,0 +1,10 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<meta name="author" content="Êîìïàíèÿ IBResource è Invision Power Services Inc.">
<title>Îøèáêà ðóññêîé âåðñèè Invision Power Board</title>
</head><body>
<h1>Îøèáêà <a href="http://www.ibresource.ru/">ðóññêîé âåðñèè Invision Power Board</a></h1>
<font size="4">Âû ïîïàëè íà íåñóùåñòâóþùóþ ñòðàíèöó!<br>Ïîæàëóéñòà íàæìèòå íà êíîïî÷êó &laquo;<b>Íàçàä</b>&raquo; â&nbsp;âàøåì áðàóçåðå äëÿ âîçâðàùåíèÿ íà ïðåäûäóùóþ ñòðàíèöó.</font>
</body>
</html>
File diff suppressed because it is too large. Load diff
+27 -1
View File
@@ -1,4 +1,30 @@
<?php
<?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 requirements page
+----------------------------------------------------------------------------
*/
/**
* Invision Power Board
* Action controller for requirements page
+354 -328
View File
@@ -1,329 +1,355 @@
<?php
/**
* Invision Power Board
* Invision Installer Framework
*/
class class_installer
{
var $product_name = '';
var $product_license = '';
var $product_version = '';
var $product_key = '';
var $build_id = '';
var $version_php_min = '';
var $version_mysql_min = '';
var $required_dirs = array();
var $required_files = array();
var $writeable_dirs = array();
var $writeable_files = array();
/**
* class_installer::set_product_info
*
* Set basic information about the product being installed
*
* @param string $name
* @param string $license
* @param array $versions
* @param string $key
* @return void
*/
function set_product_info( $name, $license, $versions, $key )
{
$this->product_name = $name;
$this->product_license = $license;
$this->product_versions = $versions;
$this->product_key = $key;
}
/**
* class_installer:set_software_versions
*
* Set required software versions of php and mysql
*
* @param string $php_min Example: 3.0.0
* @param string $mysql_min Example: 4.4.0
*/
function set_software_versions( $php_min, $mysql_min )
{
$this->version_php_min = explode( '.', $php_min );
$this->version_mysql_min = $mysql_min;
}
/**
* class_installer::set_required
*
* Set what files and directories must be present for an installation
*
* @param array $dirs
* @param array $files
*/
function set_required( $dirs, $files )
{
$this->required_dirs = $dirs;
$this->required_files = $files;
}
/**
* class_installer::set_writeable
*
* Set what files and directories must be writeable
*
* @param array $dirs
* @param array $files
*/
function set_writeable( $dirs=array(), $files=array() )
{
$this->writeable_dirs = $dirs;
$this->writeable_files = $files;
}
/**
* class_installer::check_requirements
*
* Checks to make sure that all requirements are met, including software versions,
* directories, and files.
*
* @return array $errors
*/
function check_requirements()
{
/* Errors Array */
$errors = array();
/**
* PHP Version Checking
*/
/* Check Min PHP Version */
$check_php = explode( '.', $this->version_php_min );
if ( PHP_VERSION < $this->version_php_min )
{
$errors[] = 'Your PHP installation is too old to run this product, please upgrade before continuing.';
}
/**
* SQL Version Checking
*/
/**
* Required Directories/Files Checking
*/
if( count( $this->required_dirs ) )
{
foreach( $this->required_dirs as $_d )
{
if( ! ( is_dir( $_d) && is_readable( $_d ) ) )
{
$errors[] = 'A required directory could not be located: "' . $_d . '"';
}
}
}
if( count( $this->required_files ) )
{
foreach( $this->required_files as $_f )
{
if( ! ( file_exists( $_f) && is_readable( $_f ) ) )
{
$errors[] = 'A required file could not be located: "' . $_f . '"';
}
}
}
/**
* Writeable Directories/File Checking
*/
if( count( $this->writeable_dirs ) )
{
foreach( $this->writeable_dirs as $_d )
{
if( ! is_writeable( $_d ) )
{
$errors[] = 'Can not write to directory: "' . $_d . '", please CHMOD to 777';
}
}
foreach( $this->writeable_files as $_f )
{
if( ! is_writeable( $_f ) )
{
$errors[] = 'Can not write to file: "' . $_f . '", please CHMOD to 777';
}
}
}
return $errors;
}
/**
* class_installer::unpack_config
*
* Reads and stores the information from the config.xml file
*
*/
function read_config()
{
// Get Configuration File
$config = implode( '', file( INS_ROOT_PATH . 'installfiles/config.xml' ) );
$xml = new class_xml();
$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'];
// Override.
$this->product_version = IPBVERSION;
}
/**
* class_installer::write_file
*
* Simple method for writing a file
*
* @param string $name Full name, including path, of file to write
* @param string $data Contents of file
*/
function write_file( $name, $data )
{
$fh = @fopen( $name, "w" );
@fwrite( $fh, $data, strlen( $data ) );
@fclose( $fh );
}
/**
* class_installer::create_admin_converge
*
* Builds converge entry for admin
*
* @return integer $id Converge ID
*/
function create_admin_converge()
{
/* Build Entry */
$salt = $this->ipsclass->converge->generate_password_salt( 5 );
$passhash = $this->ipsclass->converge->generate_compiled_passhash( $salt, md5( $this->saved_data['admin_pass'] ) );
$converge = array( 'converge_email' => $this->saved_data['admin_email'],
'converge_joined' => time(),
'converge_pass_hash' => $passhash,
'converge_pass_salt' => str_replace( '\\', "\\\\", $salt ),
);
/* Insert */
$this->ipsclass->DB->do_insert( 'members_converge', $converge );
/* Return ID */
return $this->ipsclass->DB->get_insert_id();
}
/**
* class_installer::chmod_dir
*
* chmods all files and directories in the given path
*
* @param string $path
* @param integer $mode
*/
function chmod_dir( $path, $mode )
{
/* Open directory */
$dh = @opendir( $path );
while( $f = @readdir( $dh ) )
{
if( $f != '.' && $f != '..' )
{
/* Full file path */
$_path = $path . '/'. $f;
/* CHMOD directory and contents */
if( @is_dir( $_path ) )
{
@chmod( $_path, $mode );
$this->chmod_dir( $_path, $mode );
}
/* CHMOD file */
else
{
@chmod( $_path, $mode );
}
}
}
/* Close directory */
@closedir( $dh );
}
/**
* class_installer::process
*
* Figures out what action to run
*
*/
function process()
{
/* Require Action */
require_once( INS_ROOT_PATH . 'core/actions/' . $this->template->page_current . '.php' );
/* Initialize */
$class = 'action_' . $this->template->page_current;
$this->action = new $class( $this );
$this->action->run();
}
/*-------------------------------------------------------------------------*/
// Lock installer
/*-------------------------------------------------------------------------*/
/**
* Lock Installer
* Writes a lock file
*
* @return void
*/
function lock_installer()
{
//-----------------------------------------
// Write!
//-----------------------------------------
$this->write_file( INS_ROOT_PATH . 'installfiles/lock.php', 'LOCKED' );
}
/*-------------------------------------------------------------------------*/
// Check lock
/*-------------------------------------------------------------------------*/
/**
* Lock Installer
* Writes a lock file
*
* @return void
*/
function check_lock()
{
//-----------------------------------------
// Write!
//-----------------------------------------
return file_exists( INS_ROOT_PATH . 'installfiles/lock.php' ) ? 1 : 0;
}
/* Overridden by application specific class */
function pre_process() {}
function post_process() {}
function set_requirements() {}
}
<?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
*/
class class_installer
{
var $product_name = '';
var $product_license = '';
var $product_version = '';
var $product_key = '';
var $build_id = '';
var $version_php_min = '';
var $version_mysql_min = '';
var $required_dirs = array();
var $required_files = array();
var $writeable_dirs = array();
var $writeable_files = array();
/**
* class_installer::set_product_info
*
* Set basic information about the product being installed
*
* @param string $name
* @param string $license
* @param array $versions
* @param string $key
* @return void
*/
function set_product_info( $name, $license, $versions, $key )
{
$this->product_name = $name;
$this->product_license = $license;
$this->product_versions = $versions;
$this->product_key = $key;
}
/**
* class_installer:set_software_versions
*
* Set required software versions of php and mysql
*
* @param string $php_min Example: 3.0.0
* @param string $mysql_min Example: 4.4.0
*/
function set_software_versions( $php_min, $mysql_min )
{
$this->version_php_min = explode( '.', $php_min );
$this->version_mysql_min = $mysql_min;
}
/**
* class_installer::set_required
*
* Set what files and directories must be present for an installation
*
* @param array $dirs
* @param array $files
*/
function set_required( $dirs, $files )
{
$this->required_dirs = $dirs;
$this->required_files = $files;
}
/**
* class_installer::set_writeable
*
* Set what files and directories must be writeable
*
* @param array $dirs
* @param array $files
*/
function set_writeable( $dirs=array(), $files=array() )
{
$this->writeable_dirs = $dirs;
$this->writeable_files = $files;
}
/**
* class_installer::check_requirements
*
* Checks to make sure that all requirements are met, including software versions,
* directories, and files.
*
* @return array $errors
*/
function check_requirements()
{
/* Errors Array */
$errors = array();
/**
* PHP Version Checking
*/
/* Check Min PHP Version */
$check_php = explode( '.', $this->version_php_min );
if ( PHP_VERSION < $this->version_php_min )
{
$errors[] = 'Âåðñèÿ PHP, óñòàíîâëåííàÿ íà âàøåì ñåðâåðå, íå óäîâëåòâîðÿåò ñèñòåìíûì òðåáîâàíèÿì ïðîäóêòà. Äëÿ ïðîäîëæåíèÿ óñòàíîâêè íåîáõîäèìî îáíîâèòü PHP.';
}
/**
* SQL Version Checking
*/
/**
* Required Directories/Files Checking
*/
if( count( $this->required_dirs ) )
{
foreach( $this->required_dirs as $_d )
{
if( ! ( is_dir( $_d) && is_readable( $_d ) ) )
{
$errors[] = 'Íå âîçìîæíî íàéòè òðåáóåìóþ äèðåêòîðèþ: "' . $_d . '"';
}
}
}
if( count( $this->required_files ) )
{
foreach( $this->required_files as $_f )
{
if( ! ( file_exists( $_f) && is_readable( $_f ) ) )
{
$errors[] = 'Íå âîçìîæíî íàéòè òðåáóåìûé ôàéë: "' . $_f . '"';
}
}
}
/**
* Writeable Directories/File Checking
*/
if( count( $this->writeable_dirs ) )
{
foreach( $this->writeable_dirs as $_d )
{
if( ! is_writeable( $_d ) )
{
$errors[] = 'Äèðåêòîðèÿ &laquo;' . str_replace( INS_DOC_ROOT_PATH, '', $_d ) . '&raquo; íå äîñòóïíà äëÿ çàïèñè.<br />Ïîæàëóéñòà èçìåíèòå ïðàâà äîñòóïà (CHMOD) íà 777.';
}
}
foreach( $this->writeable_files as $_f )
{
if( ! is_writeable( $_f ) )
{
$errors[] = 'Ôàéë &laquo;' . str_replace( INS_DOC_ROOT_PATH, '', $_f ) . '&raquo; íå äîñòóïåí äëÿ çàïèñè.<br />Ïîæàëóéñòà èçìåíèòå ïðàâà äîñòóïà (CHMOD) íà 777.';
}
}
}
return $errors;
}
/**
* class_installer::unpack_config
*
* Reads and stores the information from the config.xml file
*
*/
function read_config()
{
// Get Configuration File
$config = implode( '', file( INS_ROOT_PATH . 'installfiles/config.xml' ) );
$xml = new class_xml();
$config = $xml->xml_parse_document( $config );
// Set Info
$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');
// Override.
$this->product_version = IPBVERSION;
}
/**
* class_installer::write_file
*
* Simple method for writing a file
*
* @param string $name Full name, including path, of file to write
* @param string $data Contents of file
*/
function write_file( $name, $data )
{
$fh = @fopen( $name, "w" );
@fwrite( $fh, $data, strlen( $data ) );
@fclose( $fh );
}
/**
* class_installer::create_admin_converge
*
* Builds converge entry for admin
*
* @return integer $id Converge ID
*/
function create_admin_converge()
{
/* Build Entry */
$salt = $this->ipsclass->converge->generate_password_salt( 5 );
$passhash = $this->ipsclass->converge->generate_compiled_passhash( $salt, md5( $this->saved_data['admin_pass'] ) );
$converge = array( 'converge_email' => $this->saved_data['admin_email'],
'converge_joined' => time(),
'converge_pass_hash' => $passhash,
'converge_pass_salt' => str_replace( '\\', "\\\\", $salt ),
);
/* Insert */
$this->ipsclass->DB->do_insert( 'members_converge', $converge );
/* Return ID */
return $this->ipsclass->DB->get_insert_id();
}
/**
* class_installer::chmod_dir
*
* chmods all files and directories in the given path
*
* @param string $path
* @param integer $mode
*/
function chmod_dir( $path, $mode )
{
/* Open directory */
$dh = @opendir( $path );
while( false !== ( $f = @readdir( $dh ) ) )
{
if( $f != '.' && $f != '..' )
{
/* Full file path */
$_path = $path . '/'. $f;
/* CHMOD directory and contents */
if( @is_dir( $_path ) )
{
@chmod( $_path, $mode );
$this->chmod_dir( $_path, $mode );
}
/* CHMOD file */
else
{
@chmod( $_path, $mode );
}
}
}
/* Close directory */
@closedir( $dh );
}
/**
* class_installer::process
*
* Figures out what action to run
*
*/
function process()
{
/* Require Action */
require_once( INS_ROOT_PATH . 'core/actions/' . $this->template->page_current . '.php' );
/* Initialize */
$class = 'action_' . $this->template->page_current;
$this->action = new $class( $this );
$this->action->run();
}
/*-------------------------------------------------------------------------*/
// Lock installer
/*-------------------------------------------------------------------------*/
/**
* Lock Installer
* Writes a lock file
*
* @return void
*/
function lock_installer()
{
//-----------------------------------------
// Write!
//-----------------------------------------
$this->write_file( INS_ROOT_PATH . 'installfiles/lock.php', 'LOCKED' );
}
/*-------------------------------------------------------------------------*/
// Check lock
/*-------------------------------------------------------------------------*/
/**
* Lock Installer
* Writes a lock file
*
* @return void
*/
function check_lock()
{
//-----------------------------------------
// Write!
//-----------------------------------------
return file_exists( INS_ROOT_PATH . 'installfiles/lock.php' ) ? 1 : 0;
}
/* Overridden by application specific class */
function pre_process() {}
function post_process() {}
function set_requirements() {}
}
?>
File diff suppressed because it is too large. Load diff
+4 -3
View File
@@ -10,15 +10,16 @@
* 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__ ) ) ) ) . "/" );
/**
* Version numbers
*
* @since 2.0.0.2005-01-01
*/
define ( 'IPBVERSION', '2.2.0 RC 1' );
define ( 'IPB_LONG_VERSION', '22006' );
define ( 'IPBVERSION', '2.2.2' );
define ( 'IPB_LONG_VERSION', '22011' );
/**
* DOC ROOT PATH
+10
View File
@@ -0,0 +1,10 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<meta name="author" content="Êîìïàíèÿ IBResource è Invision Power Services Inc.">
<title>Îøèáêà ðóññêîé âåðñèè Invision Power Board</title>
</head><body>
<h1>Îøèáêà <a href="http://www.ibresource.ru/">ðóññêîé âåðñèè Invision Power Board</a></h1>
<font size="4">Âû ïîïàëè íà íåñóùåñòâóþùóþ ñòðàíèöó!<br>Ïîæàëóéñòà íàæìèòå íà êíîïî÷êó &laquo;<b>Íàçàä</b>&raquo; â&nbsp;âàøåì áðàóçåðå äëÿ âîçâðàùåíèÿ íà ïðåäûäóùóþ ñòðàíèöó.</font>
</body>
</html>
+77 -20
View File
@@ -1,16 +1,25 @@
<?php
/*
+--------------------------------------------------------------------------
| Invision Power Board
| =============================================
| by Matthew Mecham
| (c) 2001 - 2006 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| Time: Tue, 01 Nov 2005 14:38:09 GMT
| Release: 68ff9281c6fdcce88910e08cec1045a3
| Licence Info: http://www.invisionboard.com/?license
/*
+--------------------------------------------------------------------------
| 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)
+---------------------------------------------------------------------------
| > $Date: 2005-10-10 16:01:09 +0100 (Mon, 10 Oct 2005) $
| > $Revision: 5 $
@@ -332,7 +341,7 @@ class ipsclass {
// Char set
//-----------------------------------------
$this->vars['gb_char_set'] = $this->vars['gb_char_set'] ? $this->vars['gb_char_set'] : 'iso-8859-1';
$this->vars['gb_char_set'] = $this->vars['gb_char_set'] ? $this->vars['gb_char_set'] : 'windows-1251';
//-----------------------------------------
// PHP API
@@ -487,7 +496,7 @@ class ipsclass {
* @return void
*/
function init_db_connection( $db, $user, $pass, $host, $pre, $driver='mysql' )
function init_db_connection( $db, $user, $pass, $host, $pre, $cp, $driver='mysql' )
{
//-----------------------------------------
// INIT
@@ -503,8 +512,8 @@ class ipsclass {
{
$file = str_replace( '<%driver%>', $driver, INS_SQL_FILE );
}
$classname = "db_driver_".$driver;
$classname = "db_driver_".$driver;
$this->DB = new $classname;
@@ -512,19 +521,20 @@ class ipsclass {
$this->DB->obj['sql_user'] = $user;
$this->DB->obj['sql_pass'] = $pass;
$this->DB->obj['sql_host'] = $host;
$this->DB->obj['sql_tbl_prefix'] = $pre;
$this->DB->obj['sql_tbl_prefix'] = $pre;
$this->DB->obj['mysql_codepage'] = $cp;
$this->DB->obj['use_shutdown'] = 0;
if ( $file )
{
$this->DB->obj['query_cache_file'] = $file;
}
if ( ! defined( 'SQL_PREFIX' ) )
{
define( 'SQL_PREFIX', $pre );
}
//-----------------------------------
// Required vars?
//-----------------------------------
@@ -993,7 +1003,54 @@ class ipsclass {
$this->DB->close_db();
}
/*-------------------------------------------------------------------------*/
// Convert string between char-sets
/*-------------------------------------------------------------------------*/
/**
* Convert a string between charsets
*
* @param string Input String
* @param string Current char set
* @param string Destination char set
* @return string Parsed string
* @since 2.1.0
*/
function txt_convert_charsets($t, $original_cset, $destination_cset="")
{
$original_cset = strtolower($original_cset);
$text = $t;
//-----------------------------------------
// Did we pass a destination?
//-----------------------------------------
$destination_cset = strtolower($destination_cset) ? strtolower($destination_cset) : strtolower($this->vars['gb_char_set']);
// echo $destination_cset; exit;
//-----------------------------------------
// Not the same?
//-----------------------------------------
if ( $destination_cset == $original_cset )
{
return $t;
}
//-----------------------------------------
// Do the convert
//-----------------------------------------
if ( ! is_object( $this->class_convert_charset ) )
{
require_once( INS_KERNEL_PATH.'/class_convert_charset.php' );
$this->class_convert_charset = new class_convert_charset();
}
$text = $this->class_convert_charset->convert_charset( $text, $original_cset, $destination_cset );
return $text ? $text : $t;
}
/*-------------------------------------------------------------------------*/
// txt_alphanumerical_clean
// ------------------
+63 -53
View File
@@ -35,11 +35,11 @@ class install_template
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 );
$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...
//-----------------------------------------
@@ -54,11 +54,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'] : 'requirements';
@@ -139,11 +139,14 @@ class install_template
// ------------------------------------------------------------
function page_template()
{
$this->saved_data = urlencode($this->saved_data);
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 Installer</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>
@@ -165,7 +168,7 @@ echo <<<EOF
<div id='ipswrapper'>
<div class='main_shell'>
<h1><img src='images/package_icon.gif' align='absmiddle' /> Welcome to the IPS Product Installer</h1>
<h1><img src='images/package_icon.gif' align='absmiddle' /> Óñòàíîâùèê ïðîäóêòîâ Invision Power Services</h1>
<div class='content_shell'>
<div class='package'>
<div>
@@ -192,7 +195,7 @@ echo <<<EOF
</div>
<div style='vertical-align: middle'>
<h2>{$this->product_name} Installation</h2>
<h2>Óñòàíîâêà {$this->product_name}</h2>
<strong>{$this->product_version}</strong>
</div>
</div>
@@ -207,7 +210,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 Installation' 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'>
@@ -218,13 +221,21 @@ if( ! $this->hide_next )
if( $this->next_action == 'disabled' )
{
echo <<<EOF
<input type='submit' class='nav_button' value='Install can not continue...' disabled='disabled'>
<input type='submit' class='nav_button' value='Óñòàíîâêà íå çàâåðøåíà...' disabled='disabled' />
EOF;
}
else
{
if( !$this->next_action )
{
$back = $this->ipsclass->my_getenv('HTTP_REFERER');
echo <<<EOF
<input type='submit' class='nav_button' value='Next >'>
<input type='button' class='nav_button' value='< Íàçàä' onclick="window.location='{$back}';return false;" />
EOF;
}
echo <<<EOF
<input type='submit' class='nav_button' value='Äàëüøå >' />
EOF;
}
}
@@ -240,7 +251,7 @@ echo <<<EOF
EOF;
echo date("Y");
echo <<<EOF
Invision Power Services, Inc.
Invision Power Services, Inc. & IBresource, LTD
</div>
</div>
@@ -267,16 +278,16 @@ return <<<EOF
<img src='images/wizard.gif' align='absmiddle' />
</div>
<div>
Welcome to the installer for {$this->product_name}. This wizard will guide you through the installation process.
Âàñ ïðèâåòñòâóåò óñòàíîâùèê {$this->product_name}. Äàííûé ìàñòåð ïîìîæåò âàì óñòàíîâèòü íîâóþ âåðñèþ ïðîäóêòà.
</div>
</div>
<br/><br/>
<h3>System Requirements</h3>
<h3>Ñèñòåìíûå òðåáîâàíèÿ:</h3>
<br />
<strong>PHP:</strong> v{$php_version} or better<br />
<strong>SQL:</strong> mySQL v$sql_version or better
<strong>PHP:</strong> v{$php_version} èëè âûøå<br />
<strong>SQL:</strong> mySQL v$sql_version èëè âûøå
<br /><br />
EOF;
}
@@ -298,7 +309,7 @@ check_eula = function()
}
else
{
alert( 'You must agree to the license before continuing' );
alert( 'Âû äîëæíû ïðèíÿòü ïîëüçîâàòåëüñêîå ñîãëàøåíèå, ïðåæäå ÷åì ïðîäîëæèòü óñòàíîâêó' );
return false;
}
}
@@ -307,13 +318,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;
@@ -328,16 +339,16 @@ return <<<EOF
<div id='warn-message' style='display:none;'><center><div id='warn-message-content'></div></center></div>
<fieldset>
<legend><img src='images/addresses.gif' align='absmiddle' />&nbsp; Address details</legend>
<legend><img src='images/addresses.gif' align='absmiddle' />&nbsp; Äèðåêòîðèè óñòàíîâêè</legend>
<table style='width: 100%; border: 0px; padding:0px' cellspacing='0'>
<tr>
<td width='30%' class='title'>Install Directory:</td>
<td width='30%' class='title'>Ïóòü óñòàíîâêè:</td>
<td width='70%' class='content'><input type='text' class='sql_form' name='install_dir' value='{$dir}'></td>
</tr>
<tr>
<td width='30%' class='title'>Install Address:</td>
<td width='30%' class='title'>Àäðåñ óñòàíîâêè:</td>
<td width='70%' class='content'><input type='text' class='sql_form' name='install_url' value='{$url}'></td>
</tr>
</table>
@@ -366,14 +377,14 @@ return <<<EOF
<div class='info' style='margin-top: 4px;'>
<div class='float_img'><img src='images/help.gif' /></div>
<div>Please select which database engine you wish to use.</div>
<div>Ïîæàëóéñòà óêàæèòå êàêóþ áàçà äàííûõ áóäåò èñïîëüçîâàòüñÿ.</div>
</div>
<fieldset>
<legend><img src='images/db.gif' align='absmiddle' />&nbsp; Database Engine</legend>
<legend><img src='images/db.gif' align='absmiddle' />&nbsp; Áàçû Äàííûõ</legend>
<table style='width: 100%; border: 0px; padding:0px' cellspacing='0'>
<tr>
<td width='30%' class='title'>SQL Driver:</td>
<td width='30%' class='title'>SQL Äðàéâåð:</td>
<td width='70%' class='content'>
<select name='sql_driver' class='sql_form'>$_drivers</select>
</td>
@@ -394,39 +405,39 @@ return <<<EOF
<div class='info' style='margin-top: 4px;'>
<div class='float_img'><img src='images/help.gif' /></div>
<div>Ask your webhost if you are unsure about any of these settings. You must create the database before installing..</div>
<div>Åñëè âû íå óâåðåíû èëè íå çíàåòå äàííûõ, íåîáõîäèìûõ äëÿ äàííîãî øàãà, óòî÷íèòå ó âàøåãî õîñòèíã ïðîâàéäåðà...</div>
</div>
<fieldset>
<legend><img src='images/db.gif' align='absmiddle' />&nbsp; Database details</legend>
<legend><img src='images/db.gif' align='absmiddle' />&nbsp; Ñåðâåð Áàçû Äàííûõ (ÁÄ)</legend>
<table style='width: 100%; border: 0px; padding:0px' cellspacing='0'>
<!--{TOP.SQL}-->
<tr>
<td width='30%' class='title'>SQL Host:</td>
<td width='30%' class='title'>Àäðåñ ñåðâåðà:</td>
<td width='70%' class='content'>
<input type='text' class='sql_form' value='localhost' name='db_host'>
</td>
</tr>
<tr>
<td class='title'>Database Name:</td>
<td class='title'>Èìÿ áàçû äàííûõ:</td>
<td class='content'>
<input type='text' class='sql_form' name='db_name' value='{$_REQUEST['db_name']}'>
</td>
</tr>
<tr>
<td class='title'>SQL Username:</td>
<td class='title'>Ïîëüçîâàòåëü ÁÄ:</td>
<td class='content'>
<input type='text' class='sql_form' name='db_user' value='{$_REQUEST['db_user']}'>
</td>
</tr>
<tr>
<td class='title'>SQL Password:</td>
<td class='title'>Ïàðîëü ÁÄ:</td>
<td class='content'>
<input type='password' class='sql_form' name='db_pass'>
</td>
</tr>
<tr>
<td class='title'>SQL Table Prefix:</td>
<td class='title'>Ïðåôèêñ òàáëèö:</td>
<td class='content'>
<input type='text' class='sql_form' name='db_pre' value='$prefix'>
</td>
@@ -445,24 +456,24 @@ EOF;
{
return <<<EOF
<fieldset>
<legend><img src='images/admin.gif' align='absmiddle' />&nbsp; Your administrative account</legend>
<legend><img src='images/admin.gif' align='absmiddle' />&nbsp; Ó÷åòíàÿ çàïèñü Àäìèíèñòðàòîðà</legend>
<table style='width: 100%; border: 0px; padding:0px' cellspacing='0'>
<tr>
<td width='30%' class='title'>Username:</td>
<td width='30%' class='title'>Èìÿ ïîëüçîâàòåëÿ:</td>
<td width='70%' class='content'><input type='text' class='sql_form' name='username'></td>
</tr>
<tr>
<td class='title'>Password:</td>
<td class='title'>Ïàðîëü:</td>
<td class='content'><input type='password' class='sql_form' name='password'></td>
</tr>
<tr>
<td class='title'>Confirm Password:</td>
<td class='title'>Ïîäòâåðæäåíèå ïàðîëÿ:</td>
<td class='content'><input type='password' class='sql_form' name='confirm_password'></td>
</tr>
<tr>
<td class='title'>E-mail Address:</td>
<td class='title'>E-mail àäðåñ:</td>
<td class='content'><input type='text' class='sql_form' name='email'></td>
</tr>
</table>
@@ -477,12 +488,11 @@ EOF;
function install_page()
{
return <<<EOF
The installer is now ready to complete the installation of your {$this->product_name}. Click <strong>Start</strong> to
begin the automatic process!<br /><br />
Ìàñòåð ñîáðàë âñå äàííûå è ãîòîâ íà÷àòü óñòàíîâêó {$this->product_name}. Íàæìèòå <strong>Íà÷àòü óñòàíîâêó</strong> äëÿ çàïóñêà àâòîìàòè÷åñêîãî ïðîöåññà óñòàíîâêè!<br /><br />
<div style='float: right'>
<input type='submit' class='nav_button' value='Start installation...'>
<input type='submit' class='nav_button' value='Íà÷àòü óñòàíîâêó...'>
</div>
EOF;
}
@@ -517,7 +527,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;
@@ -558,25 +568,25 @@ EOF;
{
$extra = "<div class='warning'>
<div style='float: left; margin-right: 7px; margin-left: 5px'><img src='images/warning.gif' /></div>
<p>INSTALLER NOT LOCKED<br />Please disable or remove 'install/index.php' immediately!</p>
<p>ÓÑÒÀÍÎÂÙÈÊ ÍÅ ÇÀÁËÎÊÈÐÎÂÀÍ<br />Ïîæàëóéñòà ïåðåèìåíóéòå èëè óäàëèòå 'install/index.php' êàê ìîæíî áûñòðåå!</p>
</div>";
}
$HTML .= <<<EOF
<br />
<img src='images/install_done.gif' align='absmiddle' />&nbsp;&nbsp;<span class='done_text'>Installation complete!</span><Br /><Br />
Congratulations, your <a href='$url'>{$this->product_name}</a> is now installed and ready to use! Below are some
links you may find useful.<br /><br /><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 />
$extra
<h3>Useful Links</h3>
<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-ipb'>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://external.iblink.ru/forums'>Ôîðóìû êîìïàíèè IBresource</a></li>
<li><img src='images/link.gif' align='absmiddle' /> <a href='http://external.iblink.ru/wiki'>Invison Power Book</a></li>
<li><img src='images/link.gif' align='absmiddle' /> <a href='http://external.ipslink.com/ipboard22/landing/?p=forums'>Ôîðóìû êîìïàíèè IPS</a></li>
</ul>
</div>
</div>
EOF;
return $HTML;
}