l11n, unit/app and simplification fixes

This commit is contained in:
Dennis Eichhorn 2023-01-07 19:00:32 +01:00
parent 835c079a20
commit c1ceb56da5
11 changed files with 51 additions and 254 deletions

View File

@ -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"
}
}
},

View File

@ -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;
}

View File

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

View File

@ -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.
*

View File

@ -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'],
];

View File

@ -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);
}
}

View File

@ -1,144 +0,0 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Knowledgebase\Models
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Knowledgebase\Models;
use phpOMS\Localization\ISO639x1Enum;
/**
* Category class.
*
* @package Modules\Knowledgebase\Models
* @license OMS License 1.0
* @link https://jingga.app
* @since 1.0.0
*/
class WikiCategoryL11n implements \JsonSerializable
{
/**
* Article ID.
*
* @var int
* @since 1.0.0
*/
protected int $id = 0;
/**
* Category ID.
*
* @var int
* @since 1.0.0
*/
public int $category = 0;
/**
* Language.
*
* @var string
* @since 1.0.0
*/
protected string $language = ISO639x1Enum::_EN;
/**
* Name.
*
* @var string
* @since 1.0.0
*/
public string $name = '';
/**
* Constructor.
*
* @param string $name Name
*
* @since 1.0.0
*/
public function __construct(string $name = '', string $language = ISO639x1Enum::_EN)
{
$this->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();
}
}

View File

@ -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;
}

View File

@ -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,
],
];

View File

@ -1,87 +0,0 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Knowledgebase\tests\Models;
use Modules\Knowledgebase\Models\WikiCategoryL11n;
use phpOMS\Localization\ISO639x1Enum;
/**
* @internal
*/
final class WikiCategoryL11nTest extends \PHPUnit\Framework\TestCase
{
private WikiCategoryL11n $l11n;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->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()
);
}
}

View File

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