Version 3.0.5

This commit is contained in:
Neo committed 2025-12-19 00:31:03 -08:00
1 parent 19b38c7c74
commit 1d4720f3e2
3755 files changed
+508378 -664541

No files matched your search

@@ -0,0 +1,85 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Installer: EULA file
* Last Updated: $LastChangedDate: 2009-06-11 17:11:57 -0400 (Thu, 11 Jun 2009) $
*
* @author $Author: josh $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @version $Rev: 4765 $
*
*/
class install_address extends ipsCommand
{
/**
* Execute selected method
*
* @access public
* @param object Registry object
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
/* INIT */
$error = false;
/* Check input? */
if ( $this->request['do'] == 'check' )
{
/* Check Directory */
if ( ! ( is_dir( $this->request['install_dir'] ) ) )
{
$error = true;
$this->registry->output->addWarning( 'Указанной директории не существует' );
}
/* Check URL */
if ( ! $this->request['install_dir'] )
{
$error = true;
$this->registry->output->addWarning( 'Вы не указали URL' );
}
if( ! $error )
{
/* Save Form Data */
IPSSetUp::setSavedData('install_dir', preg_replace( "#(//)$#", "", str_replace( '\\', '/', $this->request['install_dir'] ) . '/' ) );
IPSSetUp::setSavedData('install_url', preg_replace( "#(//)$#", "", str_replace( '\\', '/', $this->request['install_url'] ) . '/' ) );
/* Next Action */
$this->registry->autoLoadNextAction( 'db' );
}
}
/* Guess at directory */
$dir = str_replace( 'admin/install' , '' , getcwd() );
$dir = str_replace( 'admin\install' , '' , $dir ); // Windows
$dir = str_replace( '\\' , '/', $dir );
/* Guess at URL */
$url = str_replace( "/admin/installer/index.php" , "", $_SERVER['HTTP_REFERER'] );
$url = str_replace( "/admin/installer/" , "", $url);
$url = str_replace( "/admin/installer" , "", $url);
$url = str_replace( "/admin/install/index.php" , "", $_SERVER['HTTP_REFERER'] );
$url = str_replace( "/admin/install/" , "", $url);
$url = str_replace( "/admin/install" , "", $url);
$url = str_replace( "/admin" , "", $url);
$url = str_replace( "index.php" , "", $url);
$url = preg_replace( "!\?(.+?)*!" , "", $url );
$url = "{$url}/";
/* Page Output */
$this->registry->output->setTitle( "Директории и URLы" );
$this->registry->output->setNextAction( "address&do=check" );
$this->registry->output->addContent( $this->registry->output->template()->page_address( $dir, $url ) );
$this->registry->output->sendOutput();
}
}
@@ -0,0 +1,86 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Installer: ADMIN file
* Last Updated: $LastChangedDate: 2009-04-22 14:33:03 -0400 (Wed, 22 Apr 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @version $Rev: 4532 $
*
*/
class install_admin extends ipsCommand
{
/**
* Execute selected method
*
* @access public
* @param object Registry object
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
$_e = 0;
/* Check input? */
if( $this->request['do'] == 'check' )
{
if( ! $this->request['username'] )
{
$_e = 1;
$this->registry->output->addWarning( 'Необходимо указать имя пользователя' );
}
if( ! $this->request['password'] )
{
$_e = 1;
$this->registry->output->addWarning( 'Необходимо ввести пароль' );
}
else
{
if( $this->request['password'] != $this->request['confirm_password'] )
{
$_e = 1;
$this->registry->output->addWarning( 'Введенные пароли не совпадают' );
}
}
if( ! $this->request['email'] )
{
$_e = 1;
$this->registry->output->addWarning( 'Необходимо указать Email' );
}
if ( $_e )
{
$this->registry->output->setTitle( "Администратор: Ошибка" );
$this->registry->output->setNextAction( 'admin&do=check' );
$this->registry->output->addContent( $this->registry->output->template()->page_admin() );
$this->registry->output->sendOutput();
}
else
{
/* Save Form Data */
IPSSetUp::setSavedData('admin_user', $this->request['username'] );
IPSSetUp::setSavedData('admin_pass', $this->request['password'] );
IPSSetUp::setSavedData('admin_email', $this->request['email'] );
/* Next Action */
$this->registry->autoLoadNextAction( 'install' );
return;
}
}
/* Output */
$this->registry->output->setTitle( "Создание учетной записи администратора" );
$this->registry->output->setNextAction( 'admin&do=check' );
$this->registry->output->addContent( $this->registry->output->template()->page_admin() );
$this->registry->output->sendOutput();
}
}
@@ -0,0 +1,150 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Installer: EULA file
* Last Updated: $LastChangedDate: 2009-05-11 19:24:23 -0400 (Mon, 11 May 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @version $Rev: 4629 $
*
*/
class install_apps extends ipsCommand
{
/**
* Execute selected method
*
* @access public
* @param object Registry object
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
/* Check input? */
if( $this->request['do'] == 'check' )
{
/* Check Directory */
if ( ! is_array( $_POST['apps'] ) OR ! count( $_POST['apps'] ) )
{
$this->registry->output->addError( 'Нужно выбрать хотя бы одно приложение' );
}
else
{
/* Save Form Data */
IPSSetUp::setSavedData('install_apps', implode( ',', array_keys( $_POST['apps'] ) ) );
/* Check writeable files */
foreach( array_keys( $_POST['apps'] ) as $appDir )
{
$info = IPSSetUp::fetchXmlAppWriteableFiles( $appDir );
if ( count( $info['notexist'] ) )
{
foreach( $info['notexist'] as $path )
{
$this->registry->output->addWarning( 'Файл или директория "' . $path . '" не существует, создайте ее' );
}
}
if ( count( $info['notwrite'] ) )
{
foreach( $info['notwrite'] as $path )
{
$this->registry->output->addWarning( 'Запись в "' . $path . '" невозможна, измените права доступа' );
}
}
/**
* Custom errors
*/
if ( count( $info['other'] ) )
{
foreach( $info['other'] as $error )
{
$this->registry->output->addWarning( $error );
}
}
}
/* Do we have errors? */
if ( ! count( $this->registry->output->fetchWarnings() ) )
{
/* Next Action */
$this->registry->autoLoadNextAction( 'address' );
}
}
}
/* Generate apps... */
$apps = array( 'core' => array(), 'ips' => array(), 'other' => array() );
foreach( array( 'applications', 'applications_addon/ips', 'applications_addon/other' ) as $_pBit )
{
$path = IPS_ROOT_PATH . $_pBit;
$handle = opendir( $path );
while ( ( $file = readdir( $handle ) ) !== FALSE )
{
if ( ! preg_match( "#^\.#", $file ) )
{
if ( is_dir( $path . '/' . $file ) )
{
//-----------------------------------------
// Get it!
//-----------------------------------------
if ( ! file_exists( IPS_ROOT_PATH . $_pBit . '/' . $file . '/xml/information.xml' ) )
{
continue;
}
$data = IPSSetUp::fetchXmlAppInformation( $file );
switch( $_pBit )
{
case 'applications':
$apps['core'][ $file ] = $data;
break;
case 'applications_addon/ips':
$apps['ips'][ $file ] = $data;
break;
case 'applications_addon/other':
$apps['other'][ $file ] = $data;
break;
}
}
}
}
closedir( $handle );
}
/* Reorder the array so that core is first */
$new_array = array();
$new_array['core'] = $apps['core']['core'];
foreach( $apps['core'] as $app => $data )
{
if( $app == 'core' )
{
continue;
}
$new_array[$app] = $data;
}
$apps['core'] = $new_array;
/* Page Output */
$this->registry->output->setTitle( "Приложения" );
$this->registry->output->setNextAction( 'apps&do=check' );
$this->registry->output->addContent( $this->registry->output->template()->page_apps( $apps ) );
$this->registry->output->sendOutput();
}
}
@@ -0,0 +1,261 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Installer: EULA file
* Last Updated: $LastChangedDate: 2009-04-22 14:33:03 -0400 (Wed, 22 Apr 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @version $Rev: 4532 $
*
*/
class install_db extends ipsCommand
{
/**
* Execute selected method
*
* @access public
* @param object Registry object
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
/* Dealing with the result of the form asking for DB input */
if ( $this->request['do'] == 'check' )
{
/* Make sure the fields were filled out */
if ( ! $this->request['overwrite'] AND ( ! $this->request['db_host'] || ! $this->request['db_name'] || ! $this->request['db_user'] ) )
{
$this->registry->output->addWarning( 'Необходимо полностью заполнить форму' );
}
/* No special characters */
else if( preg_match( "/[^a-zA-Z0-9_]/", $this->request['db_pre'] ) )
{
$this->registry->output->addWarning( 'Нельзя использовать специальные символы в префиске таблиц' );
}
else
{
//-----------------------------------------
// Load DB driver..
//-----------------------------------------
require_once( IPS_KERNEL_PATH . 'classDb' . ucwords( IPSSetUp::getSavedData('sql_driver') ) . '.php' );
$classname = "db_driver_".IPSSetUp::getSavedData('sql_driver');
$DB = new $classname;
$DB->obj['sql_database'] = $this->request['db_name'];
$DB->obj['sql_user'] = $this->request['db_user'];
$DB->obj['sql_pass'] = $_REQUEST['db_pass'];
$DB->obj['sql_host'] = $this->request['db_host'];
$DB->obj['sql_tbl_prefix'] = $this->request['db_pre'];
//--------------------------------------------------
// Any "extra" configs required for this driver?
//--------------------------------------------------
if ( file_exists( IPS_ROOT_PATH . 'setup/sql/'.IPSSetUp::getSavedData('sql_driver').'_install.php' ) )
{
require_once( IPS_ROOT_PATH . 'setup/sql/'.IPSSetUp::getSavedData('sql_driver').'_install.php' );
$extra_install = new install_extra( $this->registry );
$extra_install->install_form_process();
if ( count( $extra_install->errors ) )
{
$this->registry->output->addWarning( implode( "<br />", $extra_install->errors ) );
}
if ( is_array( $extra_install->info_extra ) and count( $extra_install->info_extra ) )
{
foreach( $extra_install->info_extra as $k => $v )
{
IPSSetUp::setSavedData( '__sql__' . $k, $v );
}
}
if ( is_array( $DB->connect_vars ) and count( $DB->connect_vars ) )
{
foreach( $DB->connect_vars as $k => $v )
{
$DB->connect_vars[ $k ] = $extra_install->info_extra[ $k ];
}
}
}
//-----------------------------------------
// Error check
//-----------------------------------------
if ( count( $extra_install->errors ) )
{
$this->registry->output->setTitle( "База данных: Ошибка" );
$this->registry->output->setNextAction( 'db&do=check' );
$this->registry->output->addContent( $this->fetchContent() );
$this->registry->output->sendOutput();
return;
}
//------------------------------------------
// Make CONSTANT
//------------------------------------------
define( 'SQL_DRIVER' , IPSSetUp::getSavedData('sql_driver') );
define( 'IPS_MAIN_DB_CLASS_LOADED', TRUE );
//------------------------------------------
// Try a DB connection
//------------------------------------------
$DB->return_die = true;
if ( ! $DB->connect() )
{
$errors[] = $DB->error;
}
//-----------------------------------------
// Error check
//-----------------------------------------
if ( is_array( $errors ) AND count( $errors ) )
{
$this->registry->output->setTitle( "База данных: Ошибка" );
$this->registry->output->setNextAction( 'db&do=check' );
$this->registry->output->addWarning( implode( "<br />", $errors ) );
$this->registry->output->addContent( $this->fetchContent() );
$this->registry->output->sendOutput();
return;
}
/* Save Form Data */
IPSSetUp::setSavedData('db_host', $this->request['db_host'] );
IPSSetUp::setSavedData('db_name', $this->request['db_name'] );
IPSSetUp::setSavedData('db_user', $this->request['db_user'] );
IPSSetUp::setSavedData('db_pass', $_REQUEST['db_pass'] );
IPSSetUp::setSavedData('db_pre' , $this->request['db_pre'] );
/* Are we overwriting an IP.Board 2.x or 3.x installation? */
if ( ! $this->request['overwrite'] )
{
if ( $DB->checkForTable( 'upgrade_history' ) )
{
/* Get latest version */
$latest = $DB->buildAndFetch( array( 'select' => '*',
'from' => 'upgrade_history',
'order' => 'upgrade_version_id DESC',
'limit' => array( 0, 1 ) ) );
if ( is_array( $latest ) )
{
$this->registry->output->setTitle( "База данных: Ошибка" );
$this->registry->output->setNextAction( 'db&do=check' );
$this->registry->output->addWarning( "Обнаружена установленная IP.Board " . $latest['upgrade_version_human'] );
$this->registry->output->addContent( $this->fetchContent( TRUE ) );
$this->registry->output->sendOutput();
return;
}
}
}
/* Next Action */
$this->registry->autoLoadNextAction( 'admin' );
return;
}
}
//--------------------------------------------------
// DO WE HAVE A DB DRIVER SET?
//--------------------------------------------------
IPSSetUp::setSavedData('sql_driver', strtolower( ( IPSSetUp::getSavedData('sql_driver') == "" ) ? $_REQUEST['sql_driver'] : IPSSetUp::getSavedData('sql_driver') ) );
if ( ! IPSSetUp::getSavedData('sql_driver') )
{
//----------------------------------------------
// Test to see how many DB driver's we've got..
//----------------------------------------------
$dh = opendir( IPS_KERNEL_PATH );
while ( $file = @readdir( $dh ) )
{
if ( preg_match( "/^classDb([a-zA-Z0-9]*)\.php/i", $file, $driver ) )
{
if ( stristr( $driver[1], 'client' ) OR ! $driver[1] )
{
continue;
}
$drivers[] = $driver[1];
}
}
@closedir( $dh );
//----------------------------------------------
// Got more than one?
//----------------------------------------------
if ( count($drivers) > 1 )
{
//------------------------------------------
// Show choice screen first...
//------------------------------------------
/* Page Output */
$this->registry->output->setTitle( "База данных" );
$this->registry->output->setNextAction( 'db' );
$this->registry->output->addContent( $this->registry->output->template()->page_check_db( $drivers ) );
$this->registry->output->sendOutput();
}
else
{
//------------------------------------------
// Use only driver installed
//------------------------------------------
IPSSetUp::setSavedData( 'sql_driver', strtolower($drivers[0]) );
}
}
$this->request['db_host'] = ( $this->request['db_host'] ) ? $this->request['db_host'] : 'localhost';
$this->registry->output->setTitle( "База данных" );
$this->registry->output->setNextAction( 'db&do=check' );
$this->registry->output->addContent( $this->fetchContent() );
$this->registry->output->sendOutput();
}
/**
* Fetch content
*
* @access public
* @param bool
* @return string
*/
public function fetchContent( $check=FALSE )
{
/* Output */
$content = ( $check === FALSE ) ? $this->registry->output->template()->page_db() : $this->registry->output->template()->page_dbOverride();
/* Driver extras? */
if ( file_exists( IPS_ROOT_PATH . 'setup/sql/'.IPSSetUp::getSavedData('sql_driver').'_install.php' ) )
{
require_once( IPS_ROOT_PATH . 'setup/sql/'.IPSSetUp::getSavedData('sql_driver').'_install.php' );
$extra_install = new install_extra( $this->registry );
$content = str_replace( '<!--{EXTRA.SQL}-->', $extra_install->install_form_extra(), $content );
}
return $content;
}
}
@@ -0,0 +1,46 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Installer: EULA file
* Last Updated: $LastChangedDate: 2009-05-21 08:29:40 -0400 (Thu, 21 May 2009) $
*
* @author $Author: matt $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @version $Rev: 4681 $
*
*/
class install_done extends ipsCommand
{
/**
* Execute selected method
*
* @access public
* @param object Registry object
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
$installLocked = FALSE;
/* Lock the page */
if ( @file_put_contents( DOC_IPS_ROOT_PATH . 'cache/installer_lock.php', 'Just out of interest, what did you expect to see here?' ) )
{
$installLocked = TRUE;
}
/* Clean conf global */
IPSInstall::cleanConfGlobal();
/* Simply return the EULA page */
$this->registry->output->setTitle( "Установка завершена!" );
$this->registry->output->setHideButton( TRUE );
$this->registry->output->addContent( $this->registry->output->template()->page_installComplete( $installLocked ) );
$this->registry->output->sendOutput( FALSE );
}
}
@@ -0,0 +1,34 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Installer: EULA file
* Last Updated: $LastChangedDate: 2009-02-04 15:03:36 -0500 (Wed, 04 Feb 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @version $Rev: 3887 $
*
*/
class install_eula extends ipsCommand
{
/**
* Execute selected method
*
* @access public
* @param object Registry object
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
/* Simply return the EULA page */
$this->registry->output->setTitle( "Соглашение" );
$this->registry->output->addContent( $this->registry->output->template()->page_eula() );
$this->registry->output->sendOutput();
}
}
@@ -0,0 +1,158 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Installer: Index file
* Last Updated: $LastChangedDate: 2009-07-16 10:24:48 -0400 (Thu, 16 Jul 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @version $Rev: 4900 $
*
*/
class install_index extends ipsCommand
{
/**
* Execute selected method
*
* @access public
* @param object Registry object
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
/* INIT */
$filesOK = NULL;
$extensions = get_loaded_extensions();
$extensionsOK = TRUE;
$extensionData = array();
/* Test Extensions */
include( IPS_ROOT_PATH . 'setup/xml/requiredextensions.php' );
if ( is_array( $INSTALLDATA ) )
{
foreach( $INSTALLDATA as $data )
{
if ( ! in_array( $data['testfor'], $extensions ) )
{
//-----------------------------------------
// Added 'nohault' key which will show a
// warning but not prohibit installation
//-----------------------------------------
if( $data['nohault'] )
{
$data['_ok'] = 1; // Anything but true or false
$extensionsOK = 1; // Anything but true or false
}
else
{
$extensionsOK = FALSE;
}
}
else
{
$data['_ok'] = TRUE;
}
$extensionData[] = $data;
}
}
/* Check for conf_global.dist.php */
if ( file_exists( DOC_IPS_ROOT_PATH . 'conf_global.dist.php') AND ! file_exists( DOC_IPS_ROOT_PATH.'conf_global.php') )
{
if ( ! @rename( DOC_IPS_ROOT_PATH.'conf_global.dist.php', DOC_IPS_ROOT_PATH.'conf_global.php' ) )
{
$filesOK = FALSE;
$this->registry->output->addError( "<strong>Вы должны переименовать файл 'conf_global.<b style='color:red'>dist.php</b>' в 'conf_global.<b style='color:red'>php</b>' перед продолжением.</strong>
Этот файл можно найти в корневой директории IP.Board." );
}
}
/* All extensions loaded OK? */
if ( $extensionsOK == TRUE AND $filesOK === NULL )
{
$filesOK = FALSE;
/* Fetch core writeable files */
require_once( IPS_KERNEL_PATH . 'classXML.php' );
$xml = new classXML( IPSSetUp::charSet );
try
{
$xml->load( IPS_ROOT_PATH . 'setup/xml/writeablefiles.xml' );
foreach( $xml->fetchElements( 'file' ) as $xmlelement )
{
$data = $xml->fetchElementsFromRecord( $xmlelement );
if ( $data['path'] )
{
$_path = DOC_IPS_ROOT_PATH . $data['path'];
if ( ! file_exists( $_path ) )
{
if ( $data['dir'] )
{
if ( ! @mkdir( $_path, 0777, TRUE ) )
{
$this->registry->output->addError( 'Директория "' . $data['path'] . '" не существует, создайте ее' );
}
}
else
{
$this->registry->output->addError( 'Файл "' . $data['path'] . '" не существует, создайте его' );
}
}
if ( ! is_writeable( $_path ) )
{
if ( ! @chmod( $_path, 0777 ) )
{
if ( is_dir( $_path ) )
{
$this->registry->output->addError( 'Запись в директорию: "' . $data['path'] . '" невозможна , измените права доступа' );
}
else
{
$this->registry->output->addError( 'Запись в файл "' . $data['path'] . '" невозможна, измените права доступа' );
}
}
}
}
}
if ( ! count( $this->registry->output->fetchErrors() ) )
{
$filesOK = TRUE;
}
}
catch( Exception $error )
{
$filesOK = FALSE;
$this->registry->output->addError( "Файл " . IPS_ROOT_PATH . 'setup/xml/writeablefiles.xml не найден' );
}
}
/* Hide buttons? */
if ( $filesOK !== TRUE OR $extensionsOK != TRUE )
{
$this->registry->output->setNextAction( '' );
$this->registry->output->setHideButton( TRUE );
}
/* Simply return the requirements page */
$this->registry->output->setTitle( "Требования" );
$this->registry->output->addContent( $this->registry->output->template()->page_requirements( $filesOK, $extensionsOK, $extensionData ) );
$this->registry->output->sendOutput();
}
}
?>
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,292 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Installer: EULA file
* Last Updated: $LastChangedDate: 2009-01-05 22:21:54 +0000 (Mon, 05 Jan 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @version $Rev: 3572 $
*
*/
class upgrade_apps extends ipsCommand
{
/**
* Execute selected method
*
* @access public
* @param object Registry object
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
/* Save data */
if ( $this->request['do'] == 'save' )
{
$apps = explode( ',', IPSSetUp::getSavedData('install_apps') );
$toSave = array();
$vNums = array();
if ( is_array( $apps ) and count( $apps ) )
{
foreach( $apps as $app )
{
/* Grab version numbers */
$numbers = IPSSetUp::fetchAppVersionNumbers( $app );
/* Grab all numbers */
$nums[ $app ] = IPSSetUp::fetchXmlAppVersions( $app );
/* Grab app data */
$appData[ $app ] = IPSSetUp::fetchXmlAppInformation( $app );
$appClasses[ $app ] = IPSSetUp::fetchVersionClasses( $app, $numbers['current'][0], $numbers['latest'][0] );
/* Store starting vnums */
$vNums[ $app ] = $numbers['current'][0];
}
/* Got anything? */
if ( count( $appClasses ) )
{
foreach( $appClasses as $app => $data )
{
foreach( $data as $num )
{
if ( file_exists( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' ) )
{
$_class = 'version_class_' . $num;
require_once( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' );
$_tmp = new $_class( $this->registry );
if ( method_exists( $_tmp, 'preInstallOptionsSave' ) )
{
$_t = $_tmp->preInstallOptionsSave();
if ( is_array( $_t ) AND count( $_t ) )
{
$toSave[ $app ][ $num ] = $_t;
}
}
}
}
}
/* Save it */
if ( count( $toSave ) )
{
IPSSetUp::setSavedData('custom_options', $toSave );
}
if ( count( $vNums ) )
{
IPSSetUp::setSavedData('version_numbers', $vNums );
}
}
}
/* Next Action */
$this->registry->autoLoadNextAction( 'upgrade' );
}
/* Check input? */
else if ( $this->request['do'] == 'check' )
{
/* Check Directory */
if ( ! is_array( $_POST['apps'] ) OR ! count( $_POST['apps'] ) )
{
$this->registry->output->addError( 'Необходмо выбрать приложения для обновления.' );
}
else
{
/* If it's lower than 3.0.0, then add in the removed apps */
if ( IPSSetUp::is300plus() !== TRUE )
{
$_POST['apps']['forums'] = 1;
$_POST['apps']['members'] = 1;
$_POST['apps']['calendar'] = 1;
$_POST['apps']['chat'] = 1;
$_POST['apps']['portal'] = 1;
//$_POST['apps']['subscriptions'] = 1;
}
else
{
if( $_POST['apps']['core'] )
{
$_POST['apps']['forums'] = 1;
$_POST['apps']['members'] = 1;
}
}
/* Save Form Data */
IPSSetUp::setSavedData('install_apps', implode( ',', array_keys( $_POST['apps'] ) ) );
/* Got any app-version classes? */
$appClasses = array();
$output = array();
$nums = array();
$appData = array();
foreach( $_POST['apps'] as $app => $val )
{
/* Grab version numbers */
$numbers = IPSSetUp::fetchAppVersionNumbers( $app );
/* Grab all numbers */
$nums[ $app ] = IPSSetUp::fetchXmlAppVersions( $app );
/* Grab app data */
$appData[ $app ] = IPSSetUp::fetchXmlAppInformation( $app );
$appClasses[ $app ] = IPSSetUp::fetchVersionClasses( $app, $numbers['current'][0], $numbers['latest'][0] );
}
/* Got anything? */
if ( count( $appClasses ) )
{
foreach( $appClasses as $app => $data )
{
foreach( $data as $num )
{
if ( file_exists( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' ) )
{
$_class = 'version_class_' . $num;
require_once( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' );
$_tmp = new $_class( $this->registry );
if ( method_exists( $_tmp, 'preInstallOptionsForm' ) )
{
$_t = $_tmp->preInstallOptionsForm();
if ( $_t )
{
$output[ $app ][ $num ] = array( 'long' => $nums[ $app ][ $num ],
'app' => $appData[ $app ],
'out' => $_t );
}
}
}
}
}
}
/* Finally... */
if ( count( $output ) )
{
$this->registry->output->setTitle( "Приложения" );
$this->registry->output->setNextAction( 'apps&do=save' );
//$this->registry->output->setHideButton( TRUE );
$this->registry->output->addContent( $this->registry->output->template()->upgrade_appsOptions( $output ) );
$this->registry->output->sendOutput();
}
else
{
/* Next Action */
$this->registry->autoLoadNextAction( 'upgrade' );
}
}
}
/* Generate apps... */
$apps = array( 'core' => array(), 'ips' => array(), 'other' => array() );
foreach( array( 'applications', 'applications_addon/ips', 'applications_addon/other' ) as $_pBit )
{
$path = IPS_ROOT_PATH . $_pBit;
$handle = opendir( $path );
while ( ( $file = readdir( $handle ) ) !== FALSE )
{
if ( ! preg_match( "#^\.#", $file ) )
{
if ( is_dir( $path . '/' . $file ) )
{
//-----------------------------------------
// Get it!
//-----------------------------------------
if ( ! file_exists( IPS_ROOT_PATH . $_pBit . '/' . $file . '/xml/information.xml' ) )
{
continue;
}
$data = IPSSetUp::fetchXmlAppInformation( $file );
switch( $_pBit )
{
case 'applications':
$apps['core'][ $file ] = $data;
break;
case 'applications_addon/ips':
$apps['ips'][ $file ] = $data;
break;
case 'applications_addon/other':
$apps['other'][ $file ] = $data;
break;
}
}
}
}
closedir( $handle );
}
/* Reorder the array so that core is first */
$new_array = array();
$new_array['core'] = $apps['core']['core'];
foreach( $apps['core'] as $app => $data )
{
if( $app == 'core' )
{
continue;
}
$new_array[$app] = $data;
}
$apps['core'] = $new_array;
/* Now get version numbers */
foreach( $apps as $type => $app )
{
foreach( $apps[ $type ] as $app => $data )
{
if ( $type == 'core' and ( $app == 'forums' OR $app == 'members' ) )
{
/* Skip forums and members and just count core for now */
continue;
}
/* Grab version numbers */
$numbers = IPSSetUp::fetchAppVersionNumbers( $app );
$apps[ $type ][ $app ]['_vnumbers'] = $numbers;
}
}
/* If it's lower than 3.0.0, then remove some apps and make them part of 'core' */
if ( IPSSetUp::is300plus() !== TRUE )
{
unset( $apps['ips']['calendar'] );
unset( $apps['ips']['chat'] );
unset( $apps['ips']['portal'] );
unset( $apps['other']['subscriptions'] );
}
/* Page Output */
$this->registry->output->setTitle( "Приложения" );
$this->registry->output->setNextAction( 'apps&do=check' );
//$this->registry->output->setHideButton( TRUE );
$this->registry->output->addContent( $this->registry->output->template()->upgrade_apps( $apps ) );
$this->registry->output->sendOutput();
}
}
@@ -0,0 +1,101 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.0
* Upgrader: Database Convertion
*
* @author Tony
* @copyright (c) 2009 IBResource.ru
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
*
*/
class upgrade_convert extends ipsCommand
{
/**
* Execute selected method
*
* @access public
* @param object Registry object
* @return void
*/
public function doExecute( ipsRegistry $registry ) {
// uncomment to skip this step
//$this->registry->autoLoadNextAction( 'apps' );
if( strtolower( $this->settings['sql_driver'] ) == 'mysql' ) {
$utf8_ok = FALSE;
$table_prefix = $this->registry->dbFunctions()->getPrefix(); // PREFIX CAN BE EMPTY !
$this->DB->return_die = 1;
$this->DB->allow_sub_select = 1;
$this->DB->error = '';
if( substr( $this->DB->getSqlVersion(), 0, 1 ) >= 5 ) {
$query = "SELECT table_collation FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = '{$this->settings['sql_database']}' AND table_name LIKE '{$table_prefix}%'";
$this->DB->query( $query );
if ( $this->DB->error ) {
$this->registry->output->addError( nl2br( $query ) . '<br /><br />' . $this->DB->error );
}
else {
$utf8_ok = TRUE;
while( $r = $this->DB->fetch() ) {
if ( strpos( $r['table_collation'], 'utf8' ) !== 0 ) {
$utf8_ok = FALSE;
break;
}
}
}
}
else {
$tables = Array( 'posts', 'forums' );
foreach( $tables as $table ) {
$table = $table_prefix . $table;
$query = 'SHOW CREATE TABLE ' . $table;
$this->DB->query( $query );
if ( $this->DB->error ) {
$this->registry->output->addError( nl2br( $query ) . '<br /><br />' . $this->DB->error );
$utf8_ok = FALSE;
break;
}
$code = $this->DB->fetch();
if ( preg_match( '/ DEFAULT CHARSET=utf8/', $code['Create Table'] )) {
$utf8_ok = TRUE;
}
else {
$utf8_ok = FALSE;
}
}
}
if( $utf8_ok ) {
$this->registry->autoLoadNextAction( 'apps' );
}
else {
$this->registry->output->setNextAction( '' );
$this->registry->output->setHideButton( TRUE );
$this->registry->output->setTitle( 'Конвертация базы данных' );
$this->registry->output->addContent( $this->registry->output->template()->page_convert() );
$this->registry->output->sendOutput();
}
}
else {
$this->registry->autoLoadNextAction( 'apps' );
}
}
}
@@ -0,0 +1,93 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Installer: DONE file
* Last Updated: $LastChangedDate: 2009-02-04 20:03:59 +0000 (Wed, 04 Feb 2009) $
*
* @author $Author: bfarber $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @version $Rev: 3887 $
*
*/
class upgrade_done extends ipsCommand
{
/**
* Execute selected method
*
* @access public
* @param object Registry object
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
/* Remove the FURL cache */
@unlink( IPS_CACHE_PATH . 'cache/furlCache.php' );
/* Got anything to show? */
$apps = explode( ',', IPSSetUp::getSavedData('install_apps') );
$vNums = IPSSetUp::getSavedData('version_numbers');
$output = array();
if ( is_array( $apps ) and count( $apps ) )
{
foreach( $apps as $app )
{
/* Grab version numbers */
$numbers = IPSSetUp::fetchAppVersionNumbers( $app );
/* Grab all numbers */
$nums[ $app ] = IPSSetUp::fetchXmlAppVersions( $app );
/* Grab app data */
$appData[ $app ] = IPSSetUp::fetchXmlAppInformation( $app );
$appClasses[ $app ] = IPSSetUp::fetchVersionClasses( $app, $vNums[ $app ], $numbers['latest'][0] );
}
/* Got anything? */
if ( count( $appClasses ) )
{
foreach( $appClasses as $app => $data )
{
foreach( $data as $num )
{
if ( file_exists( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' ) )
{
$_class = 'version_class_' . $num;
require_once( IPSLib::getAppDir( $app ) . '/setup/versions/upg_' . $num . '/version_class.php' );
$_tmp = new $_class( $this->registry );
if ( method_exists( $_tmp, 'postInstallNotices' ) )
{
$_t = $_tmp->postInstallNotices();
if ( is_array( $_t ) AND count( $_t ) )
{
$output[ $app ][ $num ] = array( 'long' => $nums[ $app ][ $num ],
'app' => $appData[ $app ],
'out' => implode( "<br />", $_t ) );
}
}
}
}
}
}
}
/* Remove any SQL source files */
IPSSetUp::removeSqlSourceFiles();
/* Simply return the Done page */
$this->registry->output->setTitle( "Обновление завершено!" );
$this->registry->output->setHideButton( TRUE );
$this->registry->output->addContent( $this->registry->output->template()->upgrade_complete( $output ) );
$this->registry->output->sendOutput();
}
}
@@ -0,0 +1,76 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Upgrader: Index file - Shows log in page
* Last Updated: $LastChangedDate: 2009-01-14 08:31:37 +0000 (Wed, 14 Jan 2009) $
*
* @author $Author: matt $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @version $Rev: 3671 $
*
*/
class upgrade_index extends ipsCommand
{
/**
* Execute selected method
*
* @access public
* @param object Registry object
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
if ( ! $this->request['do'] OR $this->request['do'] == 'form' )
{
/* Simply return the log in page */
$this->_showForm();
}
else
{
/* Error: No input */
if ( ! $_POST['username'] OR ! $_POST['password'] )
{
$this->registry->output->addWarning( "Необходимо ввести имя пользователя и пароль" );
$this->_showForm();
}
/* Now authenticate against legacy file */
$result = $this->registry->legacy->authenticateLogIn( $this->request['username'], $this->request['password'] );
if ( $result !== TRUE )
{
/* .. then it contains an error message */
$this->registry->output->addWarning( $result );
$this->_showForm();
}
/* Still here? We're good to go. Create session and forward */
$this->request['s'] = $this->member->sessionClass()->createSession( $this->registry->legacy->fetchMemberData(), $this->registry->legacy->fetchAuthKey() );
$this->registry->autoLoadNextAction( 'overview' );
return;
}
}
/**
* Shows the log in form
*
* @access private
* @return void
*/
public function _showForm()
{
$this->registry->output->setTitle( "Авторизация" );
$this->registry->output->setNextAction( 'index&do=login' );
$this->registry->output->addContent( $this->registry->legacy->fetchLogInForm() );
$this->registry->output->sendOutput();
exit();
}
}
?>
@@ -0,0 +1,150 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Upgrader: Index file - Shows log in page
* Last Updated: $LastChangedDate: 2009-01-14 08:31:37 +0000 (Wed, 14 Jan 2009) $
*
* @author $Author: matt $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @version $Rev: 3671 $
*
*/
class upgrade_overview extends ipsCommand
{
/**
* Execute selected method
*
* @access public
* @param object Registry object
* @return void
*/
public function doExecute( ipsRegistry $registry )
{
/* INIT */
$filesOK = NULL;
$extensions = get_loaded_extensions();
$extensionsOK = TRUE;
$extensionData = array();
/* Test Extensions */
include( IPS_ROOT_PATH . 'setup/xml/requiredextensions.php' );
if ( is_array( $INSTALLDATA ) )
{
foreach( $INSTALLDATA as $data )
{
if ( ! in_array( $data['testfor'], $extensions ) )
{
//-----------------------------------------
// Added 'nohault' key which will show a
// warning but not prohibit installation
//-----------------------------------------
if( $data['nohault'] )
{
$data['_ok'] = 1; // Anything but true or false
$extensionsOK = 1; // Anything but true or false
}
else
{
$extensionsOK = FALSE;
}
}
else
{
$data['_ok'] = TRUE;
}
$extensionData[] = $data;
}
}
/* All extensions loaded OK? */
if ( $extensionsOK == TRUE AND $filesOK === NULL )
{
$filesOK = FALSE;
/* Fetch core writeable files */
require_once( IPS_KERNEL_PATH . 'classXML.php' );
$xml = new classXML( IPSSetUp::charSet );
try
{
$xml->load( IPS_ROOT_PATH . 'setup/xml/writeablefiles.xml' );
foreach( $xml->fetchElements( 'file' ) as $xmlelement )
{
$data = $xml->fetchElementsFromRecord( $xmlelement );
if ( $data['path'] )
{
$_path = DOC_IPS_ROOT_PATH . $data['path'];
if ( ! file_exists( $_path ) )
{
if ( $data['dir'] )
{
if ( ! @mkdir( $_path, 0777, TRUE ) )
{
$this->registry->output->addError( 'Директория не существует: "' . $data['path'] . '". Пожалуйста, создайте ее' );
}
}
else
{
$this->registry->output->addError( 'Файл не существует: "' . $data['path'] . '". Пожалуйста, создайте его' );
}
}
if ( ! is_writeable( $_path ) )
{
if ( ! @chmod( $_path, 0777 ) )
{
if ( is_dir( $_path ) )
{
$this->registry->output->addError( 'Невозможна запись в директорию: "' . $data['path'] . '", измените права доступа к ней на 777' );
}
else
{
$this->registry->output->addError( 'Невозможна запись в файл: "' . $data['path'] . '", измените права доступа к нему на 777' );
}
}
}
}
}
if ( ! count( $this->registry->output->fetchErrors() ) )
{
$filesOK = TRUE;
}
}
catch( Exception $error )
{
$filesOK = FALSE;
$this->registry->output->addError( "Невозможно найти файл: " . IPS_ROOT_PATH . 'setup/xml/writeablefiles.xml' );
}
}
/* Set next action */
//$this->registry->output->setNextAction( 'apps' );
$this->registry->output->setNextAction( 'convert' );
/* Hide buttons? */
if ( $filesOK !== TRUE OR $extensionsOK != TRUE )
{
$this->registry->output->setNextAction( '' );
$this->registry->output->setHideButton( TRUE );
}
/* Simply return the requirements page */
$this->registry->output->setTitle( "Требования" );
$this->registry->output->addContent( $this->registry->output->template()->page_requirements( $filesOK, $extensionsOK, $extensionData, 'обновления' ) );
$this->registry->output->sendOutput();
}
}
?>
File diff suppressed because it is too large. Load diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1008 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1009 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1010 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 B

@@ -0,0 +1 @@
<html>␍<head><title>Invision Power Board - Bulletin Board System</title></head>␍<body>␍<h1>403: Invision Power Board -> Forbidden</h1>␍<hr>␍You have reached this Page in error, please use␍your back button to return to Invision Board.␍<hr>␍<a href="http://www.invisionboard.com/">Invision Power Board</a>␍</body>␍</html>␍
Binary file not shown.

After

Width:  |  Height:  |  Size: 778 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 B

+366
View File
@@ -0,0 +1,366 @@
/**
* Installer CSS
* (c) Invision Power Services, Inc.
*/
/*-----------------------------------------------*/
/* This section resets default browser styles. */
/* You shouldn't need to edit this section. */
/*-----------------------------------------------*/
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td { margin:0; padding:0; }
table { border-collapse:collapse; border-spacing:0; }
fieldset,img { border:0; }
address,caption,cite,code,dfn,em,strong,th,var { font-style:normal; font-weight:normal; }
ol,ul { list-style:none; }
caption,th { text-align:left; }
h1,h2,h3,h4,h5,h6 { font-size:100%; font-weight:normal; }
q:before,q:after { content:''; }
abbr,acronym { border:0; }
hr { display: none; }
/**
* New or modified styles
*/
body {
font-family: arial, verdana, tahoma, sans-serif;
font-size: 13px;
color: #1c2837;
padding: 0px 0px 0px 0px;
}
#login_controls {
margin: 0 auto;
width: 100%;
font-size: 12px;
}
#login_controls label {
display: block;
width: 35%;
color: #000;
float: left;
clear: both;
margin-bottom: 12px;
text-align: right;
padding-right: 15px;
}
#login_controls input {
margin-bottom: 12px;
font-size: 12px;
width: 45%;
}
.nav_button, .button, .realbutton {
-moz-border-radius-bottomleft:3px;
-moz-border-radius-bottomright:3px;
-moz-border-radius-topleft:3px;
-moz-border-radius-topright:3px;
background:#657B97 url(images/gradient_bg.png) repeat-x scroll 70% 50%;
border:1px solid #3E546F;
color:#FFFFFF;
cursor:pointer;
padding:3px;
}
.message {
background-repeat: no-repeat;
background-position: 8px 10px;
padding: 10px 10px 10px 30px;
border-width: 1px;
border-style: solid;
border-color: #b0ce94;
background-color: #f1f6ec;
background-image: url(images/information.png);
color: #3e4934;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
line-height: 150%;
}
.message.error {
background-color: #f3dddd;
background-image: url(images/exclamation.png);
border-color: #deb7b7;
color: #281b1b;
font-size: 1.1em;
}
.message.unspecific {
background-color: #f3f3f3;
border-color: #d4d4d4;
color: #515151;
clear: both;
margin: 0 0 10px 0;
}
.message.unspecific.note {
background-color: #f9f7e0;
border-color: #eadca0;
margin-top: 8px;
}
#branding {
background: #1d3652 url("images/branding_bg.png") repeat-x top;
height: 100px;
}
#navigation {
height: 31px;
background: transparent url(images/sub_bar.png) repeat-x;
border-bottom: 5px solid #ae555b;
}
#navigation p {
float: right;
margin-right: 10px;
margin-top: 11px;
color: #e4eaf1;
font-size: 11px;
}
#navigation p a {
color: #e4eaf1;
text-decoration: none;
}
#navigation ul#section_buttons {
display: inline;
margin-top: -5px;
}
#navigation ul#section_buttons li {
float: left;
margin: 0px 0px 10px 10px;
padding: 0;
}
#navigation ul#section_buttons li span {
display: block;
padding: 7px 15px 13px 13px;
margin-right: -6px;
color: #acbbcc;
font-size: 1em;
text-decoration: none !important;
-moz-outline: 0;
}
#navigation ul#section_buttons li.active {
background: transparent url(images/main_button_left.png) no-repeat;
position: relative;
top: -5px;
}
#navigation ul#section_buttons li.active span {
background: transparent url(images/main_button_right.png) no-repeat top right;
color: #fff;
font-weight: bold;
padding-top: 10px;
}
#ipswrapper {
width: 100%;
margin: auto;
}
.main_shell {
background-color: #1d3652;
border: 1px solid #24426A;
width: 60%;
margin-left:auto;
margin-right:auto;
}
H1 {
margin: 0px;
background-image: url('images/title_bar.gif');
padding: 7px 5px 6px 5px;
font-size: 13px;
color: #ffffff;
font-weight: bold;
}
H2 {
margin: 0px;
font-size: 18px;
}
H3 {
font-size: 11px;
margin: 0px;
}
TABLE {
font-size: 10px;
}
.content_shell
{
margin: 0px 3px 3px 3px;
border: 1px solid #24426A;
border-top: 3px solid #24426A;
background-repeat: repeat-x;
background-color: #D5DDE5;
}
.package {
clear:both;
height: 417px;
}
.content_wrap {
width: 70%;
height: 320px;
float: right;
margin: 6px 6px 4px 0px;
padding: 10px;
background-color: #ffffff;
border: 1px solid #000000;
line-height: 150%;
overflow: auto;
overflow-y:auto;
overflow-x:hidden;
}
.install_info {
float: left;
margin: -5px 0px 0px 10px;
font-size: 12px;
}
.install_info H3 {
font-size: 15px;
color: #6D87A9;
}
.install_info UL {
margin: 0px;
margin-top: 15px;
padding-left: 25px;
list-style-type: none;
}
#progress .step_done {
list-style-image: url('images/bullet_done.gif');
color: #44638E;
font-style: italic;
}
#progress .step_doing {
list-style-image: url('images/bullet_doing.gif');
font-weight: bold;
}
#progress .step_doing p {
color: gray;
font-weight: normal;
}
#progress .step_notdone {
list-style-image: url('images/bullet_notdone.gif');
}
.warning {
background-color: #EDF1AB;
border: 1px solid #6E704B;
padding: 5px;
font-weight: bold;
-moz-border-radius: 5px;
overflow: auto;
}
.hr {
margin: 4px 6px 0px 6px;
border-bottom: 1px solid #627686;
}
.copyright {
width: 98%;
text-align: right;
font-size: 9px;
color: #9EA7B3;
padding-top: 3px;
padding-right: 5px;
}
.eula {
height: 210px;
border: 1px solid #76774C;
background-color: #FDFDD3;
padding: 5px;
overflow: auto;
}
#auto_progress LI {
list-style: none;
color: #029901;
font-size: 11px;
font-weight: bold;
padding: 3px;
}
.done_text {
font-size: 14px;
font-weight: bold;
}
#links {
margin: 0px;
padding: 5px;
}
#links LI {
list-style: none;
}
.float_img {
float: left;
margin-right: 5px;
}
.info {
background-color: #DCE6F3;
border: 1px solid #5876A0;
padding: 4px;
line-height: 120%;
-moz-border-radius: 7px;
color: #1D3A60;
}
.sql_form {
width: 100%;
font-size: 11px;
border-top: 1px solid #6A6A6A;
border-left: 1px solid #6A6A6A;
border-right: 1px solid #A8A8A8;
border-bottom: 1px solid #A8A8A8;
}
FIELDSET {
padding: 10px 10px 10px 10px;
border-width: 1px;
border-style: solid;
border-color: #d5dde5;
background-color: #F1F4F7;
color: #3e4934;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
line-height: 150%;
}
FIELDSET LEGEND {
font-weight: bold;
}
TABLE .title {
color: #2D4461;
font-weight: bold;
padding-bottom: 3px;
}
TABLE .content {
padding-bottom: 3px;
}
+209
View File
@@ -0,0 +1,209 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Static SETUP Classes for IP.Board 3
*
* These classes are not required as objects.
* Last Updated: $Date: 2009-05-20 07:39:47 -0400 (Wed, 20 May 2009) $
*
* @author Matt Mecham
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @since 1st December 2008
* @version $Revision: 4672 $
*
*/
/**
* Collection of methods to for installation alone
*
* @author Matt
*/
class IPSInstall
{
/**
* Create admin account
*
* @access public
* @return void
*/
static public function createAdminAccount()
{
/* Build Entry */
$_mke_time = ( ipsRegistry::$settings['login_key_expire'] ) ? ( time() + ( intval( ipsRegistry::$settings['login_key_expire'] ) * 86400 ) ) : 0;
$salt = IPSMember::generatePasswordSalt( 5 );
$passhash = IPSMember::generateCompiledPasshash( $salt, md5( IPSSetUp::getSavedData('admin_pass') ) );
$_dname = IPSSetUp::getSavedData('admin_user');
$member = array(
'name' => $_dname,
'members_l_username' => mb_strtolower( $_dname ),
'members_display_name' => $_dname,
'members_l_display_name' => mb_strtolower( $_dname ),
'members_seo_name' => IPSText::makeSeoTitle( $_dname ),
'member_login_key' => IPSMember::generateAutoLoginKey(),
'member_login_key_expire' => $_mke_time,
'title' => 'Администратор',
'email' => IPSSetUp::getSavedData('admin_email') ,
'member_group_id' => 4,
'posts' => 1,
'joined' => time(),
'last_visit' => time(),
'last_activity' => time(),
'ip_address' => my_getenv('REMOTE_ADDR'),
'view_sigs' => 1,
'email_pm' => 1,
'view_img' => 1,
'view_avs' => 1,
'restrict_post' => 0,
'msg_show_notification' => 1,
'msg_count_total' => 0,
'msg_count_new' => 0,
'coppa_user' => 0,
'language' => IPSLib::getDefaultLanguage(),
'members_auto_dst' => 1,
'members_editor_choice' => ipsRegistry::$settings['ips_default_editor'],
'allow_admin_mails' => 0,
'hide_email' => 1,
'members_pass_hash' => $passhash,
'members_pass_salt' => $salt,
);
/* Insert: MEMBERS */
ipsRegistry::DB()->force_data_type = array( 'name' => 'string', 'members_display_name' => 'string', 'members_l_username' => 'string', 'members_l_display_name' => 'string' );
ipsRegistry::DB()->insert( 'members', $member );
$member_id = ipsRegistry::DB()->getInsertId();
$member['member_id'] = $member_id;
/* Insert into the custom profile fields DB */
ipsRegistry::DB()->force_data_type = array();
ipsRegistry::DB()->insert( 'pfields_content', array( 'member_id' => $member_id, 'updated' => time() ) );
/* Insert into pp */
ipsRegistry::DB()->insert( 'profile_portal', array(
'pp_member_id' => $member_id,
'pp_setting_count_friends' => 1,
'signature' => '',
'pconversation_filters' => '',
'pp_setting_count_comments' => 1 ) );
}
/**
* Writes out conf_global
*
* @access public
* @return bool File written successfully
*/
static public function writeConfiguration()
{
//-----------------------------------------
// Safe mode?
//-----------------------------------------
$safe_mode = 0;
if ( @get_cfg_var('safe_mode') )
{
$safe_mode = @get_cfg_var('safe_mode');
}
//-----------------------------------------
// Set info array
//-----------------------------------------
$INFO = array(
'sql_driver' => IPSSetUp::getSavedData('sql_driver'),
'sql_host' => IPSSetUp::getSavedData('db_host'),
'sql_database' => IPSSetUp::getSavedData('db_name'),
'sql_user' => IPSSetUp::getSavedData('db_user'),
'sql_pass' => IPSSetUp::getSavedData('db_pass'),
'sql_tbl_prefix' => IPSSetUp::getSavedData('db_pre'),
'sql_debug' => 1,
'sql_charset' => 'utf8',
'board_start' => time(),
'installed' => 1,
'php_ext' => 'php',
'safe_mode' => $safe_mode,
//'base_url' => IPSSetUp::getSavedData('install_url'),
'board_url' => IPSSetUp::getSavedData('install_url'),
'banned_group' => '5',
'admin_group' => '4',
'guest_group' => '2',
'member_group' => '3',
'auth_group' => '1',
'use_friendly_urls' => 1,
'_jsDebug' => 0
);
//---------------------------------------------
// Any "extra" configs required for this driver?
//---------------------------------------------
foreach( IPSSetUp::getSavedDataAsArray() as $k => $v )
{
if ( preg_match( "#^__sql__#", $k ) )
{
$k = str_replace( "__sql__", "", $k );
$INFO[ $k ] = $v;
}
}
//---------------------------------------------
// Write to disk
//---------------------------------------------
$core_conf = "<"."?php\n";
foreach( $INFO as $k => $v )
{
$core_conf .= '$INFO['."'".$k."'".']'."\t\t\t=\t'".$v."';\n";
}
$core_conf .= "\ndefine('IN_DEV', 0);";
$core_conf .= "\n".'?'.'>';
/* Write Configuration Files */
$output[] = 'Запись файлов настройки<br />';
$ret = IPSSetUp::writeFile( IPSSetUp::getSavedData('install_dir') . '/conf_global.php' , $core_conf );
/* Now freeze data */
IPSSetUp::freezeSavedData();
return $ret;
}
/**
* Clean up conf global
* Removes data variables
*
* @access public
* @return boolean
*/
static public function cleanConfGlobal()
{
if ( $contents = @file_get_contents( IPSSetUp::getSavedData('install_dir') . '/conf_global.php' ) )
{
if ( $contents )
{
$contents = preg_replace( "#/\*~~DATA~~\*/(.+?)\n/\*\*/#s", "", $contents );
return IPSSetUp::writeFile( IPSSetUp::getSavedData('install_dir') . '/conf_global.php' , $contents );
}
}
return FALSE;
}
}
@@ -0,0 +1,294 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* ipsController for setup
* Last Updated: $Date: 2009-05-15 09:34:37 -0400 (Fri, 15 May 2009) $
*
* @author Matt Mecham
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @since 1st December 2008
* @version $Revision: 4656 $
*
*/
/**
* Class "Controller"
* A very simple public facing interface to resolve incoming data into
* a command class
*
* @author Matt Mecham
* @since Wednesday 14th May 2008
* @package Invision Power Board
*/
class ipsController
{
/**
* Registry reference
*
* @access private
* @var object
*/
private $registry;
/**
* Current command
*
* @access public
* @var object
*/
static public $cmd;
/**
* Make us a singleton please
*
* @access private
* @return void
*/
private function __construct() { }
/**
* Public facing function to run the controller
*
* @access public
* @return void
*/
static public function run()
{
$instance = new ipsController();
$instance->init();
$instance->handleRequest();
}
/**
* Initialize ipsRegistry and this class
*
* @access protected
* @return void
*/
protected function init()
{
$this->registry = ipsRegistry::instance();
$this->registry->init();
}
/**
* Handle the incoming request using the command resolver
*
* @access protected
* @return void
*/
protected function handleRequest()
{
$cmd_r = new ipsController_CommandResolver();
self::$cmd = $cmd_r->getCommand( $this->registry );
self::$cmd->execute( $this->registry );
}
}
/**
* Class "Command Resolver"
* Resolves the incoming data
*
* @author Matt Mecham
* @since Wednesday 14th May 2008
* @package Invision Power Board
*/
class ipsController_CommandResolver
{
/**
* Base command
*
* @access private
* @var object
*/
private static $base_cmd;
/**
* AJAX command
*
* @access private
* @var object
*/
private static $ajax_cmd;
/**
* Default command
*
* @access private
* @var object
*/
private static $default_cmd;
/**
* Constructor
*
* @access public
* @return void
*/
public function __construct()
{
if ( ! self::$base_cmd )
{
self::$base_cmd = new ReflectionClass( 'ipsCommand' );
self::$default_cmd = new ipsCommand_default();
}
}
/**
* Get the command
*
* @access public
* @param object ipsRegistry reference
* @return object Command object
*/
public function getCommand( ipsRegistry $registry )
{
$section = ipsRegistry::$current_section;
$filepath = ( IPS_IS_UPGRADER ) ? IPS_ROOT_PATH . 'setup/applications/upgrade/sections/' : IPS_ROOT_PATH . 'setup/applications/install/sections/';
/* Got a section? */
if ( ! $section )
{
if ( file_exists( $filepath . 'index.php' ) )
{
$section = 'index';
}
}
$classname = IPS_APP_COMPONENT . '_' . $section;
if ( file_exists( $filepath . 'manualResolver.php' ) )
{
require_once( $filepath . 'manualResolver.php' );
$classname = IPS_APP_COMPONENT . '_' . $module . '_manualResolver';
}
else if ( file_exists( $filepath . $section . '.php' ) )
{
require_once( $filepath . $section . '.php' );
}
if ( class_exists( $classname ) )
{
$cmd_class = new ReflectionClass( $classname );
if ( $cmd_class->isSubClassOf( self::$base_cmd ) )
{
return $cmd_class->newInstance();
}
else
{
throw new Exception( "$section в модуле $module не существует!" );
}
}
# Fudge it to return just the default object
return clone self::$default_cmd;
}
}
abstract class ipsCommand
{
/**#@+
* Registry Object Shortcuts
*
* @access protected
* @var object
*/
protected $registry;
protected $DB;
protected $settings;
protected $request;
protected $lang;
protected $member;
protected $cache;
/**
* Constructor override
*
* @access public
* @return void
*/
final public function __construct()
{
}
/**
* Create registry shortcuts
*
* @access public
* @param object ipsRegistry reference
* @return void
*/
public function makeRegistryShortcuts( ipsRegistry $registry )
{
/* Make registry objects */
$this->registry = $registry;
$this->DB = $this->registry->DB();
$this->settings =& $this->registry->fetchSettings();
$this->request =& $this->registry->fetchRequest();
$this->member = $this->registry->member();
$this->memberData =& $this->registry->member()->fetchMemberData();
$this->cache = $this->registry->cache();
$this->caches =& $this->registry->cache()->fetchCaches();
}
/**
* Execute the commands
*
* @access public
* @param object ipsRegistry reference
* @return void
*/
public function execute( ipsRegistry $registry )
{
$this->makeRegistryShortcuts( $registry );
$this->doExecute( $registry );
}
/**
* doExecute, most be override
*
* @access protected
* @param object ipsRegistry reference
* @return void
*/
protected abstract function doExecute( ipsRegistry $registry );
}
class ipsCommand_default extends ipsCommand
{
/**
* Main execution method
*
* @access public
* @param object ipsRegistry reference
* @return void
*/
protected function doExecute( ipsRegistry $registry )
{
$filepath = IPSLib::getAppDir( IPS_APP_COMPONENT ) . '/modules/' . ipsRegistry::$current_module . '/' . ipsRegistry::$current_section . '.php';
$filepath = str_replace( DOC_IPS_ROOT_PATH, '', $filepath );
//-----------------------------------------
// Uh oh, this is a big one.. (no forums app)
//-----------------------------------------
if ( ! file_exists( $filepath ) )
{
print "Не найден файл команд " . ipsRegistry::$current_module;
exit();
}
else
{
print "Нет действий!";
exit();
}
}
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,765 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Installer output methods
* Last Updated: $Date: 2009-11-19 11:58:45 -0500 (Thu, 19 Nov 2009) $
*
* @author Matt Mecham
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @since 1st December 2008
* @version $Revision: 5443 $
*
*/
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 output
*
* Class for managing skins, templates and printing output
*
* @author Matt Mecham
* @package Invision Power Board
* @version 3.0.0
*/
class output
{
/**#@+
* Registry Object Shortcuts
*
* @access public
* @var object
*/
public $registry;
public $DB;
public $settings;
public $request;
public $member;
public $cache;
/**
* URLs array
*
* @access public
* @var array
*/
public $urls = array();
/**
* Template
*
* @access protected
* @var object
*/
protected $template = '';
/**
* Image url
*
* @access protected
* @var string
*/
protected $imgUrl = '';
/**
* HTML to output
*
* @access protected
* @var string
*/
protected $_html = '';
/**
* Page title
*
* @access protected
* @var string
*/
protected $_title = '';
/**
* Error messages
*
* @access protected
* @var array
*/
protected $_errors = array();
/**
* Navigation information
*
* @access protected
* @var array
*/
protected $__navigation = array();
/**
* Currently in an error
*
* @access protected
* @var bool
*/
protected $_isError = FALSE;
/**
* Navigation information
*
* @access pubic
* @var array
*/
public $_navigation = array();
/**
* Warnings
*
* @access protected
* @var array
*/
protected $_warnings = array();
/**
* Sequence data
*
* @access public
* @var array
*/
public $sequenceData = array();
/**
* Current page
*
* @access public
* @var string
*/
public $currentPage = '';
/**
* Next page
*
* @access public
* @var string
*/
public $nextAction = '';
/**
* Hide continue button
*
* @access public
* @var bool
*/
public $_hideButton = FALSE;
/**
* Install steps
*
* @access private
* @var array
*/
private $_installStep = array();
/**
* Internal array for messages
*
* @access private
* @var array
*/
private $_messages = array();
private $_curVersion = 0;
private $_curApp = '';
/**
* Construct
*
* @access public
* @param object ipsRegistry reference
* @param bool Whether to init
* @return void
*/
public function __construct( ipsRegistry $registry, $init=FALSE )
{
/* Make object */
$this->registry = $registry;
$this->DB = $this->registry->DB();
$this->settings =& $this->registry->fetchSettings();
$this->request =& $this->registry->fetchRequest();
$this->member = $this->registry->member();
$this->memberData =& $this->registry->member()->fetchMemberData();
$this->cache = $this->registry->cache();
$this->caches =& $this->registry->cache()->fetchCaches();
if ( $init === TRUE )
{
/* Load 'template' */
require_once( IPS_ROOT_PATH . 'setup/templates/skin_setup.php' );
$this->template = new skin_setup( $registry );
/* Images URL */
$this->imageUrl = '../setup/public/images';
/* Fetch sequence data */
require_once( IPS_KERNEL_PATH . 'classXML.php' );
$xml = new classXML( IPSSetUp::charSet );
$file = ( IPS_IS_UPGRADER ) ? IPS_ROOT_PATH . 'setup/xml/upgrade_sequence.xml' : IPS_ROOT_PATH . 'setup/xml/sequence.xml';
try
{
$xml->load( $file );
foreach( $xml->fetchElements( 'action' ) as $xmlelement )
{
$data = $xml->fetchElementsFromRecord( $xmlelement );
$_tmp[ $data['position'] ] = $data;
ksort( $_tmp );
foreach( $_tmp as $pos => $data )
{
$this->sequenceData[ $data['file'] ] = $data['menu'];
}
}
}
catch( Exception $error )
{
$this->addError( "Невозможно найти файл: " . $file );
}
/* Set up URLs */
$this->settings['base_url'] = ( $this->settings['base_url'] ) ? $this->settings['base_url'] : IPSSetUp::getSavedData('install_url');
$this->settings['img_url_no_dir'] = $this->settings['base_url'] . '/public/style_images/';
/* Set Current Page */
$this->currentPage = ( $this->request['section'] ) ? $this->request['section'] : 'index';
if ( ! $this->sequenceData[ $this->currentPage ] )
{
$this->currentPage = 'index';
}
/* Set default next action */
$_hit = 0;
foreach( $this->sequenceData as $file => $text )
{
if ( $_hit )
{
$this->nextAction = $file;
break;
}
if ( $file == $this->currentPage )
{
$_hit = 1;
}
}
/* Build all skins array */
if ( IPS_IS_UPGRADER )
{
/* For < 3.0.0 upgrades, they won't have this table, so check for it */
if ( $this->DB->checkForTable( 'skin_collections' ) )
{
$this->DB->build( array( 'select' => '*',
'from' => 'skin_collections',
'order' => 'set_id ASC' ) );
$this->DB->execute();
while( $_skinSets = $this->DB->fetch() )
{
$id = $_skinSets['set_id'];
$this->allSkins[ $id ] = $_skinSets;
$this->allSkins[ $id ]['_parentTree'] = unserialize( $_skinSets['set_parent_array'] );
$this->allSkins[ $id ]['_childTree'] = unserialize( $_skinSets['set_child_array'] );
$this->allSkins[ $id ]['_userAgents'] = unserialize( $_skinSets['set_locked_uagent'] );
$this->allSkins[ $id ]['_cssGroupsArray'] = unserialize( $_skinSets['set_css_groups'] );
$this->allSkins[ $id ]['_youCanUse'] = TRUE;
$this->allSkins[ $id ]['_gatewayExclude'] = FALSE;
/* Array groups */
if ( is_array( $this->allSkins[ $id ]['_cssGroupsArray'] ) )
{
ksort( $this->allSkins[ $id ]['_cssGroupsArray'], SORT_NUMERIC );
}
else
{
$this->allSkins[ $id ]['_cssGroupsArray'] = array();
}
}
}
}
}
}
/**
* Add an message string
*
* @access public
* @param string Message
* @return void
*/
public function addMessage( $string )
{
$this->_messages[] = $string;
}
/**
* Add an error string
*
* @access public
* @param string Error
* @return void
*/
public function addError( $string )
{
$this->_errors[] = $string;
}
/**
* Add a warning string
*
* @access public
* @param string Warning
* @return void
*/
public function addWarning( $string )
{
$this->_warnings[] = $string;
}
/**
* Fetch errors
*
* @access public
* @return array Errors
*/
public function fetchErrors()
{
return $this->_errors;
}
/**
* Fetch warnings
*
* @access public
* @return array Warnings
*/
public function fetchWarnings()
{
return $this->_warnings;
}
/**
* Add content
*
* @access public
* @param string content to add
* @param boolean Prepend isntead of append
* @return void
*/
public function addContent( $content, $prepend=false )
{
if( $prepend )
{
$this->_html = $content . $this->_html;
}
else
{
$this->_html .= $content;
}
}
/**
* Set the current version and app
*
* @access public
* @param string Current Human version
* @param string App key
* @return void
*/
public function setVersionAndApp( $version, $app )
{
$this->_curVersion = $version;
$this->_curApp = $app;
}
/**
* Set the current install step
*
* @access public
* @param mixed Current step
* @param int Total steps
* @return void
*/
public function setInstallStep( $current, $total )
{
$this->_installStep = array( $current, $total );
}
/**
* Set the hide button value
*
* @access public
* @param boolean TRUE = hide button, FALSE = show button
* @return void
*/
public function setHideButton( $hide=FALSE )
{
$this->_hideButton = $hide;
}
/**
* Set the next action value
*
* @access public
* @param string action URL
* @return void
*/
public function setNextAction( $url )
{
$this->nextAction = $url;
}
/**
* Set the title of the document
*
* @access public
* @param string Page title
* @return void
*/
public function setTitle( $title )
{
$this->_title = $title;
}
/**
* Add navigational elements
*
* @access public
* @param string Nav title
* @param string Nav URL
* @param string SEO title
* @param string SEO template
* @return void
*/
public function addNavigation( $title, $url, $seoTitle='', $seoTemplate='' )
{
$this->_navigation[] = array( $title, $url, $seoTitle, $seoTemplate );
}
/**
* Set the is error flag
*
* @access public
* @param bool Error yes/no
* @return void
*/
public function setError( $boolean )
{
$this->_isError = $boolean;
}
/**
* Wrapper to return template function
*
* @access public
* @return object
*/
public function template()
{
return $this->template;
}
/**
* Replace IPS tags
* Converts over <#IMG_DIR#>, etc
*
* @access public
* @param string
* @return string
* @todo [Future] Remove the legacy remapping in 3.1. We will assume posts have been rebuilt by then.
*/
public function replaceMacros( $text )
{
//-----------------------------------------
// General replacements
//-----------------------------------------
$text = str_replace( "<#IMG_DIR#>" , $this->skin['set_image_dir'], $text );
$text = str_replace( "<#EMO_DIR#>" , $this->skin['set_emo_dir'] , $text );
$text = str_replace( "<% CHARSET %>" , IPS_DOC_CHAR_SET , $text );
$text = str_replace( "{style_image_url}" , $this->settings['img_url'] , $text );
$text = str_replace( "{style_images_url}" , $this->settings['img_url'] , $text );
//-----------------------------------------
// Fix legacy emoticon/avatar/images links
//-----------------------------------------
$text = preg_replace( "#img\s+?src=([\"'])(?:{$this->settings['board_url']}[^\"']+?)?(?<!public%2F)style_(images|avatars|emoticons)([^\"']+?)[\"'](.+?)?".">#is", "img src=\\1".$this->settings['public_dir']."style_\\2\\3\\1\\4>", $text );
//-----------------------------------------
// Fix up IPB image url
//-----------------------------------------
if ( $this->settings['ipb_img_url'] )
{
$text = preg_replace( "#img\s+?src=[\"']public/style_(images|avatars|emoticons)(.+?)[\"'](.+?)?".">#is", "img src=\"".$this->settings['ipb_img_url']."public/style_\\1\\2\"\\3>", $text );
}
return $text;
}
/**
* Main output function
*
* @access public
* @access boolean TRUE - freeze data, FALSE, do not.
* @return void Nothin'
*/
public function sendOutput( $saveData=TRUE )
{
//-----------------------------------------
// INIT
//-----------------------------------------
$_hit = 0;
/* Options */
$options['savedData'] = ( $saveData === TRUE ) ? IPSSetUp::freezeSavedData() : '';
$options['hideButton'] = ( $this->_hideButton === TRUE ) ? TRUE : FALSE;
$options['progress'] = array();
/* Sequence progress */
foreach( $this->sequenceData as $key => $page )
{
if ( $key == $this->currentPage )
{
$options['progress'][] = array( 'step_doing', $page );
$_hit = 1;
}
else if( $_hit )
{
$options['progress'][] = array( 'step_notdone', $page );
}
else
{
$options['progress'][] = array( 'step_done', $page );
}
}
//-----------------------------------------
// Header
//-----------------------------------------
header( "HTTP/1.0 200 OK" );
header( "HTTP/1.1 200 OK" );
//header( "Content-type: text/html;charset={$this->settings['gb_char_set']}" );
header( "Content-type: text/html;charset=utf-8" );
header( "Cache-Control: no-cache, must-revalidate, max-age=0" );
header( "Expires: 0" );
header( "Pragma: no-cache" );
$template = $this->template->globalTemplate( $this->_title, $this->_html, $options, $this->_errors, $this->_warnings, $this->_messages, $this->_installStep, $this->_curVersion, $this->_curApp );
print $template;
exit;
}
/**
* Print a redirect screen
* Wrapper function, really
*
* @access public
* @param string Text to display on the redirect screen
* @param string URL to direct to
* @param string SEO Title
* @return string HTML to browser and exits
*/
public function redirectScreen( $text="", $url="", $seoTitle="" )
{
//-----------------------------------------
// INIT
//-----------------------------------------
$this->_sendOutputSetUp( 'redirect' );
//-----------------------------------------
// Forcing silent redirects?
//-----------------------------------------
if ( $this->settings['ipb_remove_redirect_pages'] == 1 )
{
$this->silentRedirect( $url );
}
//-----------------------------------------
// Gather output
//-----------------------------------------
$output = $this->outputFormatClass->fetchOutput( $this->_html, $this->_title, $this->_navigation, $this->_documentHeadItems, $this->_jsLoader, array( 'url' => $url, 'text' => $text, 'seoTitle' => $seoTitle ) );
//-----------------------------------------
// Check for SQL Debug
//-----------------------------------------
$this->_checkSQLDebug();
//-----------------------------------------
// Print it...
//-----------------------------------------
$this->outputFormatClass->printHeader();
print $output;
$this->outputFormatClass->finishUp();
exit;
}
/**
* Immediate redirect
*
* @access public
* @param string URL to redirect to
* @param string SEO Title
* @return mixed
*/
public function silentRedirect( $url, $seoTitle='' )
{
return $this->outputFormatClass->silentRedirect( $url, $seoTitle );
}
/**
* Add content to the document <head>
*
* @access public
* @param string Type of data to add: css, js, raw, rss, rsd, etc
* @param string Data to add
* @return void
*/
public function addToDocumentHead( $type, $data )
{
$this->_documentHeadItems[ $type ][] = $data;
}
/**
* Process remap data
* For use with IN_DEV
*
* @access public
* @return array Array of remap data
*/
public function buildRemapData()
{
$remapData = array();
if ( IN_DEV and file_exists( DOC_IPS_ROOT_PATH . 'cache/skin_cache/masterMap.php' ) )
{
require( DOC_IPS_ROOT_PATH . 'cache/skin_cache/masterMap.php' );
if ( is_array( $REMAP ) )
{
/* Master skins */
foreach( array( 'templates', 'css' ) as $type )
{
foreach( $REMAP[ $type ] as $id => $dir )
{
if ( preg_match( "#^[a-zA-Z]#", $id ) )
{
/* we're using a key */
$_skin = $this->_fetchSkinByKey( $id );
$remapData[ $type ][ $_skin['set_id'] ] = $dir;
}
else
{
/* ID */
$remapData[ $type ][ $id ] = $dir;
}
}
}
/* IN DEV default */
if ( preg_match( "#^[a-zA-Z]#", $REMAP['inDevDefault'] ) )
{
$_skin = $this->_fetchSkinByKey( $REMAP['inDevDefault'] );
$remapData['inDevDefault'] = $_skin['set_id'];
}
else
{
$remapData['inDevDefault'] = $REMAP['inDevDefault'];
}
/* IN DEV export */
foreach( $REMAP['export'] as $id => $key )
{
if ( preg_match( "#^[a-zA-Z]#", $key ) )
{
$_skin = $this->_fetchSkinByKey( $key );
$remapData['export'][ $id ] = $_skin['set_id'];
}
else
{
$remapData['export'][ $id ] = $id;
}
}
}
}
else
{
$remapData = array( 'templates' => array( 0 => 'master_skin' ),
'css' => array( 0 => 'master_css' ),
'inDevDefault' => 0 );
}
return $remapData;
}
/**
* Fetch a skin set via a key
*
* @access private
* @param string Skin set key
* @return array Array of skin data
*/
public function _fetchSkinByKey( $key )
{
if ( ! is_array( $this->allSkins ) )
{
$this->DB->build( array( 'select' => '*',
'from' => 'skin_collections' ) );
$this->DB->execute();
while( $skin = $this->DB->fetch() )
{
$this->allSkins[ $skin['set_id'] ] = $skin;
}
}
foreach( $this->allSkins as $_id => $_data )
{
if ( $_data['set_key'] == $key )
{
return $_data;
}
}
return array();
}
}
@@ -0,0 +1,258 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Setup sessions class
* Last Updated: $Date: 2009-08-07 07:52:33 -0400 (Fri, 07 Aug 2009) $
*
* @author Matt Mecham
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @since 1st December 2008
* @version $Revision: 4999 $
*
*/
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();
}
define( 'IPB_UPGRADER_IP_MATCH', FALSE );
class sessions extends ips_MemberRegistry
{
/**
* Variable for session validated
*
* @access private
* @var array
*/
private $_data = array();
/**
* Time out seconds
*
* @access private
* @var int
*/
private $_time_out_secs = 86400;
/**
* ACP session id
*
* @access private
* @var string
*/
private $_adsess = '';
/**
* Validated?
*
* @access private
* @var bool
*/
private $_validated = false;
/**
* Message to pass
*
* @access private
* @var string
*/
private $_message;
/**
* Authorize
*
* @access public
* @return void
*/
public function __construct()
{
/* Make object */
$this->registry = ipsRegistry::instance();
$this->DB = $this->registry->DB();
$this->settings =& $this->registry->fetchSettings();
$this->request =& $this->registry->fetchRequest();
/* Grab session */
$_s = IPSText::md5Clean( $this->request['s'] );
/* Got a session? */
if ( ! $_s )
{
return $this->_response( 0, '' );
}
else
{
$this->DB->build( array( 'select' => '*',
'from' => 'upgrade_sessions',
'where' => "session_id='" . $_s . "'" ) );
$this->DB->execute();
$_data = $this->DB->fetch();
if ( ! $_data['session_id'] )
{
/* No record found */
return $this->_response( 0, '' );
}
else if ( ! $_data['session_member_id'] )
{
/* No member ID found */
return $this->_response( 0, 'Невозможно получить корректный ID пользователя' );
}
else
{
/* Load member */
self::instance()->data_store = $this->registry->getClass('legacy')->loadMemberData( $_data['session_member_id'] );
/* Member exists? */
if ( ! self::instance()->data_store['email'] )
{
return $this->_response( 0, 'Неверный ID пользователя' );
}
else
{
/* Authenticate */
if ( $_data['session_member_key'] != $this->registry->getClass('legacy')->fetchAuthKey() )
{
return $this->_response( 0, 'Неверный ключ сессии' );
}
else
{
/* ACP access? */
if ( self::instance()->data_store['g_access_cp'] != 1)
{
return $this->_response( 0, 'У вас нет доступа к администраторским функциям' );
}
else
{
$this->_validated = TRUE;
}
}
}
}
}
//--------------------------------------------
// If we're here, we're valid...
//--------------------------------------------
if ( $this->_validated === TRUE )
{
self::setUpMember();
if ( $_data['session_current_time'] < ( time() - $this->_time_out_secs ) )
{
return $this->_response( 0, '' );
}
/* Check IPs? */
else if ( IPB_UPGRADER_IP_MATCH )
{
$first_ip = preg_replace( "/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/", "\\1.\\2.\\3", $_data['session_ip_address'] );
$second_ip = preg_replace( "/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/", "\\1.\\2.\\3", self::instance()->ip_address );
if ( $first_ip != $second_ip )
{
return $this->_response( 0, 'Ваш IP адрес не совпадает ни с одной из наших записей' );
}
}
/* Still here? Lets update the session, then */
$this->DB->update( 'upgrade_sessions', array( 'session_current_time' => time(),
'session_section' => $this->request['section'],
'session_post' => serialize( $_POST ),
'session_get' => serialize( $_GET ) ), 'session_id=\'' . $this->request['s'] . '\'' );
/* If we're hitting the index and we have a valid session, go right to overview */
if ( ! $this->request['section'] OR $this->request['section'] == 'index' )
{
$this->request['section'] = 'overview';
}
return $this->_response( 1, '' );
}
}
/**
* Create a session
*
* @access public
* @param array Array of member Data
* @param string Auth Key
* @return nufink
*/
public function createSession( $member, $authKey )
{
$_bash = time() - $this->_time_out_secs;
$_s = md5( uniqid( microtime(), true ) . self::instance()->ip_address );
if ( $member['member_id'] AND $authKey )
{
$this->DB->delete( 'upgrade_sessions', 'session_current_time < ' . $_bash );
$this->DB->insert( 'upgrade_sessions', array( 'session_id' => $_s,
'session_member_id' => $member['member_id'],
'session_member_key' => $authKey,
'session_start_time' => time(),
'session_current_time' => time(),
'session_ip_address' => self::instance()->ip_address,
'session_section' => 'index',
'session_post' => serialize( array() ),
'session_get' => serialize( array() ),
'session_data' => serialize( array() ),
'session_extra' => '' ) );
return $_s;
}
else
{
return FALSE;
}
}
/**
* Get the validation code
*
* @access public
* @return mixed
*/
public function getStatus()
{
return $this->_validated;
}
/**
* Get the validation message
*
* @access public
* @return string
*/
public function getMessage()
{
return $this->_message;
}
/**
* Set the response
*
* @access protected
* @param bool Validated
* @param string Message
* @return mixed
*/
protected function _response( $validated, $message )
{
$this->_validated = $validated;
$this->_message = $message;
return;
}
}
+197
View File
@@ -0,0 +1,197 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Version Specific Upgrade Functions
* Last Updated: $Date: 2009-01-05 22:21:54 +0000 (Mon, 05 Jan 2009) $
*
* @author Matt Mecham
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @since 1st December 2008
* @version $Revision: 3572 $
*
*/
class upgradeLegacy
{
/**
* Member data
*
* @access private
* @var array
*/
private $_member;
/**
* Constructor
*
* @access public
* @return void
*/
public function __construct( ipsRegistry $registry )
{
/* Make object */
$this->registry = $registry;
$this->DB = $this->registry->DB();
$this->settings =& $this->registry->fetchSettings();
$this->request =& $this->registry->fetchRequest();
$this->cache = $this->registry->cache();
$this->caches =& $this->registry->cache()->fetchCaches();
//* Make sure tables exist that won't in pre 3.0 versions */
if ( file_exists( IPS_ROOT_PATH . 'setup/sql/ipb3_' . strtolower( ipsRegistry::$settings['sql_driver'] ) . '.php' ) )
{
require( IPS_ROOT_PATH . 'setup/sql/ipb3_' . strtolower( ipsRegistry::$settings['sql_driver'] ) . '.php' );
$prefix = $this->registry->dbFunctions()->getPrefix();
if ( ! $this->DB->checkForTable( 'upgrade_history' ) )
{
if ( $UPGRADE_HISTORY_TABLE )
{
$this->DB->query( IPSSetUp::addPrefixToQuery( $UPGRADE_HISTORY_TABLE, $prefix ) );
}
}
if ( ! $this->DB->checkForField( 'upgrade_app', 'upgrade_history' ) )
{
if ( $UPGRADE_TABLE_FIELD )
{
$this->DB->query( IPSSetUp::addPrefixToQuery( $UPGRADE_TABLE_FIELD, $prefix ) );
}
}
if ( ! $this->DB->checkForTable( 'upgrade_sessions' ) )
{
if ( $UPGRADE_SESSION_TABLE )
{
$this->DB->query( IPSSetUp::addPrefixToQuery( $UPGRADE_SESSION_TABLE, $prefix ) );
}
}
}
}
/**
* Fetch auth key
*
* @access public
* @return string
*/
public function fetchAuthKey()
{
if ( ! $this->_member['id'] AND ! $this->_member['member_id'] )
{
throw new Exception( "ПОЛЬЗОВАТЕЛЬ НЕ ЗАГРУЖЕН" );
}
else
{
return ( $this->_member['password'] ) ? md5( $this->_member['password'] ) : md5( $this->_member['legacy_password'] );
}
}
/**
* Fetch member data
*
* @access public
* @return array
*/
public function fetchMemberData()
{
return ( is_array( $this->_member ) ) ? $this->_member : array();
}
/**
* Load and return member data
*
* @access public
* @param int Member ID to load
* @return array
*/
public function loadMemberData( $memberId )
{
/* Attempt to load member */
$this->DB->build( array( 'select' => 'm.*',
'from' => array( 'members' => 'm' ),
'where' => 'm.id=' . intval( $memberId ),
'add_join' => array( array( 'select' => 'g.*',
'from' => array( 'groups' => 'g' ),
'where' => 'g.g_id=m.mgroup' ) ) ) );
$this->DB->execute();
$this->_member = $this->DB->fetch();
/* Fix up pre-3 stuffs */
$this->_member['member_id'] = $this->_member['id'];
$this->_member['member_group_id'] = $this->_member['mgroup'];
/* Occasionally 1.x installs do not have an email address. Most likey an InvisionFree issue */
if ( ! $this->_member['email'] )
{
$this->DB->update( 'members', array( 'email' => 'email_' . $this->_member['id'] . '_@changeMe.com' ), 'id=' . $memberId );
}
return $this->fetchMemberData();
}
/**
* Authenticate log in
*
* @access public
* @param string Username (from $this->request)
* @param string Password (from $this->request)
* @return mixed TRUE if successful, string (message) if not
*/
public function authenticateLogIn( $username, $password )
{
/* Attempt to load member */
$this->DB->build( array( 'select' => 'm.*',
'from' => array( 'members' => 'm' ),
'where' => 'LOWER(m.name)=\'' . mb_strtolower( $username ) . '\'',
'add_join' => array( array( 'select' => 'g.*',
'from' => array( 'groups' => 'g' ),
'where' => 'g.g_id=m.mgroup' ) ) ) );
$this->DB->execute();
$mem = $this->DB->fetch();
$pass = md5( $password );
/* Check it out */
if ( ! $mem['id'] )
{
return 'Пользователь таким именем не найден';
}
if ( $pass != $mem['password'] AND $pass != $mem['legacy_password'] )
{
return 'Неверный пароль';
}
if ( $mem['g_access_cp'] != 1 )
{
return 'У вас нет доступа к системе обновления';
}
/* Set up _member */
$this->loadMemberData( $mem['id'] );
/* Still here? */
return TRUE;
}
/**
* Return log in form HTML
*
* @access public
* @return string HTML
*/
public function fetchLogInForm()
{
return $this->registry->output->template()->upgrade_login_200plus( 'username' );
}
}
+241
View File
@@ -0,0 +1,241 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Version Specific Upgrade Functions
* Last Updated: $Date: 2009-01-05 22:21:54 +0000 (Mon, 05 Jan 2009) $
*
* @author Matt Mecham
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @since 1st December 2008
* @version $Revision: 3572 $
*
*/
class upgradeLegacy
{
/**
* Member data
*
* @access private
* @var array
*/
private $_member;
/**
* Constructor
*
* @access public
* @return void
*/
public function __construct( ipsRegistry $registry )
{
/* Make object */
$this->registry = $registry;
$this->DB = $this->registry->DB();
$this->settings =& $this->registry->fetchSettings();
$this->request =& $this->registry->fetchRequest();
$this->cache = $this->registry->cache();
$this->caches =& $this->registry->cache()->fetchCaches();
/* Make sure tables exist that won't in pre 3.0 versions */
if ( file_exists( IPS_ROOT_PATH . 'setup/sql/ipb3_' . strtolower( ipsRegistry::$settings['sql_driver'] ) . '.php' ) )
{
require( IPS_ROOT_PATH . 'setup/sql/ipb3_' . strtolower( ipsRegistry::$settings['sql_driver'] ) . '.php' );
$prefix = $this->registry->dbFunctions()->getPrefix();
if ( ! $this->DB->checkForField( 'upgrade_app', 'upgrade_history' ) )
{
if ( $UPGRADE_TABLE_FIELD )
{
$this->DB->query( IPSSetUp::addPrefixToQuery( $UPGRADE_TABLE_FIELD, $prefix ) );
}
}
if ( ! $this->DB->checkForTable( 'upgrade_sessions' ) )
{
if ( $UPGRADE_SESSION_TABLE )
{
$this->DB->query( IPSSetUp::addPrefixToQuery( $UPGRADE_SESSION_TABLE, $prefix ) );
}
}
}
}
/**
* Fetch auth key
*
* @access public
* @return string
*/
public function fetchAuthKey()
{
if ( ! $this->_member['id'] AND ! $this->_member['member_id'] )
{
throw new Exception( "ПОЛЬЗОВАТЕЛЬ НЕ ЗАГРУЖЕН" );
}
else
{
return $this->_member['member_login_key'];
}
}
/**
* Fetch member data
*
* @access public
* @return array
*/
public function fetchMemberData()
{
return ( is_array( $this->_member ) ) ? $this->_member : array();
}
/**
* Load and return member data
*
* @access public
* @param int Member ID to load
* @return array
*/
public function loadMemberData( $memberId )
{
/* At this point, we could be either using 2.3 or 3.0 */
if ( $this->DB->checkForField( 'member_id', 'members' ) )
{
/* Attempt to load member */
$this->DB->build( array( 'select' => 'm.*',
'from' => array( 'members' => 'm' ),
'where' => 'm.member_id=' . intval( $memberId ),
'add_join' => array( array( 'select' => 'g.*',
'from' => array( 'groups' => 'g' ),
'where' => 'g.g_id=m.member_group_id' ) ) ) );
$this->DB->execute();
$this->_member = $this->DB->fetch();
}
else
{
/* Attempt to load member */
$this->DB->build( array( 'select' => 'm.*',
'from' => array( 'members' => 'm' ),
'where' => 'm.id=' . intval( $memberId ),
'add_join' => array( array( 'select' => 'g.*',
'from' => array( 'groups' => 'g' ),
'where' => 'g.g_id=m.mgroup' ) ) ) );
$this->DB->execute();
$this->_member = $this->DB->fetch();
/* Fix up pre-3 stuffs */
$this->_member['member_id'] = $this->_member['id'];
$this->_member['member_group_id'] = $this->_member['mgroup'];
}
/* Set up seconday groups */
$this->_member = ips_MemberRegistry::setUpSecondaryGroups( $this->_member );
return $this->fetchMemberData();
}
/**
* Authenticate log in
*
* @access public
* @param string Username (from $this->request)
* @param string Password (from $this->request)
* @return mixed TRUE if successful, string (message) if not
*/
public function authenticateLogIn( $username, $password )
{
/* Log in type */
$loginType = $this->_fetchLogInType();
$where = ( $loginType == 'username' ) ? 'LOWER(m.name)=\'' . mb_strtolower( $username ) . '\'' : 'm.email=\'' . mb_strtolower( $username ) . '\'';
/* Attempt to load member */
$this->DB->build( array( 'select' => 'm.*',
'from' => array( 'members' => 'm' ),
'where' => $where,
'add_join' => array( array( 'select' => 'g.*',
'from' => array( 'groups' => 'g' ),
'where' => 'g.g_id=m.mgroup' ),
array( 'select' => 'c.*',
'from' => array( 'members_converge' => 'c' ),
'where' => 'c.converge_email=m.email' ) ) ) );
$this->DB->execute();
$mem = $this->DB->fetch();
/* Check it out */
if ( ! $mem['id'] OR ! $mem['converge_pass_hash'] )
{
return 'Пользователь не найден';
}
if ( $mem['converge_pass_hash'] != md5( md5( $mem['converge_pass_salt'] ) . md5( $password ) ) )
{
return 'Неверный пароль';
}
/* Test seconday groups */
$mem = ipsRegistry::member()->setUpSecondaryGroups( $mem );
if ( $mem['g_access_cp'] != 1 )
{
return 'У вас нет доступа к системе обновления';
}
/* Set up _member */
$this->loadMemberData( $mem['id'] );
/* Still here? */
return TRUE;
}
/**
* Return log in form HTML
*
* @access public
* @return string HTML
*/
public function fetchLogInForm()
{
$loginType = $this->_fetchLogInType();
return $this->registry->output->template()->upgrade_login_200plus( $loginType );
}
/**
* Fetch the log in type
*
* @access private
* @return string
*/
public function _fetchLoginType()
{
$loginType = 'username';
$this->DB->build( array( 'select' => '*', 'from' => 'conf_settings', 'where' => "conf_key IN('ipbli_usertype','converge_login_method')", 'order' => 'conf_key ASC' ) );
$this->DB->execute();
while( $r = $this->DB->fetch() )
{
$r['conf_value'] = $r['conf_value'] ? $r['conf_value'] : $r['conf_default'];
if ( $r['conf_value'] )
{
$loginType = $r['conf_value'];
}
}
return $loginType;
}
}
+205
View File
@@ -0,0 +1,205 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Version Specific Upgrade Functions
* Last Updated: $Date: 2009-01-05 22:21:54 +0000 (Mon, 05 Jan 2009) $
*
* @author Matt Mecham
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @since 1st December 2008
* @version $Revision: 3572 $
*
*/
class upgradeLegacy
{
/**
* Member data
*
* @access private
* @var array
*/
private $_member;
/**
* Constructor
*
* @access public
* @return void
*/
public function __construct( ipsRegistry $registry )
{
/* Make object */
$this->registry = $registry;
$this->DB = $this->registry->DB();
$this->settings =& $this->registry->fetchSettings();
$this->request =& $this->registry->fetchRequest();
$this->cache = $this->registry->cache();
$this->caches =& $this->registry->cache()->fetchCaches();
/* Make sure tables exist that won't in pre 3.0 versions */
if ( file_exists( IPS_ROOT_PATH . 'setup/sql/ipb3_' . strtolower( ipsRegistry::$settings['sql_driver'] ) . '.php' ) )
{
require( IPS_ROOT_PATH . 'setup/sql/ipb3_' . strtolower( ipsRegistry::$settings['sql_driver'] ) . '.php' );
$prefix = $this->registry->dbFunctions()->getPrefix();
if ( ! $this->DB->checkForField( 'upgrade_app', 'upgrade_history' ) )
{
if ( $UPGRADE_TABLE_FIELD )
{
$this->DB->query( IPSSetUp::addPrefixToQuery( $UPGRADE_TABLE_FIELD, $prefix ) );
}
}
if ( ! $this->DB->checkForTable( 'upgrade_sessions' ) )
{
if ( $UPGRADE_SESSION_TABLE )
{
$this->DB->query( IPSSetUp::addPrefixToQuery( $UPGRADE_SESSION_TABLE, $prefix ) );
}
}
}
}
/**
* Fetch auth key
*
* @access public
* @return string
*/
public function fetchAuthKey()
{
if ( ! $this->_member['member_id'] )
{
throw new Exception( "ПОЛЬЗОВАТЕЛЬ НЕ ЗАГРУЖЕН" );
}
else
{
return $this->_member['member_login_key'];
}
}
/**
* Fetch member data
*
* @access public
* @return array
*/
public function fetchMemberData()
{
return ( is_array( $this->_member ) ) ? $this->_member : array();
}
/**
* Load and return member data
*
* @access public
* @param int Member ID to load
* @return array
*/
public function loadMemberData( $memberId )
{
/* Attempt to load member */
$this->DB->build( array( 'select' => 'm.*',
'from' => array( 'members' => 'm' ),
'where' => 'm.member_id=' . intval( $memberId ),
'add_join' => array( array( 'select' => 'g.*',
'from' => array( 'groups' => 'g' ),
'where' => 'g.g_id=m.member_group_id' ) ) ) );
$this->DB->execute();
/* Set up seconday groups */
$this->_member = ips_MemberRegistry::setUpSecondaryGroups( $this->DB->fetch() );
return $this->fetchMemberData();
}
/**
* Authenticate log in
*
* @access public
* @param string Username (from $this->request)
* @param string Password (from $this->request)
* @return mixed TRUE if successful, string (message) if not
*/
public function authenticateLogIn( $username, $password )
{
require_once( IPS_ROOT_PATH . 'sources/handlers/han_login.php' );
$han_login = new han_login( $this->registry );
$han_login->is_admin_auth = 1;
$han_login->init();
$email = '';
/* Is this a username or email address? */
if ( IPSText::checkEmailAddress( $username ) )
{
$email = $username;
$username = '';
}
$han_login->loginAuthenticate( $username, $email, $password );
$mem = $han_login->member_data;
if ( ( ! $mem['member_id'] ) or ( $han_login->return_code == 'NO_USER' ) )
{
return 'Пользователь не найден';
}
if ( $han_login->return_code == 'NO_ACCESS' )
{
return 'У вас нет доступа к системе обновления';
}
else if ( $han_login->return_code != 'SUCCESS' )
{
return 'Имя пользователя или пароль неверны';
}
/* Test seconday groups */
$mem = ipsRegistry::member()->setUpSecondaryGroups( $mem );
if ( $mem['g_access_cp'] != 1 )
{
return 'У вас нет доступа к системе обновления';
}
/* Set up _member */
$this->loadMemberData( $mem['member_id'] );
/* Still here? */
return TRUE;
}
/**
* Return log in form HTML
*
* @access public
* @return string HTML
*/
public function fetchLogInForm()
{
require_once( IPS_ROOT_PATH . 'sources/handlers/han_login.php' );
$han_login = new han_login( $this->registry );
$han_login->is_admin_auth = 1;
$han_login->init();
$additional_data = ''; //$han_login->additionalFormHTML();
$replace = false;
$data = array();
if( !is_null($additional_data) AND is_array($additional_data) AND count($additional_data) )
{
$replace = $additional_data[0];
$data = $additional_data[1];
}
return $this->registry->output->template()->upgrade_login_300plus( $data, $replace == 'replace' ? true : false );
}
}
+1
View File
@@ -0,0 +1 @@
<html>␍<head><title>Invision Power Board - Bulletin Board System</title></head>␍<body>␍<h1>403: Invision Power Board -> Forbidden</h1>␍<hr>␍You have reached this Page in error, please use␍your back button to return to Invision Board.␍<hr>␍<a href="http://www.invisionboard.com/">Invision Power Board</a>␍</body>␍</html>␍
+46
View File
@@ -0,0 +1,46 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* SQL for upgrader
* Last Updated: $Date: 2009-01-16 21:16:58 +0000 (Fri, 16 Jan 2009) $
*
* @author Matt Mecham
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @since 1st December 2008
* @version $Revision: 3721 $
*
*/
$UPGRADE_HISTORY_TABLE = "CREATE TABLE upgrade_history (
upgrade_id int(10) NOT NULL auto_increment,
upgrade_version_id int(10) NOT NULL default '0',
upgrade_version_human varchar(200) NOT NULL default '',
upgrade_date int(10) NOT NULL default '0',
upgrade_mid int(10) NOT NULL default '0',
upgrade_notes text NOT NULL,
upgrade_app varchar(32) NOT NULL default 'core',
PRIMARY KEY (upgrade_id)
);";
$UPGRADE_TABLE_FIELD = "ALTER TABLE upgrade_history ADD upgrade_app varchar(32) NOT NULL default 'core'";
$UPGRADE_SESSION_TABLE = "CREATE TABLE upgrade_sessions (
session_id varchar(32) NOT NULL default '',
session_member_id int(10) NOT NULL default 0,
session_member_key varchar(32) NOT NULL default '',
session_start_time int(10) NOT NULL default 0,
session_current_time int(10) NOT NULL default 0,
session_ip_address varchar(16) NOT NULL default '',
session_section varchar(32) NOT NULL default '',
session_post TEXT,
session_get TEXT,
session_data TEXT,
session_extra TEXT,
PRIMARY KEY (session_id)
);";
+283
View File
@@ -0,0 +1,283 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* SQL installation methods
* Last Updated: $Date: 2009-03-11 13:15:04 +0000 (Wed, 11 Mar 2009) $
*
* @author Matt Mecham
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @since 1st December 2008
* @version $Revision: 4189 $
*
*/
class install_extra
{
/**
* Errors
*
* @access public
* @var array
*/
public $errors = array();
/**
* Extra info
*
* @access public
* @var array
*/
public $info_extra = array();
/**
* Set Prefix
*
* @access public
* @var string
*/
public $prefix = '';
/**
* Constructor
*
* @access public
* @param object Registry reference
* @return void
*/
public function __construct( ipsRegistry $registry )
{
/* Make registry objects */
$this->registry = $registry;
$this->DB = $this->registry->DB();
$this->settings =& $this->registry->fetchSettings();
$this->request =& $this->registry->fetchRequest();
}
/**
* Set db prefix
*
* @access public
* @param object Registry reference
* @return void
*/
public function setDbPrefix( $prefix='' )
{
if( $prefix )
{
$this->prefix = $prefix;
return;
}
else if( class_exists( 'IPSSetUp' ) )
{
if ( IPSSetUp::getSavedData('db_pre') )
{
$this->prefix = IPSSetUp::getSavedData('db_pre');
return;
}
}
/* Still 'ere? */
$this->prefix = $this->settings['sql_tbl_prefix'];
}
/**
* before_inserts_run
* Allows one to run SQL commands before any inserts are run
*
* Use ipsRegistry::DB()->query("") to run queries
*
* @access public
* @param string Type of inserts to run
* @return void
*/
public function before_inserts_run( $type )
{
switch( $type )
{
case 'applications':
case 'modules':
case 'settings':
case 'system_templates':
case 'content_templates':
case 'tasks':
case 'bbcode':
case 'media':
case 'languages':
case 'login':
case 'groups':
case 'staff_roles':
case 'attachments':
case 'skinset':
case 'email_templates':
case 'caches':
break;
}
}
/**
* after_inserts_run
* Allows one to run SQL commands AFTER any inserts are run
*
* Use ipsRegistry::DB()->query("") to run queries
*
* @access public
* @param string Type of inserts to run
* @return void
*/
public function after_inserts_run( $type )
{
switch( $type )
{
case 'applications':
case 'modules':
case 'settings':
case 'system_templates':
case 'content_templates':
case 'tasks':
case 'bbcode':
case 'media':
case 'languages':
case 'login':
case 'groups':
case 'staff_roles':
case 'attachments':
case 'skinset':
case 'email_templates':
case 'caches':
break;
}
}
/**
* Alter create table statements before being run
*
* @access public
* @param string Query
* @return string Query
*/
public function process_query_create( $query )
{
$this->setDbPrefix();
//-----------------------------------------
// Tack on the end the chosen table type
//-----------------------------------------
if ( $this->prefix )
{
$query = preg_replace( "#^CREATE TABLE(?:\s+?)?(\S+?)#s", "CREATE TABLE " . $this->prefix."\\1", $query );
$query = preg_replace( "#^INSERT INTO(?:\s+?)?(\S+?)#s" , "INSERT INTO " . $this->prefix."\\1" , $query );
$query = preg_replace( "#^REPLACE INTO(?:\s+?)?(\S+?)#s", "REPLACE INTO " . $this->prefix."\\1", $query );
$query = preg_replace( "#^ALTER TABLE(?:\s+?)?(\S+?)#s" , "ALTER TABLE " . $this->prefix."\\1" , $query );
$query = preg_replace( "#^DELETE FROM(?:\s+?)?(\S+?)#s" , "DELETE FROM " . $this->prefix."\\1" , $query );
$query = preg_replace( "#^UPDATE(?:\s+?)?(\S+?)#s" , "UPDATE " . $this->prefix."\\1" , $query );
}
$table_type = $this->settings['mysql_tbl_type'] ? $this->settings['mysql_tbl_type'] : 'MyISAM';
return preg_replace( "#\);$#", ") ENGINE=".$table_type.";", $query );
}
/**
* Alter create index statements before being run
*
* @access public
* @param string Query
* @return string Query
*/
public function process_query_index( $query )
{
$this->setDbPrefix();
//-----------------------------------------
// Tack on the end the chosen table type
//-----------------------------------------
if ( $this->prefix )
{
$query = preg_replace( "#^CREATE TABLE(?:\s+?)?(\S+?)#s", "CREATE TABLE " . $this->prefix."\\1", $query );
$query = preg_replace( "#^INSERT INTO(?:\s+?)?(\S+?)#s" , "INSERT INTO " . $this->prefix."\\1" , $query );
$query = preg_replace( "#^REPLACE INTO(?:\s+?)?(\S+?)#s", "REPLACE INTO " . $this->prefix."\\1", $query );
$query = preg_replace( "#^ALTER TABLE(?:\s+?)?(\S+?)#s" , "ALTER TABLE " . $this->prefix."\\1" , $query );
$query = preg_replace( "#^DELETE FROM(?:\s+?)?(\S+?)#s" , "DELETE FROM " . $this->prefix."\\1" , $query );
$query = preg_replace( "#^UPDATE(?:\s+?)?(\S+?)#s" , "UPDATE " . $this->prefix."\\1" , $query );
}
return $query;
}
/**
* Alter insert statements before being run
*
* @access public
* @param string Query
* @return string Query
*/
public function process_query_insert( $query )
{
$this->setDbPrefix();
//-----------------------------------------
// Tack on the end the chosen table type
//-----------------------------------------
if ( $this->prefix )
{
$query = preg_replace( "#^CREATE TABLE(?:\s+?)?(\S+?)#s", "CREATE TABLE " . $this->prefix."\\1", $query );
$query = preg_replace( "#^INSERT INTO(?:\s+?)?(\S+?)#s" , "INSERT INTO " . $this->prefix."\\1" , $query );
$query = preg_replace( "#^REPLACE INTO(?:\s+?)?(\S+?)#s", "REPLACE INTO " . $this->prefix."\\1", $query );
$query = preg_replace( "#^ALTER TABLE(?:\s+?)?(\S+?)#s" , "ALTER TABLE " . $this->prefix."\\1" , $query );
$query = preg_replace( "#^DELETE FROM(?:\s+?)?(\S+?)#s" , "DELETE FROM " . $this->prefix."\\1" , $query );
$query = preg_replace( "#^UPDATE(?:\s+?)?(\S+?)#s" , "UPDATE " . $this->prefix."\\1" , $query );
}
return $query;
}
/**
* Return additional HTML to show on install form
*
* @access public
* @return string HTML
*/
public function install_form_extra()
{
$extra = "<tr>
<td class='title'><b>Тип таблиц MySQL</b><div style='color:gray'>Используйте MyISAM если не уверены</div></td>
<td class='content'><select name='mysql_tbl_type' class='sql_form'><option value='MyISAM'>MYISAM</option><option value='INNODB'>INNODB</option></td>
</tr>";
return $extra;
}
/**
* Save additional info from install form
*
* @access public
* @return void
*/
public function install_form_process()
{
//-----------------------------------------
// When processed, return all vars to save
// in conf_global in the array $this->info_extra
// This will also be saved into $INFO[] for
// the installer
//-----------------------------------------
if ( ! $_REQUEST['mysql_tbl_type'] )
{
$this->errors[] = 'Вы должны заполнить все необходимые поля!';
return;
}
$this->info_extra['mysql_tbl_type'] = $_REQUEST['mysql_tbl_type'];
}
}
File diff suppressed because it is too large. Load diff
+253
View File
@@ -0,0 +1,253 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<attachtypesexport>
<attachtypesgroup>
<attachtype>
<atype_extension>aiff</atype_extension>
<atype_mimetype>audio/x-aiff</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/quicktime.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>bmp</atype_extension>
<atype_mimetype>image/x-MS-bmp</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/gif.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>css</atype_extension>
<atype_mimetype>unknown/unknown</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/script.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>doc</atype_extension>
<atype_mimetype>application/msword</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/doc.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>gif</atype_extension>
<atype_mimetype>image/gif</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>1</atype_photo>
<atype_img>style_extra/mime_types/gif.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>gz</atype_extension>
<atype_mimetype>application/x-gzip</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/zip.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>hqx</atype_extension>
<atype_mimetype>application/mac-binhex40</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/stuffit.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>htm</atype_extension>
<atype_mimetype>unknown/unknown</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/html.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>html</atype_extension>
<atype_mimetype>unknown/unknown</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/html.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>ico</atype_extension>
<atype_mimetype>image/ico</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/gif.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>jpeg</atype_extension>
<atype_mimetype>image/jpeg</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>1</atype_photo>
<atype_img>style_extra/mime_types/gif.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>jpg</atype_extension>
<atype_mimetype>image/jpeg</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>1</atype_photo>
<atype_img>style_extra/mime_types/gif.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>mov</atype_extension>
<atype_mimetype>video/quicktime</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/quicktime.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>mp3</atype_extension>
<atype_mimetype>audio/x-mpeg</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/music.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>mpg</atype_extension>
<atype_mimetype>video/mpeg</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/quicktime.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>pdf</atype_extension>
<atype_mimetype>application/pdf</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/pdf.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>php</atype_extension>
<atype_mimetype>unknown/unknown</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/php.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>png</atype_extension>
<atype_mimetype>image/png</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>1</atype_photo>
<atype_img>style_extra/mime_types/quicktime.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>ppt</atype_extension>
<atype_mimetype>application/powerpoint</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/ppt.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>ps</atype_extension>
<atype_mimetype>application/postscript</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/eps.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>ram</atype_extension>
<atype_mimetype>audio/x-pn-realaudio</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/real_audio.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>rtf</atype_extension>
<atype_mimetype>unknown/unknown</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/rtf.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>swf</atype_extension>
<atype_mimetype>application/x-shockwave-flash</atype_mimetype>
<atype_post>0</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/quicktime.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>tar</atype_extension>
<atype_mimetype>application/x-tar</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/zip.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>tiff</atype_extension>
<atype_mimetype>image/tiff</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/quicktime.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>txt</atype_extension>
<atype_mimetype>unknown/unknown</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/txt.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>viv</atype_extension>
<atype_mimetype>video/vivo</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/win_player.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>wav</atype_extension>
<atype_mimetype>audio/x-wav</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/music.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>wmv</atype_extension>
<atype_mimetype>video/x-ms-wmv</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/win_player.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>xml</atype_extension>
<atype_mimetype>unknown/unknown</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/script.gif</atype_img>
</attachtype>
<attachtype>
<atype_extension>zip</atype_extension>
<atype_mimetype>application/zip</atype_mimetype>
<atype_post>1</atype_post>
<atype_photo>0</atype_photo>
<atype_img>style_extra/mime_types/zip.gif</atype_img>
</attachtype>
</attachtypesgroup>
</attachtypesexport>
+63
View File
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<installdata>
<package>
<name>Invision Power Board</name>
<version>3.0</version>
<versionlong>30001</versionlong>
<build>1134742970</build>
<license>Invision Power Services, Inc.
Invision Power Board Software
End User License Agreement (Version 3.x)
LICENSE
Invision Power Services (IPS) grants you a non-exclusive license to use the Software on one installation to be accessable by one URL (web address) subject to the provisions in all sections of this Agreement.
TERM
Invision Power Board is offered under unique licensing. License terms are defined at the time of purchase and may or may not include technical support. License terms expire after a six month initial term. At the end of this term, the current installed copy of the software may continue to be used under the terms of this Agreement. Unless renewed under the terms of the license purchased at the end of six months, IPS will not provide technical support or upgrades to the software.
SCOPE OF GRANT
You may:
* customize the Software's design and operation to suit the internal needs of your web site except to the extent not permitted in this Agreement
* produce and distribute modification instructions, Skin packs, or Language packs provided that they contain notification that the Skin and Language packs were exported from and originally created by Invision Power Board and/or IPS. The modification instructions you personally create are not owned by IPS so long as they contain no proprietary coding from Invision Power Board.
* create applications which interface with the operation of the Software provided said application is an original work
You may not:
* permit other individuals to use the Software except under the terms listed above
* reverse engineer, disassemble, or create derivative works based on the Software for distribution or usage outside your web site
* use the Software in such as way as to condone or encourage terrorism, promote or provide pirated Software, or any other form of illegal or damaging activity
* modify and/or remove any copyright notices or labels on the Software on each page (unless copyright output removal license is purchased) and in the header of each script source file
* distribute the Software
* distribute individual copies of files, libraries, or other programming material in the Software package
* distribute or modify proprietary graphics, HTML, or CSS packaged with the Software for use in Software applications other than Invision Power Board or web sites without written permission from IPS
* modify the software to function in more than instance or location (URL, domain, subdomain, etc.) from a single set of source program files unless each location is separately licensed
DISCLAIMER OF WARRANTY
The Software is provided on an "AS IS" basis, without warranty of any kind, including without limitation the warranties of merchantability, fitness for a particular purpose, and non-infringement. The entire risk as to the quality and performance of the Software is borne by you. Should the Software prove defective, you and not IPS assume the entire cost of any service and repair. In addition, the security mechanisms implemented by IPS Software have inherent limitations, and you must determine that the Software sufficiently meets your requirements. This disclaimer of warranty constitutes an essential part of the Agreement.
TITLE
Title, ownership rights, and intellectual property rights in the Software shall remain with IPS. The Software is protected by copyright laws and treaties. Title and related rights in the content generated through the Software is the property of the applicable content owner and may be protected by applicable law. This License gives IPS no rights to such content.
TERMINATION
This Agreement will terminate automatically upon failure to comply with the limitations described herein or on written notice from an authorized representative of IPS. On termination, you must destroy all copies of the Software within 48 hours. Termination of the license due to noncompliance will not result in any refunds of license fees.
MISCELLANEOUS
IPS reserves the right to publish a selected list of users of the Software. IPS reserves the right to change the terms of this Agreement at any time. Changes to the Agreement will be announced via email using the IPS email notification list. Failure to receive notification of a change does not make those changes invalid. A current copy of this Agreement will be available on the Invision Power Board web site.
Skin packs and Language packs are defined as the group of code, text, and graphics that are exported from the Software using the provided functions of the Software Administration Control Panel. Integrated add-ons for Invision Power Board are released under this Agreement. Purchasing or downloading integrated add-ons constitute an additional, separate instance of this Agreement.
Technical support will not be provided for third-party modifications to the Software including modifications to code, Skin packs, and Language packs to any license holder. If the Software is modified using a third-party modification instruction or otherwise, technical support may be refused to any license holder.
PROPRIETARY LABELS
Authorization to remove or modify output of copyright notices can be obtained from IPS for a fee. This fee authorizes you to remove the output of copyright notices: it does not give you authorization to remove any copyright notices in the program source files or any other rights.
GOVERNING LAW
This Agreement shall be governed by the Laws of the Commonwealth of Virginia and the Laws of the United States of America. Any action in regard to this Agreement or arising out of its terms and conditions shall be instituted and litigated in the Circuit Court of Bedford County. Each of the parties consents to jurisdiction in such Court and agrees that service of process as provided by the states and rules of civil procedures of the Commonwealth of Virginia shall be sufficient.
MANUFACTURER
Invision Power Services, Inc., PO Box 2365, Forest, VA 24551. For questions, write to the above address or call +1 804-200-5695.</license>
</package>
</installdata>
+395
View File
@@ -0,0 +1,395 @@
<?xml version="1.0" encoding="UTF-8"?>
<export exported="1239638966">
<group>
<row>
<g_id>1</g_id>
<g_view_board>1</g_view_board>
<g_mem_info>1</g_mem_info>
<g_other_topics>1</g_other_topics>
<g_use_search>1</g_use_search>
<g_email_friend>0</g_email_friend>
<g_invite_friend>0</g_invite_friend>
<g_edit_profile>0</g_edit_profile>
<g_post_new_topics>0</g_post_new_topics>
<g_reply_own_topics>0</g_reply_own_topics>
<g_reply_other_topics>0</g_reply_other_topics>
<g_edit_posts>0</g_edit_posts>
<g_delete_own_posts>0</g_delete_own_posts>
<g_open_close_posts>0</g_open_close_posts>
<g_delete_own_topics>0</g_delete_own_topics>
<g_post_polls>0</g_post_polls>
<g_vote_polls>0</g_vote_polls>
<g_use_pm>0</g_use_pm>
<g_is_supmod>0</g_is_supmod>
<g_access_cp>0</g_access_cp>
<g_title>Неактивированные</g_title>
<g_can_remove>0</g_can_remove>
<g_append_edit>1</g_append_edit>
<g_access_offline>0</g_access_offline>
<g_avoid_q>0</g_avoid_q>
<g_avoid_flood>0</g_avoid_flood>
<g_icon></g_icon>
<g_attach_max>0</g_attach_max>
<g_avatar_upload>0</g_avatar_upload>
<prefix></prefix>
<suffix></suffix>
<g_max_messages>50</g_max_messages>
<g_max_mass_pm>0</g_max_mass_pm>
<g_search_flood>20</g_search_flood>
<g_edit_cutoff>0</g_edit_cutoff>
<g_promotion><![CDATA[-1&-1]]></g_promotion>
<g_hide_from_list>0</g_hide_from_list>
<g_post_closed>0</g_post_closed>
<g_perm_id>1</g_perm_id>
<g_photo_max_vars>50:150:150</g_photo_max_vars>
<g_dohtml>0</g_dohtml>
<g_edit_topic>0</g_edit_topic>
<g_email_limit>10:15</g_email_limit>
<g_bypass_badwords>0</g_bypass_badwords>
<g_can_msg_attach>0</g_can_msg_attach>
<g_attach_per_post>0</g_attach_per_post>
<g_topic_rate_setting>0</g_topic_rate_setting>
<g_dname_changes>0</g_dname_changes>
<g_dname_date>0</g_dname_date>
<g_mod_preview>0</g_mod_preview>
<g_rep_max_positive>0</g_rep_max_positive>
<g_rep_max_negative>0</g_rep_max_negative>
<g_signature_limits></g_signature_limits>
<g_can_add_friends>1</g_can_add_friends>
<g_hide_online_list>0</g_hide_online_list>
<g_bitoptions>0</g_bitoptions>
<g_pm_perday>0</g_pm_perday>
<g_mod_post_unit>0</g_mod_post_unit>
<g_ppd_limit>0</g_ppd_limit>
<g_ppd_unit>0</g_ppd_unit>
<g_displayname_unit>0</g_displayname_unit>
<g_sig_unit>0</g_sig_unit>
</row>
<row>
<g_id>2</g_id>
<g_view_board>1</g_view_board>
<g_mem_info>1</g_mem_info>
<g_other_topics>1</g_other_topics>
<g_use_search>1</g_use_search>
<g_email_friend>0</g_email_friend>
<g_invite_friend>0</g_invite_friend>
<g_edit_profile>0</g_edit_profile>
<g_post_new_topics>1</g_post_new_topics>
<g_reply_own_topics>1</g_reply_own_topics>
<g_reply_other_topics>1</g_reply_other_topics>
<g_edit_posts>0</g_edit_posts>
<g_delete_own_posts>0</g_delete_own_posts>
<g_open_close_posts>0</g_open_close_posts>
<g_delete_own_topics>0</g_delete_own_topics>
<g_post_polls>0</g_post_polls>
<g_vote_polls>0</g_vote_polls>
<g_use_pm>0</g_use_pm>
<g_is_supmod>0</g_is_supmod>
<g_access_cp>0</g_access_cp>
<g_title>Гости</g_title>
<g_can_remove>0</g_can_remove>
<g_append_edit>0</g_append_edit>
<g_access_offline>0</g_access_offline>
<g_avoid_q>0</g_avoid_q>
<g_avoid_flood>0</g_avoid_flood>
<g_icon></g_icon>
<g_attach_max>-1</g_attach_max>
<g_avatar_upload>0</g_avatar_upload>
<prefix></prefix>
<suffix></suffix>
<g_max_messages>50</g_max_messages>
<g_max_mass_pm>0</g_max_mass_pm>
<g_search_flood>0</g_search_flood>
<g_edit_cutoff>0</g_edit_cutoff>
<g_promotion><![CDATA[-1&-1]]></g_promotion>
<g_hide_from_list>0</g_hide_from_list>
<g_post_closed>0</g_post_closed>
<g_perm_id>2</g_perm_id>
<g_photo_max_vars>50:150:150</g_photo_max_vars>
<g_dohtml>0</g_dohtml>
<g_edit_topic>0</g_edit_topic>
<g_email_limit>10:15</g_email_limit>
<g_bypass_badwords>0</g_bypass_badwords>
<g_can_msg_attach>0</g_can_msg_attach>
<g_attach_per_post>0</g_attach_per_post>
<g_topic_rate_setting>0</g_topic_rate_setting>
<g_dname_changes>0</g_dname_changes>
<g_dname_date>0</g_dname_date>
<g_mod_preview>0</g_mod_preview>
<g_rep_max_positive>0</g_rep_max_positive>
<g_rep_max_negative>0</g_rep_max_negative>
<g_signature_limits>0:::::</g_signature_limits>
<g_can_add_friends>1</g_can_add_friends>
<g_hide_online_list>0</g_hide_online_list>
<g_bitoptions>0</g_bitoptions>
<g_pm_perday>0</g_pm_perday>
<g_mod_post_unit>0</g_mod_post_unit>
<g_ppd_limit>0</g_ppd_limit>
<g_ppd_unit>0</g_ppd_unit>
<g_displayname_unit>0</g_displayname_unit>
<g_sig_unit>0</g_sig_unit>
</row>
<row>
<g_id>3</g_id>
<g_view_board>1</g_view_board>
<g_mem_info>1</g_mem_info>
<g_other_topics>1</g_other_topics>
<g_use_search>1</g_use_search>
<g_email_friend>1</g_email_friend>
<g_invite_friend>0</g_invite_friend>
<g_edit_profile>1</g_edit_profile>
<g_post_new_topics>1</g_post_new_topics>
<g_reply_own_topics>1</g_reply_own_topics>
<g_reply_other_topics>1</g_reply_other_topics>
<g_edit_posts>1</g_edit_posts>
<g_delete_own_posts>0</g_delete_own_posts>
<g_open_close_posts>0</g_open_close_posts>
<g_delete_own_topics>0</g_delete_own_topics>
<g_post_polls>1</g_post_polls>
<g_vote_polls>1</g_vote_polls>
<g_use_pm>1</g_use_pm>
<g_is_supmod>0</g_is_supmod>
<g_access_cp>0</g_access_cp>
<g_title>Пользователи</g_title>
<g_can_remove>0</g_can_remove>
<g_append_edit>1</g_append_edit>
<g_access_offline>0</g_access_offline>
<g_avoid_q>0</g_avoid_q>
<g_avoid_flood>0</g_avoid_flood>
<g_icon></g_icon>
<g_attach_max>500</g_attach_max>
<g_avatar_upload>1</g_avatar_upload>
<prefix></prefix>
<suffix></suffix>
<g_max_messages>50</g_max_messages>
<g_max_mass_pm>5</g_max_mass_pm>
<g_search_flood>0</g_search_flood>
<g_edit_cutoff>0</g_edit_cutoff>
<g_promotion><![CDATA[-1&-1]]></g_promotion>
<g_hide_from_list>0</g_hide_from_list>
<g_post_closed>0</g_post_closed>
<g_perm_id>3</g_perm_id>
<g_photo_max_vars>50:150:150</g_photo_max_vars>
<g_dohtml>0</g_dohtml>
<g_edit_topic>1</g_edit_topic>
<g_email_limit>10:15</g_email_limit>
<g_bypass_badwords>0</g_bypass_badwords>
<g_can_msg_attach>0</g_can_msg_attach>
<g_attach_per_post>0</g_attach_per_post>
<g_topic_rate_setting>1</g_topic_rate_setting>
<g_dname_changes>3</g_dname_changes>
<g_dname_date>30</g_dname_date>
<g_mod_preview>0</g_mod_preview>
<g_rep_max_positive>5</g_rep_max_positive>
<g_rep_max_negative>5</g_rep_max_negative>
<g_signature_limits>0:::::</g_signature_limits>
<g_can_add_friends>1</g_can_add_friends>
<g_hide_online_list>0</g_hide_online_list>
<g_bitoptions>0</g_bitoptions>
<g_pm_perday>0</g_pm_perday>
<g_mod_post_unit>0</g_mod_post_unit>
<g_ppd_limit>0</g_ppd_limit>
<g_ppd_unit>0</g_ppd_unit>
<g_displayname_unit>0</g_displayname_unit>
<g_sig_unit>0</g_sig_unit>
</row>
<row>
<g_id>4</g_id>
<g_view_board>1</g_view_board>
<g_mem_info>1</g_mem_info>
<g_other_topics>1</g_other_topics>
<g_use_search>1</g_use_search>
<g_email_friend>1</g_email_friend>
<g_invite_friend>0</g_invite_friend>
<g_edit_profile>1</g_edit_profile>
<g_post_new_topics>1</g_post_new_topics>
<g_reply_own_topics>1</g_reply_own_topics>
<g_reply_other_topics>1</g_reply_other_topics>
<g_edit_posts>1</g_edit_posts>
<g_delete_own_posts>1</g_delete_own_posts>
<g_open_close_posts>1</g_open_close_posts>
<g_delete_own_topics>1</g_delete_own_topics>
<g_post_polls>1</g_post_polls>
<g_vote_polls>1</g_vote_polls>
<g_use_pm>1</g_use_pm>
<g_is_supmod>1</g_is_supmod>
<g_access_cp>1</g_access_cp>
<g_title>Администраторы</g_title>
<g_can_remove>0</g_can_remove>
<g_append_edit>1</g_append_edit>
<g_access_offline>1</g_access_offline>
<g_avoid_q>1</g_avoid_q>
<g_avoid_flood>1</g_avoid_flood>
<g_icon>public/style_extra/team_icons/admin.png</g_icon>
<g_attach_max>0</g_attach_max>
<g_avatar_upload>1</g_avatar_upload>
<prefix><![CDATA[<span style='color:red;'>]]></prefix>
<suffix><![CDATA[</span>]]></suffix>
<g_max_messages>50</g_max_messages>
<g_max_mass_pm>6</g_max_mass_pm>
<g_search_flood>20</g_search_flood>
<g_edit_cutoff>5</g_edit_cutoff>
<g_promotion><![CDATA[-1&-1]]></g_promotion>
<g_hide_from_list>0</g_hide_from_list>
<g_post_closed>1</g_post_closed>
<g_perm_id>4</g_perm_id>
<g_photo_max_vars>500:170:240</g_photo_max_vars>
<g_dohtml>1</g_dohtml>
<g_edit_topic>1</g_edit_topic>
<g_email_limit>10000:0</g_email_limit>
<g_bypass_badwords>1</g_bypass_badwords>
<g_can_msg_attach>1</g_can_msg_attach>
<g_attach_per_post>0</g_attach_per_post>
<g_topic_rate_setting>2</g_topic_rate_setting>
<g_dname_changes>3</g_dname_changes>
<g_dname_date>30</g_dname_date>
<g_mod_preview>0</g_mod_preview>
<g_rep_max_positive>0</g_rep_max_positive>
<g_rep_max_negative>0</g_rep_max_negative>
<g_signature_limits>0:::::</g_signature_limits>
<g_can_add_friends>1</g_can_add_friends>
<g_hide_online_list>0</g_hide_online_list>
<g_bitoptions>0</g_bitoptions>
<g_pm_perday>0</g_pm_perday>
<g_mod_post_unit>0</g_mod_post_unit>
<g_ppd_limit>0</g_ppd_limit>
<g_ppd_unit>0</g_ppd_unit>
<g_displayname_unit>0</g_displayname_unit>
<g_sig_unit>0</g_sig_unit>
</row>
<row>
<g_id>5</g_id>
<g_view_board>0</g_view_board>
<g_mem_info>0</g_mem_info>
<g_other_topics>0</g_other_topics>
<g_use_search>0</g_use_search>
<g_email_friend>0</g_email_friend>
<g_invite_friend>0</g_invite_friend>
<g_edit_profile>0</g_edit_profile>
<g_post_new_topics>0</g_post_new_topics>
<g_reply_own_topics>0</g_reply_own_topics>
<g_reply_other_topics>0</g_reply_other_topics>
<g_edit_posts>0</g_edit_posts>
<g_delete_own_posts>0</g_delete_own_posts>
<g_open_close_posts>0</g_open_close_posts>
<g_delete_own_topics>0</g_delete_own_topics>
<g_post_polls>0</g_post_polls>
<g_vote_polls>0</g_vote_polls>
<g_use_pm>0</g_use_pm>
<g_is_supmod>0</g_is_supmod>
<g_access_cp>0</g_access_cp>
<g_title>Заблокированные</g_title>
<g_can_remove>0</g_can_remove>
<g_append_edit>0</g_append_edit>
<g_access_offline>0</g_access_offline>
<g_avoid_q>0</g_avoid_q>
<g_avoid_flood>0</g_avoid_flood>
<g_icon></g_icon>
<g_attach_max>0</g_attach_max>
<g_avatar_upload>0</g_avatar_upload>
<prefix></prefix>
<suffix></suffix>
<g_max_messages>50</g_max_messages>
<g_max_mass_pm>0</g_max_mass_pm>
<g_search_flood>20</g_search_flood>
<g_edit_cutoff>0</g_edit_cutoff>
<g_promotion><![CDATA[-1&-1]]></g_promotion>
<g_hide_from_list>1</g_hide_from_list>
<g_post_closed>0</g_post_closed>
<g_perm_id>5</g_perm_id>
<g_photo_max_vars>50:150:150</g_photo_max_vars>
<g_dohtml>0</g_dohtml>
<g_edit_topic>0</g_edit_topic>
<g_email_limit>10:15</g_email_limit>
<g_bypass_badwords>0</g_bypass_badwords>
<g_can_msg_attach>0</g_can_msg_attach>
<g_attach_per_post>0</g_attach_per_post>
<g_topic_rate_setting>0</g_topic_rate_setting>
<g_dname_changes>0</g_dname_changes>
<g_dname_date>0</g_dname_date>
<g_mod_preview>0</g_mod_preview>
<g_rep_max_positive>0</g_rep_max_positive>
<g_rep_max_negative>0</g_rep_max_negative>
<g_signature_limits></g_signature_limits>
<g_can_add_friends>1</g_can_add_friends>
<g_hide_online_list>0</g_hide_online_list>
<g_bitoptions>0</g_bitoptions>
<g_pm_perday>0</g_pm_perday>
<g_mod_post_unit>0</g_mod_post_unit>
<g_ppd_limit>0</g_ppd_limit>
<g_ppd_unit>0</g_ppd_unit>
<g_displayname_unit>0</g_displayname_unit>
<g_sig_unit>0</g_sig_unit>
</row>
<row>
<g_id>6</g_id>
<g_view_board>1</g_view_board>
<g_mem_info>1</g_mem_info>
<g_other_topics>1</g_other_topics>
<g_use_search>1</g_use_search>
<g_email_friend>1</g_email_friend>
<g_invite_friend>0</g_invite_friend>
<g_edit_profile>1</g_edit_profile>
<g_post_new_topics>1</g_post_new_topics>
<g_reply_own_topics>1</g_reply_own_topics>
<g_reply_other_topics>1</g_reply_other_topics>
<g_edit_posts>1</g_edit_posts>
<g_delete_own_posts>0</g_delete_own_posts>
<g_open_close_posts>0</g_open_close_posts>
<g_delete_own_topics>0</g_delete_own_topics>
<g_post_polls>1</g_post_polls>
<g_vote_polls>1</g_vote_polls>
<g_use_pm>1</g_use_pm>
<g_is_supmod>1</g_is_supmod>
<g_access_cp>0</g_access_cp>
<g_title>Модераторы</g_title>
<g_can_remove>0</g_can_remove>
<g_append_edit>1</g_append_edit>
<g_access_offline>0</g_access_offline>
<g_avoid_q>0</g_avoid_q>
<g_avoid_flood>0</g_avoid_flood>
<g_icon>public/style_extra/team_icons/staff.png</g_icon>
<g_attach_max>500</g_attach_max>
<g_avatar_upload>1</g_avatar_upload>
<prefix></prefix>
<suffix></suffix>
<g_max_messages>50</g_max_messages>
<g_max_mass_pm>5</g_max_mass_pm>
<g_search_flood>0</g_search_flood>
<g_edit_cutoff>0</g_edit_cutoff>
<g_promotion><![CDATA[-1&-1]]></g_promotion>
<g_hide_from_list>0</g_hide_from_list>
<g_post_closed>0</g_post_closed>
<g_perm_id>6</g_perm_id>
<g_photo_max_vars>50:150:150</g_photo_max_vars>
<g_dohtml>0</g_dohtml>
<g_edit_topic>1</g_edit_topic>
<g_email_limit>10:15</g_email_limit>
<g_bypass_badwords>0</g_bypass_badwords>
<g_can_msg_attach>0</g_can_msg_attach>
<g_attach_per_post>0</g_attach_per_post>
<g_topic_rate_setting>1</g_topic_rate_setting>
<g_dname_changes>3</g_dname_changes>
<g_dname_date>30</g_dname_date>
<g_mod_preview>0</g_mod_preview>
<g_rep_max_positive>5</g_rep_max_positive>
<g_rep_max_negative>5</g_rep_max_negative>
<g_signature_limits>0:::::</g_signature_limits>
<g_can_add_friends>1</g_can_add_friends>
<g_hide_online_list>0</g_hide_online_list>
<g_bitoptions>0</g_bitoptions>
<g_pm_perday>0</g_pm_perday>
<g_mod_post_unit>0</g_mod_post_unit>
<g_ppd_limit>0</g_ppd_limit>
<g_ppd_unit>0</g_ppd_unit>
<g_displayname_unit>0</g_displayname_unit>
<g_sig_unit>0</g_sig_unit>
</row>
</group>
</export>
+99
View File
@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<export exported="1154616398">
<group>
<login_methods>
<login_id>1</login_id>
<login_title>Внутренняя авторизация</login_title>
<login_description>Стандартный метод авторизации</login_description>
<login_folder_name>internal</login_folder_name>
<login_maintain_url></login_maintain_url>
<login_register_url></login_register_url>
<login_alt_login_html></login_alt_login_html>
<login_alt_acp_html></login_alt_acp_html>
<login_date>1137078935</login_date>
<login_settings>0</login_settings>
<login_enabled>1</login_enabled>
<login_safemode>0</login_safemode>
<login_replace_form>0</login_replace_form>
<login_user_id>username</login_user_id>
<login_login_url></login_login_url>
<login_logout_url></login_logout_url>
<login_order>1</login_order>
</login_methods>
<login_methods>
<login_id>2</login_id>
<login_title>LDAP Авторизация</login_title>
<login_description>LDAP / Active Directory Авторизация</login_description>
<login_folder_name>ldap</login_folder_name>
<login_maintain_url></login_maintain_url>
<login_register_url></login_register_url>
<login_alt_login_html></login_alt_login_html>
<login_date>1137078935</login_date>
<login_settings>1</login_settings>
<login_enabled>0</login_enabled>
<login_safemode>1</login_safemode>
<login_replace_form>0</login_replace_form>
<login_user_id>username</login_user_id>
<login_login_url></login_login_url>
<login_logout_url></login_logout_url>
<login_order>4</login_order>
</login_methods>
<login_methods>
<login_id>6</login_id>
<login_title>Внешняя авторизация</login_title>
<login_description>Авторизация с использованием внешней базы данных</login_description>
<login_folder_name>external</login_folder_name>
<login_maintain_url></login_maintain_url>
<login_register_url></login_register_url>
<login_alt_login_html></login_alt_login_html>
<login_date>0</login_date>
<login_settings>0</login_settings>
<login_enabled>0</login_enabled>
<login_safemode>1</login_safemode>
<login_replace_form>0</login_replace_form>
<login_user_id>username</login_user_id>
<login_login_url></login_login_url>
<login_logout_url></login_logout_url>
<login_order>5</login_order>
</login_methods>
<login_methods>
<login_id>4</login_id>
<login_title>IP.Converge</login_title>
<login_description>Для внутреннего использования</login_description>
<login_folder_name>ipconverge</login_folder_name>
<login_maintain_url></login_maintain_url>
<login_register_url></login_register_url>
<login_alt_login_html></login_alt_login_html>
<login_date>0</login_date>
<login_settings>0</login_settings>
<login_enabled>0</login_enabled>
<login_safemode>1</login_safemode>
<login_replace_form>0</login_replace_form>
<login_user_id>email</login_user_id>
<login_login_url></login_login_url>
<login_logout_url></login_logout_url>
<login_order>3</login_order>
</login_methods>
<login_methods>
<login_id>10</login_id>
<login_title>OpenID</login_title>
<login_description>Авторизация с помощью OpenID</login_description>
<login_folder_name>openid</login_folder_name>
<login_maintain_url></login_maintain_url>
<login_register_url></login_register_url>
<login_alt_login_html></login_alt_login_html>
<login_alt_acp_html>&lt;label for='openid'&gt;Open ID&lt;/label&gt;
&lt;input type='text' size='20' id='openid' name='openid_url' value='http://'&gt;</login_alt_acp_html>
<login_date>0</login_date>
<login_settings>0</login_settings>
<login_enabled>0</login_enabled>
<login_safemode>0</login_safemode>
<login_replace_form>0</login_replace_form>
<login_user_id>username</login_user_id>
<login_login_url></login_login_url>
<login_logout_url></login_logout_url>
<login_order>2</login_order>
</login_methods>
</group>
</export>
@@ -0,0 +1,38 @@
<?php
/**
* Invision Power Services
* IP.Board v3.0.5
* Some required extensions to check for
* Last Updated: $Date: 2009-06-30 12:16:04 -0400 (Tue, 30 Jun 2009) $
*
* @author Matt Mecham
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.iinvisionpower.com/community/board/license.html
* @package Invision Power Board
* @link http://www.iinvisionpower.com
* @since 1st December 2008
* @version $Revision: 4830 $
*
*/
$INSTALLDATA = array(
array( 'prettyname' => "Поддержка DOM XML",
'extensionname' => "libxml2",
'helpurl' => "http://www.php.net/manual/en/dom.setup.php",
'testfor' => 'dom',
'nohault' => false ),
array( 'prettyname' => "Библиотека GD",
'extensionname' => "gd",
'helpurl' => "http://www.php.net/manual/en/image.setup.php",
'testfor' => 'gd',
'nohault' => true ),
array( 'prettyname' => "Класс Reflection",
'extensionname' => "Reflection",
'helpurl' => "http://uk2.php.net/manual/en/language.oop5.reflection.php",
'testfor' => 'Reflection',
'nohault' => false ),
);
+43
View File
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<installdata>
<action>
<file>index</file>
<menu>Требования</menu>
<position>0</position>
</action>
<action>
<file>eula</file>
<menu>Cоглашение</menu>
<position>1</position>
</action>
<action>
<file>apps</file>
<menu>Приложения</menu>
<position>2</position>
</action>
<action>
<file>address</file>
<menu>Адреса</menu>
<position>3</position>
</action>
<action>
<file>db</file>
<menu>Данные БД</menu>
<position>4</position>
</action>
<action>
<file>admin</file>
<menu>Администратор</menu>
<position>5</position>
</action>
<action>
<file>install</file>
<menu>Установка</menu>
<position>6</position>
</action>
<action>
<file>done</file>
<menu>Завершение</menu>
<position>7</position>
</action>
</installdata>
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<installdata>
<action>
<file>index</file>
<menu>Авторизация</menu>
<position>0</position>
</action>
<action>
<file>overview</file>
<menu>Информация</menu>
<position>2</position>
</action>
<action>
<file>convert</file>
<menu>Конвертация</menu>
<position>2</position>
</action>
<action>
<file>apps</file>
<menu>Приложения</menu>
<position>2</position>
</action>
<action>
<file>upgrade</file>
<menu>Обновление</menu>
<position>2</position>
</action>
<action>
<file>done</file>
<menu>Завершение</menu>
<position>3</position>
</action>
</installdata>
+42
View File
@@ -0,0 +1,42 @@
<installdata>
<file>
<path>cache</path>
<dir>1</dir>
</file>
<file>
<path>cache/lang_cache</path>
<dir>1</dir>
</file>
<file>
<path>cache/lang_cache/1</path>
<dir>1</dir>
</file>
<file>
<path>cache/skin_cache</path>
<dir>1</dir>
</file>
<file>
<path>public/style_images</path>
<dir>1</dir>
</file>
<file>
<path>public/style_css</path>
<dir>1</dir>
</file>
<file>
<path>cache/tmp</path>
<dir>1</dir>
</file>
<file>
<path>hooks</path>
<dir>1</dir>
</file>
<file>
<path>uploads</path>
<dir>1</dir>
</file>
<file>
<path>conf_global.php</path>
<dir>0</dir>
</file>
</installdata>