jwht-hrm-5.4/installer/Command/InstallOnExistingDatabaseCommand.php
2023-05-02 20:42:00 +08:00

77 lines
3.0 KiB
PHP

<?php
/**
* OrangeHRM is a comprehensive Human Resource Management (HRM) System that captures
* all the essential functionalities required for any enterprise.
* Copyright (C) 2006 OrangeHRM Inc., http://www.orangehrm.com
*
* OrangeHRM is free software; you can redistribute it and/or modify it under the terms of
* the GNU General Public License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* OrangeHRM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program;
* if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA
*/
namespace OrangeHRM\Installer\Command;
use OrangeHRM\Authentication\Dto\UserCredential;
use OrangeHRM\Installer\Util\AppSetupUtility;
use OrangeHRM\Installer\Util\StateContainer;
class InstallOnExistingDatabaseCommand extends InstallOnNewDatabaseCommand
{
use InstallerCommandHelperTrait;
/**
* @inheritDoc
*/
public function getCommandName(): string
{
return 'install:on-existing-database';
}
protected function databaseInformation(): void
{
dbInfo:
$this->getIO()->title('Database Configuration');
$this->getIO()->block('Please enter your database configuration information below.');
$dbHost = $this->getRequiredField('Database Host Name');
$dbPort = $this->getIO()->ask(
'Database Host Port',
3306,
fn (?string $value) => $this->databasePortValidator($value)
);
$dbName = $this->getRequiredField('Database Name'); // not validated because existing database
$dbUser = $this->getRequiredField('OrangeHRM Database Username');
$dbPassword = $this->getIO()->askHidden('OrangeHRM Database User Password <comment>(hidden)</comment>');
$enableDataEncryption = $this->getIO()->confirm('Enable Data Encryption', false);
StateContainer::getInstance()->storeDbInfo(
$dbHost,
$dbPort,
new UserCredential($dbUser, $dbPassword),
$dbName,
null,
$enableDataEncryption
);
StateContainer::getInstance()->setDbType(AppSetupUtility::INSTALLATION_DB_TYPE_EXISTING);
$connection = $this->getAppSetupUtility()->connectToDatabase();
if ($connection->hasError()) {
$this->getIO()->error($connection->getErrorMessage());
StateContainer::getInstance()->clearDbInfo();
goto dbInfo;
}
if (!$this->getAppSetupUtility()->isExistingDatabaseEmpty()) {
$this->getIO()->error('Provided Database Not Empty');
StateContainer::getInstance()->clearDbInfo();
goto dbInfo;
}
}
}