From b3c041b2cfb78678ab7ec8d2fa1ae66f833f459c Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Thu, 5 Mar 2020 20:35:58 +0100 Subject: [PATCH] fixes Orange-Management/phpOMS#224 and fixes Orange-Management/phpOMS#212 --- Admin/Install/db.json | 17 +++++++++-------- Admin/Installer.php | 6 +++--- Controller/ApiController.php | 3 ++- Models/Group.php | 21 +++++++++++---------- Models/LocalizationMapper.php | 3 +++ Models/Module.php | 2 +- Models/NullAccount.php | 11 +++++++++++ Models/NullAccountPermission.php | 11 +++++++++++ Models/NullAddress.php | 11 +++++++++++ Models/NullGroup.php | 11 +++++++++++ Models/NullGroupPermission.php | 11 +++++++++++ 11 files changed, 84 insertions(+), 23 deletions(-) diff --git a/Admin/Install/db.json b/Admin/Install/db.json index cb92113..dbd0470 100644 --- a/Admin/Install/db.json +++ b/Admin/Install/db.json @@ -14,11 +14,6 @@ "type": "VARCHAR(100)", "null": false }, - "country_native": { - "name": "country_native", - "type": "VARCHAR(100)", - "null": false - }, "country_code2": { "name": "country_code2", "type": "VARCHAR(2)", @@ -95,9 +90,15 @@ "type": "VARCHAR(100)", "null": false }, + "language_639_1": { + "name": "language_639_1", + "type": "VARCHAR(2)", + "null": false, + "unique": true + }, "language_639_2T": { "name": "language_639_2T", - "type": "VARCHAR(2)", + "type": "VARCHAR(3)", "null": false, "unique": true }, @@ -108,7 +109,7 @@ }, "language_639_3": { "name": "language_639_3", - "type": "VARCHAR(3)", + "type": "VARCHAR(10)", "null": false } } @@ -185,7 +186,7 @@ "default": null, "null": true, "foreignTable": "language", - "foreignKey": "language_639_2T" + "foreignKey": "language_639_1" }, "l11n_datetime": { "name": "l11n_datetime", diff --git a/Admin/Installer.php b/Admin/Installer.php index 3820a63..031485b 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -67,7 +67,7 @@ final class Installer extends InstallerAbstract $query = new Builder($con); $query->prefix($con->getPrefix()) - ->insert('country_name', 'country_native', 'country_code2', 'country_code3', 'country_numeric') + ->insert('country_name', 'country_code2', 'country_code3', 'country_numeric') ->into('country'); $querySqlite = new Builder($sqlite); @@ -75,7 +75,6 @@ final class Installer extends InstallerAbstract foreach ($countries as $country) { $query->values( - $country['country_name'] === null ? null : \trim($country['country_name']), $country['country_name'] === null ? null : \trim($country['country_name']), $country['country_code2'] === null ? null : \trim($country['country_code2']), $country['country_code3'] === null ? null : \trim($country['country_code3']), @@ -102,7 +101,7 @@ final class Installer extends InstallerAbstract $query = new Builder($con); $query->prefix($con->getPrefix()) - ->insert('language_name', 'language_native', 'language_639_2T', 'language_639_2B', 'language_639_3') + ->insert('language_name', 'language_native', 'language_639_1', 'language_639_2T', 'language_639_2B', 'language_639_3') ->into('language'); $querySqlite = new Builder($sqlite); @@ -112,6 +111,7 @@ final class Installer extends InstallerAbstract $query->values( $language['language_name'] === null ? null : \trim($language['language_name']), $language['language_native'] === null ? null : \trim($language['language_native']), + $language['language_639_1'] === null ? null : \trim($language['language_639_1']), $language['language_639_2T'] === null ? null : \trim($language['language_639_2T']), $language['language_639_2B'] === null ? null : \trim($language['language_639_2B']), $language['language_639_3'] === null ? null : \trim($language['language_639_3']) diff --git a/Controller/ApiController.php b/Controller/ApiController.php index c4c354d..7535965 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -26,6 +26,7 @@ use Modules\Admin\Models\GroupPermission; use Modules\Admin\Models\GroupPermissionMapper; use Modules\Admin\Models\ModuleStatusUpdateType; +use Modules\Admin\Models\NullAccount; use phpOMS\Account\AccountStatus; use phpOMS\Account\AccountType; use phpOMS\Account\GroupStatus; @@ -313,7 +314,7 @@ final class ApiController extends Controller private function createGroupFromRequest(RequestAbstract $request) : Group { $group = new Group(); - $group->setCreatedBy($request->getHeader()->getAccount()); + $group->setCreatedBy(new NullAccount($request->getHeader()->getAccount())); $group->setName((string) ($request->getData('name') ?? '')); $group->setStatus((int) ($request->getData('status') ?? GroupStatus::INACTIVE)); $group->setDescription(Markdown::parse((string) ($request->getData('description') ?? ''))); diff --git a/Models/Group.php b/Models/Group.php index 6409b4a..73f8196 100644 --- a/Models/Group.php +++ b/Models/Group.php @@ -35,10 +35,10 @@ class Group extends \phpOMS\Account\Group /** * Created by. * - * @var int + * @var Account * @since 1.0.0 */ - protected $createdBy = 0; + protected Account $createdBy; /** * Group raw description. @@ -51,7 +51,7 @@ class Group extends \phpOMS\Account\Group /** * Accounts * - * @var Account[]|int[] + * @var Account[] * @since 1.0.0 */ protected array $accounts = []; @@ -65,7 +65,8 @@ class Group extends \phpOMS\Account\Group */ public function __construct(string $name = '') { - $this->createdAt = new \DateTime(); + $this->createdBy = new NullAccount(); + $this->createdAt = new \DateTime('now'); $this->setName($name); } @@ -78,17 +79,17 @@ class Group extends \phpOMS\Account\Group */ public function getCreatedAt() : \DateTime { - return $this->createdAt ?? new \DateTime('NOW'); + return $this->createdAt; } /** * Get created by. * - * @return int|\phpOMS\Account\Account + * @return Account * * @since 1.0.0 */ - public function getCreatedBy() + public function getCreatedBy() : Account { return $this->createdBy; } @@ -96,13 +97,13 @@ class Group extends \phpOMS\Account\Group /** * Set created by * - * @param mixed $createdBy Group created by + * @param Account $createdBy Group created by * * @return void * * @since 1.0.0 */ - public function setCreatedBy($createdBy) : void + public function setCreatedBy(Account $createdBy) : void { $this->createdBy = $createdBy; } @@ -136,7 +137,7 @@ class Group extends \phpOMS\Account\Group /** * Get accounts * - * @return array Accounts + * @return Account[] Accounts * * @since 1.0.0 */ diff --git a/Models/LocalizationMapper.php b/Models/LocalizationMapper.php index 1537e62..8c836dd 100644 --- a/Models/LocalizationMapper.php +++ b/Models/LocalizationMapper.php @@ -100,16 +100,19 @@ final class LocalizationMapper extends DataMapperAbstract 'mapper' => CountryMapper::class, 'self' => 'l11n_country', 'by' => 'code2', + 'column' => 'code2', ], 'language' => [ 'mapper' => LanguageMapper::class, 'self' => 'l11n_language', 'by' => 'code2', + 'column' => 'code2', ], 'currency' => [ 'mapper' => CurrencyMapper::class, 'self' => 'l11n_currency', 'by' => 'code', + 'column' => 'code', ], ]; diff --git a/Models/Module.php b/Models/Module.php index a0d1db6..1f4bb51 100644 --- a/Models/Module.php +++ b/Models/Module.php @@ -98,7 +98,7 @@ class Module */ public function getCreatedAt() : \DateTime { - return $this->createdAt ?? new \DateTime('NOW'); + return $this->createdAt; } /** diff --git a/Models/NullAccount.php b/Models/NullAccount.php index 814579d..cf9c2c3 100644 --- a/Models/NullAccount.php +++ b/Models/NullAccount.php @@ -24,4 +24,15 @@ namespace Modules\Admin\Models; */ final class NullAccount extends Account { + /** + * Constructor + * + * @param int $id Model id + * + * @since 1.0.0 + */ + public function __construct(int $id = 0) + { + $this->id = $id; + } } diff --git a/Models/NullAccountPermission.php b/Models/NullAccountPermission.php index dfd0efc..266267b 100644 --- a/Models/NullAccountPermission.php +++ b/Models/NullAccountPermission.php @@ -24,4 +24,15 @@ namespace Modules\Admin\Models; */ final class NullAccountPermission extends AccountPermission { + /** + * Constructor + * + * @param int $id Model id + * + * @since 1.0.0 + */ + public function __construct(int $id = 0) + { + $this->id = $id; + } } diff --git a/Models/NullAddress.php b/Models/NullAddress.php index 30f1e31..4402510 100644 --- a/Models/NullAddress.php +++ b/Models/NullAddress.php @@ -24,4 +24,15 @@ namespace Modules\Admin\Models; */ final class NullAddress extends Address { + /** + * Constructor + * + * @param int $id Model id + * + * @since 1.0.0 + */ + public function __construct(int $id = 0) + { + $this->id = $id; + } } diff --git a/Models/NullGroup.php b/Models/NullGroup.php index 8661a0d..a8e3125 100644 --- a/Models/NullGroup.php +++ b/Models/NullGroup.php @@ -24,4 +24,15 @@ namespace Modules\Admin\Models; */ final class NullGroup extends Group { + /** + * Constructor + * + * @param int $id Model id + * + * @since 1.0.0 + */ + public function __construct(int $id = 0) + { + $this->id = $id; + } } diff --git a/Models/NullGroupPermission.php b/Models/NullGroupPermission.php index d6cc317..49b6615 100644 --- a/Models/NullGroupPermission.php +++ b/Models/NullGroupPermission.php @@ -24,4 +24,15 @@ namespace Modules\Admin\Models; */ final class NullGroupPermission extends GroupPermission { + /** + * Constructor + * + * @param int $id Model id + * + * @since 1.0.0 + */ + public function __construct(int $id = 0) + { + $this->id = $id; + } }