154 lines
4.1 KiB
PHP
154 lines
4.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file pages/install/InstallHandler.php
|
|
*
|
|
* Copyright (c) 2014-2021 Simon Fraser University
|
|
* Copyright (c) 2000-2021 John Willinsky
|
|
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
|
*
|
|
* @class InstallHandler
|
|
*
|
|
* @ingroup pages_install
|
|
*
|
|
* @brief Handle installation requests.
|
|
*/
|
|
|
|
namespace PKP\pages\install;
|
|
|
|
use APP\core\Application;
|
|
use APP\handler\Handler;
|
|
use APP\template\TemplateManager;
|
|
use PKP\core\PKPRequest;
|
|
use PKP\facades\Locale;
|
|
use PKP\install\form\InstallForm;
|
|
use PKP\install\form\UpgradeForm;
|
|
|
|
class InstallHandler extends Handler
|
|
{
|
|
/** @copydoc PKPHandler::_isBackendPage */
|
|
public $_isBackendPage = true;
|
|
|
|
/**
|
|
* If no context is selected, list all.
|
|
* Otherwise, display the index page for the selected context.
|
|
*
|
|
* @param array $args
|
|
* @param PKPRequest $request
|
|
*/
|
|
public function index($args, $request)
|
|
{
|
|
// Make sure errors are displayed to the browser during install.
|
|
@ini_set('display_errors', true);
|
|
|
|
$this->validate(null, $request);
|
|
$this->setupTemplate($request);
|
|
|
|
if (($setLocale = $request->getUserVar('setLocale')) != null && Locale::isLocaleValid($setLocale)) {
|
|
$request->setCookieVar('currentLocale', $setLocale);
|
|
}
|
|
|
|
$templateMgr = TemplateManager::getManager($request);
|
|
$templateMgr->assign([
|
|
'pageTitle' => __('installer.appInstallation'),
|
|
]);
|
|
|
|
$installForm = new InstallForm($request);
|
|
$installForm->initData();
|
|
$installForm->display($request);
|
|
}
|
|
|
|
/**
|
|
* Redirect to index if system has already been installed.
|
|
*
|
|
* @param PKPRequest $request
|
|
* @param null|mixed $requiredContexts
|
|
*/
|
|
public function validate($requiredContexts = null, $request = null)
|
|
{
|
|
if (Application::isInstalled()) {
|
|
$request->redirect(null, 'index');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Execute installer.
|
|
*
|
|
* @param array $args
|
|
* @param PKPRequest $request
|
|
*/
|
|
public function install($args, $request)
|
|
{
|
|
$this->validate(null, $request);
|
|
$this->setupTemplate($request);
|
|
$templateMgr = TemplateManager::getManager($request);
|
|
|
|
$installForm = new InstallForm($request);
|
|
$installForm->readInputData();
|
|
|
|
if ($installForm->validate()) {
|
|
$templateMgr->assign([
|
|
'pageTitle' => __('installer.installationComplete'),
|
|
]);
|
|
$installForm->execute();
|
|
} else {
|
|
$templateMgr->assign([
|
|
'pageTitle' => __('installer.appInstallation'),
|
|
]);
|
|
$errors = $installForm->getErrorsArray();
|
|
$error = array_shift($errors);
|
|
$installForm->installError($error, false);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Display upgrade form.
|
|
*
|
|
* @param array $args
|
|
* @param PKPRequest $request
|
|
*/
|
|
public function upgrade($args, $request)
|
|
{
|
|
$this->validate(null, $request);
|
|
$this->setupTemplate($request);
|
|
|
|
if (($setLocale = $request->getUserVar('setLocale')) != null && Locale::isLocaleValid($setLocale)) {
|
|
$request->setCookieVar('currentLocale', $setLocale);
|
|
}
|
|
|
|
$templateMgr = TemplateManager::getManager($request);
|
|
$templateMgr->assign([
|
|
'pageTitle' => __('installer.upgradeApplication'),
|
|
]);
|
|
|
|
$installForm = new UpgradeForm($request);
|
|
$installForm->initData();
|
|
$installForm->display($request);
|
|
}
|
|
|
|
/**
|
|
* Execute upgrade.
|
|
*
|
|
* @param array $args
|
|
* @param PKPRequest $request
|
|
*/
|
|
public function installUpgrade($args, $request)
|
|
{
|
|
$this->validate(null, $request);
|
|
$this->setupTemplate($request);
|
|
$templateMgr = TemplateManager::getManager($request);
|
|
$templateMgr->assign([
|
|
'pageTitle' => __('installer.upgradeApplication'),
|
|
]);
|
|
|
|
$installForm = new UpgradeForm($request);
|
|
$installForm->readInputData();
|
|
|
|
if ($installForm->validate()) {
|
|
$installForm->execute();
|
|
} else {
|
|
$installForm->display($request);
|
|
}
|
|
}
|
|
}
|