mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-03 16:51:40 +09:00
176 lines
4.4 KiB
PHP
176 lines
4.4 KiB
PHP
<?php
|
|
/* Copyright (C) NAVER <http://www.navercorp.com> */
|
|
/**
|
|
* @class installView
|
|
* @author NAVER (developers@xpressengine.com)
|
|
* @brief View class of install module
|
|
*/
|
|
class installView extends install
|
|
{
|
|
public static $checkEnv = false;
|
|
public static $rewriteCheckFilePath = 'files/cache/tmpRewriteCheck.txt';
|
|
public static $rewriteCheckString = '';
|
|
|
|
/**
|
|
* @brief Initialization
|
|
*/
|
|
function init()
|
|
{
|
|
// Stop if already installed.
|
|
if (Context::isInstalled())
|
|
{
|
|
throw new Rhymix\Framework\Exception('msg_already_installed');
|
|
}
|
|
|
|
// Set the browser title.
|
|
Context::setBrowserTitle(lang('introduce_title'));
|
|
|
|
// Specify the template path.
|
|
$this->setTemplatePath($this->module_path.'tpl');
|
|
|
|
// Check the environment.
|
|
$oInstallController = getController('install');
|
|
self::$checkEnv = $oInstallController->checkInstallEnv();
|
|
if (self::$checkEnv)
|
|
{
|
|
$oInstallController->makeDefaultDirectory();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Index page
|
|
*/
|
|
function dispInstallIndex()
|
|
{
|
|
// If there is an autoinstall config file, use it.
|
|
if (file_exists(RX_BASEDIR . 'config/install.config.php'))
|
|
{
|
|
include RX_BASEDIR . 'config/install.config.php';
|
|
|
|
if (isset($install_config) && is_array($install_config))
|
|
{
|
|
$oInstallController = getController('install');
|
|
$output = $oInstallController->procInstall($install_config);
|
|
if (!$output->toBool())
|
|
{
|
|
return $output;
|
|
}
|
|
else
|
|
{
|
|
$this->setRedirectUrl(RX_BASEURL);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Otherwise, display the license agreement screen.
|
|
Context::set('lang_type', Context::getLangType());
|
|
$this->setTemplateFile('license_agreement');
|
|
}
|
|
|
|
/**
|
|
* @brief Display messages about installation environment
|
|
*/
|
|
function dispInstallCheckEnv()
|
|
{
|
|
// Create a temporary file for mod_rewrite check.
|
|
self::$rewriteCheckString = Rhymix\Framework\Security::getRandom(32);
|
|
FileHandler::writeFile(RX_BASEDIR . self::$rewriteCheckFilePath, self::$rewriteCheckString);
|
|
|
|
// Check if the web server is nginx.
|
|
Context::set('use_nginx', stripos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false);
|
|
$this->setTemplateFile('check_env');
|
|
}
|
|
|
|
/**
|
|
* @brief Configure the database
|
|
*/
|
|
function dispInstallDBConfig()
|
|
{
|
|
// Display check_env if it is not installable
|
|
if(!self::$checkEnv)
|
|
{
|
|
return $this->dispInstallCheckEnv();
|
|
}
|
|
|
|
// Delete mod_rewrite check file
|
|
FileHandler::removeFile(RX_BASEDIR . self::$rewriteCheckFilePath);
|
|
|
|
// Save mod_rewrite check status.
|
|
if(Context::get('rewrite') === 'Y')
|
|
{
|
|
Context::set('use_rewrite', $_SESSION['use_rewrite'] = 'Y');
|
|
}
|
|
|
|
Context::set('error_return_url', getNotEncodedUrl('', 'act', Context::get('act')));
|
|
$this->setTemplateFile('db_config');
|
|
}
|
|
|
|
/**
|
|
* @brief Display a screen to enter DB and administrator's information
|
|
*/
|
|
function dispInstallOtherConfig()
|
|
{
|
|
// Display check_env if not installable
|
|
if(!self::$checkEnv)
|
|
{
|
|
return $this->dispInstallCheckEnv();
|
|
}
|
|
|
|
// Get list of time zones.
|
|
Context::set('timezones', Rhymix\Framework\DateTime::getTimezoneList());
|
|
|
|
// Automatically select a time zone for the user.
|
|
Context::set('selected_timezone', $this->detectUserTimeZone());
|
|
|
|
// Always use SSL if installing via SSL.
|
|
Context::set('use_ssl', RX_SSL ? 'always' : 'none');
|
|
Context::set('sitelock_ip_range', $this->detectUserIPRange());
|
|
$this->setTemplateFile('other_config');
|
|
}
|
|
|
|
/**
|
|
* Detect the IP range of the user.
|
|
*/
|
|
function detectUserIPRange()
|
|
{
|
|
if (RX_CLIENT_IP_VERSION === 4)
|
|
{
|
|
return preg_replace('/\.\d+$/', '.*', RX_CLIENT_IP);
|
|
}
|
|
elseif (function_exists('inet_pton'))
|
|
{
|
|
$binary = inet_pton(RX_CLIENT_IP);
|
|
$binary = substr($binary, 0, 8) . str_repeat(chr(0), 8);
|
|
return inet_ntop($binary) . '/64';
|
|
}
|
|
else
|
|
{
|
|
return RX_CLIENT_IP;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Detect best time zone for the user.
|
|
*/
|
|
function detectUserTimeZone()
|
|
{
|
|
switch (Context::getLangType())
|
|
{
|
|
case 'ko': return 'Asia/Seoul';
|
|
case 'en': return 'Europe/London';
|
|
case 'ja': return 'Asia/Tokyo';
|
|
case 'zh-CN': return 'Asia/Shanghai';
|
|
case 'zh-TW': return 'Asia/Taipei';
|
|
case 'de': return 'Europe/Berlin';
|
|
case 'es': return 'Europe/Madrid';
|
|
case 'fr': return 'Europe/Paris';
|
|
case 'mn': return 'Asia/Ulaanbaatar';
|
|
case 'ru': return 'Europe/Moscow';
|
|
case 'tr': return 'Europe/Istanbul';
|
|
case 'vi': return 'Asia/Ho_Chi_Minh';
|
|
default: return 'UTC';
|
|
}
|
|
}
|
|
}
|
|
/* End of file install.view.php */
|
|
/* Location: ./modules/install/install.view.php */
|