Seditio Source
Root |
./othercms/ips_4.3.4/applications/core/modules/setup/install/install.php
<?php
/**
 * @brief        Installer: Install
 * @author        <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
 * @copyright    (c) Invision Power Services, Inc.
 * @license        https://www.invisioncommunity.com/legal/standards/
 * @package        Invision Community
 * @since        2 Apr 2013
 */
 
namespace IPS\core\modules\setup\install;

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
   
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
    exit;
}

/**
 * Installer: Install
 */
class _install extends \IPS\Dispatcher\Controller
{
   
/**
     * Install
     */
   
public function manage()
    {
        require \
IPS\ROOT_PATH . '/conf_global.php';
       
       
/* Zend Server has an issue where it caches 'require'd files which means the admin details written in the
           previous step aren't in the $INFO array which causes the MultiRedirect to fail. Making the page reload after
           a pause fixes the issue so we manually request a page refresh rather than doing it automatically */
       
if ( ! isset( $INFO['admin_user'] ) )
        {
            \
IPS\Output::i()->title     = \IPS\Member::loggedIn()->language()->addToStack('install');
            \
IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'global' )->manualStart();
           
            return;
        }
       
       
$multipleRedirect = new \IPS\Helpers\MultipleRedirect(
            \
IPS\Http\Url::internal( 'controller=install' ),
            function(
$data )
            {
                try
                {
                    require \
IPS\ROOT_PATH . '/conf_global.php';
                   
$install = new \IPS\core\Setup\Install(
                       
$INFO['apps'],
                       
$INFO['default_app'],
                       
$INFO['base_url'],
                       
mb_substr( str_replace( '\\', '/', $_SERVER['SCRIPT_FILENAME'] ), 0, -mb_strlen( 'install/index.php' ) ),
                        array(
'sql_host' => $INFO['sql_host'], 'sql_user' => $INFO['sql_user'], 'sql_pass' => $INFO['sql_pass'], 'sql_database' => $INFO['sql_database'], 'sql_port' => $INFO['sql_port'], 'sql_socket' => $INFO['sql_socket'], 'sql_tbl_prefix' => $INFO['sql_tbl_prefix'] ),
                       
$INFO['admin_user'],
                       
$INFO['admin_pass1'],
                       
$INFO['admin_email'],
                       
$INFO['diagnostics_reporting']
                        );
                }
                catch ( \
InvalidArgumentException $e )
                {
                    \
IPS\Output::i()->error( 'error', '4S112/1', 403, '' );
                }
       
                try
                {
                    return
$install->process( $data );
                }
                catch( \
Exception $e )
                {
                   
$backtrace = $e->getTraceAsString();

                   
$error = \IPS\Theme::i()->getTemplate( 'global' )->error( "Error", $e->getMessage() ?: "Error", $e->getCode(), $backtrace );
                   
                    \
IPS\Request::i()->start = true;
                    \
IPS\Output::i()->title     = \IPS\Member::loggedIn()->language()->addToStack('error');
                    \
IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'global' )->block( 'install', $error, FALSE );
                     
                   
/* If we're still here - output */
                   
if ( \IPS\Request::i()->isAjax() )
                    {
                        \
IPS\Output::i()->sendOutput( \IPS\Output::i()->output, 200, 'text/html', \IPS\Output::i()->httpHeaders );
                    }
                    else
                    {
                        \
IPS\Output::i()->sendOutput( \IPS\Theme::i()->getTemplate( 'global', 'core' )->globalTemplate( \IPS\Output::i()->title, \IPS\Output::i()->output ), 403, 'text/html', \IPS\Output::i()->httpHeaders );
                    }
                }
            },
            function()
            {
                \
IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'controller=done' ) );
            }
        );
   
        \
IPS\Output::i()->title        = \IPS\Member::loggedIn()->language()->addToStack('install');
        \
IPS\Output::i()->output    = \IPS\Theme::i()->getTemplate( 'global' )->block( 'install', $multipleRedirect, FALSE );
    }
}