From 000bd7fa110748ecbefa52403a8a71959013bd9c Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Fri, 27 Jan 2023 22:12:09 +0100 Subject: [PATCH] phpstan, phpcs, phpunit fixes --- Admin/Installer.php | 26 ++++++++--- Controller/ApiController.php | 45 ++++++++++++------- Models/Item.php | 33 +++----------- Models/ItemAttributeMapper.php | 2 +- Models/ItemAttributeType.php | 7 ++- Models/ItemAttributeTypeL11nMapper.php | 2 +- Models/ItemAttributeTypeMapper.php | 2 +- Models/ItemAttributeValue.php | 9 ++-- Models/ItemAttributeValueL11nMapper.php | 2 +- Models/ItemAttributeValueMapper.php | 2 +- Models/ItemL11n.php | 0 Models/ItemL11nMapper.php | 2 +- Models/ItemMapper.php | 2 +- Models/ItemRelationMapper.php | 2 +- .../Api/ApiControllerAttributeTrait.php | 14 +++--- .../Controller/Api/ApiControllerItemTrait.php | 2 +- tests/Models/ItemTest.php | 4 -- 17 files changed, 82 insertions(+), 74 deletions(-) mode change 100755 => 100644 Models/ItemL11n.php diff --git a/Admin/Installer.php b/Admin/Installer.php index bd859c8..a3e0126 100755 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -15,6 +15,7 @@ declare(strict_types=1); namespace Modules\ItemManagement\Admin; use Modules\ItemManagement\Models\ItemAttributeTypeMapper; +use Modules\ItemManagement\Models\ItemAttributeValue; use Modules\ItemManagement\Models\ItemL11nTypeMapper; use phpOMS\Application\ApplicationAbstract; use phpOMS\Config\SettingsInterface; @@ -83,7 +84,7 @@ final class Installer extends InstallerAbstract return; } - $items = \json_decode($fileContent, true); + $items = \json_decode($fileContent, true); $itemArray = self::createItems($app, $items); } @@ -104,8 +105,11 @@ final class Installer extends InstallerAbstract /** @var \Modules\ItemManagement\Controller\ApiController $module */ $module = $app->moduleManager->getModuleInstance('ItemManagement'); - $attributeTypes = ItemAttributeTypeMapper::getAll()->with('defaults')->execute(); - $l11nTypes = ItemL11nTypeMapper::getAll()->execute(); + /** @var \Modules\ItemManagement\Models\ItemAttributeType[] $attributeTypes */ + $attributeTypes = ItemAttributeTypeMapper::getAll()->with('defaults')->execute(); + + /** @var \Modules\ItemManagement\Models\ItemL11nType[] $l11nTypes */ + $l11nTypes = ItemL11nTypeMapper::getAll()->execute(); // Change indexing for easier search later on. foreach ($attributeTypes as $e) { @@ -170,7 +174,17 @@ final class Installer extends InstallerAbstract return $itemArray; } - private static function findAttributeIdByValue(array $defaultValues, mixed $value) + /** + * Find attribute IDs by value + * + * @param ItemAttributeValue[] $defaultValues Values to search in + * @param mixed $value Value to search for + * + * @return int + * + * @since 1.0.0 + */ + private static function findAttributeIdByValue(array $defaultValues, mixed $value) : int { foreach ($defaultValues as $val) { if ($val->valueStr === $value @@ -228,8 +242,8 @@ final class Installer extends InstallerAbstract /** * Install default relation types * - * @param ApplicationAbstract $app Application - * @param array $relations Attribute definition + * @param ApplicationAbstract $app Application + * @param array $rels Attribute definition * * @return array * diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 88b21a1..6013303 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -35,6 +35,7 @@ use Modules\ItemManagement\Models\ItemRelationTypeMapper; use Modules\ItemManagement\Models\NullItemAttributeType; use Modules\ItemManagement\Models\NullItemAttributeValue; use Modules\ItemManagement\Models\NullItemL11nType; +use Modules\Media\Models\MediaMapper; use Modules\Media\Models\PathSettings; use phpOMS\Localization\BaseStringL11n; use phpOMS\Localization\ISO4217CharEnum; @@ -326,8 +327,8 @@ final class ApiController extends Controller */ private function createItemAttributeTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n { - $attrL11n = new BaseStringL11n(); - $attrL11n->ref = (int) ($request->getData('type') ?? 0); + $attrL11n = new BaseStringL11n(); + $attrL11n->ref = (int) ($request->getData('type') ?? 0); $attrL11n->setLanguage((string) ( $request->getData('language') ?? $request->getLanguage() )); @@ -396,13 +397,13 @@ final class ApiController extends Controller */ private function createItemAttributeTypeFromRequest(RequestAbstract $request) : ItemAttributeType { - $attrType = new ItemAttributeType($request->getData('name') ?? ''); - $attrType->setL11n((string) ($request->getData('title') ?? ''), $request->getData('language') ?? ISO639x1Enum::_EN); - $attrType->datatype = (int) ($request->getData('datatype') ?? 0); - $attrType->setFields((int) ($request->getData('fields') ?? 0)); + $attrType = new ItemAttributeType($request->getData('name') ?? ''); + $attrType->datatype = (int) ($request->getData('datatype') ?? 0); $attrType->custom = (bool) ($request->getData('custom') ?? false); $attrType->isRequired = (bool) ($request->getData('is_required') ?? false); $attrType->validationPattern = (string) ($request->getData('validation_pattern') ?? ''); + $attrType->setL11n((string) ($request->getData('title') ?? ''), $request->getData('language') ?? ISO639x1Enum::_EN); + $attrType->setFields((int) ($request->getData('fields') ?? 0)); return $attrType; } @@ -476,6 +477,7 @@ final class ApiController extends Controller */ private function createItemAttributeValueFromRequest(RequestAbstract $request) : ItemAttributeValue { + /** @var ItemAttributeType $type */ $type = ItemAttributeTypeMapper::get() ->where('id', (int) ($request->getData('type') ?? 0)) ->execute(); @@ -550,8 +552,8 @@ final class ApiController extends Controller */ private function createItemAttributeValueL11nFromRequest(RequestAbstract $request) : BaseStringL11n { - $attrL11n = new BaseStringL11n(); - $attrL11n->ref = (int) ($request->getData('value') ?? 0); + $attrL11n = new BaseStringL11n(); + $attrL11n->ref = (int) ($request->getData('value') ?? 0); $attrL11n->setLanguage((string) ( $request->getData('language') ?? $request->getLanguage() )); @@ -811,16 +813,29 @@ final class ApiController extends Controller } $uploaded = $this->app->moduleManager->get('Media')->uploadFiles( - $request->getDataList('names'), - $request->getDataList('filenames'), - $uploadedFiles, - $request->header->account, - __DIR__ . '/../../../Modules/Media/Files/Modules/ItemManagement/Articles/' . ($request->getData('item') ?? '0'), - '/Modules/ItemManagement/Articles/' . ($request->getData('item') ?? '0'), - $request->getData('type', 'int'), + names: $request->getDataList('names'), + fileNames: $request->getDataList('filenames'), + files: $uploadedFiles, + account: $request->header->account, + basePath: __DIR__ . '/../../../Modules/Media/Files/Modules/ItemManagement/Articles/' . ($request->getData('item') ?? '0'), + virtualPath: '/Modules/ItemManagement/Articles/' . ($request->getData('item') ?? '0'), pathSettings: PathSettings::FILE_PATH ); + if ($request->hasData('type')) { + foreach ($uploaded as $file) { + $this->createModelRelation( + $request->header->account, + $file->getId(), + $request->getData('type', 'int'), + MediaMapper::class, + 'types', + '', + $request->getOrigin() + ); + } + } + $this->createModelRelation( $request->header->account, (int) $request->getData('item'), diff --git a/Models/Item.php b/Models/Item.php index 2e361f3..8018dfa 100755 --- a/Models/Item.php +++ b/Models/Item.php @@ -271,11 +271,11 @@ class Item * * @param string $attrName Attribute name * - * @return null|AttributeValue + * @return null|ItemAttributeValue * * @since 1.0.0 */ - public function getAttribute(string $attrName) : ?AttributeValue + public function getAttribute(string $attrName) : ?ItemAttributeValue { foreach ($this->attributes as $attribute) { if ($attribute->type->name === $attrName) { @@ -327,16 +327,16 @@ class Item /** * Get media file by type * - * @param null|int $type Media type + * @param int $type Media type * * @return Media * * @since 1.0.0 */ - public function getFileByType(int $type = null) : Media + public function getFileByType(int $type) : Media { foreach ($this->files as $file) { - if ($file->type === $type) { + if ($file->hasMediaTypeId($type)) { return $file; } } @@ -356,7 +356,7 @@ class Item public function getFileByTypeName(string $type) : Media { foreach ($this->files as $file) { - if ($file->type->name === $type) { + if ($file->hasMediaTypeName($type)) { return $file; } } @@ -364,27 +364,6 @@ class Item return new NullMedia(); } - /** - * Get all media files by type - * - * @param null|int $type Media type - * - * @return Media[] - * - * @since 1.0.0 - */ - public function getFilesByType(int $type = null) : array - { - $files = []; - foreach ($this->files as $file) { - if ($file->type === $type) { - $files[] = $file; - } - } - - return $files; - } - /** * {@inheritdoc} */ diff --git a/Models/ItemAttributeMapper.php b/Models/ItemAttributeMapper.php index f5c3244..8350534 100755 --- a/Models/ItemAttributeMapper.php +++ b/Models/ItemAttributeMapper.php @@ -42,7 +42,7 @@ final class ItemAttributeMapper extends DataMapperFactory /** * Has one relation. * - * @var array + * @var array * @since 1.0.0 */ public const OWNS_ONE = [ diff --git a/Models/ItemAttributeType.php b/Models/ItemAttributeType.php index ecc6cf8..029b388 100755 --- a/Models/ItemAttributeType.php +++ b/Models/ItemAttributeType.php @@ -132,7 +132,8 @@ class ItemAttributeType implements \JsonSerializable if ($l11n instanceof BaseStringL11n) { $this->l11n = $l11n; } elseif (isset($this->l11n) && $this->l11n instanceof BaseStringL11n) { - $this->l11n->content = $l11n; + $this->l11n->content = $l11n; + $this->l11n->setLanguage($lang); } else { $this->l11n = new BaseStringL11n(); $this->l11n->content = $l11n; @@ -147,6 +148,10 @@ class ItemAttributeType implements \JsonSerializable */ public function getL11n() : string { + if (!isset($this->l11n)) { + return ''; + } + return $this->l11n instanceof BaseStringL11n ? $this->l11n->content : $this->l11n; } diff --git a/Models/ItemAttributeTypeL11nMapper.php b/Models/ItemAttributeTypeL11nMapper.php index d2b3c09..9ff3ef9 100755 --- a/Models/ItemAttributeTypeL11nMapper.php +++ b/Models/ItemAttributeTypeL11nMapper.php @@ -59,7 +59,7 @@ final class ItemAttributeTypeL11nMapper extends DataMapperFactory /** * Model to use by the mapper. * - * @var string + * @var class-string * @since 1.0.0 */ public const MODEL = BaseStringL11n::class; diff --git a/Models/ItemAttributeTypeMapper.php b/Models/ItemAttributeTypeMapper.php index e45f1cf..4bffd1f 100755 --- a/Models/ItemAttributeTypeMapper.php +++ b/Models/ItemAttributeTypeMapper.php @@ -45,7 +45,7 @@ final class ItemAttributeTypeMapper extends DataMapperFactory /** * Has many relation. * - * @var array + * @var array * @since 1.0.0 */ public const HAS_MANY = [ diff --git a/Models/ItemAttributeValue.php b/Models/ItemAttributeValue.php index 305400a..8a53438 100755 --- a/Models/ItemAttributeValue.php +++ b/Models/ItemAttributeValue.php @@ -135,7 +135,8 @@ class ItemAttributeValue implements \JsonSerializable if ($l11n instanceof BaseStringL11n) { $this->l11n = $l11n; } elseif (isset($this->l11n) && $this->l11n instanceof BaseStringL11n) { - $this->l11n->content = $l11n; + $this->l11n->content = $l11n; + $this->l11n->setLanguage($lang); } else { $this->l11n = new BaseStringL11n(); $this->l11n->content = $l11n; @@ -159,8 +160,8 @@ class ItemAttributeValue implements \JsonSerializable /** * Set value * - * @param int|string|float|\DateTimeInterface $value Value - * @param int $type Datatype + * @param int|string|float $value Value + * @param int $datatype Datatype * * @return void * @@ -178,7 +179,7 @@ class ItemAttributeValue implements \JsonSerializable } elseif ($datatype === AttributeValueType::_FLOAT) { $this->valueDec = (float) $value; } elseif ($datatype === AttributeValueType::_DATETIME) { - $this->valueDat = new \DateTime($value); + $this->valueDat = new \DateTime((string) $value); } } diff --git a/Models/ItemAttributeValueL11nMapper.php b/Models/ItemAttributeValueL11nMapper.php index be23920..80e3ef1 100755 --- a/Models/ItemAttributeValueL11nMapper.php +++ b/Models/ItemAttributeValueL11nMapper.php @@ -59,7 +59,7 @@ final class ItemAttributeValueL11nMapper extends DataMapperFactory /** * Model to use by the mapper. * - * @var string + * @var class-string * @since 1.0.0 */ public const MODEL = BaseStringL11n::class; diff --git a/Models/ItemAttributeValueMapper.php b/Models/ItemAttributeValueMapper.php index f03fc9e..4c5449d 100755 --- a/Models/ItemAttributeValueMapper.php +++ b/Models/ItemAttributeValueMapper.php @@ -47,7 +47,7 @@ final class ItemAttributeValueMapper extends DataMapperFactory /** * Has many relation. * - * @var array + * @var array * @since 1.0.0 */ public const HAS_MANY = [ diff --git a/Models/ItemL11n.php b/Models/ItemL11n.php old mode 100755 new mode 100644 diff --git a/Models/ItemL11nMapper.php b/Models/ItemL11nMapper.php index 5546d3b..5fd4685 100755 --- a/Models/ItemL11nMapper.php +++ b/Models/ItemL11nMapper.php @@ -43,7 +43,7 @@ final class ItemL11nMapper extends DataMapperFactory /** * Has one relation. * - * @var array + * @var array * @since 1.0.0 */ public const OWNS_ONE = [ diff --git a/Models/ItemMapper.php b/Models/ItemMapper.php index 829cd14..6020cda 100755 --- a/Models/ItemMapper.php +++ b/Models/ItemMapper.php @@ -64,7 +64,7 @@ final class ItemMapper extends DataMapperFactory /** * Has many relation. * - * @var array + * @var array * @since 1.0.0 */ public const HAS_MANY = [ diff --git a/Models/ItemRelationMapper.php b/Models/ItemRelationMapper.php index b6c64f2..c7f5746 100644 --- a/Models/ItemRelationMapper.php +++ b/Models/ItemRelationMapper.php @@ -42,7 +42,7 @@ final class ItemRelationMapper extends DataMapperFactory /** * Has one relation. * - * @var array + * @var array * @since 1.0.0 */ public const OWNS_ONE = [ diff --git a/tests/Controller/Api/ApiControllerAttributeTrait.php b/tests/Controller/Api/ApiControllerAttributeTrait.php index c9e3ca3..b91d1db 100755 --- a/tests/Controller/Api/ApiControllerAttributeTrait.php +++ b/tests/Controller/Api/ApiControllerAttributeTrait.php @@ -35,6 +35,8 @@ trait ApiControllerAttributeTrait $request->header->account = 1; $request->setData('title', 'TestItemL11nType'); + $request->setData('name', 'test_name'); + $request->setData('language', ISO639x1Enum::_EN); $this->module->apiItemL11nTypeCreate($request, $response); self::assertGreaterThan(0, $response->get('')['response']->getId()); @@ -105,8 +107,7 @@ trait ApiControllerAttributeTrait $request->header->account = 1; $request->setData('default', '1'); - $request->setData('attributetype', '1'); - $request->setData('type', AttributeValueType::_INT); + $request->setData('type', '1'); $request->setData('value', '1'); $request->setData('language', ISO639x1Enum::_DE); $request->setData('country', ISO3166TwoEnum::_DEU); @@ -125,8 +126,7 @@ trait ApiControllerAttributeTrait $request = new HttpRequest(new HttpUri('')); $request->header->account = 1; - $request->setData('attributetype', '1'); - $request->setData('type', AttributeValueType::_STRING); + $request->setData('type', '1'); $request->setData('value', '1'); $request->setData('language', ISO639x1Enum::_DE); $request->setData('country', ISO3166TwoEnum::_DEU); @@ -145,8 +145,7 @@ trait ApiControllerAttributeTrait $request = new HttpRequest(new HttpUri('')); $request->header->account = 1; - $request->setData('attributetype', '1'); - $request->setData('type', AttributeValueType::_FLOAT); + $request->setData('type', '1'); $request->setData('value', '1.1'); $request->setData('language', ISO639x1Enum::_DE); $request->setData('country', ISO3166TwoEnum::_DEU); @@ -165,8 +164,7 @@ trait ApiControllerAttributeTrait $request = new HttpRequest(new HttpUri('')); $request->header->account = 1; - $request->setData('attributetype', '1'); - $request->setData('type', AttributeValueType::_DATETIME); + $request->setData('type', '1'); $request->setData('value', '2020-08-02'); $request->setData('language', ISO639x1Enum::_DE); $request->setData('country', ISO3166TwoEnum::_DEU); diff --git a/tests/Controller/Api/ApiControllerItemTrait.php b/tests/Controller/Api/ApiControllerItemTrait.php index 17602ce..d6fdaaa 100755 --- a/tests/Controller/Api/ApiControllerItemTrait.php +++ b/tests/Controller/Api/ApiControllerItemTrait.php @@ -81,7 +81,7 @@ trait ApiControllerItemTrait $request->header->account = 1; $request->setData('name', '123456 backend'); $request->setData('item', 1); - $request->setData('type', 'backend_image'); + $request->setData('type', '1'); TestUtils::setMember($request, 'files', [ 'file1' => [ diff --git a/tests/Models/ItemTest.php b/tests/Models/ItemTest.php index 09dc9d2..135ade0 100755 --- a/tests/Models/ItemTest.php +++ b/tests/Models/ItemTest.php @@ -49,8 +49,6 @@ final class ItemTest extends \PHPUnit\Framework\TestCase self::assertEquals(ItemStatus::ACTIVE, $this->item->getStatus()); self::assertEquals([], $this->item->getNotes()); self::assertEquals([], $this->item->getFiles()); - self::assertInstanceOf('\Modules\Media\Models\Media', $this->item->getFileByType()); - self::assertEquals([], $this->item->getFilesByType()); self::assertEquals([], $this->item->getAttributes()); self::assertInstanceOf('Modules\ItemManagement\Models\ItemL11n', $this->item->getL11n('')); self::assertInstanceOf('phpOMS\Localization\Money', $this->item->salesPrice); @@ -75,8 +73,6 @@ final class ItemTest extends \PHPUnit\Framework\TestCase { $this->item->addFile($temp = new Media()); self::assertCount(1, $this->item->getFiles()); - self::assertEquals($temp, $this->item->getFileByType()); - self::assertEquals([$temp], $this->item->getFilesByType()); } /**