diff --git a/Admin/Install/db.json b/Admin/Install/db.json index 6bc8550..0196b64 100755 --- a/Admin/Install/db.json +++ b/Admin/Install/db.json @@ -14,6 +14,14 @@ "name": "wiki_app_name", "type": "VARCHAR(255)", "null": false + }, + "wiki_app_unit": { + "name": "wiki_app_unit", + "type": "INT", + "default": null, + "null": true, + "foreignTable": "organization_unit", + "foreignKey": "organization_unit_id" } } }, diff --git a/Controller/ApiController.php b/Controller/ApiController.php index e9f2bb3..66b35a1 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -22,7 +22,7 @@ use Modules\Knowledgebase\Models\NullWikiCategory; use Modules\Knowledgebase\Models\WikiApp; use Modules\Knowledgebase\Models\WikiAppMapper; use Modules\Knowledgebase\Models\WikiCategory; -use Modules\Knowledgebase\Models\WikiCategoryL11n; +use phpOMS\Localization\BaseStringL11n; use Modules\Knowledgebase\Models\WikiCategoryL11nMapper; use Modules\Knowledgebase\Models\WikiCategoryMapper; use Modules\Knowledgebase\Models\WikiDoc; @@ -335,18 +335,18 @@ final class ApiController extends Controller * * @param RequestAbstract $request Request * - * @return WikiCategoryL11n + * @return BaseStringL11n * * @since 1.0.0 */ - private function createWikiCategoryL11nFromRequest(RequestAbstract $request) : WikiCategoryL11n + private function createWikiCategoryL11nFromRequest(RequestAbstract $request) : BaseStringL11n { - $l11nWikiCategory = new WikiCategoryL11n(); - $l11nWikiCategory->category = (int) ($request->getData('category') ?? 0); + $l11nWikiCategory = new BaseStringL11n(); + $l11nWikiCategory->ref = (int) ($request->getData('category') ?? 0); $l11nWikiCategory->setLanguage((string) ( $request->getData('language') ?? $request->getLanguage() )); - $l11nWikiCategory->name = (string) ($request->getData('name') ?? ''); + $l11nWikiCategory->content = (string) ($request->getData('name') ?? ''); return $l11nWikiCategory; } @@ -647,6 +647,7 @@ final class ApiController extends Controller { $app = new WikiApp(); $app->name = (string) $request->getData('name'); + $app->unit = $request->getData('unit', 'int'); return $app; } diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 7b3b9df..354f267 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -84,7 +84,7 @@ final class BackendController extends Controller /** @var \Modules\Knowledgebase\Models\WikiCategory[] $categories */ $categories = WikiCategoryMapper::getAll() ->with('name') - ->where('parent', $request->hasData('category') ? (int) $request->getData('category') : null) + ->where('parent', $request->getData('category', 'int')) ->where('app', $app) ->where('name/language', $response->getLanguage()) ->execute(); @@ -332,7 +332,7 @@ final class BackendController extends Controller /** @var \Modules\Knowledgebase\Models\WikiCategory[] $categories */ $categories = WikiCategoryMapper::getAll() ->with('name') - ->where('parent', $request->hasData('category') ? (int) $request->getData('category') : null) + ->where('parent', $request->getData('category', 'int')) ->where('app', $app) ->where('name/language', $response->getLanguage()) ->execute(); diff --git a/Models/WikiApp.php b/Models/WikiApp.php index 0508372..704b484 100755 --- a/Models/WikiApp.php +++ b/Models/WikiApp.php @@ -32,6 +32,14 @@ class WikiApp implements \JsonSerializable */ protected int $id = 0; + /** + * Unit + * + * @var null|int + * @since 1.0.0 + */ + public ?int $unit = null; + /** * Application name. * diff --git a/Models/WikiAppMapper.php b/Models/WikiAppMapper.php index 9f37481..6eaaf91 100755 --- a/Models/WikiAppMapper.php +++ b/Models/WikiAppMapper.php @@ -34,6 +34,7 @@ final class WikiAppMapper extends DataMapperFactory */ public const COLUMNS = [ 'wiki_app_id' => ['name' => 'wiki_app_id', 'type' => 'int', 'internal' => 'id'], + 'wiki_app_unit' => ['name' => 'wiki_app_unit', 'type' => 'int', 'internal' => 'unit'], 'wiki_app_name' => ['name' => 'wiki_app_name', 'type' => 'string', 'internal' => 'name'], ]; diff --git a/Models/WikiCategory.php b/Models/WikiCategory.php index c7741c1..4405d9f 100755 --- a/Models/WikiCategory.php +++ b/Models/WikiCategory.php @@ -15,6 +15,7 @@ declare(strict_types=1); namespace Modules\Knowledgebase\Models; use phpOMS\Localization\ISO639x1Enum; +use phpOMS\Localization\BaseStringL11n; /** * Wiki category class. @@ -47,10 +48,10 @@ class WikiCategory implements \JsonSerializable /** * Name. * - * @var string|WikiCategoryL11n + * @var string|BaseStringL11n * @since 1.0.0 */ - private string | WikiCategoryL11n $name = ''; + private string | BaseStringL11n $name = ''; /** * Parent category. @@ -101,27 +102,27 @@ class WikiCategory implements \JsonSerializable */ public function getL11n() : string { - return $this->name instanceof WikiCategoryL11n ? $this->name->name : $this->name; + return $this->name instanceof BaseStringL11n ? $this->name->content : $this->name; } /** * Set name * - * @param string|WikiCategoryL11n $name Tag article name + * @param string|BaseStringL11n $name Tag article name * * @return void * * @since 1.0.0 */ - public function setL11n(string | WikiCategoryL11n $name, string $lang = ISO639x1Enum::_EN) : void + public function setL11n(string | BaseStringL11n $name, string $lang = ISO639x1Enum::_EN) : void { - if ($name instanceof WikiCategoryL11n) { + if ($name instanceof BaseStringL11n) { $this->name = $name; - } elseif ($this->name instanceof WikiCategoryL11n) { - $this->name->name = $name; + } elseif ($this->name instanceof BaseStringL11n) { + $this->name->content = $name; } else { - $this->name = new WikiCategoryL11n(); - $this->name->name = $name; + $this->name = new BaseStringL11n(); + $this->name->content = $name; $this->name->setLanguage($lang); } } diff --git a/Models/WikiCategoryL11n.php b/Models/WikiCategoryL11n.php deleted file mode 100755 index cee1b7e..0000000 --- a/Models/WikiCategoryL11n.php +++ /dev/null @@ -1,144 +0,0 @@ -name = $name; - $this->language = $language; - } - - /** - * Get id - * - * @return int - * - * @since 1.0.0 - */ - public function getId() : int - { - return $this->id; - } - - /** - * Get language - * - * @return string - * - * @since 1.0.0 - */ - public function getLanguage() : string - { - return $this->language; - } - - /** - * Set language - * - * @param string $language Language - * - * @return void - * - * @since 1.0.0 - */ - public function setLanguage(string $language) : void - { - $this->language = $language; - } - - /** - * Get category name. - * - * @return string - * - * @since 1.0.0 - */ - public function getName() : string - { - return $this->name; - } - - /** - * {@inheritdoc} - */ - public function toArray() : array - { - return [ - 'id' => $this->id, - 'name' => $this->name, - 'category' => $this->category, - 'language' => $this->language, - ]; - } - - /** - * {@inheritdoc} - */ - public function jsonSerialize() : mixed - { - return $this->toArray(); - } -} diff --git a/Models/WikiCategoryL11nMapper.php b/Models/WikiCategoryL11nMapper.php index d5b471f..2f13067 100755 --- a/Models/WikiCategoryL11nMapper.php +++ b/Models/WikiCategoryL11nMapper.php @@ -15,6 +15,7 @@ declare(strict_types=1); namespace Modules\Knowledgebase\Models; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; +use phpOMS\Localization\BaseStringL11n; /** * Category mapper class. @@ -34,8 +35,8 @@ final class WikiCategoryL11nMapper extends DataMapperFactory */ public const COLUMNS = [ 'wiki_category_l11n_id' => ['name' => 'wiki_category_l11n_id', 'type' => 'int', 'internal' => 'id'], - 'wiki_category_l11n_name' => ['name' => 'wiki_category_l11n_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true], - 'wiki_category_l11n_category' => ['name' => 'wiki_category_l11n_category', 'type' => 'int', 'internal' => 'category'], + 'wiki_category_l11n_name' => ['name' => 'wiki_category_l11n_name', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true], + 'wiki_category_l11n_category' => ['name' => 'wiki_category_l11n_category', 'type' => 'int', 'internal' => 'ref'], 'wiki_category_l11n_language' => ['name' => 'wiki_category_l11n_language', 'type' => 'string', 'internal' => 'language'], ]; @@ -54,4 +55,12 @@ final class WikiCategoryL11nMapper extends DataMapperFactory * @since 1.0.0 */ public const PRIMARYFIELD ='wiki_category_l11n_id'; + + /** + * Model to use by the mapper. + * + * @var string + * @since 1.0.0 + */ + public const MODEL = BaseStringL11n::class; } diff --git a/Models/WikiCategoryMapper.php b/Models/WikiCategoryMapper.php index 8336dd3..dbc94ad 100755 --- a/Models/WikiCategoryMapper.php +++ b/Models/WikiCategoryMapper.php @@ -50,7 +50,7 @@ final class WikiCategoryMapper extends DataMapperFactory 'mapper' => WikiCategoryL11nMapper::class, 'table' => 'wiki_category_l11n', 'self' => 'wiki_category_l11n_category', - 'column' => 'name', + 'column' => 'content', 'external' => null, ], ]; diff --git a/tests/Models/WikiCategoryL11nTest.php b/tests/Models/WikiCategoryL11nTest.php deleted file mode 100755 index 93cdd26..0000000 --- a/tests/Models/WikiCategoryL11nTest.php +++ /dev/null @@ -1,87 +0,0 @@ -l11n = new WikiCategoryL11n(); - } - - /** - * @covers Modules\Knowledgebase\Models\WikiCategoryL11n - * @group module - */ - public function testDefault() : void - { - self::assertEquals(0, $this->l11n->getId()); - self::assertEquals('', $this->l11n->name); - self::assertEquals(0, $this->l11n->category); - self::assertEquals(ISO639x1Enum::_EN, $this->l11n->getLanguage()); - } - - /** - * @covers Modules\Knowledgebase\Models\WikiCategoryL11n - * @group module - */ - public function testNameInputOutput() : void - { - $this->l11n->name = 'TestName'; - self::assertEquals('TestName', $this->l11n->name); - } - - /** - * @covers Modules\Knowledgebase\Models\WikiCategoryL11n - * @group module - */ - public function testLanguageInputOutput() : void - { - $this->l11n->setLanguage(ISO639x1Enum::_DE); - self::assertEquals(ISO639x1Enum::_DE, $this->l11n->getLanguage()); - } - - /** - * @covers Modules\Knowledgebase\Models\WikiCategoryL11n - * @group module - */ - public function testSerialize() : void - { - $this->l11n->name = 'Title'; - $this->l11n->category = 2; - $this->l11n->setLanguage(ISO639x1Enum::_DE); - - self::assertEquals( - [ - 'id' => 0, - 'name' => 'Title', - 'category' => 2, - 'language' => ISO639x1Enum::_DE, - ], - $this->l11n->jsonSerialize() - ); - } -} diff --git a/tests/Models/WikiCategoryTest.php b/tests/Models/WikiCategoryTest.php index 226387e..b8b6ff2 100755 --- a/tests/Models/WikiCategoryTest.php +++ b/tests/Models/WikiCategoryTest.php @@ -17,7 +17,7 @@ namespace Modules\Knowledgebase\tests\Models; use Modules\Knowledgebase\Models\NullWikiApp; use Modules\Knowledgebase\Models\NullWikiCategory; use Modules\Knowledgebase\Models\WikiCategory; -use Modules\Knowledgebase\Models\WikiCategoryL11n; +use phpOMS\Localization\BaseStringL11n; /** * @testdox Modules\tests\Knowledgebase\Models\WikiCateboryTest: Wiki category @@ -71,7 +71,7 @@ final class WikiCategoryTest extends \PHPUnit\Framework\TestCase $this->category->setL11n('Test'); self::assertEquals('Test', $this->category->getL11n()); - $this->category->setL11n(new WikiCategoryL11n('NewTest')); + $this->category->setL11n(new BaseStringL11n('NewTest')); self::assertEquals('NewTest', $this->category->getL11n()); }