diff --git a/Admin/Installer.php b/Admin/Installer.php index 11f0cfb..7742c9b 100755 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -17,11 +17,13 @@ namespace Modules\Admin\Admin; use Model\Setting; use Model\SettingMapper; use Model\SettingsEnum; +use Modules\Admin\Models\LocalizationMapper; use phpOMS\Application\ApplicationAbstract; use phpOMS\Config\SettingsInterface; use phpOMS\DataStorage\Database\Connection\SQLiteConnection; use phpOMS\DataStorage\Database\DatabasePool; use phpOMS\DataStorage\Database\Query\Builder; +use phpOMS\Localization\Localization; use phpOMS\Message\Mail\SubmitType; use phpOMS\Module\InstallerAbstract; use phpOMS\Module\ModuleInfo; @@ -74,27 +76,27 @@ final class Installer extends InstallerAbstract **/ private static function installDefaultSettings() : void { - SettingMapper::create(new Setting(0, SettingsEnum::PASSWORD_PATTERN, '')); - SettingMapper::create(new Setting(0, SettingsEnum::LOGIN_TRIES, '3', '\\d+')); - SettingMapper::create(new Setting(0, SettingsEnum::LOGIN_TIMEOUT, '3', '\\d+')); - SettingMapper::create(new Setting(0, SettingsEnum::PASSWORD_INTERVAL, '90', '\\d+')); - SettingMapper::create(new Setting(0, SettingsEnum::PASSWORD_HISTORY, '3', '\\d+')); - SettingMapper::create(new Setting(0, SettingsEnum::LOGGING_STATUS, '1', '[0-3]')); - SettingMapper::create(new Setting(0, SettingsEnum::LOGGING_PATH, '')); - SettingMapper::create(new Setting(0, SettingsEnum::DEFAULT_ORGANIZATION, '1', '\\d+')); - SettingMapper::create(new Setting(0, SettingsEnum::LOGIN_STATUS, '1', '[0-3]')); - SettingMapper::create(new Setting(0, SettingsEnum::DEFAULT_LOCALIZATION, '1', '\\d+')); - SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_ADDR, 'admin@orange-management.email', "(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])", module: 'Admin')); - SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_TYPE, SubmitType::MAIL, module: 'Admin')); - SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_USER, '', module: 'Admin')); - SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_PASS, '', module: 'Admin')); - SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_CERT, '', module: 'Admin')); - SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_KEY, '', module: 'Admin')); - SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_KEYPASS, '', module: 'Admin')); - SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_TLS, (string) false, module: 'Admin')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::PASSWORD_PATTERN, '')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::LOGIN_TRIES, '3', '\\d+')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::LOGIN_TIMEOUT, '3', '\\d+')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::PASSWORD_INTERVAL, '90', '\\d+')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::PASSWORD_HISTORY, '3', '\\d+')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::LOGGING_STATUS, '1', '[0-3]')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::LOGGING_PATH, '')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::DEFAULT_ORGANIZATION, '1', '\\d+')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::LOGIN_STATUS, '1', '[0-3]')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::DEFAULT_LOCALIZATION, '1', '\\d+')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_ADDR, 'admin@orange-management.email', "(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])", module: 'Admin')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_TYPE, SubmitType::MAIL, module: 'Admin')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_USER, '', module: 'Admin')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_PASS, '', module: 'Admin')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_CERT, '', module: 'Admin')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_KEY, '', module: 'Admin')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_KEYPASS, '', module: 'Admin')); + SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_TLS, (string) false, module: 'Admin')); - $l11n = Localization::fromLanguage($request->getData('defaultlang'), $request->getData('defaultcountry') ?? '*'); - LocalizationMapper::create($l11n); + $l11n = Localization::fromLanguage('en'); + LocalizationMapper::create()->execute($l11n); } /** diff --git a/Admin/Settings/Theme/Backend/settings.tpl.php b/Admin/Settings/Theme/Backend/settings.tpl.php index da2489f..af008f8 100644 --- a/Admin/Settings/Theme/Backend/settings.tpl.php +++ b/Admin/Settings/Theme/Backend/settings.tpl.php @@ -63,7 +63,7 @@ echo $this->getData('nav')->render();
diff --git a/Controller/ApiController.php b/Controller/ApiController.php index d657b72..816b73e 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -14,7 +14,6 @@ declare(strict_types=1); namespace Modules\Admin\Controller; -use Model\App; use Model\SettingsEnum; use Modules\Admin\Models\Account; use Modules\Admin\Models\AccountMapper; @@ -51,6 +50,7 @@ use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\Http\Rest; use phpOMS\Message\Mail\Email; use phpOMS\Message\Mail\MailHandler; +use phpOMS\Message\Mail\Smtp; use phpOMS\Message\Mail\SubmitType; use phpOMS\Message\NotificationLevel; use phpOMS\Message\RequestAbstract; @@ -61,12 +61,12 @@ use phpOMS\Model\Message\NotifyType; use phpOMS\Model\Message\Reload; use phpOMS\Module\ModuleInfo; use phpOMS\Module\ModuleStatus; -use phpOMS\System\File\Local\Directory; use phpOMS\System\File\Local\File; use phpOMS\System\MimeType; use phpOMS\Uri\HttpUri; use phpOMS\Uri\UriFactory; use phpOMS\Utils\Parser\Markdown\Markdown; +use phpOMS\Utils\RnG\StringUtils as StringRng; use phpOMS\Utils\StringUtils; use phpOMS\Validation\Network\Email as EmailValidator; use phpOMS\Version\Version; @@ -164,7 +164,7 @@ final class ApiController extends Controller ); $handler = new MailHandler(); - $handler->setMailer((int) ($emailSettings[SettingsEnum::MAIL_SERVER_TYPE] ?? SubmitType::MAIL)); + $handler->setMailer($emailSettings[SettingsEnum::MAIL_SERVER_TYPE] ?? SubmitType::MAIL); $handler->useAutoTLS = (bool) ($emailSettings[SettingsEnum::MAIL_SERVER_TLS] ?? false); if ((int) ($emailSettings[SettingsEnum::MAIL_SERVER_TYPE] ?? SubmitType::MAIL) === SubmitType::SMTP) { @@ -193,7 +193,7 @@ final class ApiController extends Controller */ public function apiForgot(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { - $account = AccountMapper::getBy((string) $request->getData('login'), 'login'); + $account = AccountMapper::get()->where('login', (string) $request->getData('login'))->execute(); $forgotten = $this->app->appSettings->get( names: [SettingsEnum::LOGIN_FORGOTTEN_DATE, SettingsEnum::LOGIN_FORGOTTEN_COUNT], module: self::NAME, @@ -311,10 +311,10 @@ final class ApiController extends Controller return; } - $account = AccountMapper::get((int) $request->getData('user')); - $account->generatePassword($pass = StringUtils::generateString(10, 14, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_-+=/\\{}<>?')); + $account = AccountMapper::get()->where('id', (int) $request->getData('user'))->execute(); + $account->generatePassword($pass = StringRng::generateString(10, 14, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_-+=/\\{}<>?')); - AccountMapper::update($account); + AccountMapper::update()->execute($account); $emailSettings = $this->app->appSettings->get( names: [ @@ -493,13 +493,13 @@ final class ApiController extends Controller } /** @var Localization $l11n */ - $l11n = AccountMapper::get($accountId)->l11n; + $l11n = AccountMapper::get()->where('id', $accountId)->execute()->l11n; if ((bool) ($request->getData('load') ?? false)) { $locale = \explode('_', $request->getData('localization_load')); $l11n->loadFromLanguage($locale[0], $locale[1]); - LocalizationMapper::update($l11n); + LocalizationMapper::update()->execute($l11n); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully modified', $l11n); @@ -594,7 +594,7 @@ final class ApiController extends Controller ] ); - LocalizationMapper::update($l11n); + LocalizationMapper::update()->execute($l11n); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully modified', $l11n); } @@ -708,7 +708,7 @@ final class ApiController extends Controller */ public function apiGroupGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { - $group = GroupMapper::get((int) $request->getData('id')); + $group = GroupMapper::get()->where('id', (int) $request->getData('id'))->execute(); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group successfully returned', $group); } @@ -728,7 +728,7 @@ final class ApiController extends Controller public function apiGroupUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { /** @var Group $old */ - $old = clone GroupMapper::get((int) $request->getData('id')); + $old = clone GroupMapper::get()->where('id', (int) $request->getData('id'))->execute(); $new = $this->updateGroupFromRequest($request); $this->updateModel($request->header->account, $old, $new, GroupMapper::class, 'group', $request->getOrigin()); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group successfully updated', $new); @@ -745,7 +745,7 @@ final class ApiController extends Controller */ private function updateGroupFromRequest(RequestAbstract $request) : Group { - $group = GroupMapper::get((int) $request->getData('id')); + $group = GroupMapper::get()->where('id', (int) $request->getData('id'))->execute(); $group->name = (string) ($request->getData('name') ?? $group->name); $group->setStatus((int) ($request->getData('status') ?? $group->getStatus())); $group->description = Markdown::parse((string) ($request->getData('description') ?? $group->descriptionRaw)); @@ -845,7 +845,7 @@ final class ApiController extends Controller return; } - $group = GroupMapper::get((int) $request->getData('id')); + $group = GroupMapper::get()->where('id', (int) $request->getData('id'))->execute(); $this->deleteModel($request->header->account, $group, GroupMapper::class, 'group', $request->getOrigin()); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group successfully deleted', $group); } @@ -869,7 +869,7 @@ final class ApiController extends Controller $response->set( $request->uri->__toString(), \array_values( - GroupMapper::find((string) ($request->getData('search') ?? '')) + GroupMapper::getAll()->where('name', '%' . ($request->getData('search') ?? '') . '%', 'LIKE')->execute() ) ); } @@ -890,7 +890,7 @@ final class ApiController extends Controller public function apiAccountGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { /** @var Account $account */ - $account = AccountMapper::get((int) $request->getData('id')); + $account = AccountMapper::get()->where('id', (int) $request->getData('id'))->execute(); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Account successfully returned', $account); } @@ -913,7 +913,13 @@ final class ApiController extends Controller $response->set( $request->uri->__toString(), \array_values( - AccountMapper::find((string) ($request->getData('search') ?? '')) + AccountMapper::getAll() + ->where('login', '%' . ($request->getData('search') ?? '') . '%', 'LIKE') + ->where('email', '%' . ($request->getData('search') ?? '') . '%', 'LIKE', 'OR') + ->where('name1', '%' . ($request->getData('search') ?? '') . '%', 'LIKE', 'OR') + ->where('name2', '%' . ($request->getData('search') ?? '') . '%', 'LIKE', 'OR') + ->where('name3', '%' . ($request->getData('search') ?? '') . '%', 'LIKE', 'OR') + ->execute() ) ); } @@ -934,10 +940,18 @@ final class ApiController extends Controller public function apiAccountGroupFind(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { /** @var Account[] $accounts */ - $accounts = \array_values(AccountMapper::find((string) ($request->getData('search') ?? ''))); + $accounts = \array_values( + AccountMapper::getAll() + ->where('login', '%' . ($request->getData('search') ?? '') . '%', 'LIKE') + ->where('email', '%' . ($request->getData('search') ?? '') . '%', 'LIKE', 'OR') + ->where('name1', '%' . ($request->getData('search') ?? '') . '%', 'LIKE', 'OR') + ->where('name2', '%' . ($request->getData('search') ?? '') . '%', 'LIKE', 'OR') + ->where('name3', '%' . ($request->getData('search') ?? '') . '%', 'LIKE', 'OR') + ->execute() + ); /** @var Group[] $groups */ - $groups = \array_values(GroupMapper::find((string) ($request->getData('search') ?? ''))); + $groups = \array_values(GroupMapper::getAll()->where('name', '%' . ($request->getData('search') ?? '') . '%', 'LIKE')->execute()); $data = []; foreach ($accounts as $account) { @@ -1035,7 +1049,7 @@ final class ApiController extends Controller $collection->setPath('/Modules/Media/Files/Accounts/' . ((string) $id)); $collection->createdBy = new NullAccount($createdBy); - CollectionMapper::create($collection); + CollectionMapper::create()->execute($collection); return $collection; } @@ -1122,7 +1136,7 @@ final class ApiController extends Controller public function apiAccountDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { /** @var Account $account */ - $account = AccountMapper::get((int) ($request->getData('id'))); + $account = AccountMapper::get()->where('id', (int) ($request->getData('id')))->execute(); $this->deleteModel($request->header->account, $account, AccountMapper::class, 'account', $request->getOrigin()); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Account successfully deleted', $account); } @@ -1143,11 +1157,11 @@ final class ApiController extends Controller public function apiAccountUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { /** @var Account $old */ - $old = clone AccountMapper::get((int) $request->getData('id')); + $old = clone AccountMapper::get()->where('id', (int) $request->getData('id'))->execute(); $new = $this->updateAccountFromRequest($request); $this->updateModel($request->header->account, $old, $new, AccountMapper::class, 'account', $request->getOrigin()); - if (\Modules\Profile\Models\ProfileMapper::getFor($new->getId(), 'account') instanceof \Modules\Profile\Models\NullProfile) { + if (\Modules\Profile\Models\ProfileMapper::get()->where('account', $new->getId())->execute() instanceof \Modules\Profile\Models\NullProfile) { $this->createProfileForAccount($new, $request); } @@ -1167,7 +1181,7 @@ final class ApiController extends Controller private function updateAccountFromRequest(RequestAbstract $request, bool $allowPassword = false) : Account { /** @var Account $account */ - $account = AccountMapper::get((int) ($request->getData('id'))); + $account = AccountMapper::get()->where('id', (int) $request->getData('id'))->execute(); $account->login = (string) ($request->getData('login') ?? $account->login); $account->name1 = (string) ($request->getData('name1') ?? $account->name1); $account->name2 = (string) ($request->getData('name2') ?? $account->name2); @@ -1213,7 +1227,7 @@ final class ApiController extends Controller return; } - $old = ModuleMapper::get($module); + $old = ModuleMapper::get()->where('id', $module)->execute(); $this->app->eventManager->triggerSimilar( 'PRE:Module:Admin-module-status-update', '', @@ -1229,7 +1243,7 @@ final class ApiController extends Controller $new = clone $old; $new->setStatus(ModuleStatusUpdateType::ACTIVATE); - ModuleMapper::update($new); + ModuleMapper::update()->execute($new); break; case ModuleStatusUpdateType::DEACTIVATE: @@ -1238,7 +1252,7 @@ final class ApiController extends Controller $new = clone $old; $new->setStatus(ModuleStatusUpdateType::DEACTIVATE); - ModuleMapper::update($new); + ModuleMapper::update()->execute($new); break; case ModuleStatusUpdateType::INSTALL: @@ -1279,13 +1293,13 @@ final class ApiController extends Controller $moduleObj->setStatus(ModuleStatus::AVAILABLE); - ModuleMapper::create($moduleObj); + ModuleMapper::create()->execute($moduleObj); $done = $this->app->moduleManager->install($module); $msg = $done ? 'Module successfully installed.' : 'Module not installed.'; $moduleObj->setStatus(ModuleStatus::ACTIVE); - ModuleMapper::update($moduleObj); + ModuleMapper::update()->execute($moduleObj); $queryLoad = new Builder($this->app->dbPool->get('insert')); $queryLoad->insert('module_load_pid', 'module_load_type', 'module_load_from', 'module_load_for', 'module_load_file') @@ -1324,7 +1338,7 @@ final class ApiController extends Controller $new = clone $old; $new->setStatus(ModuleStatusUpdateType::DELETE); - ModuleMapper::delete($new); + ModuleMapper::delete()->execute($new); break; default: @@ -1332,10 +1346,9 @@ final class ApiController extends Controller $msg = 'Unknown module status change request.'; $response->header->status = RequestStatusCode::R_400; } - ModuleMapper::clearCache(); if ($done) { - $new = ModuleMapper::get($module); + $new = ModuleMapper::get()->where('id', $module)->execute(); $this->app->eventManager->triggerSimilar( 'POST:Module:Admin-module-status-update', '', @@ -1375,7 +1388,7 @@ final class ApiController extends Controller public function apiAccountPermissionGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { /** @var AccountPermission $account */ - $account = AccountPermissionMapper::get((int) $request->getData('id')); + $account = AccountPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute(); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Permission', 'Permission successfully returned', $account); } @@ -1395,7 +1408,7 @@ final class ApiController extends Controller public function apiGroupPermissionGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { /** @var GroupPermission $group */ - $group = GroupPermissionMapper::get((int) $request->getData('id')); + $group = GroupPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute(); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Permission', 'Permission successfully returned', $group); } @@ -1415,7 +1428,7 @@ final class ApiController extends Controller public function apiGroupPermissionDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { /** @var GroupPermission $permission */ - $permission = GroupPermissionMapper::get((int) $request->getData('id')); + $permission = GroupPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute(); if ($permission->getGroup() === 3) { // admin group cannot be deleted @@ -1444,7 +1457,7 @@ final class ApiController extends Controller public function apiAccountPermissionDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { /** @var AccountPermission $permission */ - $permission = AccountPermissionMapper::get((int) $request->getData('id')); + $permission = AccountPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute(); $this->deleteModel($request->header->account, $permission, AccountPermissionMapper::class, 'user-permission', $request->getOrigin()); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Permission', 'Permission successfully deleted', $permission); } @@ -1611,10 +1624,10 @@ final class ApiController extends Controller public function apiAccountPermissionUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { /** @var AccountPermission $old */ - $old = clone AccountPermissionMapper::get((int) $request->getData('id')); + $old = clone AccountPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute(); /** @var AccountPermission $new */ - $new = $this->updatePermissionFromRequest(AccountPermissionMapper::get((int) $request->getData('id')), $request); + $new = $this->updatePermissionFromRequest(AccountPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute(), $request); $this->updateModel($request->header->account, $old, $new, AccountPermissionMapper::class, 'account-permission', $request->getOrigin()); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Permission', 'Permission successfully updated', $new); @@ -1636,7 +1649,7 @@ final class ApiController extends Controller public function apiGroupPermissionUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { /** @var GroupPermission $old */ - $old = clone GroupPermissionMapper::get((int) $request->getData('id')); + $old = clone GroupPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute(); if ($old->getGroup() === 3) { // admin group cannot be deleted @@ -1646,7 +1659,7 @@ final class ApiController extends Controller } /** @var GroupPermission $new */ - $new = $this->updatePermissionFromRequest(GroupPermissionMapper::get((int) $request->getData('id')), $request); + $new = $this->updatePermissionFromRequest(GroupPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute(), $request); $this->updateModel($request->header->account, $old, $new, GroupPermissionMapper::class, 'group-permission', $request->getOrigin()); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Permission', 'Permission successfully updated', $new); diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 8e6885b..e0575ec 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -24,10 +24,9 @@ use Modules\Admin\Models\GroupPermissionMapper; use Modules\Admin\Models\LocalizationMapper; use Modules\Admin\Models\NullAccountPermission; use Modules\Admin\Models\NullGroupPermission; -use Modules\Auditor\Models\Audit; use Modules\Auditor\Models\AuditMapper; use phpOMS\Contract\RenderableInterface; -use phpOMS\DataStorage\Database\RelationType; +use phpOMS\Localization\NullLocalization; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; use phpOMS\Utils\Parser\Markdown\Markdown; @@ -103,11 +102,11 @@ final class BackendController extends Controller $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); if ($request->getData('ptype') === 'p') { - $view->setData('accounts', AccountMapper::getBeforePivot((int) ($request->getData('id') ?? 0), null, 25)); + $view->setData('accounts', AccountMapper::getAll()->where('id', (int) ($request->getData('id') ?? 0), '<')->limit(25)->execute()); } elseif ($request->getData('ptype') === 'n') { - $view->setData('accounts', AccountMapper::getAfterPivot((int) ($request->getData('id') ?? 0), null, 25)); + $view->setData('accounts', AccountMapper::getAll()->where('id', (int) ($request->getData('id') ?? 0), '>')->limit(25)->execute()); } else { - $view->setData('accounts', AccountMapper::getAfterPivot(0, null, 25)); + $view->setData('accounts', AccountMapper::getAll()->where('id', 0, '>')->limit(25)->execute()); } return $view; @@ -129,9 +128,16 @@ final class BackendController extends Controller $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Admin/Theme/Backend/accounts-single'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); - $view->addData('account', AccountMapper::get((int) $request->getData('id'), RelationType::ALL, 2)); - $permissions = AccountPermissionMapper::getFor((int) $request->getData('id'), 'account'); + /** @var \Modules\Admin\Models\Account $account */ + $account = AccountMapper::get()->with('groups')->with('l11n')->where('id', (int) $request->getData('id'))->execute(); + if ($account->l11n instanceof NullLocalization) { + $account->l11n->loadFromLanguage($request->getLanguage()); + } + + $view->addData('account', $account); + + $permissions = AccountPermissionMapper::getAll()->where('account', (int) $request->getData('id'))->execute(); if (!isset($permissions) || $permissions instanceof NullAccountPermission) { $permissions = []; @@ -147,18 +153,15 @@ final class BackendController extends Controller // audit log if ($request->getData('ptype') === 'p') { $view->setData('auditlogs', - AuditMapper::with('createdBy', (int) $request->getData('id'), [Audit::class]) - ::getBeforePivot((int) $request->getData('audit'), null, 25) + AuditMapper::getAll()->with('createdBy')->where('id', (int) ($request->getData('audit') ?? 0), '<')->limit(25)->execute() ); } elseif ($request->getData('ptype') === 'n') { $view->setData('auditlogs', - AuditMapper::with('createdBy', (int) $request->getData('id'), [Audit::class]) - ::getAfterPivot((int) $request->getData('audit'), null, 25) + AuditMapper::getAll()->with('createdBy')->where('id', (int) ($request->getData('audit') ?? 0), '>')->limit(25)->execute() ); } else { $view->setData('auditlogs', - AuditMapper::with('createdBy', (int) $request->getData('id'), [Audit::class]) - ::getAfterPivot(0, null, 25) + AuditMapper::getAll()->with('createdBy')->where('id', 0, '>')->limit(25)->execute() ); } @@ -203,11 +206,11 @@ final class BackendController extends Controller $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response)); if ($request->getData('ptype') === 'p') { - $view->setData('groups', GroupMapper::getBeforePivot((int) ($request->getData('id') ?? 0), null, 25)); + $view->setData('groups', GroupMapper::getAll()->with('createdBy')->where('id', (int) ($request->getData('id') ?? 0), '<')->limit(25)->execute()); } elseif ($request->getData('ptype') === 'n') { - $view->setData('groups', GroupMapper::getAfterPivot((int) ($request->getData('id') ?? 0), null, 25)); + $view->setData('groups', GroupMapper::getAll()->with('createdBy')->where('id', (int) ($request->getData('id') ?? 0), '>')->limit(25)->execute()); } else { - $view->setData('groups', GroupMapper::getAfterPivot(0, null, 25)); + $view->setData('groups', GroupMapper::getAll()->where('id', 0, '>')->limit(25)->execute()); } $memberCount = GroupMapper::countMembers(); @@ -232,9 +235,11 @@ final class BackendController extends Controller $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Admin/Theme/Backend/groups-single'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response)); - $view->addData('group', GroupMapper::get((int) $request->getData('id'), RelationType::ALL, 2)); + $view->addData('group', + GroupMapper::get()->with('accounts')->where('id', (int) $request->getData('id'))->execute() + ); - $permissions = GroupPermissionMapper::getFor((int) $request->getData('id'), 'group'); + $permissions = GroupPermissionMapper::getAll()->where('group', (int) $request->getData('id'))->execute(); if (!isset($permissions) || $permissions instanceof NullGroupPermission) { $permissions = []; @@ -250,25 +255,20 @@ final class BackendController extends Controller $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app->l11nManager, $request, $response); $view->addData('editor', $editor); + $mapperQuery = AuditMapper::getAll() + ->with('createdBy') + ->where('module', self::NAME) + ->where('type', StringUtils::intHash(GroupMapper::class)) + ->where('ref', (string) ($request->getData('id') ?? '0')) + ->limit(25); + // audit log if ($request->getData('ptype') === 'p') { - $view->setData('auditlogs', - AuditMapper::with('module', self::NAME, [Audit::class]) - ::with('type', StringUtils::intHash(GroupMapper::class), [Audit::class]) - ::with('ref', (string) $request->getData('id') ?? '0', [Audit::class]) - ::getBeforePivot((int) $request->getData('audit'), null, 25)); + $view->setData('auditlogs', $mapperQuery->where('id', (int) ($request->getData('audit') ?? 0), '<')->limit(25)->execute()); } elseif ($request->getData('ptype') === 'n') { - $view->setData('auditlogs', - AuditMapper::with('module', self::NAME, [Audit::class]) - ::with('type', StringUtils::intHash(GroupMapper::class), [Audit::class]) - ::with('ref', (string) $request->getData('id') ?? '0', [Audit::class]) - ::getAfterPivot((int) $request->getData('audit'), null, 25)); + $view->setData('auditlogs', $mapperQuery->where('id', (int) ($request->getData('audit') ?? 0), '>')->limit(25)->execute()); } else { - $view->setData('auditlogs', - AuditMapper::with('module', self::NAME, [Audit::class]) - ::with('type', StringUtils::intHash(GroupMapper::class), [Audit::class]) - ::with('ref', (string) $request->getData('id') ?? '0', [Audit::class]) - ::getAfterPivot(0, null, 25)); + $view->setData('auditlogs', $mapperQuery->where('id', 0, '>')->limit(25)->execute()); } return $view; @@ -391,11 +391,11 @@ final class BackendController extends Controller // audit log if ($request->getData('ptype') === 'p') { - $view->setData('auditlogs', AuditMapper::with('module', $id, [Audit::class])::getBeforePivot((int) $request->getData('audit'), null, 25)); + $view->setData('auditlogs', AuditMapper::getAll()->where('module', $id)->where('id', (int) $request->getData('audit'), '<')->limit(25)->execute()); } elseif ($request->getData('ptype') === 'n') { - $view->setData('auditlogs', AuditMapper::with('module', $id, [Audit::class])::getAfterPivot((int) $request->getData('audit'), null, 25)); + $view->setData('auditlogs', AuditMapper::getAll()->where('module', $id)->where('id', (int) $request->getData('audit'), '>')->limit(25)->execute()); } else { - $view->setData('auditlogs', AuditMapper::with('module', $id, [Audit::class])::getAfterPivot(0, null, 25)); + $view->setData('auditlogs', AuditMapper::getAll()->where('module', $id)->where('id', 0, '>')->limit(25)->execute()); } return $view; @@ -439,7 +439,7 @@ final class BackendController extends Controller $id = $request->getData('id') ?? ''; - $settings = SettingMapper::getFor($id, 'module'); + $settings = SettingMapper::getAll()->where('module', $id)->execute(); if (!($settings instanceof NullSetting)) { $view->setData('settings', !\is_array($settings) ? [$settings] : $settings); } @@ -456,8 +456,7 @@ final class BackendController extends Controller ]); $view->setData('generalSettings', $generalSettings); - $view->setData('defaultlocalization', LocalizationMapper::get((int) $generalSettings[SettingsEnum::DEFAULT_LOCALIZATION]->content)); - $view->setData('settings', SettingMapper::getAll()); + $view->setData('defaultlocalization', LocalizationMapper::get()->where('id', (int) $generalSettings[SettingsEnum::DEFAULT_LOCALIZATION]->content)->execute()); return $view; } diff --git a/Models/AccountMapper.php b/Models/AccountMapper.php index cecd4cc..1ebe50c 100755 --- a/Models/AccountMapper.php +++ b/Models/AccountMapper.php @@ -16,9 +16,8 @@ namespace Modules\Admin\Models; use phpOMS\Account\AccountStatus; use phpOMS\Auth\LoginReturnType; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\DataStorage\Database\Query\Builder; -use phpOMS\DataStorage\Database\RelationType; /** * Account mapper class. @@ -28,7 +27,7 @@ use phpOMS\DataStorage\Database\RelationType; * @link https://orange-management.org * @since 1.0.0 */ -final class AccountMapper extends DataMapperAbstract +final class AccountMapper extends DataMapperFactory { /** * Columns. @@ -36,7 +35,7 @@ final class AccountMapper extends DataMapperAbstract * @var array> * @since 1.0.0 */ - protected static array $columns = [ + public const COLUMNS = [ 'account_id' => ['name' => 'account_id', 'type' => 'int', 'internal' => 'id'], 'account_status' => ['name' => 'account_status', 'type' => 'int', 'internal' => 'status'], 'account_type' => ['name' => 'account_type', 'type' => 'int', 'internal' => 'type'], @@ -60,7 +59,7 @@ final class AccountMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $ownsOne = [ + public const OWNS_ONE = [ 'l11n' => [ 'mapper' => LocalizationMapper::class, 'external' => 'account_localization', @@ -73,7 +72,7 @@ final class AccountMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $hasMany = [ + public const HAS_MANY = [ 'groups' => [ 'mapper' => GroupMapper::class, 'table' => 'account_group', @@ -94,7 +93,7 @@ final class AccountMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $model = Account::class; + public const MODEL = Account::class; /** * Primary table. @@ -102,7 +101,7 @@ final class AccountMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $table = 'account'; + public const TABLE = 'account'; /** * Primary field name. @@ -110,7 +109,7 @@ final class AccountMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $primaryField = 'account_id'; + public const PRIMARYFIELD ='account_id'; /** * Created at column @@ -118,7 +117,7 @@ final class AccountMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $createdAt = 'account_created_at'; + public const CREATED_AT = 'account_created_at'; /** * Get account with permissions @@ -131,30 +130,19 @@ final class AccountMapper extends DataMapperAbstract */ public static function getWithPermissions(int $id) : Account { - $account = self::get($id); - $groupPermissions = GroupPermissionMapper::getFor( - \array_keys($account->getGroups()), - 'group', - RelationType::ALL, - 2 - ); + $account = self::get()->with('groups')->with('l11n')->where('id', $id)->execute(); + $groups = \array_keys($account->getGroups()); - if (\is_array($groupPermissions)) { - foreach ($groupPermissions as $permission) { - $account->addPermissions(\is_array($permission) ? $permission : [$permission]); - } - } else { - $account->addPermissions([$groupPermissions]); + $groupPermissions = empty($groups) + ? [] + : GroupPermissionMapper::getAll()->where('group', \array_keys($account->getGroups()), 'in')->execute(); + foreach ($groupPermissions as $permission) { + $account->addPermissions(\is_array($permission) ? $permission : [$permission]); } - $accountPermissions = AccountPermissionMapper::getFor($id, 'account', RelationType::ALL, 2); - - if (\is_array($accountPermissions)) { - foreach ($accountPermissions as $permission) { - $account->addPermissions(\is_array($permission) ? $permission : [$permission]); - } - } else { - $account->addPermissions([$accountPermissions]); + $accountPermissions = AccountPermissionMapper::getAll()->where('account', $id)->execute(); + foreach ($accountPermissions as $permission) { + $account->addPermissions(\is_array($permission) ? $permission : [$permission]); } return $account; diff --git a/Models/AccountPermissionMapper.php b/Models/AccountPermissionMapper.php index e9c57a8..f743630 100755 --- a/Models/AccountPermissionMapper.php +++ b/Models/AccountPermissionMapper.php @@ -14,7 +14,7 @@ declare(strict_types=1); namespace Modules\Admin\Models; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Account permission mapper class. @@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract; * @link https://orange-management.org * @since 1.0.0 */ -final class AccountPermissionMapper extends DataMapperAbstract +final class AccountPermissionMapper extends DataMapperFactory { /** * Columns. @@ -32,7 +32,7 @@ final class AccountPermissionMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $columns = [ + public const COLUMNS = [ 'account_permission_id' => ['name' => 'account_permission_id', 'type' => 'int', 'internal' => 'id'], 'account_permission_account' => ['name' => 'account_permission_account', 'type' => 'int', 'internal' => 'account'], 'account_permission_unit' => ['name' => 'account_permission_unit', 'type' => 'int', 'internal' => 'unit'], @@ -51,7 +51,7 @@ final class AccountPermissionMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $model = AccountPermission::class; + public const MODEL = AccountPermission::class; /** * Primary table. @@ -59,7 +59,7 @@ final class AccountPermissionMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $table = 'account_permission'; + public const TABLE = 'account_permission'; /** * Primary field name. @@ -67,5 +67,5 @@ final class AccountPermissionMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $primaryField = 'account_permission_id'; + public const PRIMARYFIELD ='account_permission_id'; } diff --git a/Models/AddressMapper.php b/Models/AddressMapper.php index df7901d..29798c3 100755 --- a/Models/AddressMapper.php +++ b/Models/AddressMapper.php @@ -14,7 +14,7 @@ declare(strict_types=1); namespace Modules\Admin\Models; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\Localization\Defaults\CountryMapper; /** @@ -25,7 +25,7 @@ use phpOMS\Localization\Defaults\CountryMapper; * @link https://orange-management.org * @since 1.0.0 */ -final class AddressMapper extends DataMapperAbstract +final class AddressMapper extends DataMapperFactory { /** * Columns. @@ -33,7 +33,7 @@ final class AddressMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $columns = [ + public const COLUMNS = [ 'address_id' => ['name' => 'address_id', 'type' => 'int', 'internal' => 'id'], 'address_name' => ['name' => 'address_name', 'type' => 'string', 'internal' => 'name'], 'address_addition' => ['name' => 'address_addition', 'type' => 'string', 'internal' => 'addition'], @@ -51,7 +51,7 @@ final class AddressMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $ownsOne = [ + public const OWNS_ONE = [ 'country' => [ 'mapper' => CountryMapper::class, 'external' => 'address_country', @@ -67,7 +67,7 @@ final class AddressMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $table = 'address'; + public const TABLE = 'address'; /** * Primary field name. @@ -75,5 +75,5 @@ final class AddressMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $primaryField = 'address_id'; + public const PRIMARYFIELD ='address_id'; } diff --git a/Models/AppMapper.php b/Models/AppMapper.php index b14336c..1a1c261 100644 --- a/Models/AppMapper.php +++ b/Models/AppMapper.php @@ -14,7 +14,7 @@ declare(strict_types=1); namespace Modules\Admin\Models; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Account mapper class. @@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract; * @link https://orange-management.org * @since 1.0.0 */ -final class AppMapper extends DataMapperAbstract +final class AppMapper extends DataMapperFactory { /** * Columns. @@ -32,7 +32,7 @@ final class AppMapper extends DataMapperAbstract * @var array> * @since 1.0.0 */ - protected static array $columns = [ + public const COLUMNS = [ 'app_id' => ['name' => 'app_id', 'type' => 'int', 'internal' => 'id'], 'app_name' => ['name' => 'app_name', 'type' => 'string', 'internal' => 'name'], 'app_theme' => ['name' => 'app_theme', 'type' => 'string', 'internal' => 'theme'], @@ -45,7 +45,7 @@ final class AppMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $model = App::class; + public const MODEL = App::class; /** * Primary table. @@ -53,7 +53,7 @@ final class AppMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $table = 'app'; + public const TABLE = 'app'; /** * Primary field name. @@ -61,5 +61,5 @@ final class AppMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $primaryField = 'app_id'; + public const PRIMARYFIELD ='app_id'; } diff --git a/Models/GroupMapper.php b/Models/GroupMapper.php index 8a16bc4..bd10e4c 100755 --- a/Models/GroupMapper.php +++ b/Models/GroupMapper.php @@ -14,9 +14,8 @@ declare(strict_types=1); namespace Modules\Admin\Models; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\DataStorage\Database\Query\Builder; -use phpOMS\DataStorage\Database\RelationType; /** * Group mapper class. @@ -26,7 +25,7 @@ use phpOMS\DataStorage\Database\RelationType; * @link https://orange-management.org * @since 1.0.0 */ -final class GroupMapper extends DataMapperAbstract +final class GroupMapper extends DataMapperFactory { /** * Columns. @@ -34,7 +33,7 @@ final class GroupMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $columns = [ + public const COLUMNS = [ 'group_id' => ['name' => 'group_id', 'type' => 'int', 'internal' => 'id'], 'group_name' => ['name' => 'group_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true], 'group_status' => ['name' => 'group_status', 'type' => 'int', 'internal' => 'status'], @@ -49,7 +48,7 @@ final class GroupMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $model = Group::class; + public const MODEL = Group::class; /** * Primary table. @@ -57,7 +56,7 @@ final class GroupMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $table = 'group'; + public const TABLE = 'group'; /** * Primary field name. @@ -65,7 +64,7 @@ final class GroupMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $primaryField = 'group_id'; + public const PRIMARYFIELD ='group_id'; /** * Created at column @@ -73,7 +72,7 @@ final class GroupMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $createdAt = 'group_created'; + public const CREATED_AT = 'group_created'; /** * Has many relation. @@ -81,7 +80,7 @@ final class GroupMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $hasMany = [ + public const HAS_MANY = [ 'accounts' => [ 'mapper' => AccountMapper::class, 'table' => 'account_group', @@ -101,13 +100,12 @@ final class GroupMapper extends DataMapperAbstract */ public static function getPermissionForModule(string $module) : array { - $depth = 3; $query = self::getQuery(); - $query->innerJoin(GroupPermissionMapper::getTable()) - ->on(self::$table . '_d' . $depth . '.group_id', '=', GroupPermissionMapper::getTable() . '.group_permission_group') - ->where(GroupPermissionMapper::getTable() . '.group_permission_module', '=', $module); + $query->innerJoin(GroupPermissionMapper::TABLE) + ->on(self::TABLE . '_d1.group_id', '=', GroupPermissionMapper::TABLE . '.group_permission_group') + ->where(GroupPermissionMapper::TABLE . '.group_permission_module', '=', $module); - return self::getAllByQuery($query, RelationType::ALL, $depth); + return self::getAll()->execute($query); } /** @@ -122,13 +120,13 @@ final class GroupMapper extends DataMapperAbstract public static function countMembers(int $group = 0) : array { $query = new Builder(self::$db); - $query->select(self::$hasMany['accounts']['self']) - ->select('COUNT(' . self::$hasMany['accounts']['external'] . ')') - ->from(self::$hasMany['accounts']['table']) - ->groupBy(self::$hasMany['accounts']['self']); + $query->select(self::HAS_MANY['accounts']['self']) + ->select('COUNT(' . self::HAS_MANY['accounts']['external'] . ')') + ->from(self::HAS_MANY['accounts']['table']) + ->groupBy(self::HAS_MANY['accounts']['self']); if ($group !== 0) { - $query->where(self::$hasMany['accounts']['self'], '=', $group); + $query->where(self::HAS_MANY['accounts']['self'], '=', $group); } $result = $query->execute() diff --git a/Models/GroupPermissionMapper.php b/Models/GroupPermissionMapper.php index bcc6131..ee2a7d4 100755 --- a/Models/GroupPermissionMapper.php +++ b/Models/GroupPermissionMapper.php @@ -14,7 +14,7 @@ declare(strict_types=1); namespace Modules\Admin\Models; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Group permission mapper class. @@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract; * @link https://orange-management.org * @since 1.0.0 */ -final class GroupPermissionMapper extends DataMapperAbstract +final class GroupPermissionMapper extends DataMapperFactory { /** * Columns. @@ -32,7 +32,7 @@ final class GroupPermissionMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $columns = [ + public const COLUMNS = [ 'group_permission_id' => ['name' => 'group_permission_id', 'type' => 'int', 'internal' => 'id'], 'group_permission_group' => ['name' => 'group_permission_group', 'type' => 'int', 'internal' => 'group'], 'group_permission_unit' => ['name' => 'group_permission_unit', 'type' => 'int', 'internal' => 'unit'], @@ -51,7 +51,7 @@ final class GroupPermissionMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $model = GroupPermission::class; + public const MODEL = GroupPermission::class; /** * Primary table. @@ -59,7 +59,7 @@ final class GroupPermissionMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $table = 'group_permission'; + public const TABLE = 'group_permission'; /** * Primary field name. @@ -67,5 +67,5 @@ final class GroupPermissionMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $primaryField = 'group_permission_id'; + public const PRIMARYFIELD ='group_permission_id'; } diff --git a/Models/LocalizationMapper.php b/Models/LocalizationMapper.php index a4e8b19..894f660 100755 --- a/Models/LocalizationMapper.php +++ b/Models/LocalizationMapper.php @@ -14,9 +14,7 @@ declare(strict_types=1); namespace Modules\Admin\Models; -use phpOMS\DataStorage\Database\DataMapperAbstract; -use phpOMS\DataStorage\Database\Query\Builder; -use phpOMS\DataStorage\Database\RelationType; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\Localization\Defaults\CountryMapper; use phpOMS\Localization\Defaults\CurrencyMapper; use phpOMS\Localization\Defaults\LanguageMapper; @@ -30,7 +28,7 @@ use phpOMS\Localization\Localization; * @link https://orange-management.org * @since 1.0.0 */ -final class LocalizationMapper extends DataMapperAbstract +final class LocalizationMapper extends DataMapperFactory { /** * Columns. @@ -38,7 +36,7 @@ final class LocalizationMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $columns = [ + public const COLUMNS = [ 'l11n_id' => ['name' => 'l11n_id', 'type' => 'int', 'internal' => 'id'], 'l11n_country' => ['name' => 'l11n_country', 'type' => 'string', 'internal' => 'country'], 'l11n_language' => ['name' => 'l11n_language', 'type' => 'string', 'internal' => 'language'], @@ -97,27 +95,24 @@ final class LocalizationMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $ownsOne = [ + public const OWNS_ONE = [ 'country' => [ 'mapper' => CountryMapper::class, 'external' => 'l11n_country', 'by' => 'code2', - 'column' => 'code2', - 'conditional' => true, + 'column' => 'code2' ], 'language' => [ 'mapper' => LanguageMapper::class, 'external' => 'l11n_language', 'by' => 'code2', - 'column' => 'code2', - 'conditional' => true, + 'column' => 'code2' ], 'currency' => [ 'mapper' => CurrencyMapper::class, 'external' => 'l11n_currency', 'by' => 'code', - 'column' => 'code', - 'conditional' => true, + 'column' => 'code' ], ]; @@ -127,7 +122,7 @@ final class LocalizationMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $table = 'l11n'; + public const TABLE = 'l11n'; /** * Primary field name. @@ -135,7 +130,7 @@ final class LocalizationMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $primaryField = 'l11n_id'; + public const PRIMARYFIELD ='l11n_id'; /** * Model to use by the mapper. @@ -143,23 +138,5 @@ final class LocalizationMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $model = Localization::class; - - /** - * Get object. - * - * @param mixed $primaryKey Key - * @param int $relations Load relations - * @param int $depth Relation depth - * @param string $ref Ref (for getBy and getFor) - * @param Builder $query Query - * - * @return mixed - * - * @since 1.0.0 - */ - public static function get($primaryKey, int $relations = RelationType::ALL, int $depth = 1, string $ref = null, Builder $query = null) : mixed - { - return parent::get($primaryKey, $relations, 2); - } + public const MODEL = Localization::class; } diff --git a/Models/ModuleMapper.php b/Models/ModuleMapper.php index 8cb5d62..6e9d327 100755 --- a/Models/ModuleMapper.php +++ b/Models/ModuleMapper.php @@ -14,7 +14,7 @@ declare(strict_types=1); namespace Modules\Admin\Models; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Module mapper class. @@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract; * @link https://orange-management.org * @since 1.0.0 */ -final class ModuleMapper extends DataMapperAbstract +final class ModuleMapper extends DataMapperFactory { /** * Columns. @@ -32,7 +32,7 @@ final class ModuleMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $columns = [ + public const COLUMNS = [ 'module_id' => ['name' => 'module_id', 'type' => 'string', 'internal' => 'id'], 'module_path' => ['name' => 'module_path', 'type' => 'string', 'internal' => 'path'], 'module_theme' => ['name' => 'module_theme', 'type' => 'string', 'internal' => 'theme'], @@ -46,7 +46,7 @@ final class ModuleMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $table = 'module'; + public const TABLE = 'module'; /** * Primary field name. @@ -54,7 +54,7 @@ final class ModuleMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $primaryField = 'module_id'; + public const PRIMARYFIELD ='module_id'; - protected static bool $autoincrement = false; + public const AUTOINCREMENT = false; } diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index f5fc99c..252a62f 100755 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -12,7 +12,7 @@ require_once __DIR__ . '/../vendor/autoload.php'; require_once __DIR__ . '/Autoloader.php'; use phpOMS\DataStorage\Database\DatabasePool; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\DataStorage\Session\HttpSession; $CONFIG = [ @@ -329,7 +329,7 @@ $GLOBALS['dbpool']->create('delete', $CONFIG['db']['core']['masters']['delete']) $GLOBALS['dbpool']->create('insert', $CONFIG['db']['core']['masters']['insert']); $GLOBALS['dbpool']->create('schema', $CONFIG['db']['core']['masters']['schema']); -DataMapperAbstract::setConnection($GLOBALS['dbpool']->get()); +DataMapperFactory::db($GLOBALS['dbpool']->get()); $GLOBALS['frameworkpath'] = '/phpOMS/'; diff --git a/tests/Models/AccountMapperTest.php b/tests/Models/AccountMapperTest.php index 4c704e4..98559aa 100755 --- a/tests/Models/AccountMapperTest.php +++ b/tests/Models/AccountMapperTest.php @@ -46,11 +46,11 @@ final class AccountMapperTest extends \PHPUnit\Framework\TestCase $account->setStatus(AccountStatus::ACTIVE); $account->setType(AccountType::USER); - $id = AccountMapper::create($account); + $id = AccountMapper::create()->execute($account); self::assertGreaterThan(0, $account->getId()); self::assertEquals($id, $account->getId()); - $accountR = AccountMapper::get($account->getId()); + $accountR = AccountMapper::get()->where('id', $account->getId())->execute(); self::assertEquals($account->createdAt->format('Y-m-d'), $accountR->createdAt->format('Y-m-d')); self::assertEquals($account->login, $accountR->login); self::assertEquals($account->name1, $accountR->name1); @@ -108,14 +108,14 @@ final class AccountMapperTest extends \PHPUnit\Framework\TestCase */ public function testInvalidLoginTries() : void { - $accountR = AccountMapper::get(1); + $accountR = AccountMapper::get()->where('id', 1)->execute(); $accountR->tries = 10; - AccountMapper::update($accountR); + AccountMapper::update()->execute($accountR); self::assertEquals(LoginReturnType::WRONG_INPUT_EXCEEDED, AccountMapper::login($accountR->login, 'orange')); $accountR->tries = 0; - AccountMapper::update($accountR); + AccountMapper::update()->execute($accountR); } /** @@ -124,14 +124,15 @@ final class AccountMapperTest extends \PHPUnit\Framework\TestCase */ public function testInvalidLoginAccountStatus() : void { - $accountR = AccountMapper::get(1); + /** @var Account $accountR */ + $accountR = AccountMapper::get()->where('id', 1)->execute(); $accountR->setStatus(AccountStatus::BANNED); - AccountMapper::update($accountR); + AccountMapper::update()->execute($accountR); self::assertEquals(LoginReturnType::INACTIVE, AccountMapper::login($accountR->login, 'orange')); $accountR->setStatus(AccountStatus::ACTIVE); - AccountMapper::update($accountR); + AccountMapper::update()->execute($accountR); } /** @@ -140,14 +141,15 @@ final class AccountMapperTest extends \PHPUnit\Framework\TestCase */ public function testEmptyLoginPassword() : void { - $accountR = AccountMapper::get(1); + /** @var Account $accountR */ + $accountR = AccountMapper::get()->where('id', 1)->execute(); TestUtils::setMember($accountR, 'password', ''); - AccountMapper::update($accountR); + AccountMapper::update()->execute($accountR); self::assertEquals(LoginReturnType::EMPTY_PASSWORD, AccountMapper::login($accountR->login, 'orange')); $accountR->generatePassword('orange'); - AccountMapper::update($accountR); + AccountMapper::update()->execute($accountR); } /** diff --git a/tests/Models/AddressMapperTest.php b/tests/Models/AddressMapperTest.php index d48acb2..22bb4fc 100644 --- a/tests/Models/AddressMapperTest.php +++ b/tests/Models/AddressMapperTest.php @@ -43,11 +43,11 @@ final class AddressMapperTest extends \PHPUnit\Framework\TestCase $address->setCountry('DE'); $address->setGeo(['lat' => 12.1, 'long' => 11.2,]); - $id = AddressMapper::create($address); + $id = AddressMapper::create()->execute($address); self::assertGreaterThan(0, $address->getId()); self::assertEquals($id, $address->getId()); - $addressR = AddressMapper::get($address->getId()); + $addressR = AddressMapper::get()->where('id', $address->getId())->execute(); self::assertEquals($address->name, $addressR->name); self::assertEquals($address->addition, $addressR->addition); self::assertEquals($address->getType(), $addressR->getType()); diff --git a/tests/Models/AppMapperTest.php b/tests/Models/AppMapperTest.php index b19ecba..0fa3e43 100644 --- a/tests/Models/AppMapperTest.php +++ b/tests/Models/AppMapperTest.php @@ -38,11 +38,11 @@ final class AppMapperTest extends \PHPUnit\Framework\TestCase $app->theme = 'Default'; $app->status = ApplicationStatus::NORMAL; - $id = AppMapper::create($app); + $id = AppMapper::create()->execute($app); self::assertGreaterThan(0, $app->getId()); self::assertEquals($id, $app->getId()); - $appR = AppMapper::get($app->getId()); + $appR = AppMapper::get()->where('id', $app->getId())->execute(); self::assertEquals($app->name, $appR->name); self::assertEquals($app->theme, $appR->theme); self::assertEquals($app->status, $appR->status); diff --git a/tests/Models/GroupMapperTest.php b/tests/Models/GroupMapperTest.php index 7563e9b..5967fff 100755 --- a/tests/Models/GroupMapperTest.php +++ b/tests/Models/GroupMapperTest.php @@ -34,10 +34,10 @@ final class GroupMapperTest extends \PHPUnit\Framework\TestCase public function testGroupPermissionForModule() : void { $group = new Group('test'); - $groupId = GroupMapper::create($group); + $groupId = GroupMapper::create()->execute($group); $permission = new GroupPermission($groupId, null, null, 'Admin'); - GroupPermissionMapper::create($permission); + GroupPermissionMapper::create()->execute($permission); $permissions = GroupMapper::getPermissionForModule('Admin'); diff --git a/tests/Models/LocalizationMapperTest.php b/tests/Models/LocalizationMapperTest.php index e76b9a3..03c70ef 100755 --- a/tests/Models/LocalizationMapperTest.php +++ b/tests/Models/LocalizationMapperTest.php @@ -35,8 +35,8 @@ final class LocalizationMapperTest extends \PHPUnit\Framework\TestCase \json_decode(\file_get_contents(__DIR__ . '/om_OMS.json'), true) ); - $id = LocalizationMapper::create($localization); - $localizationRemote = LocalizationMapper::get($id); + $id = LocalizationMapper::create()->execute($localization); + $localizationRemote = LocalizationMapper::get()->where('id', $id)->execute(); self::assertEquals('fahrenheit', $localizationRemote->getTemperature()); self::assertEquals($localization->jsonSerialize(), $localizationRemote->jsonSerialize());