Workforce/installer/Util/DataRegistrationUtility.php
rajesh.n 8e294d7c5b
Some checks failed
Upgrade Test (4.x) / upgrade_test (map[file:V4_0.sql version:4.0]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_1.sql version:4.1]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_10.sql version:4.10]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_10_1.sql version:4.10.1]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_1_1.sql version:4.1.1]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_1_2.sql version:4.1.2]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_1_2_1.sql version:4.1.2.1]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_2_0_1.sql version:4.2.0.1]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_3.sql version:4.3]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_3_1.sql version:4.3.1]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_3_2.sql version:4.3.2]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_3_3.sql version:4.3.3]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_3_4.sql version:4.3.4]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_3_5.sql version:4.3.5]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_4.sql version:4.4]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_5.sql version:4.5]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_6.sql version:4.6]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_6_0_1.sql version:4.6.0.1]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_7.sql version:4.7]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_8.sql version:4.8]) (push) Has been cancelled
Upgrade Test (4.x) / upgrade_test (map[file:V4_9.sql version:4.9]) (push) Has been cancelled
Build / build (push) Has been cancelled
Cypress / cypress (push) Has been cancelled
Docker Build Test / build (push) Has been cancelled
Lint / lint (push) Has been cancelled
Scheduled Test / db_test (map[admin:mariadb-admin image:mariadb:11.0]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mariadb-admin image:mariadb:11.1]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mariadb-admin image:mariadb:11.2]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mariadb-admin image:mariadb:11.3]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mariadb-admin image:mariadb:11.4]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:10.0]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:10.10]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:10.11]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:10.1]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:10.2]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:10.3]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:10.4]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:10.5]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:10.6]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:10.7]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:10.8]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:10.9]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mariadb:5.5]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mysql:5.5]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mysql:5.6]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mysql:5.7]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mysql:8.0]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mysql:8.1]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mysql:8.2]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mysql:8.3]) (push) Has been cancelled
Scheduled Test / db_test (map[admin:mysqladmin image:mysql:8.4]) (push) Has been cancelled
Scheduled Test / php_test (php7.4) (push) Has been cancelled
Scheduled Test / php_test (php8.0) (push) Has been cancelled
Scheduled Test / php_test (php8.1) (push) Has been cancelled
Scheduled Test / php_test (php8.2) (push) Has been cancelled
Scheduled Test / php_test (php8.3) (push) Has been cancelled
Test / test (map[image:mariadb:10.3 name:mariadb103]) (push) Has been cancelled
Test / test (map[image:mysql:5.7 name:mysql57]) (push) Has been cancelled
Test / composer_check (push) Has been cancelled
Test / installation (push) Has been cancelled
first commit
2025-10-10 15:31:35 +05:30

197 lines
7.1 KiB
PHP
Executable File

<?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 3 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 OrangeHRM.
* If not, see <https://www.gnu.org/licenses/>.
*/
namespace OrangeHRM\Installer\Util;
use DateTime;
use OrangeHRM\Config\Config;
use OrangeHRM\Installer\Util\Service\DataRegistrationService;
use OrangeHRM\Installer\Util\SystemConfig\SystemConfiguration;
class DataRegistrationUtility
{
public const REGISTRATION_TYPE_INSTALLER_STARTED = 0;
public const REGISTRATION_TYPE_UPGRADER_STARTED = 4;
public const REGISTRATION_TYPE_SUCCESS = 3;
private SystemConfiguration $systemConfiguration;
private DataRegistrationService $dataRegistrationService;
private SystemCheck $systemCheck;
public function __construct()
{
$this->systemConfiguration = new SystemConfiguration();
$this->dataRegistrationService = new DataRegistrationService();
$this->systemCheck = new SystemCheck();
}
/**
* @return array
*/
private function getInitialRegistrationData(): array
{
$organizationName = $this->systemConfiguration->getOrganizationName();
$country = $this->systemConfiguration->getCountry();
$language = $this->systemConfiguration->getLanguage();
$adminFirstName = $this->systemConfiguration->getAdminFirstName();
$adminLastName = $this->systemConfiguration->getAdminLastName();
$adminEmail = $this->systemConfiguration->getAdminEmail();
$adminContactNumber = $this->systemConfiguration->getAdminContactNumber();
$adminUserName = $this->systemConfiguration->getAdminUserName();
$dateTime = new DateTime();
$currentTimestamp = $dateTime->getTimestamp();
$instanceIdentifier = $this->setInstanceIdentifier(
$adminFirstName,
$adminLastName,
$organizationName,
$adminEmail,
$country,
$currentTimestamp
);
return [
$organizationName,
$country,
$language,
$adminFirstName,
$adminLastName,
$adminEmail,
$adminContactNumber,
$adminUserName,
$instanceIdentifier
];
}
/**
* @return array
*/
private function getInstallerInitialRegistrationData(): array
{
$adminUserData = StateContainer::getInstance()->getAdminUserData();
$instanceData = StateContainer::getInstance()->getInstanceData();
$instanceIdentifierData = StateContainer::getInstance()->getInstanceIdentifierData();
return [
$instanceData[StateContainer::INSTANCE_ORG_NAME],
$instanceData[StateContainer::INSTANCE_COUNTRY_CODE],
$instanceData[StateContainer::INSTANCE_LANG_CODE] ?? SystemConfiguration::DEFAULT_LANGUAGE,
$adminUserData[StateContainer::ADMIN_FIRST_NAME],
$adminUserData[StateContainer::ADMIN_LAST_NAME],
$adminUserData[StateContainer::ADMIN_EMAIL],
$adminUserData[StateContainer::ADMIN_CONTACT],
$adminUserData[StateContainer::ADMIN_USERNAME],
$instanceIdentifierData[StateContainer::INSTANCE_IDENTIFIER]
];
}
/**
* If the uniqueIdentifier is null, that means the method is for upgrader and data is fetched from the database
* else the method is for installer and data is fetched from the session
* @param string $type
* @param string|null $uniqueIdentifier
* @return array
*/
public function getInitialRegistrationDataBody(string $type, ?string $uniqueIdentifier = null): array
{
list(
$organizationName,
$country,
$language,
$adminFirstName,
$adminLastName,
$adminEmail,
$adminContactNumber,
$adminUserName,
$instanceIdentifier
) = is_null($uniqueIdentifier) ?
$this->getInitialRegistrationData() :
$this->getInstallerInitialRegistrationData();
return [
'username' => $adminUserName,
'email' => $adminEmail,
'telephone' => $adminContactNumber,
'admin_first_name' => $adminFirstName,
'admin_last_name' => $adminLastName,
'timezone' => SystemConfiguration::NOT_CAPTURED,
'language' => $language,
'country' => $country,
'organization_name' => $organizationName,
'type' => $type,
'instance_identifier' => $instanceIdentifier,
'system_details' => json_encode($this->systemCheck->getSystemDetails())
];
}
/**
* @return array
*/
public function getSuccessRegistrationDataBody(): array
{
return [
'instance_identifier' => $this->systemConfiguration->getInstanceIdentifier(),
'type' => self::REGISTRATION_TYPE_SUCCESS,
'system_details' => json_encode($this->systemCheck->getSystemDetails()),
];
}
/**
* @param string $adminFirstName
* @param string $adminLastName
* @param string $organizationName
* @param string $organizationEmail
* @param string $country
* @param int $currentTimestamp
* @return string
*/
protected function setInstanceIdentifier(
string $adminFirstName,
string $adminLastName,
string $organizationName,
string $organizationEmail,
string $country,
int $currentTimestamp
): string {
if (is_null($this->systemConfiguration->getInstanceIdentifier())) {
$this->systemConfiguration->setInstanceIdentifier(
$organizationName,
$organizationEmail,
$adminFirstName,
$adminLastName,
$_SERVER['HTTP_HOST'] ?? null,
$country,
Config::PRODUCT_VERSION,
$currentTimestamp
);
}
return $this->systemConfiguration->getInstanceIdentifier();
}
public function sendRegistrationDataOnSuccess(): void
{
$successRegistrationDataBody = $this->getSuccessRegistrationDataBody();
$published = $this->dataRegistrationService->sendRegistrationData($successRegistrationDataBody);
$this->systemConfiguration->saveRegistrationEvent(
self::REGISTRATION_TYPE_SUCCESS,
$published,
json_encode($successRegistrationDataBody)
);
}
}