Вход Регистрация
Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/admin/setup/applications/install/sections/install.php
Строк: 1365
<?php
/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.4.6
 * Installer: EULA file
 * Last Updated: $LastChangedDate: 2012-09-27 06:09:08 -0400 (Thu, 27 Sep 2012) $
 * </pre>
 *
 * @author         $Author: mark $
 * @copyright    (c) 2001 - 2009 Invision Power Services, Inc.
 * @license        http://www.invisionpower.com/company/standards.php#license
 * @package        IP.Board
 * @link        http://www.invisionpower.com
 * @version        $Rev: 11386 $
 *
 */


class install_install extends ipsCommand
{
    
/**
     * Step count
     *
     * @access    private
     * @var        int
     */
    
private $_stepCount 0;

    
/**
     * Total number of steps
     *
     * @access    private
     * @var        int
     */
    
private $_totalSteps 13;

    
/**
     * Skin keys
     * Now we could do some fancy method that grabs the keys from an XML file or whatever
     * But as they are unlikely to change with any frequency, this should suffice.
     *
     * @access    private
     * @var        array
     */
    
private $_skinKeys = array( => 'default''xmlskin''lofi' );
    private 
$_skinIDs  = array( 12);

    
/** 
     * Default Application Orders
     *
     * @var        array
     */
    
private $forcePositions = array(
        
'core'        => 1,
        
'forums'    => 2,
        
'members'    => 3
        
);

    
/**
     * Execute selected method
     * SQL > APPLICATIONS -> MODULES -> SETTINGS  > TEMPLATES > TASKS > LANGUAGES > PUBLIC LANGUAGES > BBCODE > ACP HELP OTHER [ Email Templates ] > Build Caches
     *
     * @access    public
     * @param    object        Registry object
     * @return    @e void
     */
    
public function doExecuteipsRegistry $registry )
    {
        
//-----------------------------------------
        // Any "extra" configs required for this driver?
        //-----------------------------------------
        
        
foreach( IPSSetUp::getSavedDataAsArray() as $k => $v )
        {
            if ( 
preg_match"#^__sql__#"$k ) )
            {
                
$k str_replace"__sql__"""$k );

                
IPSSetUp::setSavedData$k$v );
            }
        }
        
        
/* Switch */
        
switch( $this->request['do'] )
        {
            case 
'sql':
                
$this->_stepCount 1;
                
$this->install_sql();
            break;

            case 
'sql_steps':
                
$this->_stepCount 2;
                
$this->install_sql_steps();
            break;

            case 
'applications':
                
$this->_stepCount 3;
                
$this->install_applications();
            break;

            case 
'modules':
                
$this->_stepCount 4;
                
$this->install_modules();
            break;

            case 
'settings':
                
$this->_stepCount 5;
                
$this->install_settings();
            break;

            case 
'templates':
                
$this->_stepCount 6;
                
$this->install_templates();
            break;

            case 
'tasks':
                
$this->_stepCount 7;
                
$this->install_tasks();
            break;

            case 
'languages':
                
$this->_stepCount 8;
                
$this->install_languages();
            break;

            case 
'clientlanguages':
                
$this->_stepCount 9;
                
$this->install_client_languages();
            break;

            case 
'bbcode':
                
$this->_stepCount 10;
                
$this->install_bbcode();
            break;

            case 
'acphelp':
                
$this->_stepCount 11;
                
$this->install_acphelp();
            break;

            case 
'other':
                
$this->_stepCount 12;
                
$this->install_other();
            break;

            case 
'caches':
                
$this->_stepCount 13;
                
$this->install_caches();
            break;

            default:
                
/* Output */
                
$this->registry->output->setTitle"Установка" );
                
$this->registry->output->setNextAction'install&do=sql' );
                
$this->registry->output->setHideButtonTRUE );
                
$this->registry->output->addContent$this->registry->output->template()->page_install() );
                
$this->registry->output->sendOutput();
            break;
        }
    }

    
/**
     * Installs SQL schematic
     *
     * @return void
     */
    
public function install_sql()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$previous $_REQUEST['previous'];
        
$skip     $_REQUEST['_skip'];

        
//-----------------------------------------
        // Write config
        //-----------------------------------------

        
if ( ! $previous AND ! $skip )
        {
            
/* Write Configuration Files */
            
$output[] = 'Запись файлов конфигурации<br />';

            
$test IPSInstall::writeConfiguration();

            
//-----------------------------------
            // Check that it wrote
            //-----------------------------------

            
if ( ! is_fileIPSSetUp::getSavedData('install_dir') . '/conf_global.php' ) )
            {
                
$this->registry->output->setTitle"Установка: Ошибка" );
                
$this->registry->output->setNextAction'install&do=sql' );
                
$this->registry->output->setHideButtonTRUE );
                
$this->registry->output->addError"Невозможна запись конфигурации в файл conf_global.php.  Пожалуйста, убедитесь, что файл имеет полный доступ на чтение и запись." );
                
$this->registry->output->addContent"" );
                
$this->registry->output->sendOutput();

                exit();
            }
            else
            {
                
$INFO = array();

                require( 
IPSSetUp::getSavedData('install_dir') . '/conf_global.php' );/*noLibHook*/

                
if( ! $INFO['sql_driver'] )
                {
                    
$this->registry->output->setTitle"Установка: Ошибка" );
                    
$this->registry->output->setNextAction'install&do=sql' );
                    
$this->registry->output->setHideButtonTRUE );
                    
$this->registry->output->addError"Невозможна запись конфигурации в файл conf_global.php.  Пожалуйста, убедитесь, что файл имеет полный доступ на чтение и запись." );
                    
$this->registry->output->addContent"" );
                    
$this->registry->output->sendOutput();

                    exit();
                }
            }
        }

        
/* Set up DB driver */
        
$extra_install $this->_setUpDBDriverFALSE );
        
        
//-----------------------------------------
        // Import System Templates
        // We have to do this here un case we counter a driver error
        //-----------------------------------------
        
        
require_once( IPS_ROOT_PATH 'sources/classes/output/systemTemplates.php' );/*noLibHook*/
        
$systemTemplates = new systemTemplates();
        
$systemTemplates->writeDefaults();

        
//-----------------------------------------
        // Fetch next 'un
        //-----------------------------------------

        
$next IPSSetUp::fetchNextApplication$previous''$this->settings['gb_char_set'] );

        if ( 
$next['key'] )
        {
            
//-----------------------------------------
            // INIT
            //-----------------------------------------

            
$_PATH IPSLib::getAppDir$next['key'] ) . '/setup/versions/install/sql/';
            
$_FILE $_PATH $next['key'] . '_' strtolowerIPSSetUp::getSavedData('sql_driver') );

            
//-----------------------------------------
            // Tables
            //-----------------------------------------

            
if ( is_file$_FILE '_tables.php' ) )
            {
                
$TABLE = array();
                include( 
$_FILE '_tables.php' );/*noLibHook*/

                
if ( is_array$TABLE ) and count$TABLE ) )
                {
                    
$output[] = $next['title'] . ": Создание таблиц";
                
                    foreach( 
$TABLE as $q )
                    {
                        
preg_match("/CREATE TABLE (S+)(s)?(/"$q$match);

                        if ( 
$match[1] )
                        {
                            
$this->DB->dropTablestr_replaceIPSSetUp::getSavedData('db_pre'), ''$match[1] ) );
                        }

                        if ( 
$extra_install AND method_exists$extra_install'process_query_create' ) )
                        {
                             
$q $extra_install->process_query_create$q );
                        }

                        
$this->DB->allow_sub_select     1;
                        
$this->DB->error                '';

                        
$this->DB->query$q );

                        if ( 
$this->DB->error )
                        {
                            
$this->registry->output->addErrornl2br$q ) . "<br /><br />".$this->DB->error );
                        }
                    }
                }
            }

            
//---------------------------------------------
            // Create the fulltext index...
            //---------------------------------------------

            
if ( $this->DB->checkFulltextSupport() )
            {
                if ( 
is_file$_FILE '_fulltext.php' ) )
                {
                    
$INDEX = array();
                    include( 
$_FILE '_fulltext.php' );/*noLibHook*/

                    
if( is_array($INDEX) AND count($INDEX) )
                    {
                        
$output[] = $next['title'] . ": Создание индексов";

                        foreach( 
$INDEX as $q )
                        {
                            
//---------------------------------------------
                            // Pass to handler
                            //---------------------------------------------

                            
if ( $extra_install AND method_exists$extra_install'process_query_index' ) )
                            {
                                 
$q $extra_install->process_query_index$q );
                            }

                            
//---------------------------------------------
                            // Pass query
                            //---------------------------------------------

                            
$this->DB->allow_sub_select     1;
                            
$this->DB->error                '';

                            
$this->DB->query($q);

                            if ( 
$this->DB->error )
                            {
                                
$this->registry->output->addErrornl2br$q ) . "<br /><br />".$this->DB->error );
                            }
                        }
                    }
                }
            }

            
//-----------------------------------------
            // INSERTS
            //-----------------------------------------

            
if ( is_file$_FILE '_inserts.php' ) )
            {
                
$INSERT = array();
                include( 
$_FILE '_inserts.php' );/*noLibHook*/

                
if ( is_array($INSERT) && count($INSERT) )
                {
                    
$output[] = $next['title'] . ": Наполнение таблиц";
                    
                    foreach( 
$INSERT as $q )
                    {
                        
$q str_replace"<%time%>"time(), $q );
                        
$q str_replace'<%admin_name%>'   IPSSetUp::getSavedData('admin_user'), $q );
                        
$q str_replace'<%admin_seoname%>'IPSText::makeSeoTitleIPSSetUp::getSavedData('admin_user') ), $q );
    
                        
//---------------------------------------------
                        // Pass to handler
                         //---------------------------------------------
    
                         
if ( $extra_install AND method_exists$extra_install'process_query_insert' ) )
                         {
                            
$q $extra_install->process_query_insert$q );
                        }
    
                        
$this->DB->allow_sub_select     1;
                        
$this->DB->error                '';
    
                        
$this->DB->query$q );
    
                        if ( 
$this->DB->error )
                        {
                            
$this->registry->output->addErrornl2br$q ) . "<br /><br />".$this->DB->error );
                        }
                    }
                }
            }
        
            
//-----------------------------------------
            // Sort out groups
            // This has to be here so the applications
            // can populate group settings appropriately
            //-----------------------------------------
            
            
if ( $next['key'] == 'core' )
            {

                
$output[] = "Добавление информации о группах...";
                
$xml    = new classXMLIPSSetUp::charSet );
    
                if ( 
$extra_install AND method_exists$extra_install'before_inserts_run' ) )
                {
                     
$q $extra_install->before_inserts_run'groups' );
                }
    
                
$xml->loadIPS_ROOT_PATH 'setup/xml/groups.xml' );
    
                foreach( 
$xml->fetchElements'row' ) as $xmlelement )
                {
                    
$data $xml->fetchElementsFromRecord$xmlelement );
                    
                    
$this->DB->insert'groups'$data );
                }
    
                if ( 
$extra_install AND method_exists$extra_install'after_inserts_run' ) )
                {
                     
$q $extra_install->after_inserts_run'groups' );
                }
            
            }

            
//-----------------------------------------
            // Done.. so get some more!
            //-----------------------------------------

            
$output = ( is_array$output ) AND count$output ) ) ? $output : array( => $next['title'] . ": Наполнение таблиц завершено" );

            
$this->_finishStep$output"Установка: SQL"'install&do=sql&previous=' $next['key'] );
        }
        else
        {
            
//-----------------------------------------
            // NO MORE TO INSTALL
            //-----------------------------------------

            
$output[] = "Действия SQL завершены";

            
IPSInstall::createAdminAccount();

            
//-----------------------------------------
            // Next...
            //-----------------------------------------

            
$output = ( is_array$output ) AND count$output ) ) ? $output : array( => $next['title'] . ": Наполнение таблиц завершено" );

            
$this->_finishStep$output"Установка: SQL"'install&do=sql_steps' );
        }
    }

    
/**
     * Installs extra sql statements
     *
     * @return void
     */
    
public function install_sql_steps()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$output    = array();
        
$errors    = array();
        
$id        intval$this->request['id'] );
        
$sql_files = array();
        
$previous  $_REQUEST['previous'];
        
$skip      $_REQUEST['_skip'];
        
$next      IPSSetUp::fetchNextApplication$previous''$this->settings['gb_char_set'] );

        
//-----------------------------------------
        // Got one to run?
        //-----------------------------------------

        
if( $next['key'] )
        {
            
$path IPSLib::getAppDir$next['key'] ) . '/setup/versions/install';
            
$id   = ( $id ) ? $id;

            if ( 
is_file$path '/sql/' .$next['key'] . '_' strtolowerIPSSetUp::getSavedData('sql_driver') )  . '_sql_' $id .'.php' ) )
            {
                
/* Set up DB driver */
                
$extra_install $this->_setUpDBDriverFALSE );

                
/* Increment ID */
                
$new_id $id 1;
                
$count  0;

                
/* Get the SQL File */
                
$SQL = array();
                require_once( 
$path '/sql/' $next['key'] . '_' strtolowerIPSSetUp::getSavedData('sql_driver') )  . '_sql_' $id .'.php' );/*noLibHook*/
                
                
if ( is_array$SQL ) && count$SQL ) )
                {
                    
/* Loop through the queries */
                    
foreach( $SQL as $query )
                    {
                        
/* Setup */
                        
$this->DB->allow_sub_select     1;
                        
$this->DB->error                '';
    
                        
$query str_replace"<%time%>"time(), $query );
    
                        
/* Process the query */
                         
if ( $extra_install AND method_exists$extra_install'process_query_insert' ) )
                         {
                            
$query $extra_install->process_query_insert$query );
                        }
    
                        
/* Run the query */
                        
$this->DB->query$query );
    
                        if ( 
$this->DB->error )
                        {
                            
$this->registry->output->addError$query."<br /><br />".$this->DB->error );
                        }
                        else
                        {
                            
$count++;
                        }
                    }
    
                    
$output[] = "$count запросов выполнено";
                }
                else
                {
                    
$output[] = "Нет SQL запросов на данном шаге...";
                }

                
$previous $_REQUEST['previous'];
            }
            else
            {
                
$previous $next['key'];
            }

            
$output = ( is_array$output ) AND count$output ) ) ? $output : array( => $next['title'] . ": SQL запросы выполнены" );

            
$this->_finishStep$output"Установка: SQL"'install&do=sql_steps&amp;previous=' $previous '&amp;id=' $new_id );
        }
        else
        {
            
$output[] = "Все SQL запросы выполнены";

            
$this->_finishStep$output"Установка: SQL"'install&do=applications' );
        }
    }

    
/**
     * Install Applications
     *
     * @return void
     */
    
public function install_applications()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$previous $_REQUEST['previous'];
        
$num      intval$_REQUEST['num'] ) + 1;

        
//-----------------------------------------
        // Fetch next 'un
        //-----------------------------------------

        
$next IPSSetUp::fetchNextApplication$previous''$this->settings['gb_char_set'] );

        
/* Set up DB driver */
        
$extra_install $this->_setUpDBDriverFALSE );

        
//-----------------------------------------
        // Install APP Data
        //-----------------------------------------

        
if ( $next['key'] )
        {
            
$output[]     = $next['title'] . ": Добавление данных приложений";
            
$_PATH        IPSLib::getAppDir$next['key'] ) .  '/xml/';
            
$_protected   = ( in_array$next['key'], array( 'core''forums''members' ) ) ) ? 0;
            
$version      '1.0.0';
            
$long_version '10000';
            
$_versions    = array();

            if ( 
is_file$_PATH 'versions.xml' ) )
            {
                require_once( 
IPS_KERNEL_PATH 'classXML.php' );/*noLibHook*/
                
$xml    = new classXMLIPSSetUp::charSet );

                
$xml->load$_PATH 'versions.xml' );

                foreach( 
$xml->fetchElements'version' ) as $xmlelement )
                {
                    
$data $xml->fetchElementsFromRecord$xmlelement );

                    
$_versions$data['long'] ] = $data;
                }

                
krsort$_versions );

                
$_this_version current$_versions );
                
$version       $_this_version['human'];
                
$long_version  $_this_version['long'];
            }

            if ( 
is_file$_PATH 'information.xml' ) )
            {
                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
                {
                     
$q $extra_install->before_inserts_run'applications' );
                }

                
//-----------------------------------------
                // Continue
                //-----------------------------------------

                
$appData IPSSetUp::fetchXmlAppInformation$next['key'], $this->settings['gb_char_set'] );

                
//-----------------------------------------
                // Insert...
                //-----------------------------------------
                
                
$this->DB->insert'core_applications', array(  'app_title'            => $appData['name'],
                                                                
'app_public_title'    => ( $appData['public_name'] ) ? $appData['public_name'] : '',    // Allow blank in case it's an admin-only app
                                                                
'app_description'    => $appData['description'],
                                                                
'app_author'        => $appData['author'],
                                                                
'app_hide_tab'        => intval($appData['hide_tab']),
                                                                
'app_version'        => $version,
                                                                
'app_long_version'    => $long_version,
                                                                
'app_directory'        => $next['key'],
                                                                
'app_added'            => time(),
                                                                
'app_position'        => isset( $this->forcePositions$next['key'] ] ) ? $this->forcePositions$next['key'] ] : $num,
                                                                
'app_protected'        => $_protected,
                                                                
'app_location'        => IPSLib::extractAppLocationKey$next['key'] ),
                                                                
'app_enabled'        => $appData['disabledatinstall'] ? 1,
                                                                
'app_website'        => $appData['website'],
                                                                
'app_update_check'    => $appData['update_check'],
                                                                
'app_global_caches'    => $appData['global_caches'],
                                                               ) );
                                                                
                
$this->DB->insert'upgrade_history', array('upgrade_version_id'    => $long_version,
                                                            
'upgrade_version_human'    => $version,
                                                            
'upgrade_date'            => 0,
                                                            
'upgrade_mid'            => 0,
                                                            
'upgrade_notes'            => '',
                                                            
'upgrade_app'            => $next['key']
                                                    )    );

                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
                {
                     
$q $extra_install->after_inserts_run'applications' );
                }
            }

            
//-----------------------------------------
            // Done.. so get some more!
            //-----------------------------------------

            
$this->_finishStep$output"Установка: Приложения"'install&do=applications&amp;previous=' $next['key'] . '&num=' $num );
        }
        else
        {
            
//-----------------------------------------
            // Next...
            //-----------------------------------------

            
$output[] = "Приложения установлены";

            
$this->_finishStep$output"Установка: Приложения"'install&do=modules' );
        }
    }

    
/**
     * Install Modules
     *
     * @return    @e void
     */
    
public function install_modules()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$previous $_REQUEST['previous'];

        
//-----------------------------------------
        // Fetch next 'un
        //-----------------------------------------

        
$next IPSSetUp::fetchNextApplication$previous''$this->settings['gb_char_set'] );

        
/* Set up DB driver */
        
$extra_install $this->_setUpDBDriverFALSE );

        
//-----------------------------------------
        // Install SYSTEM Templates
        //-----------------------------------------

        
$fields = array( 'sys_module_title'    'sys_module_application''sys_module_key'   'sys_module_description''sys_module_version'
                         
'sys_module_protected''sys_module_visible'    'sys_module_position''sys_module_admin' );
                         
        if ( 
$next['key'] )
        {
            
$output[]    = $next['title'] . ": Добавление модулей";
            
$modules    IPSSetUp::fetchXmlAppModules$next['key'], $this->settings['gb_char_set'] );
            
            if( 
is_array($modules) AND count($modules) )
            {
                if ( 
$extra_install AND method_exists$extra_install'before_inserts_run' ) )
                {
                     
$q $extra_install->before_inserts_run'modules' );
                }
                
                foreach( 
$modules as $module )
                {
                    foreach( 
$module as $k => $v )
                    {
                        if ( ! 
in_array$k$fields ) )
                        {
                            unset( 
$module$k ] );
                        }
                    }
            
                    
$this->DB->insert'core_sys_module'$module );
                }
                
                if ( 
$extra_install AND method_exists$extra_install'after_inserts_run' ) )
                {
                     
$q $extra_install->after_inserts_run'modules' );
                }
            }

            
//-----------------------------------------
            // Done.. so get some more!
            //-----------------------------------------

            
$this->_finishStep$output"Установка: Модули"'install&do=modules&previous=' $next['key'] );
        }
        else
        {
            
//-----------------------------------------
            // Next...
            //-----------------------------------------

            
$output[] = "Все модули добавлены";

            
$this->_finishStep$output"Установка: Модули"'install&do=settings' );
        }
    }

    
/**
     * Installs Settings schematic
     *
     * @return void
     */
    
public function install_settings()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$previous $_REQUEST['previous'];

        
//-----------------------------------------
        // Fetch next 'un
        //-----------------------------------------

        
$next IPSSetUp::fetchNextApplication$previous'{app}_settings.xml'$this->settings['gb_char_set'] );

        
/* Set up DB driver */
        
$extra_install $this->_setUpDBDriverFALSE );

        
//-----------------------------------------
        // Install settings
        //-----------------------------------------

        
if ( $next['key'] )
        {
            
$output[]      = $next['title'] . ": Добавление настроек";
            
$_PATH         IPSLib::getAppDir$next['key'] ) .  '/xml/';
            
$knownSettings = array();
            
            if ( 
is_file$_PATH $next['key'] . '_settings.xml' ) )
            {
                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
                {
                     
$q $extra_install->before_inserts_run'settings' );
                }

                
//-----------------------------------------
                // Continue
                //-----------------------------------------

                
require_once( IPS_ROOT_PATH 'applications/core/modules_admin/settings/settings.php' );/*noLibHook*/
                
$settings =  new admin_core_settings_settings();
                
$settings->makeRegistryShortcuts$this->registry );

                
$this->request['app_dir'] = $next['key'];

                
//-----------------------------------------
                // Known settings
                //-----------------------------------------

                
if ( substrIPSSetUp::getSavedData('install_url'), -) == '/' )
                {
                    
IPSSetUp::setSavedData('install_url'substrIPSSetUp::getSavedData('install_url'), 0, -) );
                }
                
                if ( 
substrIPSSetUp::getSavedData('install_dir'), -) == '/' )
                {
                    
IPSSetUp::setSavedData('install_dir'substrIPSSetUp::getSavedData('install_dir'), 0, -) );
                }
                
                
/* Fetch known settings  */
                
if ( is_fileIPSLib::getAppDir$next['key'] ) . '/setup/versions/install/knownSettings.php' ) )
                {
                    require( 
IPSLib::getAppDir$next['key'] ) . '/setup/versions/install/knownSettings.php' );/*noLibHook*/
                
}
                
                
$this->request['app_dir'] = $next['key'];
                
$settings->importAllSettings11$knownSettings );
                
                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
                {
                     
$q $extra_install->after_inserts_run'settings' );
                }
            }

            
//-----------------------------------------
            // Done.. so get some more!
            //-----------------------------------------

            
$this->_finishStep$output"Установка: Настройки"'install&do=settings&previous=' $next['key'] );
        }
        else
        {
            
//-----------------------------------------
            // Next...
            //-----------------------------------------

            
$output[] = "Настройки добавлены";

            
$this->_finishStep$output"Установка: Настройки"'install&do=templates' );
        }
    }

    
/**
     * Install templates
     *
     * @return void
     */
    
public function install_templates()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$previous $_REQUEST['previous'];

        
//-----------------------------------------
        // Fetch next 'un
        //-----------------------------------------

        
$next IPSSetUp::fetchNextApplication$previous''$this->settings['gb_char_set'] );

        
/* Set up DB driver */
        
$extra_install $this->_setUpDBDriverFALSE );

        
/* Got any skin sets? */
        
$count $this->DB->buildAndFetch( array( 'select' => 'count(*) as count',
                                                  
'from'   => 'skin_collections' ) );

        if ( ! 
$count['count'] )
        {
            
//-----------------------------------------
            // Next...
            //-----------------------------------------

            
$output[] = "Добавление шаблонов стилей";

            require_once( 
IPS_KERNEL_PATH 'classXML.php' );/*noLibHook*/
            
$xml    = new classXMLIPSSetUp::charSet );

            
//-----------------------------------------
            // Adjust the table?
            //-----------------------------------------

            
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
            {
                 
$q $extra_install->before_inserts_run'skinset' );
            }

            
/* Skin Set Data */
            
$xml->loadIPS_ROOT_PATH 'setup/xml/skins/setsData.xml' );
            
            
$order 0;
            
            foreach( 
$xml->fetchElements'set' ) as $xmlelement )
            {
                
$data $xml->fetchElementsFromRecord$xmlelement );
                
                
/* Ensure we have an order */
                
$data['set_order'] = intval$order );
                
                
$order++;
                
                
$this->DB->insert'skin_collections'$data );
            }

            
//-----------------------------------------
            // Adjust the table?
            //-----------------------------------------

            
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
            {
                 
$q $extra_install->after_inserts_run'skinset' );
            }
        }

        
/* Load skin classes */
        
require_once( IPS_ROOT_PATH 'sources/classes/skins/skinFunctions.php' );/*noLibHook*/
        
require_once( IPS_ROOT_PATH 'sources/classes/skins/skinCaching.php' );/*noLibHook*/
        
require_once( IPS_ROOT_PATH 'sources/classes/skins/skinImportExport.php' );/*noLibHook*/

        
$skinFunctions = new skinImportExport$this->registry );

        
/* Grab skin data */
        
$this->DB->build( array( 'select' => '*',
                                 
'from'   => 'skin_collections' ) );

        
$this->DB->execute();

        while( 
$row $this->DB->fetch() )
        {
            
/* Bit of jiggery pokery... */
            
if ( $row['set_key'] == 'default' )
            {
                
$row['set_key'] = 'root';
                
$row['set_id']  = 0;
            }

            
$skinSets$row['set_key'] ] = $row;
        }

        
//-----------------------------------------
        // InstallTemplates
        //-----------------------------------------

        
if ( $next['key'] )
        {
            foreach( 
$skinSets as $skinKey => $skinData )
            {
                
$_PATH    IPSLib::getAppDir$next['key'] ) .  '/xml/';

                
$output[] = $next['title'] . ": Добавлены шаблоны {$skinData['set_name']}";

                if ( 
is_file$_PATH $next['key'] . '_' $skinKey '_templates.xml' ) )
                {
                    
//-----------------------------------------
                    // Adjust the table?
                    //-----------------------------------------

                    
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
                    {
                         
$q $extra_install->before_inserts_run'templates' );
                    }

                    
//-----------------------------------------
                    // Install
                    //-----------------------------------------

                    
$return $skinFunctions->importTemplateAppXML$next['key'], $skinKey$skinData['set_id'], TRUE );

                    
$output[] = $next['title'] . ": " intval$return['insertCount'] ) . " шаблонов добавлено";

                    
//-----------------------------------------
                    // Adjust the table?
                    //-----------------------------------------

                    
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
                    {
                         
$q $extra_install->after_inserts_run'templates' );
                    }
                }

                if ( 
is_file$_PATH $next['key'] . '_' $skinKey '_css.xml' ) )
                {
                    
//-----------------------------------------
                    // Adjust the table?
                    //-----------------------------------------

                    
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
                    {
                         
$q $extra_install->before_inserts_run'css' );
                    }

                    
//-----------------------------------------
                    // Install
                    //-----------------------------------------

                    
$return $skinFunctions->importCSSAppXML$next['key'], $skinKey$skinData['set_id'] );

                    
$output[] = $next['title'] . ": " intval$return['insertCount'] ) . " CSS файлов {$skinData['set_name']} добавлено";

                    
//-----------------------------------------
                    // Adjust the table?
                    //-----------------------------------------

                    
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
                    {
                         
$q $extra_install->after_inserts_run'css' );
                    }
                }
            }

            
//-----------------------------------------
            // Done.. so get some more!
            //-----------------------------------------

            
$this->_finishStep$output"Установка: Шаблоны"'install&do=templates&previous=' $next['key'] );
         }
        else
        {
            
//-----------------------------------------
            // Recache templates
            //-----------------------------------------

            
$output[] = "Добавление макросов";

            foreach( 
$skinSets as $skinKey => $skinData )
            {    
                
/* Replacements */
                
$skinFunctions->importReplacementsXMLArchivefile_get_contentsIPS_ROOT_PATH 'setup/xml/skins/replacements_' $skinKey '.xml' ), $skinKey );
            }

            
$skinFunctions->rebuildSkinSetsCache();

            
$output[] = "Шаблоны установлены";

            
$this->_finishStep$output"Установка: Шаблоны"'install&do=tasks' );
        }
    }


    
/**
     * Install Tasks
     *
     * @return void
     */
    
public function install_tasks()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$previous $_REQUEST['previous'];

        
//-----------------------------------------
        // Fetch next 'un
        //-----------------------------------------

        
$next IPSSetUp::fetchNextApplication$previous'{app}_tasks.xml'$this->settings['gb_char_set'] );

        
/* Set up DB driver */
        
$extra_install $this->_setUpDBDriverFALSE );

        
//-----------------------------------------
        // Insert tasks
        //-----------------------------------------

        
if ( $next['key'] )
        {
            
$output[] = $next['title'] . ": Добавление задач";
            
$_PATH        IPSLib::getAppDir$next['key'] ) .  '/xml/';

            if ( 
is_file$_PATH $next['key'] . '_tasks.xml' ) )
            {
                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
                {
                     
$q $extra_install->before_inserts_run'tasks' );
                }

                
//-----------------------------------------
                // Continue
                //-----------------------------------------

                
require_once( IPS_ROOT_PATH 'applications/core/modules_admin/system/taskmanager.php' );/*noLibHook*/
                
$tasks = new admin_core_system_taskmanager();
                
$tasks->makeRegistryShortcuts$this->registry );

                
$tasks->tasksImportFromXML$_PATH $next['key'] . '_tasks.xml');

                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
                {
                     
$q $extra_install->after_inserts_run'tasks' );
                }
            }

            
//-----------------------------------------
            // Done.. so get some more!
            //-----------------------------------------

            
$this->_finishStep$output"Установка: Задачи"'install&do=tasks&previous=' $next['key'] );
        }
        else
        {
            
//-----------------------------------------
            // Next...
            //-----------------------------------------

            
$output[] = "Задачи добавлены";

            
$this->_finishStep$output"Установка: Задачи"'install&do=languages' );
        }
    }

    
/**
     * Install Languages
     *
     * @return void
     */
    
public function install_languages()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$previous $_REQUEST['previous'];

        
//-----------------------------------------
        // Fetch next 'un
        //-----------------------------------------

        
$next IPSSetUp::fetchNextApplication$previous''$this->settings['gb_char_set'] );

        
/* Set up DB driver */
        
$extra_install $this->_setUpDBDriverFALSE );

        
//-----------------------------------------
        // Install Languages
        //-----------------------------------------

        
if ( $next['key'] )
        {
            
$output[] = $next['title'] . ": Добавление языков админцентра";
            
$_PATH        IPSLib::getAppDir$next['key'] ) .  '/xml/';

            
//-----------------------------------------
            // Get the language stuff
            //-----------------------------------------

            
require_once( IPS_ROOT_PATH 'applications/core/modules_admin/languages/manage_languages.php' );/*noLibHook*/
            
$lang            =  new admin_core_languages_manage_languages();
            
$lang->makeRegistryShortcuts$this->registry );

            
/* Loop through the xml directory and look for lang packs */
            
try
            {
                foreach( new 
DirectoryIterator$_PATH ) as $f )
                {
                    if( 
preg_match"#admin_(.+?)_language_pack.xml#"$f->getFileName() ) )
                    {
                        
//-----------------------------------------
                        // Adjust the table?
                        //-----------------------------------------
                
                        
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
                        {
                             
$q $extra_install->before_inserts_run'languages' );
                        }
                
                        
//-----------------------------------------
                        // Import and cache
                        //-----------------------------------------
                
                        
$this->request['file_location'] = $_PATH $f->getFileName();
                        
$lang->imprtFromXMLtruetruetrue$next['key'], false);
                
                        
//-----------------------------------------
                        // Adjust the table?
                        //-----------------------------------------
                
                        
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
                        {
                             
$q $extra_install->after_inserts_run'languages' );
                        }
                    }
                }
            } catch ( 
Exception $e ) {}

            
//-----------------------------------------
            // Done.. so get some more!
            //-----------------------------------------

            
$this->_finishStep$output"Установка: Языки админцентра"'install&do=languages&previous=' $next['key'] );
        }
        else
        {
            
//-----------------------------------------
            // Next...
            //-----------------------------------------

            
$output[] = "Языки админцентра установлены";

            
$this->_finishStep$output"Установка: Языки админцентра"'install&do=clientlanguages' );
        }
    }

    
/**
     * Install Public Languages
     *
     * @return void
     */
    
public function install_client_languages()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$previous $_REQUEST['previous'];

        
//-----------------------------------------
        // Fetch next 'un
        //-----------------------------------------

        
$next IPSSetUp::fetchNextApplication$previous''$this->settings['gb_char_set'] );

        
/* Set up DB driver */
        
$extra_install $this->_setUpDBDriverFALSE );

        
//-----------------------------------------
        // Install Languages
        //-----------------------------------------

        
if ( $next['key'] )
        {
            
$output[] = $next['title'] . ": Добавление языков";
            
$_PATH        IPSLib::getAppDir$next['key'] ) .  '/xml/';

            
//-----------------------------------------
            // Get the language stuff
            //-----------------------------------------

            
require_once( IPS_ROOT_PATH 'applications/core/modules_admin/languages/manage_languages.php' );/*noLibHook*/
            
$lang            =  new admin_core_languages_manage_languages();
            
$lang->makeRegistryShortcuts$this->registry );

            
/* Loop through the xml directory and look for lang packs */
            
try
            {
                foreach( new 
DirectoryIterator$_PATH ) as $f )
                {
                    if( 
preg_match"#public_(.+?)_language_pack.xml#"$f->getFileName() ) )
                    {
                        
//-----------------------------------------
                        // Adjust the table?
                        //-----------------------------------------
                
                        
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
                        {
                             
$q $extra_install->before_inserts_run'languages' );
                        }
                
                        
//-----------------------------------------
                        // Import and cache
                        //-----------------------------------------
                
                        
$this->request['file_location'] = $_PATH $f->getFileName();
                        
$lang->imprtFromXMLtruetruetrue$next['key'], false);
                
                        
//-----------------------------------------
                        // Adjust the table?
                        //-----------------------------------------
                
                        
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
                        {
                             
$q $extra_install->after_inserts_run'languages' );
                        }
                    }
                }
            } catch ( 
Exception $e ) {}

            
//-----------------------------------------
            // Done.. so get some more!
            //-----------------------------------------

            
$this->_finishStep$output"Установка: Языки"'install&do=clientlanguages&previous=' $next['key'] );
        }
        else
        {
            
//-----------------------------------------
            // Next...
            //-----------------------------------------

            
$output[] = "Добавление языков завершено";

            
$this->_finishStep$output"Установка: Языки"'install&do=bbcode' );
        }
    }

    
/**
     * Install BBCode
     *
     * @return void
     */
    
public function install_bbcode()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$previous $_REQUEST['previous'];

        
//-----------------------------------------
        // Fetch next 'un
        //-----------------------------------------

        
$next IPSSetUp::fetchNextApplication$previous'{app}_bbcode.xml'$this->settings['gb_char_set'] );

        
/* Set up DB driver */
        
$extra_install $this->_setUpDBDriverFALSE );

        
//-----------------------------------------
        // Install Languages
        //-----------------------------------------

        
if ( $next['key'] )
        {
            
$output[] = $next['title'] . ": Добавление BB-кодов";
            
$_PATH        IPSLib::getAppDir$next['key'] ) .  '/xml/';

            if ( 
is_file$_PATH $next['key'] . '_bbcode.xml' ) )
            {
                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
                {
                     
$q $extra_install->before_inserts_run'bbcode' );
                }

                
//-----------------------------------------
                // Continue
                //-----------------------------------------

                
require_once( IPS_ROOT_PATH 'applications/core/modules_admin/posts/bbcode.php' );/*noLibHook*/
                
$bbcode = new admin_core_posts_bbcode();
                
$bbcode->makeRegistryShortcuts$this->registry );

                
$_contents    file_get_contents$_PATH $next['key'] . '_bbcode.xml' );
                
                if ( 
$_contents )
                {
                    
$bbcode->bbcodeImportDo$_contents );
                }

                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
                {
                     
$q $extra_install->after_inserts_run'bbcode' );
                }
            }

            
$output[] = $next['title'] . ": Добавление медиа тегов";
            
$_PATH        IPSLib::getAppDir$next['key'] ) .  '/xml/';

            if ( 
is_file$_PATH $next['key'] . '_mediatag.xml' ) )
            {
                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
                {
                     
$q $extra_install->before_inserts_run'media' );
                }

                
//-----------------------------------------
                // Continue
                //-----------------------------------------

                
require_once( IPS_ROOT_PATH 'applications/core/modules_admin/posts/media.php' );/*noLibHook*/
                
$bbcode = new admin_core_posts_media();
                
$bbcode->makeRegistryShortcuts$this->registry );

                
$bbcode->doMediaImportfile_get_contents$_PATH $next['key'] . '_mediatag.xml' ) );

                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
                {
                     
$q $extra_install->after_inserts_run'media' );
                }
            }

            
//-----------------------------------------
            // Done.. so get some more!
            //-----------------------------------------

            
$this->_finishStep$output"Установка: BB-коды"'install&do=bbcode&previous=' $next['key'] );
        }
        else
        {
            
//-----------------------------------------
            // Next...
            //-----------------------------------------

            
$output[] = "Все BB-коды установлены";

            
$this->_finishStep$output"Установка: BB-коды"'install&do=acphelp' );
        }
    }

    
/**
     * Install ACP Help
     *
     * @return void
     */
    
public function install_acphelp()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$previous $_REQUEST['previous'];

        
//-----------------------------------------
        // Fetch next 'un
        //-----------------------------------------

        
$next IPSSetUp::fetchNextApplication$previous'{app}_help.xml'$this->settings['gb_char_set'] );

        
/* Set up DB driver */
        
$extra_install $this->_setUpDBDriverFALSE );

        require_once( 
IPS_KERNEL_PATH 'classXML.php' );/*noLibHook*/
        
$xml    = new classXMLIPSSetUp::charSet );

        
//-----------------------------------------
        // Install Languages
        //-----------------------------------------

        
if ( $next['key'] )
        {
            
$output[] = $next['title'] . ": Добавление разделов помощи";
            
$_PATH        IPSLib::getAppDir$next['key'] ) .  '/xml/';
            
            if ( 
is_file$_PATH $next['key'] . '_help.xml' ) )
            {
                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
                {
                     
$q $extra_install->before_inserts_run'faq' );
                }

                
//-----------------------------------------
                // Do it..
                //-----------------------------------------

                
require_once( IPS_ROOT_PATH 'applications/core/modules_admin/tools/help.php' );/*noLibHook*/
                
$help = new admin_core_tools_help();
                
$help->makeRegistryShortcuts$this->registry );

                
$done $help->helpFilesXMLImport_app$next['key'] );
                
                
$output[] = $next['title'] . ": Добавлено " $done['added'] . " файлов помощи";
                
                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
                {
                     
$q $extra_install->after_inserts_run'faq' );
                }
            }

            
//-----------------------------------------
            // Done.. so get some more!
            //-----------------------------------------

            
$this->_finishStep$output"Установка: Система помощи"'install&do=acphelp&previous=' $next['key'] );
        }
        else
        {
            
//-----------------------------------------
            // Next...
            //-----------------------------------------

            
$output[] = "Все файлы помощи добавлены";

            
$this->_finishStep$output"Установка: Система помощи"'install&do=other' );
        }
    }

    
/**
     * Install Other stuff
     *
     * @return void
     */
    
public function install_other()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$previous $_REQUEST['previous'];
        
        
//-----------------------------------------
        // HOOKS: Fetch next 'un
        //-----------------------------------------

        
$next IPSSetUp::fetchNextApplication$previous'hooks.xml'$this->settings['gb_char_set'] );

        
/* Set up DB driver */
        
$extra_install $this->_setUpDBDriverFALSE );

        
//-----------------------------------------
        // Insert tasks
        //-----------------------------------------

        
if ( $next['key'] )
        {
            
$output[] = $next['title'] . ": Добавление модификаций";
            
$_PATH        IPSLib::getAppDir$next['key'] ) .  '/xml/';

            if ( 
is_file$_PATH 'hooks.xml' ) )
            {
                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
                {
                     
$q $extra_install->before_inserts_run'hooks' );
                }

                
//-----------------------------------------
                // Continue
                //-----------------------------------------

                
require_once( IPS_ROOT_PATH 'applications/core/modules_admin/applications/hooks.php' );/*noLibHook*/
                
$hooks = new admin_core_applications_hooks();
                
$hooks->makeRegistryShortcuts$this->registry );

                
$result $hooks->installAppHooks$next['key'] );
                
                
$output[] = "Модификации " $next['title'] . ": " $result['inserted'] . " добавлено";
                
                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
                {
                     
$q $extra_install->after_inserts_run'hooks' );
                }
            }

            
//-----------------------------------------
            // Done.. so get some more!
            //-----------------------------------------

            
$this->_finishStep$output"Установка: Модификации"'install&do=other&previous=' $next['key'] );
        }
        else
        {
            require_once( 
IPS_KERNEL_PATH 'classXML.php' );/*noLibHook*/

            //-----------------------------------------
            // ****** LOG IN MODULES
            //-----------------------------------------

            
$output[] = "Добавление модулей авторизации";
            
$xml    = new classXMLIPSSetUp::charSet );

            
//-----------------------------------------
            // Adjust the table?
            //-----------------------------------------

            
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
            {
                 
$q $extra_install->before_inserts_run'login' );
            }

            
//-----------------------------------------
            // Continue
            //-----------------------------------------

            
$xml->loadIPS_ROOT_PATH 'setup/xml/loginauth.xml' );

            foreach( 
$xml->fetchElements'login_methods' ) as $xmlelement )
            {
                
$data $xml->fetchElementsFromRecord$xmlelement );

                unset( 
$data['login_id'] );
                unset( 
$data['login_date'] );
                
                
$this->DB->insert'login_methods'$data );
            }

            
//-----------------------------------------
            // Adjust the table?
            //-----------------------------------------

            
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
            {
                 
$q $extra_install->after_inserts_run'login' );
            }

            
//-----------------------------------------
            // ****** USER AGENTS
            //-----------------------------------------

            
$output[] = "Добавление user-agent`ов по-умолчанию";
            
$xml    = new classXMLIPSSetUp::charSet );

            if ( 
$extra_install AND method_exists$extra_install'before_inserts_run' ) )
            {
                 
$q $extra_install->before_inserts_run'useragents' );
            }

            require_once( 
IPS_ROOT_PATH 'sources/classes/useragents/userAgentFunctions.php' );/*noLibHook*/
            
$userAgentFunctions = new userAgentFunctions$this->registry );

            
$userAgentFunctions->rebuildMasterUserAgents();

            if ( 
$extra_install AND method_exists$extra_install'after_inserts_run' ) )
            {
                 
$q $extra_install->after_inserts_run'useragents' );
            }

            
//-----------------------------------------
            // ****** ATTACHMENTS
            //-----------------------------------------

            
$output[] = "Добавление типов прикрепляемых файлов";

            if ( 
$extra_install AND method_exists$extra_install'before_inserts_run' ) )
            {
                 
$q $extra_install->before_inserts_run'attachments' );
            }

            
$xml    = new classXMLIPSSetUp::charSet );

            
$xml->loadIPS_ROOT_PATH 'setup/xml/attachments.xml' );

            foreach( 
$xml->fetchElements'attachtype' ) as $xmlelement )
            {
                
$data $xml->fetchElementsFromRecord$xmlelement );

                unset( 
$data['atype_id'] );

                
$this->DB->insert'attachments_type'$data );
            }

            if ( 
$extra_install AND method_exists$extra_install'after_inserts_run' ) )
            {
                 
$q $extra_install->after_inserts_run'attachments' );
            }

            
//-----------------------------------------
            // Build Calendar RSS
            //-----------------------------------------

            
if( IPSLib::appIsInstalled('calendar') )
            {
                require_once( 
IPSLib::getAppDir('calendar') . '/modules_admin/calendar/calendars.php' );/*noLibHook*/
                
$cal = new admin_calendar_calendar_calendars();
                
$cal->makeRegistryShortcuts$this->registry );

                
$output[] = "Обновление RSS календаря";
                
$cal->calendarRSSCache();
            }
        
            
/* If this is windows, change the locale for the language pack */
            
if( strposstrtolowerPHP_OS ), 'win' ) === )
            {
                
$this->DB->update'core_sys_lang', array( 'lang_short' => 'Russian_Russia.65001' ), 'lang_id=1' );
            }
            else
            {
                
$this->DB->update'core_sys_lang', array( 'lang_short' => 'ru_RU.UTF-8' ), 'lang_id=1' );
            }
            
        }

        
//-----------------------------------------
        // Next...
        //-----------------------------------------

        
$this->_finishStep$output"Установка: Другие данные"'install&do=caches' );
    }

    
/**
     * Install Caches
     *
     * @return void
     */
    
public function install_caches()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$this->settings['base_url']            = IPSSetUp::getSavedData('install_url');
        
$this->settings['ipb_reg_number']    = IPSSetUp::getSavedData('lkey');

        
$previous $_REQUEST['previous'];

        
//-----------------------------------------
        // Fetch next 'un
        //-----------------------------------------

        
$next IPSSetUp::fetchNextApplication$previous''$this->settings['gb_char_set'] );

        
/* Set up DB driver */
        
$extra_install $this->_setUpDBDriverFALSE );

        
//-----------------------------------------
        // Install SYSTEM Templates on first cycle
        //-----------------------------------------

        
if( !$previous )
        {
            
//-----------------------------------------
            // Global caches...
            //-----------------------------------------

            # Grab cache master file
            
require_once( IPS_ROOT_PATH 'extensions/coreVariables.php' );/*noLibHook*/

            /* Add handle */
            
$_tmp = new coreVariables();
            
$_cache $_tmp->fetchCaches();
            
$CACHE  $_cache['caches'];

            
//-----------------------------------------
            // Adjust the table?
            //-----------------------------------------

            
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
            {
                 
$q $extra_install->before_inserts_run'caches' );
            }

            
//-----------------------------------------
            // Continue
            //-----------------------------------------

            
if ( is_array$CACHE ) )
            {
                foreach( 
$CACHE as $cs_key => $cs_data )
                {
                    
$output[] = "Обновление {$cs_key}...";

                    
ipsRegistry::cache()->rebuildCache$cs_key'global' );
                }
            }

            
//-------------------------------------------------------------
            // Systemvars
            //-------------------------------------------------------------

            
$output[] = "Обновление кеша системных переменных";

            
$cache = array( 'mail_queue'    => 0,
                            
'task_next_run' => time() + 3600 );

            
ipsRegistry::cache()->setCache'systemvars'$cache, array( 'array' => ) );

            
//-------------------------------------------------------------
            // Stats
            //-------------------------------------------------------------

            
$output[] = "Обновление кеша статистики";

            
$cache = array( 'total_replies' => 0,
                            
'total_topics'  => 1,
                            
'mem_count'     => 1,
                            
'last_mem_name' => IPSSetUp::getSavedData('admin_user'),
                            
'last_mem_id'   => );


            
ipsRegistry::cache()->setCache'stats'$cache, array( 'array' => ) );

            
//-----------------------------------------
            // Adjust the table?
            //-----------------------------------------

            
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
            {
                 
$q $extra_install->after_inserts_run'caches' );
            }

            
$output[] = "Все кеши обновлены";
            
            
//-----------------------------------------
            // Recache skins: Moved here so they are
            // build after hooks are added
            //-----------------------------------------
            
            /* Load skin classes */
            
require_once( IPS_ROOT_PATH 'sources/classes/skins/skinFunctions.php' );/*noLibHook*/
            
require_once( IPS_ROOT_PATH 'sources/classes/skins/skinCaching.php' );/*noLibHook*/
            
require_once( IPS_ROOT_PATH 'sources/classes/skins/skinImportExport.php' );/*noLibHook*/

            
$skinFunctions = new skinImportExport$this->registry );

            
/* Grab skin data */
            
$this->DB->build( array( 'select' => '*',
                                     
'from'   => 'skin_collections' ) );

            
$this->DB->execute();

            while( 
$row $this->DB->fetch() )
            {
                
/* Bit of jiggery pokery... */
                
if ( $row['set_key'] == 'default' )
                {
                    
$row['set_key'] = 'root';
                    
$row['set_id']  = 0;
                }

                
$skinSets$row['set_key'] ] = $row;
            }
            
            foreach( 
$skinSets as $skinKey => $skinData )
            {
                
/* Bit of jiggery pokery... */
                
if ( $skinData['set_key'] == 'root' )
                {
                    
$skinData['set_key'] = 'default';
                    
$skinData['set_id']  = 1;
                    
$skinKey             'default';
                }

                
$skinFunctions->rebuildPHPTemplates$skinData['set_id'] );

                if ( 
$skinFunctions->fetchErrorMessages() !== FALSE )
                {
                    
$this->registry->output->addWarningimplode"<br />"$skinFunctions->fetchErrorMessages() ) );
                }

                
$skinFunctions->rebuildCSS$skinData['set_id'] );

                if ( 
$skinFunctions->fetchErrorMessages() !== FALSE )
                {
                    
$this->registry->output->addWarningimplode"<br />"$skinFunctions->fetchErrorMessages() ) );
                }

                
$skinFunctions->rebuildReplacementsCache$skinData['set_id'] );

                if ( 
$skinFunctions->fetchErrorMessages() !== FALSE )
                {
                    
$this->registry->output->addWarningimplode"<br />"$skinFunctions->fetchErrorMessages() ) );
                }
            }

            
$skinFunctions->rebuildSkinSetsCache();
            
            
$output[] = "Кеш стиля обновлен";
            
            
/* Rebuild FURL & GLOBAL caches */
            
try
            {
                
IPSLib::cacheFurlTemplates();
                
IPSLib::cacheGlobalCaches();
            }
            catch( 
Exception $error )
            {
            }
        }

        
//-----------------------------------------
        // Now install other caches
        //-----------------------------------------
        
        
if ( $next['key'] )
        {
            
$_PATH    IPSLib::getAppDir$next['key'] ) . '/extensions/';

            if ( 
is_file$_PATH 'coreVariables.php' ) )
            {
                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'before_inserts_run' ) )
                {
                     
$q $extra_install->before_inserts_run'caches' );
                }

                
# Grab cache master file
                
require_once( $_PATH 'coreVariables.php' );/*noLibHook*/

                
if ( is_array$CACHE ) )
                {
                    foreach( 
$CACHE as $cs_key => $cs_data )
                    {
                        
$output[] = $next['title'] . ": Обновление {$cs_key}...";

                        
ipsRegistry::cache()->rebuildCache$cs_key$next['key'] );
                    }
                }
                else
                {
                    
$output[] = $next['title'] . ": Нет кешей для обновления...";
                }

                
//-----------------------------------------
                // Adjust the table?
                //-----------------------------------------

                
if ( $extra_install AND method_exists$extra_install'after_inserts_run' ) )
                {
                     
$q $extra_install->after_inserts_run'caches' );
                }
            }
            else
            {
                
$output[] = $next['title'] . ": Нет кешей для обновления...";
            }

            
//-----------------------------------------
            // Done.. so get some more!
            //-----------------------------------------

            
$this->_finishStep$output"Установка: кеш"'install&do=caches&previous=' $next['key'] );
        }
        else
        {
            
$this->_finishStep$output"Установка: кеш"'done' );
        }
    }

    
/**
     * Set up DB driver
     *
     * @access    private
     * @param    bool        Whether the DB driver returns with an error or not
     * @return    @e void
     */
    
private function _setUpDBDriver$returnDie=TRUE )
    {
        
$extra_install '';

        
//--------------------------------------------------
        // Any "extra" configs required for this driver?
        //--------------------------------------------------

        
if ( is_fileIPS_ROOT_PATH .'setup/sql/' strtolowerIPSSetUp::getSavedData('sql_driver') ) . '_install.php' ) )
        {
            require_once( 
IPS_ROOT_PATH .'setup/sql/' strtolowerIPSSetUp::getSavedData('sql_driver') ) . '_install.php' );/*noLibHook*/

            
$extra_install = new install_extra$this->registry );
        }

        
//-----------------------------------------
        // Set DB Handle
        //-----------------------------------------

        
$this->registry->loadConfGlobal();
        
$this->registry->setDBHandle();
        
$this->DB $this->registry->DB();

        
/* Return error? */
        
if ( $returnDie === TRUE )
        {
            
$this->DB->return_die 1;
        }

        return 
$extra_install;
    }

    
/**
     * Finish Step
     * Configures the output engine
     *
     * @access    private
     * @param    string    output
     * @param    string    title
     * @param    string    next step
     * @return    @e void
     */
    
private function _finishStep$output$title$nextStep )
    {
        if ( 
$this->_stepCount )
        {
            
$this->registry->output->setInstallStep$this->_stepCount$this->_totalSteps );
        }

        
$this->registry->output->setTitle$title );
        
$this->registry->output->setNextAction$nextStep );
        
$this->registry->output->setHideButtonTRUE );
        
$this->registry->output->addContent$this->registry->output->template()->page_refresh$output ) );
        
$this->registry->output->sendOutput();
    }
}
Онлайн: 0
Реклама