new datamapper mostly implemented

This commit is contained in:
Dennis Eichhorn 2021-12-11 11:54:16 +01:00
parent 44dfb31185
commit 2a764a1545
18 changed files with 213 additions and 234 deletions

View File

@ -17,11 +17,13 @@ namespace Modules\Admin\Admin;
use Model\Setting; use Model\Setting;
use Model\SettingMapper; use Model\SettingMapper;
use Model\SettingsEnum; use Model\SettingsEnum;
use Modules\Admin\Models\LocalizationMapper;
use phpOMS\Application\ApplicationAbstract; use phpOMS\Application\ApplicationAbstract;
use phpOMS\Config\SettingsInterface; use phpOMS\Config\SettingsInterface;
use phpOMS\DataStorage\Database\Connection\SQLiteConnection; use phpOMS\DataStorage\Database\Connection\SQLiteConnection;
use phpOMS\DataStorage\Database\DatabasePool; use phpOMS\DataStorage\Database\DatabasePool;
use phpOMS\DataStorage\Database\Query\Builder; use phpOMS\DataStorage\Database\Query\Builder;
use phpOMS\Localization\Localization;
use phpOMS\Message\Mail\SubmitType; use phpOMS\Message\Mail\SubmitType;
use phpOMS\Module\InstallerAbstract; use phpOMS\Module\InstallerAbstract;
use phpOMS\Module\ModuleInfo; use phpOMS\Module\ModuleInfo;
@ -74,27 +76,27 @@ final class Installer extends InstallerAbstract
**/ **/
private static function installDefaultSettings() : void private static function installDefaultSettings() : void
{ {
SettingMapper::create(new Setting(0, SettingsEnum::PASSWORD_PATTERN, '')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::PASSWORD_PATTERN, ''));
SettingMapper::create(new Setting(0, SettingsEnum::LOGIN_TRIES, '3', '\\d+')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::LOGIN_TRIES, '3', '\\d+'));
SettingMapper::create(new Setting(0, SettingsEnum::LOGIN_TIMEOUT, '3', '\\d+')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::LOGIN_TIMEOUT, '3', '\\d+'));
SettingMapper::create(new Setting(0, SettingsEnum::PASSWORD_INTERVAL, '90', '\\d+')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::PASSWORD_INTERVAL, '90', '\\d+'));
SettingMapper::create(new Setting(0, SettingsEnum::PASSWORD_HISTORY, '3', '\\d+')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::PASSWORD_HISTORY, '3', '\\d+'));
SettingMapper::create(new Setting(0, SettingsEnum::LOGGING_STATUS, '1', '[0-3]')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::LOGGING_STATUS, '1', '[0-3]'));
SettingMapper::create(new Setting(0, SettingsEnum::LOGGING_PATH, '')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::LOGGING_PATH, ''));
SettingMapper::create(new Setting(0, SettingsEnum::DEFAULT_ORGANIZATION, '1', '\\d+')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::DEFAULT_ORGANIZATION, '1', '\\d+'));
SettingMapper::create(new Setting(0, SettingsEnum::LOGIN_STATUS, '1', '[0-3]')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::LOGIN_STATUS, '1', '[0-3]'));
SettingMapper::create(new Setting(0, SettingsEnum::DEFAULT_LOCALIZATION, '1', '\\d+')); SettingMapper::create()->execute(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()->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(new Setting(0, SettingsEnum::MAIL_SERVER_TYPE, SubmitType::MAIL, module: 'Admin')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_TYPE, SubmitType::MAIL, module: 'Admin'));
SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_USER, '', module: 'Admin')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_USER, '', module: 'Admin'));
SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_PASS, '', module: 'Admin')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_PASS, '', module: 'Admin'));
SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_CERT, '', module: 'Admin')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_CERT, '', module: 'Admin'));
SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_KEY, '', module: 'Admin')); SettingMapper::create()->execute(new Setting(0, SettingsEnum::MAIL_SERVER_KEY, '', module: 'Admin'));
SettingMapper::create(new Setting(0, SettingsEnum::MAIL_SERVER_KEYPASS, '', module: 'Admin')); SettingMapper::create()->execute(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::MAIL_SERVER_TLS, (string) false, module: 'Admin'));
$l11n = Localization::fromLanguage($request->getData('defaultlang'), $request->getData('defaultcountry') ?? '*'); $l11n = Localization::fromLanguage('en');
LocalizationMapper::create($l11n); LocalizationMapper::create()->execute($l11n);
} }
/** /**

View File

@ -63,7 +63,7 @@ echo $this->getData('nav')->render();
<div class="form-group"> <div class="form-group">
<label for="iOname"><?= $this->getHtml('OrganizationName'); ?></label> <label for="iOname"><?= $this->getHtml('OrganizationName'); ?></label>
<select id="iOname" name="settings_1000000009"> <select id="iOname" name="settings_1000000009">
<?php $unit = UnitMapper::get((int) $generalSettings[1000000009]->content); ?> <?php $unit = UnitMapper::get()->where('id', (int) $generalSettings[1000000009]->content)->execute(); ?>
<option value="<?= $unit->getId(); ?>"><?= $this->printHtml($unit->name); ?> <option value="<?= $unit->getId(); ?>"><?= $this->printHtml($unit->name); ?>
</select> </select>
</div> </div>

View File

@ -14,7 +14,6 @@ declare(strict_types=1);
namespace Modules\Admin\Controller; namespace Modules\Admin\Controller;
use Model\App;
use Model\SettingsEnum; use Model\SettingsEnum;
use Modules\Admin\Models\Account; use Modules\Admin\Models\Account;
use Modules\Admin\Models\AccountMapper; use Modules\Admin\Models\AccountMapper;
@ -51,6 +50,7 @@ use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Message\Http\Rest; use phpOMS\Message\Http\Rest;
use phpOMS\Message\Mail\Email; use phpOMS\Message\Mail\Email;
use phpOMS\Message\Mail\MailHandler; use phpOMS\Message\Mail\MailHandler;
use phpOMS\Message\Mail\Smtp;
use phpOMS\Message\Mail\SubmitType; use phpOMS\Message\Mail\SubmitType;
use phpOMS\Message\NotificationLevel; use phpOMS\Message\NotificationLevel;
use phpOMS\Message\RequestAbstract; use phpOMS\Message\RequestAbstract;
@ -61,12 +61,12 @@ use phpOMS\Model\Message\NotifyType;
use phpOMS\Model\Message\Reload; use phpOMS\Model\Message\Reload;
use phpOMS\Module\ModuleInfo; use phpOMS\Module\ModuleInfo;
use phpOMS\Module\ModuleStatus; use phpOMS\Module\ModuleStatus;
use phpOMS\System\File\Local\Directory;
use phpOMS\System\File\Local\File; use phpOMS\System\File\Local\File;
use phpOMS\System\MimeType; use phpOMS\System\MimeType;
use phpOMS\Uri\HttpUri; use phpOMS\Uri\HttpUri;
use phpOMS\Uri\UriFactory; use phpOMS\Uri\UriFactory;
use phpOMS\Utils\Parser\Markdown\Markdown; use phpOMS\Utils\Parser\Markdown\Markdown;
use phpOMS\Utils\RnG\StringUtils as StringRng;
use phpOMS\Utils\StringUtils; use phpOMS\Utils\StringUtils;
use phpOMS\Validation\Network\Email as EmailValidator; use phpOMS\Validation\Network\Email as EmailValidator;
use phpOMS\Version\Version; use phpOMS\Version\Version;
@ -164,7 +164,7 @@ final class ApiController extends Controller
); );
$handler = new MailHandler(); $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); $handler->useAutoTLS = (bool) ($emailSettings[SettingsEnum::MAIL_SERVER_TLS] ?? false);
if ((int) ($emailSettings[SettingsEnum::MAIL_SERVER_TYPE] ?? SubmitType::MAIL) === SubmitType::SMTP) { 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 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( $forgotten = $this->app->appSettings->get(
names: [SettingsEnum::LOGIN_FORGOTTEN_DATE, SettingsEnum::LOGIN_FORGOTTEN_COUNT], names: [SettingsEnum::LOGIN_FORGOTTEN_DATE, SettingsEnum::LOGIN_FORGOTTEN_COUNT],
module: self::NAME, module: self::NAME,
@ -311,10 +311,10 @@ final class ApiController extends Controller
return; return;
} }
$account = AccountMapper::get((int) $request->getData('user')); $account = AccountMapper::get()->where('id', (int) $request->getData('user'))->execute();
$account->generatePassword($pass = StringUtils::generateString(10, 14, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_-+=/\\{}<>?')); $account->generatePassword($pass = StringRng::generateString(10, 14, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_-+=/\\{}<>?'));
AccountMapper::update($account); AccountMapper::update()->execute($account);
$emailSettings = $this->app->appSettings->get( $emailSettings = $this->app->appSettings->get(
names: [ names: [
@ -493,13 +493,13 @@ final class ApiController extends Controller
} }
/** @var Localization $l11n */ /** @var Localization $l11n */
$l11n = AccountMapper::get($accountId)->l11n; $l11n = AccountMapper::get()->where('id', $accountId)->execute()->l11n;
if ((bool) ($request->getData('load') ?? false)) { if ((bool) ($request->getData('load') ?? false)) {
$locale = \explode('_', $request->getData('localization_load')); $locale = \explode('_', $request->getData('localization_load'));
$l11n->loadFromLanguage($locale[0], $locale[1]); $l11n->loadFromLanguage($locale[0], $locale[1]);
LocalizationMapper::update($l11n); LocalizationMapper::update()->execute($l11n);
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully modified', $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); $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 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); $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 public function apiGroupUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
/** @var Group $old */ /** @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); $new = $this->updateGroupFromRequest($request);
$this->updateModel($request->header->account, $old, $new, GroupMapper::class, 'group', $request->getOrigin()); $this->updateModel($request->header->account, $old, $new, GroupMapper::class, 'group', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group successfully updated', $new); $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 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->name = (string) ($request->getData('name') ?? $group->name);
$group->setStatus((int) ($request->getData('status') ?? $group->getStatus())); $group->setStatus((int) ($request->getData('status') ?? $group->getStatus()));
$group->description = Markdown::parse((string) ($request->getData('description') ?? $group->descriptionRaw)); $group->description = Markdown::parse((string) ($request->getData('description') ?? $group->descriptionRaw));
@ -845,7 +845,7 @@ final class ApiController extends Controller
return; 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->deleteModel($request->header->account, $group, GroupMapper::class, 'group', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group successfully deleted', $group); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group successfully deleted', $group);
} }
@ -869,7 +869,7 @@ final class ApiController extends Controller
$response->set( $response->set(
$request->uri->__toString(), $request->uri->__toString(),
\array_values( \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 public function apiAccountGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
/** @var Account $account */ /** @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); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Account successfully returned', $account);
} }
@ -913,7 +913,13 @@ final class ApiController extends Controller
$response->set( $response->set(
$request->uri->__toString(), $request->uri->__toString(),
\array_values( \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 public function apiAccountGroupFind(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
/** @var Account[] $accounts */ /** @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 */ /** @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 = []; $data = [];
foreach ($accounts as $account) { foreach ($accounts as $account) {
@ -1035,7 +1049,7 @@ final class ApiController extends Controller
$collection->setPath('/Modules/Media/Files/Accounts/' . ((string) $id)); $collection->setPath('/Modules/Media/Files/Accounts/' . ((string) $id));
$collection->createdBy = new NullAccount($createdBy); $collection->createdBy = new NullAccount($createdBy);
CollectionMapper::create($collection); CollectionMapper::create()->execute($collection);
return $collection; return $collection;
} }
@ -1122,7 +1136,7 @@ final class ApiController extends Controller
public function apiAccountDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void public function apiAccountDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
/** @var Account $account */ /** @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->deleteModel($request->header->account, $account, AccountMapper::class, 'account', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Account successfully deleted', $account); $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 public function apiAccountUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
/** @var Account $old */ /** @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); $new = $this->updateAccountFromRequest($request);
$this->updateModel($request->header->account, $old, $new, AccountMapper::class, 'account', $request->getOrigin()); $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); $this->createProfileForAccount($new, $request);
} }
@ -1167,7 +1181,7 @@ final class ApiController extends Controller
private function updateAccountFromRequest(RequestAbstract $request, bool $allowPassword = false) : Account private function updateAccountFromRequest(RequestAbstract $request, bool $allowPassword = false) : Account
{ {
/** @var Account $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->login = (string) ($request->getData('login') ?? $account->login);
$account->name1 = (string) ($request->getData('name1') ?? $account->name1); $account->name1 = (string) ($request->getData('name1') ?? $account->name1);
$account->name2 = (string) ($request->getData('name2') ?? $account->name2); $account->name2 = (string) ($request->getData('name2') ?? $account->name2);
@ -1213,7 +1227,7 @@ final class ApiController extends Controller
return; return;
} }
$old = ModuleMapper::get($module); $old = ModuleMapper::get()->where('id', $module)->execute();
$this->app->eventManager->triggerSimilar( $this->app->eventManager->triggerSimilar(
'PRE:Module:Admin-module-status-update', '', 'PRE:Module:Admin-module-status-update', '',
@ -1229,7 +1243,7 @@ final class ApiController extends Controller
$new = clone $old; $new = clone $old;
$new->setStatus(ModuleStatusUpdateType::ACTIVATE); $new->setStatus(ModuleStatusUpdateType::ACTIVATE);
ModuleMapper::update($new); ModuleMapper::update()->execute($new);
break; break;
case ModuleStatusUpdateType::DEACTIVATE: case ModuleStatusUpdateType::DEACTIVATE:
@ -1238,7 +1252,7 @@ final class ApiController extends Controller
$new = clone $old; $new = clone $old;
$new->setStatus(ModuleStatusUpdateType::DEACTIVATE); $new->setStatus(ModuleStatusUpdateType::DEACTIVATE);
ModuleMapper::update($new); ModuleMapper::update()->execute($new);
break; break;
case ModuleStatusUpdateType::INSTALL: case ModuleStatusUpdateType::INSTALL:
@ -1279,13 +1293,13 @@ final class ApiController extends Controller
$moduleObj->setStatus(ModuleStatus::AVAILABLE); $moduleObj->setStatus(ModuleStatus::AVAILABLE);
ModuleMapper::create($moduleObj); ModuleMapper::create()->execute($moduleObj);
$done = $this->app->moduleManager->install($module); $done = $this->app->moduleManager->install($module);
$msg = $done ? 'Module successfully installed.' : 'Module not installed.'; $msg = $done ? 'Module successfully installed.' : 'Module not installed.';
$moduleObj->setStatus(ModuleStatus::ACTIVE); $moduleObj->setStatus(ModuleStatus::ACTIVE);
ModuleMapper::update($moduleObj); ModuleMapper::update()->execute($moduleObj);
$queryLoad = new Builder($this->app->dbPool->get('insert')); $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') $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 = clone $old;
$new->setStatus(ModuleStatusUpdateType::DELETE); $new->setStatus(ModuleStatusUpdateType::DELETE);
ModuleMapper::delete($new); ModuleMapper::delete()->execute($new);
break; break;
default: default:
@ -1332,10 +1346,9 @@ final class ApiController extends Controller
$msg = 'Unknown module status change request.'; $msg = 'Unknown module status change request.';
$response->header->status = RequestStatusCode::R_400; $response->header->status = RequestStatusCode::R_400;
} }
ModuleMapper::clearCache();
if ($done) { if ($done) {
$new = ModuleMapper::get($module); $new = ModuleMapper::get()->where('id', $module)->execute();
$this->app->eventManager->triggerSimilar( $this->app->eventManager->triggerSimilar(
'POST:Module:Admin-module-status-update', '', '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 public function apiAccountPermissionGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
/** @var AccountPermission $account */ /** @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); $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 public function apiGroupPermissionGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
/** @var GroupPermission $group */ /** @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); $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 public function apiGroupPermissionDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
/** @var GroupPermission $permission */ /** @var GroupPermission $permission */
$permission = GroupPermissionMapper::get((int) $request->getData('id')); $permission = GroupPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute();
if ($permission->getGroup() === 3) { if ($permission->getGroup() === 3) {
// admin group cannot be deleted // admin group cannot be deleted
@ -1444,7 +1457,7 @@ final class ApiController extends Controller
public function apiAccountPermissionDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void public function apiAccountPermissionDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
/** @var AccountPermission $permission */ /** @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->deleteModel($request->header->account, $permission, AccountPermissionMapper::class, 'user-permission', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Permission', 'Permission successfully deleted', $permission); $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 public function apiAccountPermissionUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
/** @var AccountPermission $old */ /** @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 */ /** @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->updateModel($request->header->account, $old, $new, AccountPermissionMapper::class, 'account-permission', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Permission', 'Permission successfully updated', $new); $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 public function apiGroupPermissionUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
/** @var GroupPermission $old */ /** @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) { if ($old->getGroup() === 3) {
// admin group cannot be deleted // admin group cannot be deleted
@ -1646,7 +1659,7 @@ final class ApiController extends Controller
} }
/** @var GroupPermission $new */ /** @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->updateModel($request->header->account, $old, $new, GroupPermissionMapper::class, 'group-permission', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Permission', 'Permission successfully updated', $new); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Permission', 'Permission successfully updated', $new);

View File

@ -24,10 +24,9 @@ use Modules\Admin\Models\GroupPermissionMapper;
use Modules\Admin\Models\LocalizationMapper; use Modules\Admin\Models\LocalizationMapper;
use Modules\Admin\Models\NullAccountPermission; use Modules\Admin\Models\NullAccountPermission;
use Modules\Admin\Models\NullGroupPermission; use Modules\Admin\Models\NullGroupPermission;
use Modules\Auditor\Models\Audit;
use Modules\Auditor\Models\AuditMapper; use Modules\Auditor\Models\AuditMapper;
use phpOMS\Contract\RenderableInterface; use phpOMS\Contract\RenderableInterface;
use phpOMS\DataStorage\Database\RelationType; use phpOMS\Localization\NullLocalization;
use phpOMS\Message\RequestAbstract; use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract; use phpOMS\Message\ResponseAbstract;
use phpOMS\Utils\Parser\Markdown\Markdown; 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)); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response));
if ($request->getData('ptype') === 'p') { 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') { } 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 { } else {
$view->setData('accounts', AccountMapper::getAfterPivot(0, null, 25)); $view->setData('accounts', AccountMapper::getAll()->where('id', 0, '>')->limit(25)->execute());
} }
return $view; return $view;
@ -129,9 +128,16 @@ final class BackendController extends Controller
$view = new View($this->app->l11nManager, $request, $response); $view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/accounts-single'); $view->setTemplate('/Modules/Admin/Theme/Backend/accounts-single');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); $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) { if (!isset($permissions) || $permissions instanceof NullAccountPermission) {
$permissions = []; $permissions = [];
@ -147,18 +153,15 @@ final class BackendController extends Controller
// audit log // audit log
if ($request->getData('ptype') === 'p') { if ($request->getData('ptype') === 'p') {
$view->setData('auditlogs', $view->setData('auditlogs',
AuditMapper::with('createdBy', (int) $request->getData('id'), [Audit::class]) AuditMapper::getAll()->with('createdBy')->where('id', (int) ($request->getData('audit') ?? 0), '<')->limit(25)->execute()
::getBeforePivot((int) $request->getData('audit'), null, 25)
); );
} elseif ($request->getData('ptype') === 'n') { } elseif ($request->getData('ptype') === 'n') {
$view->setData('auditlogs', $view->setData('auditlogs',
AuditMapper::with('createdBy', (int) $request->getData('id'), [Audit::class]) AuditMapper::getAll()->with('createdBy')->where('id', (int) ($request->getData('audit') ?? 0), '>')->limit(25)->execute()
::getAfterPivot((int) $request->getData('audit'), null, 25)
); );
} else { } else {
$view->setData('auditlogs', $view->setData('auditlogs',
AuditMapper::with('createdBy', (int) $request->getData('id'), [Audit::class]) AuditMapper::getAll()->with('createdBy')->where('id', 0, '>')->limit(25)->execute()
::getAfterPivot(0, null, 25)
); );
} }
@ -203,11 +206,11 @@ final class BackendController extends Controller
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response)); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response));
if ($request->getData('ptype') === 'p') { 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') { } 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 { } else {
$view->setData('groups', GroupMapper::getAfterPivot(0, null, 25)); $view->setData('groups', GroupMapper::getAll()->where('id', 0, '>')->limit(25)->execute());
} }
$memberCount = GroupMapper::countMembers(); $memberCount = GroupMapper::countMembers();
@ -232,9 +235,11 @@ final class BackendController extends Controller
$view = new View($this->app->l11nManager, $request, $response); $view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/Admin/Theme/Backend/groups-single'); $view->setTemplate('/Modules/Admin/Theme/Backend/groups-single');
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response)); $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) { if (!isset($permissions) || $permissions instanceof NullGroupPermission) {
$permissions = []; $permissions = [];
@ -250,25 +255,20 @@ final class BackendController extends Controller
$editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app->l11nManager, $request, $response); $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app->l11nManager, $request, $response);
$view->addData('editor', $editor); $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 // audit log
if ($request->getData('ptype') === 'p') { if ($request->getData('ptype') === 'p') {
$view->setData('auditlogs', $view->setData('auditlogs', $mapperQuery->where('id', (int) ($request->getData('audit') ?? 0), '<')->limit(25)->execute());
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));
} elseif ($request->getData('ptype') === 'n') { } elseif ($request->getData('ptype') === 'n') {
$view->setData('auditlogs', $view->setData('auditlogs', $mapperQuery->where('id', (int) ($request->getData('audit') ?? 0), '>')->limit(25)->execute());
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));
} else { } else {
$view->setData('auditlogs', $view->setData('auditlogs', $mapperQuery->where('id', 0, '>')->limit(25)->execute());
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));
} }
return $view; return $view;
@ -391,11 +391,11 @@ final class BackendController extends Controller
// audit log // audit log
if ($request->getData('ptype') === 'p') { 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') { } 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 { } 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; return $view;
@ -439,7 +439,7 @@ final class BackendController extends Controller
$id = $request->getData('id') ?? ''; $id = $request->getData('id') ?? '';
$settings = SettingMapper::getFor($id, 'module'); $settings = SettingMapper::getAll()->where('module', $id)->execute();
if (!($settings instanceof NullSetting)) { if (!($settings instanceof NullSetting)) {
$view->setData('settings', !\is_array($settings) ? [$settings] : $settings); $view->setData('settings', !\is_array($settings) ? [$settings] : $settings);
} }
@ -456,8 +456,7 @@ final class BackendController extends Controller
]); ]);
$view->setData('generalSettings', $generalSettings); $view->setData('generalSettings', $generalSettings);
$view->setData('defaultlocalization', LocalizationMapper::get((int) $generalSettings[SettingsEnum::DEFAULT_LOCALIZATION]->content)); $view->setData('defaultlocalization', LocalizationMapper::get()->where('id', (int) $generalSettings[SettingsEnum::DEFAULT_LOCALIZATION]->content)->execute());
$view->setData('settings', SettingMapper::getAll());
return $view; return $view;
} }

View File

@ -16,9 +16,8 @@ namespace Modules\Admin\Models;
use phpOMS\Account\AccountStatus; use phpOMS\Account\AccountStatus;
use phpOMS\Auth\LoginReturnType; 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\Query\Builder;
use phpOMS\DataStorage\Database\RelationType;
/** /**
* Account mapper class. * Account mapper class.
@ -28,7 +27,7 @@ use phpOMS\DataStorage\Database\RelationType;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class AccountMapper extends DataMapperAbstract final class AccountMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -36,7 +35,7 @@ final class AccountMapper extends DataMapperAbstract
* @var array<string, array<string, bool|string|array>> * @var array<string, array<string, bool|string|array>>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $columns = [ public const COLUMNS = [
'account_id' => ['name' => 'account_id', 'type' => 'int', 'internal' => 'id'], 'account_id' => ['name' => 'account_id', 'type' => 'int', 'internal' => 'id'],
'account_status' => ['name' => 'account_status', 'type' => 'int', 'internal' => 'status'], 'account_status' => ['name' => 'account_status', 'type' => 'int', 'internal' => 'status'],
'account_type' => ['name' => 'account_type', 'type' => 'int', 'internal' => 'type'], 'account_type' => ['name' => 'account_type', 'type' => 'int', 'internal' => 'type'],
@ -60,7 +59,7 @@ final class AccountMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, external:string, by?:string, column?:string, conditional?:bool}> * @var array<string, array{mapper:string, external:string, by?:string, column?:string, conditional?:bool}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $ownsOne = [ public const OWNS_ONE = [
'l11n' => [ 'l11n' => [
'mapper' => LocalizationMapper::class, 'mapper' => LocalizationMapper::class,
'external' => 'account_localization', 'external' => 'account_localization',
@ -73,7 +72,7 @@ final class AccountMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}> * @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $hasMany = [ public const HAS_MANY = [
'groups' => [ 'groups' => [
'mapper' => GroupMapper::class, 'mapper' => GroupMapper::class,
'table' => 'account_group', 'table' => 'account_group',
@ -94,7 +93,7 @@ final class AccountMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $model = Account::class; public const MODEL = Account::class;
/** /**
* Primary table. * Primary table.
@ -102,7 +101,7 @@ final class AccountMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'account'; public const TABLE = 'account';
/** /**
* Primary field name. * Primary field name.
@ -110,7 +109,7 @@ final class AccountMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'account_id'; public const PRIMARYFIELD ='account_id';
/** /**
* Created at column * Created at column
@ -118,7 +117,7 @@ final class AccountMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $createdAt = 'account_created_at'; public const CREATED_AT = 'account_created_at';
/** /**
* Get account with permissions * Get account with permissions
@ -131,30 +130,19 @@ final class AccountMapper extends DataMapperAbstract
*/ */
public static function getWithPermissions(int $id) : Account public static function getWithPermissions(int $id) : Account
{ {
$account = self::get($id); $account = self::get()->with('groups')->with('l11n')->where('id', $id)->execute();
$groupPermissions = GroupPermissionMapper::getFor( $groups = \array_keys($account->getGroups());
\array_keys($account->getGroups()),
'group',
RelationType::ALL,
2
);
if (\is_array($groupPermissions)) { $groupPermissions = empty($groups)
foreach ($groupPermissions as $permission) { ? []
$account->addPermissions(\is_array($permission) ? $permission : [$permission]); : GroupPermissionMapper::getAll()->where('group', \array_keys($account->getGroups()), 'in')->execute();
} foreach ($groupPermissions as $permission) {
} else { $account->addPermissions(\is_array($permission) ? $permission : [$permission]);
$account->addPermissions([$groupPermissions]);
} }
$accountPermissions = AccountPermissionMapper::getFor($id, 'account', RelationType::ALL, 2); $accountPermissions = AccountPermissionMapper::getAll()->where('account', $id)->execute();
foreach ($accountPermissions as $permission) {
if (\is_array($accountPermissions)) { $account->addPermissions(\is_array($permission) ? $permission : [$permission]);
foreach ($accountPermissions as $permission) {
$account->addPermissions(\is_array($permission) ? $permission : [$permission]);
}
} else {
$account->addPermissions([$accountPermissions]);
} }
return $account; return $account;

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Admin\Models; namespace Modules\Admin\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* Account permission mapper class. * Account permission mapper class.
@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class AccountPermissionMapper extends DataMapperAbstract final class AccountPermissionMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -32,7 +32,7 @@ final class AccountPermissionMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}> * @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $columns = [ public const COLUMNS = [
'account_permission_id' => ['name' => 'account_permission_id', 'type' => 'int', 'internal' => 'id'], 'account_permission_id' => ['name' => 'account_permission_id', 'type' => 'int', 'internal' => 'id'],
'account_permission_account' => ['name' => 'account_permission_account', 'type' => 'int', 'internal' => 'account'], 'account_permission_account' => ['name' => 'account_permission_account', 'type' => 'int', 'internal' => 'account'],
'account_permission_unit' => ['name' => 'account_permission_unit', 'type' => 'int', 'internal' => 'unit'], 'account_permission_unit' => ['name' => 'account_permission_unit', 'type' => 'int', 'internal' => 'unit'],
@ -51,7 +51,7 @@ final class AccountPermissionMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $model = AccountPermission::class; public const MODEL = AccountPermission::class;
/** /**
* Primary table. * Primary table.
@ -59,7 +59,7 @@ final class AccountPermissionMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'account_permission'; public const TABLE = 'account_permission';
/** /**
* Primary field name. * Primary field name.
@ -67,5 +67,5 @@ final class AccountPermissionMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'account_permission_id'; public const PRIMARYFIELD ='account_permission_id';
} }

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Admin\Models; namespace Modules\Admin\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\Defaults\CountryMapper; use phpOMS\Localization\Defaults\CountryMapper;
/** /**
@ -25,7 +25,7 @@ use phpOMS\Localization\Defaults\CountryMapper;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class AddressMapper extends DataMapperAbstract final class AddressMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -33,7 +33,7 @@ final class AddressMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}> * @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $columns = [ public const COLUMNS = [
'address_id' => ['name' => 'address_id', 'type' => 'int', 'internal' => 'id'], 'address_id' => ['name' => 'address_id', 'type' => 'int', 'internal' => 'id'],
'address_name' => ['name' => 'address_name', 'type' => 'string', 'internal' => 'name'], 'address_name' => ['name' => 'address_name', 'type' => 'string', 'internal' => 'name'],
'address_addition' => ['name' => 'address_addition', 'type' => 'string', 'internal' => 'addition'], 'address_addition' => ['name' => 'address_addition', 'type' => 'string', 'internal' => 'addition'],
@ -51,7 +51,7 @@ final class AddressMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, external:string, by?:string, column?:string, conditional?:bool}> * @var array<string, array{mapper:string, external:string, by?:string, column?:string, conditional?:bool}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $ownsOne = [ public const OWNS_ONE = [
'country' => [ 'country' => [
'mapper' => CountryMapper::class, 'mapper' => CountryMapper::class,
'external' => 'address_country', 'external' => 'address_country',
@ -67,7 +67,7 @@ final class AddressMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'address'; public const TABLE = 'address';
/** /**
* Primary field name. * Primary field name.
@ -75,5 +75,5 @@ final class AddressMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'address_id'; public const PRIMARYFIELD ='address_id';
} }

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Admin\Models; namespace Modules\Admin\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* Account mapper class. * Account mapper class.
@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class AppMapper extends DataMapperAbstract final class AppMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -32,7 +32,7 @@ final class AppMapper extends DataMapperAbstract
* @var array<string, array<string, bool|string|array>> * @var array<string, array<string, bool|string|array>>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $columns = [ public const COLUMNS = [
'app_id' => ['name' => 'app_id', 'type' => 'int', 'internal' => 'id'], 'app_id' => ['name' => 'app_id', 'type' => 'int', 'internal' => 'id'],
'app_name' => ['name' => 'app_name', 'type' => 'string', 'internal' => 'name'], 'app_name' => ['name' => 'app_name', 'type' => 'string', 'internal' => 'name'],
'app_theme' => ['name' => 'app_theme', 'type' => 'string', 'internal' => 'theme'], 'app_theme' => ['name' => 'app_theme', 'type' => 'string', 'internal' => 'theme'],
@ -45,7 +45,7 @@ final class AppMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $model = App::class; public const MODEL = App::class;
/** /**
* Primary table. * Primary table.
@ -53,7 +53,7 @@ final class AppMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'app'; public const TABLE = 'app';
/** /**
* Primary field name. * Primary field name.
@ -61,5 +61,5 @@ final class AppMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'app_id'; public const PRIMARYFIELD ='app_id';
} }

View File

@ -14,9 +14,8 @@ declare(strict_types=1);
namespace Modules\Admin\Models; 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\Query\Builder;
use phpOMS\DataStorage\Database\RelationType;
/** /**
* Group mapper class. * Group mapper class.
@ -26,7 +25,7 @@ use phpOMS\DataStorage\Database\RelationType;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class GroupMapper extends DataMapperAbstract final class GroupMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -34,7 +33,7 @@ final class GroupMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}> * @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $columns = [ public const COLUMNS = [
'group_id' => ['name' => 'group_id', 'type' => 'int', 'internal' => 'id'], 'group_id' => ['name' => 'group_id', 'type' => 'int', 'internal' => 'id'],
'group_name' => ['name' => 'group_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true], 'group_name' => ['name' => 'group_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true],
'group_status' => ['name' => 'group_status', 'type' => 'int', 'internal' => 'status'], 'group_status' => ['name' => 'group_status', 'type' => 'int', 'internal' => 'status'],
@ -49,7 +48,7 @@ final class GroupMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $model = Group::class; public const MODEL = Group::class;
/** /**
* Primary table. * Primary table.
@ -57,7 +56,7 @@ final class GroupMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'group'; public const TABLE = 'group';
/** /**
* Primary field name. * Primary field name.
@ -65,7 +64,7 @@ final class GroupMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'group_id'; public const PRIMARYFIELD ='group_id';
/** /**
* Created at column * Created at column
@ -73,7 +72,7 @@ final class GroupMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $createdAt = 'group_created'; public const CREATED_AT = 'group_created';
/** /**
* Has many relation. * Has many relation.
@ -81,7 +80,7 @@ final class GroupMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}> * @var array<string, array{mapper:string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $hasMany = [ public const HAS_MANY = [
'accounts' => [ 'accounts' => [
'mapper' => AccountMapper::class, 'mapper' => AccountMapper::class,
'table' => 'account_group', 'table' => 'account_group',
@ -101,13 +100,12 @@ final class GroupMapper extends DataMapperAbstract
*/ */
public static function getPermissionForModule(string $module) : array public static function getPermissionForModule(string $module) : array
{ {
$depth = 3;
$query = self::getQuery(); $query = self::getQuery();
$query->innerJoin(GroupPermissionMapper::getTable()) $query->innerJoin(GroupPermissionMapper::TABLE)
->on(self::$table . '_d' . $depth . '.group_id', '=', GroupPermissionMapper::getTable() . '.group_permission_group') ->on(self::TABLE . '_d1.group_id', '=', GroupPermissionMapper::TABLE . '.group_permission_group')
->where(GroupPermissionMapper::getTable() . '.group_permission_module', '=', $module); ->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 public static function countMembers(int $group = 0) : array
{ {
$query = new Builder(self::$db); $query = new Builder(self::$db);
$query->select(self::$hasMany['accounts']['self']) $query->select(self::HAS_MANY['accounts']['self'])
->select('COUNT(' . self::$hasMany['accounts']['external'] . ')') ->select('COUNT(' . self::HAS_MANY['accounts']['external'] . ')')
->from(self::$hasMany['accounts']['table']) ->from(self::HAS_MANY['accounts']['table'])
->groupBy(self::$hasMany['accounts']['self']); ->groupBy(self::HAS_MANY['accounts']['self']);
if ($group !== 0) { if ($group !== 0) {
$query->where(self::$hasMany['accounts']['self'], '=', $group); $query->where(self::HAS_MANY['accounts']['self'], '=', $group);
} }
$result = $query->execute() $result = $query->execute()

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Admin\Models; namespace Modules\Admin\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* Group permission mapper class. * Group permission mapper class.
@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class GroupPermissionMapper extends DataMapperAbstract final class GroupPermissionMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -32,7 +32,7 @@ final class GroupPermissionMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}> * @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $columns = [ public const COLUMNS = [
'group_permission_id' => ['name' => 'group_permission_id', 'type' => 'int', 'internal' => 'id'], 'group_permission_id' => ['name' => 'group_permission_id', 'type' => 'int', 'internal' => 'id'],
'group_permission_group' => ['name' => 'group_permission_group', 'type' => 'int', 'internal' => 'group'], 'group_permission_group' => ['name' => 'group_permission_group', 'type' => 'int', 'internal' => 'group'],
'group_permission_unit' => ['name' => 'group_permission_unit', 'type' => 'int', 'internal' => 'unit'], 'group_permission_unit' => ['name' => 'group_permission_unit', 'type' => 'int', 'internal' => 'unit'],
@ -51,7 +51,7 @@ final class GroupPermissionMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $model = GroupPermission::class; public const MODEL = GroupPermission::class;
/** /**
* Primary table. * Primary table.
@ -59,7 +59,7 @@ final class GroupPermissionMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'group_permission'; public const TABLE = 'group_permission';
/** /**
* Primary field name. * Primary field name.
@ -67,5 +67,5 @@ final class GroupPermissionMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'group_permission_id'; public const PRIMARYFIELD ='group_permission_id';
} }

View File

@ -14,9 +14,7 @@ declare(strict_types=1);
namespace Modules\Admin\Models; 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;
use phpOMS\Localization\Defaults\CountryMapper; use phpOMS\Localization\Defaults\CountryMapper;
use phpOMS\Localization\Defaults\CurrencyMapper; use phpOMS\Localization\Defaults\CurrencyMapper;
use phpOMS\Localization\Defaults\LanguageMapper; use phpOMS\Localization\Defaults\LanguageMapper;
@ -30,7 +28,7 @@ use phpOMS\Localization\Localization;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class LocalizationMapper extends DataMapperAbstract final class LocalizationMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -38,7 +36,7 @@ final class LocalizationMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}> * @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $columns = [ public const COLUMNS = [
'l11n_id' => ['name' => 'l11n_id', 'type' => 'int', 'internal' => 'id'], 'l11n_id' => ['name' => 'l11n_id', 'type' => 'int', 'internal' => 'id'],
'l11n_country' => ['name' => 'l11n_country', 'type' => 'string', 'internal' => 'country'], 'l11n_country' => ['name' => 'l11n_country', 'type' => 'string', 'internal' => 'country'],
'l11n_language' => ['name' => 'l11n_language', 'type' => 'string', 'internal' => 'language'], 'l11n_language' => ['name' => 'l11n_language', 'type' => 'string', 'internal' => 'language'],
@ -97,27 +95,24 @@ final class LocalizationMapper extends DataMapperAbstract
* @var array<string, array{mapper:string, external:string, by?:string, column?:string, conditional?:bool}> * @var array<string, array{mapper:string, external:string, by?:string, column?:string, conditional?:bool}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $ownsOne = [ public const OWNS_ONE = [
'country' => [ 'country' => [
'mapper' => CountryMapper::class, 'mapper' => CountryMapper::class,
'external' => 'l11n_country', 'external' => 'l11n_country',
'by' => 'code2', 'by' => 'code2',
'column' => 'code2', 'column' => 'code2'
'conditional' => true,
], ],
'language' => [ 'language' => [
'mapper' => LanguageMapper::class, 'mapper' => LanguageMapper::class,
'external' => 'l11n_language', 'external' => 'l11n_language',
'by' => 'code2', 'by' => 'code2',
'column' => 'code2', 'column' => 'code2'
'conditional' => true,
], ],
'currency' => [ 'currency' => [
'mapper' => CurrencyMapper::class, 'mapper' => CurrencyMapper::class,
'external' => 'l11n_currency', 'external' => 'l11n_currency',
'by' => 'code', 'by' => 'code',
'column' => 'code', 'column' => 'code'
'conditional' => true,
], ],
]; ];
@ -127,7 +122,7 @@ final class LocalizationMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'l11n'; public const TABLE = 'l11n';
/** /**
* Primary field name. * Primary field name.
@ -135,7 +130,7 @@ final class LocalizationMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'l11n_id'; public const PRIMARYFIELD ='l11n_id';
/** /**
* Model to use by the mapper. * Model to use by the mapper.
@ -143,23 +138,5 @@ final class LocalizationMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $model = Localization::class; public const 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);
}
} }

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace Modules\Admin\Models; namespace Modules\Admin\Models;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/** /**
* Module mapper class. * Module mapper class.
@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract;
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */
final class ModuleMapper extends DataMapperAbstract final class ModuleMapper extends DataMapperFactory
{ {
/** /**
* Columns. * Columns.
@ -32,7 +32,7 @@ final class ModuleMapper extends DataMapperAbstract
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}> * @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0 * @since 1.0.0
*/ */
protected static array $columns = [ public const COLUMNS = [
'module_id' => ['name' => 'module_id', 'type' => 'string', 'internal' => 'id'], 'module_id' => ['name' => 'module_id', 'type' => 'string', 'internal' => 'id'],
'module_path' => ['name' => 'module_path', 'type' => 'string', 'internal' => 'path'], 'module_path' => ['name' => 'module_path', 'type' => 'string', 'internal' => 'path'],
'module_theme' => ['name' => 'module_theme', 'type' => 'string', 'internal' => 'theme'], 'module_theme' => ['name' => 'module_theme', 'type' => 'string', 'internal' => 'theme'],
@ -46,7 +46,7 @@ final class ModuleMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $table = 'module'; public const TABLE = 'module';
/** /**
* Primary field name. * Primary field name.
@ -54,7 +54,7 @@ final class ModuleMapper extends DataMapperAbstract
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static string $primaryField = 'module_id'; public const PRIMARYFIELD ='module_id';
protected static bool $autoincrement = false; public const AUTOINCREMENT = false;
} }

View File

@ -12,7 +12,7 @@ require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/Autoloader.php'; require_once __DIR__ . '/Autoloader.php';
use phpOMS\DataStorage\Database\DatabasePool; use phpOMS\DataStorage\Database\DatabasePool;
use phpOMS\DataStorage\Database\DataMapperAbstract; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\DataStorage\Session\HttpSession; use phpOMS\DataStorage\Session\HttpSession;
$CONFIG = [ $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('insert', $CONFIG['db']['core']['masters']['insert']);
$GLOBALS['dbpool']->create('schema', $CONFIG['db']['core']['masters']['schema']); $GLOBALS['dbpool']->create('schema', $CONFIG['db']['core']['masters']['schema']);
DataMapperAbstract::setConnection($GLOBALS['dbpool']->get()); DataMapperFactory::db($GLOBALS['dbpool']->get());
$GLOBALS['frameworkpath'] = '/phpOMS/'; $GLOBALS['frameworkpath'] = '/phpOMS/';

View File

@ -46,11 +46,11 @@ final class AccountMapperTest extends \PHPUnit\Framework\TestCase
$account->setStatus(AccountStatus::ACTIVE); $account->setStatus(AccountStatus::ACTIVE);
$account->setType(AccountType::USER); $account->setType(AccountType::USER);
$id = AccountMapper::create($account); $id = AccountMapper::create()->execute($account);
self::assertGreaterThan(0, $account->getId()); self::assertGreaterThan(0, $account->getId());
self::assertEquals($id, $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->createdAt->format('Y-m-d'), $accountR->createdAt->format('Y-m-d'));
self::assertEquals($account->login, $accountR->login); self::assertEquals($account->login, $accountR->login);
self::assertEquals($account->name1, $accountR->name1); self::assertEquals($account->name1, $accountR->name1);
@ -108,14 +108,14 @@ final class AccountMapperTest extends \PHPUnit\Framework\TestCase
*/ */
public function testInvalidLoginTries() : void public function testInvalidLoginTries() : void
{ {
$accountR = AccountMapper::get(1); $accountR = AccountMapper::get()->where('id', 1)->execute();
$accountR->tries = 10; $accountR->tries = 10;
AccountMapper::update($accountR); AccountMapper::update()->execute($accountR);
self::assertEquals(LoginReturnType::WRONG_INPUT_EXCEEDED, AccountMapper::login($accountR->login, 'orange')); self::assertEquals(LoginReturnType::WRONG_INPUT_EXCEEDED, AccountMapper::login($accountR->login, 'orange'));
$accountR->tries = 0; $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 public function testInvalidLoginAccountStatus() : void
{ {
$accountR = AccountMapper::get(1); /** @var Account $accountR */
$accountR = AccountMapper::get()->where('id', 1)->execute();
$accountR->setStatus(AccountStatus::BANNED); $accountR->setStatus(AccountStatus::BANNED);
AccountMapper::update($accountR); AccountMapper::update()->execute($accountR);
self::assertEquals(LoginReturnType::INACTIVE, AccountMapper::login($accountR->login, 'orange')); self::assertEquals(LoginReturnType::INACTIVE, AccountMapper::login($accountR->login, 'orange'));
$accountR->setStatus(AccountStatus::ACTIVE); $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 public function testEmptyLoginPassword() : void
{ {
$accountR = AccountMapper::get(1); /** @var Account $accountR */
$accountR = AccountMapper::get()->where('id', 1)->execute();
TestUtils::setMember($accountR, 'password', ''); TestUtils::setMember($accountR, 'password', '');
AccountMapper::update($accountR); AccountMapper::update()->execute($accountR);
self::assertEquals(LoginReturnType::EMPTY_PASSWORD, AccountMapper::login($accountR->login, 'orange')); self::assertEquals(LoginReturnType::EMPTY_PASSWORD, AccountMapper::login($accountR->login, 'orange'));
$accountR->generatePassword('orange'); $accountR->generatePassword('orange');
AccountMapper::update($accountR); AccountMapper::update()->execute($accountR);
} }
/** /**

View File

@ -43,11 +43,11 @@ final class AddressMapperTest extends \PHPUnit\Framework\TestCase
$address->setCountry('DE'); $address->setCountry('DE');
$address->setGeo(['lat' => 12.1, 'long' => 11.2,]); $address->setGeo(['lat' => 12.1, 'long' => 11.2,]);
$id = AddressMapper::create($address); $id = AddressMapper::create()->execute($address);
self::assertGreaterThan(0, $address->getId()); self::assertGreaterThan(0, $address->getId());
self::assertEquals($id, $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->name, $addressR->name);
self::assertEquals($address->addition, $addressR->addition); self::assertEquals($address->addition, $addressR->addition);
self::assertEquals($address->getType(), $addressR->getType()); self::assertEquals($address->getType(), $addressR->getType());

View File

@ -38,11 +38,11 @@ final class AppMapperTest extends \PHPUnit\Framework\TestCase
$app->theme = 'Default'; $app->theme = 'Default';
$app->status = ApplicationStatus::NORMAL; $app->status = ApplicationStatus::NORMAL;
$id = AppMapper::create($app); $id = AppMapper::create()->execute($app);
self::assertGreaterThan(0, $app->getId()); self::assertGreaterThan(0, $app->getId());
self::assertEquals($id, $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->name, $appR->name);
self::assertEquals($app->theme, $appR->theme); self::assertEquals($app->theme, $appR->theme);
self::assertEquals($app->status, $appR->status); self::assertEquals($app->status, $appR->status);

View File

@ -34,10 +34,10 @@ final class GroupMapperTest extends \PHPUnit\Framework\TestCase
public function testGroupPermissionForModule() : void public function testGroupPermissionForModule() : void
{ {
$group = new Group('test'); $group = new Group('test');
$groupId = GroupMapper::create($group); $groupId = GroupMapper::create()->execute($group);
$permission = new GroupPermission($groupId, null, null, 'Admin'); $permission = new GroupPermission($groupId, null, null, 'Admin');
GroupPermissionMapper::create($permission); GroupPermissionMapper::create()->execute($permission);
$permissions = GroupMapper::getPermissionForModule('Admin'); $permissions = GroupMapper::getPermissionForModule('Admin');

View File

@ -35,8 +35,8 @@ final class LocalizationMapperTest extends \PHPUnit\Framework\TestCase
\json_decode(\file_get_contents(__DIR__ . '/om_OMS.json'), true) \json_decode(\file_get_contents(__DIR__ . '/om_OMS.json'), true)
); );
$id = LocalizationMapper::create($localization); $id = LocalizationMapper::create()->execute($localization);
$localizationRemote = LocalizationMapper::get($id); $localizationRemote = LocalizationMapper::get()->where('id', $id)->execute();
self::assertEquals('fahrenheit', $localizationRemote->getTemperature()); self::assertEquals('fahrenheit', $localizationRemote->getTemperature());
self::assertEquals($localization->jsonSerialize(), $localizationRemote->jsonSerialize()); self::assertEquals($localization->jsonSerialize(), $localizationRemote->jsonSerialize());