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());