One Hat Cyber Team
Your IP :
216.73.216.182
Server IP :
203.175.9.166
Server :
Linux tanggamus.iixcp.rumahweb.net 5.14.0-427.28.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Aug 2 03:44:10 EDT 2024 x86_64
Server Software :
LiteSpeed
PHP Version :
7.4.33
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
cite5577
/
www
/
lib
/
pkp
/
classes
/
install
/
form
/
View File Name :
InstallForm.inc.php
<?php /** * @file classes/install/form/InstallForm.inc.php * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2003-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class InstallForm * @ingroup install * @see Install * * @brief Form for system installation. */ import('classes.install.Install'); import('lib.pkp.classes.install.form.MaintenanceForm'); class InstallForm extends MaintenanceForm { /** @var array locales supported by this system */ var $supportedLocales; /** @var array locale completeness booleans */ var $localesComplete; /** @var array client character sets supported by this system */ var $supportedClientCharsets; /** @var array connection character sets supported by this system */ var $supportedConnectionCharsets; /** @var array database character sets supported by this system */ var $supportedDatabaseCharsets; /** @var array database drivers supported by this system */ var $supportedDatabaseDrivers; /** * Constructor. * @param $request PKPRequest */ function __construct($request) { parent::__construct($request, 'install/install.tpl'); // FIXME Move the below options to an external configuration file? $this->supportedLocales = AppLocale::getAllLocales(); $this->localesComplete = array(); foreach ($this->supportedLocales as $key => $name) { $this->localesComplete[$key] = AppLocale::isLocaleComplete($key); } $this->supportedClientCharsets = array ( 'utf-8' => 'Unicode (UTF-8)', 'iso-8859-1' => 'Western (ISO-8859-1)' ); $this->supportedConnectionCharsets = array ( '' => __('common.notApplicable'), 'utf8' => 'Unicode (UTF-8)' ); $this->supportedDatabaseCharsets = array ( '' => __('common.notApplicable'), 'utf8' => 'Unicode (UTF-8)' ); $this->supportedDatabaseDrivers = array ( // <adodb-driver> => array(<php-module>, <name>) 'mysql' => array('mysql', 'MySQL'), 'mysqli' => array('mysqli', 'MySQLi'), 'postgres9' => array('pgsql', 'PostgreSQL'), 'oracle' => array('oci8', 'Oracle'), 'mssql' => array('mssql', 'MS SQL Server'), 'fbsql' => array('fbsql', 'FrontBase'), 'ibase' => array('ibase', 'Interbase'), 'firebird' => array('ibase', 'Firebird'), 'informix' => array('ifx', 'Informix'), 'sybase' => array('sybase', 'Sybase'), 'odbc' => array('odbc', 'ODBC'), ); // Validation checks for this form $form = $this; $this->addCheck(new FormValidatorInSet($this, 'locale', 'required', 'installer.form.localeRequired', array_keys($this->supportedLocales))); $this->addCheck(new FormValidatorCustom($this, 'locale', 'required', 'installer.form.localeRequired', array('AppLocale', 'isLocaleValid'))); $this->addCheck(new FormValidatorInSet($this, 'clientCharset', 'required', 'installer.form.clientCharsetRequired', array_keys($this->supportedClientCharsets))); $this->addCheck(new FormValidator($this, 'filesDir', 'required', 'installer.form.filesDirRequired')); $this->addCheck(new FormValidator($this, 'adminUsername', 'required', 'installer.form.usernameRequired')); $this->addCheck(new FormValidatorUsername($this, 'adminUsername', 'required', 'installer.form.usernameAlphaNumeric')); $this->addCheck(new FormValidator($this, 'adminPassword', 'required', 'installer.form.passwordRequired')); $this->addCheck(new FormValidatorCustom($this, 'adminPassword', 'required', 'installer.form.passwordsDoNotMatch', function($password) use ($form) { return $password == $form->getData('adminPassword2'); })); $this->addCheck(new FormValidatorEmail($this, 'adminEmail', 'required', 'installer.form.emailRequired')); $this->addCheck(new FormValidatorInSet($this, 'databaseDriver', 'required', 'installer.form.databaseDriverRequired', array_keys($this->supportedDatabaseDrivers))); $this->addCheck(new FormValidator($this, 'databaseName', 'required', 'installer.form.databaseNameRequired')); } /** * @copydoc Form::display */ function display($request = null, $template = null) { import('lib.pkp.classes.xslt.XSLTransformer'); $templateMgr = TemplateManager::getManager($request); $templateMgr->assign(array( 'localeOptions' => $this->supportedLocales, 'localesComplete' => $this->localesComplete, 'clientCharsetOptions' => $this->supportedClientCharsets, 'connectionCharsetOptions' => $this->supportedConnectionCharsets, 'allowFileUploads' => get_cfg_var('file_uploads') ? __('common.yes') : __('common.no'), 'maxFileUploadSize' => get_cfg_var('upload_max_filesize'), 'databaseDriverOptions' => $this->checkDBDrivers(), 'supportsMBString' => PKPString::hasMBString() ? __('common.yes') : __('common.no'), 'phpIsSupportedVersion' => version_compare(PHP_REQUIRED_VERSION, PHP_VERSION) != 1, 'xslEnabled' => XSLTransformer::checkSupport(), 'xslRequired' => REQUIRES_XSL, 'phpRequiredVersion' => PHP_REQUIRED_VERSION, 'phpVersion' => PHP_VERSION, )); parent::display($request, $template); } /** * @copydoc MaintenanceForm::initData */ function initData() { $docRoot = dirname($_SERVER['DOCUMENT_ROOT']); if (Core::isWindows()) { // Replace backslashes with slashes for the default files directory. $docRoot = str_replace('\\', '/', $docRoot); } // Add a trailing slash for paths that aren't filesystem root if ($docRoot !== '/') $docRoot .= '/'; $this->_data = array( 'locale' => AppLocale::getLocale(), 'additionalLocales' => array(), 'clientCharset' => 'utf-8', 'connectionCharset' => 'utf8', 'filesDir' => $docRoot . 'files', 'databaseDriver' => 'mysql', 'databaseHost' => 'localhost', 'databaseUsername' => Application::getName(), 'databasePassword' => '', 'databaseName' => Application::getName(), 'oaiRepositoryId' => Application::getName() . '.' . $this->_request->getServerHost(), 'enableBeacon' => true, ); } /** * Assign form data to user-submitted data. */ function readInputData() { $this->readUserVars(array( 'locale', 'additionalLocales', 'clientCharset', 'connectionCharset', 'filesDir', 'adminUsername', 'adminPassword', 'adminPassword2', 'adminEmail', 'databaseDriver', 'databaseHost', 'databaseUsername', 'databasePassword', 'databaseName', 'oaiRepositoryId', 'enableBeacon', )); if ($this->getData('additionalLocales') == null || !is_array($this->getData('additionalLocales'))) { $this->setData('additionalLocales', array()); } } /** * Perform installation. * @param ...$functionArgs Function arguments * @return mixed */ function execute(...$functionArgs) { parent::execute(...$functionArgs); $templateMgr = TemplateManager::getManager($this->_request); $installer = new Install($this->_data); if ($installer->execute()) { if (!$installer->wroteConfig()) { // Display config file contents for manual replacement $templateMgr->assign(array('writeConfigFailed' => true, 'configFileContents' => $installer->getConfigContents())); } $templateMgr->display('install/installComplete.tpl'); } else { switch ($installer->getErrorType()) { case INSTALLER_ERROR_DB: $this->dbInstallError($installer->getErrorMsg()); break; default: $this->installError($installer->getErrorMsg()); break; } } $installer->destroy(); } /** * Check if database drivers have the required PHP module loaded. * The names of drivers that appear to be unavailable are bracketed. * @return array */ function checkDBDrivers() { $dbDrivers = array(); foreach ($this->supportedDatabaseDrivers as $driver => $info) { list($module, $name) = $info; if (!extension_loaded($module)) { $name = '[ ' . $name . ' ]'; } $dbDrivers[$driver] = $name; } return $dbDrivers; } }