mirror of
https://github.com/Karaka-Management/oms-Editor.git
synced 2026-01-27 16:58:40 +00:00
undo serialize deprecation and switch to installExternal api calls
This commit is contained in:
parent
9c536c8490
commit
78962fd304
|
|
@ -21,9 +21,12 @@ use Modules\Editor\Models\EditorDocTypeMapper;
|
|||
use phpOMS\Application\ApplicationAbstract;
|
||||
use phpOMS\Config\SettingsInterface;
|
||||
use phpOMS\DataStorage\Database\DatabasePool;
|
||||
use phpOMS\Message\Http\HttpRequest;
|
||||
use phpOMS\Message\Http\HttpResponse;
|
||||
use phpOMS\Module\InstallerAbstract;
|
||||
use phpOMS\Module\ModuleInfo;
|
||||
use phpOMS\System\File\PathException;
|
||||
use phpOMS\Uri\HttpUri;
|
||||
|
||||
/**
|
||||
* Installer class.
|
||||
|
|
@ -52,7 +55,7 @@ final class Installer extends InstallerAbstract
|
|||
|
||||
$types = include __DIR__ . '/Install/Types/types.php';
|
||||
foreach ($types as $type) {
|
||||
self::createType($app->dbPool, $type);
|
||||
self::createType($app, $type);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -97,10 +100,22 @@ final class Installer extends InstallerAbstract
|
|||
'type' => [],
|
||||
];
|
||||
|
||||
$apiApp = new class() extends ApplicationAbstract
|
||||
{
|
||||
protected string $appName = 'Api';
|
||||
};
|
||||
|
||||
$apiApp->dbPool = $app->dbPool;
|
||||
$apiApp->orgId = $app->orgId;
|
||||
$apiApp->accountManager = $app->accountManager;
|
||||
$apiApp->appSettings = $app->appSettings;
|
||||
$apiApp->moduleManager = $app->moduleManager;
|
||||
$apiApp->eventManager = $app->eventManager;
|
||||
|
||||
foreach ($editorData as $editor) {
|
||||
switch ($editor['type']) {
|
||||
case 'type':
|
||||
$result['type'][] = self::createType($app->dbPool, $editor);
|
||||
$result['type'][] = self::createType($apiApp, $editor);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
|
|
@ -112,25 +127,39 @@ final class Installer extends InstallerAbstract
|
|||
/**
|
||||
* Create type.
|
||||
*
|
||||
* @param DatabasePool $dbPool Database instance
|
||||
* @param ApplicationAbstract $app Application
|
||||
* @param array $data Type info
|
||||
*
|
||||
* @return EditorDocType
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private static function createType(DatabasePool $dbPool, array $data) : EditorDocType
|
||||
private static function createType(ApplicationAbstract $app, array $data) : EditorDocType
|
||||
{
|
||||
$type = new EditorDocType();
|
||||
$type->name = $data['name'] ?? '';
|
||||
/** @var \Modules\Editor\Controller\ApiController $module */
|
||||
$module = $app->moduleManager->get('Editor');
|
||||
|
||||
$id = EditorDocTypeMapper::create()->execute($type);
|
||||
$response = new HttpResponse();
|
||||
$request = new HttpRequest(new HttpUri(''));
|
||||
|
||||
$request->header->account = 1;
|
||||
$request->setData('name', $data['name'] ?? '');
|
||||
|
||||
$module->apiEditorDocTypeCreate($request, $response);
|
||||
|
||||
$type = $response->get('')['response'];
|
||||
$id = $type->getId();
|
||||
|
||||
foreach ($data['l11n'] as $l11n) {
|
||||
$l11n = new EditorDocTypeL11n($l11n['title'], $l11n['lang']);
|
||||
$l11n->type = $id;
|
||||
$response = new HttpResponse();
|
||||
$request = new HttpRequest(new HttpUri(''));
|
||||
|
||||
EditorDocTypeL11nMapper::create()->execute($l11n);
|
||||
$request->header->account = 1;
|
||||
$request->setData('title', $l11n['title'] ?? '');
|
||||
$request->setData('lang', $l11n['lang'] ?? null);
|
||||
$request->setData('type', $id);
|
||||
|
||||
$module->apiEditorDocTypeL11nCreate($request, $response);
|
||||
}
|
||||
|
||||
return $type;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,10 @@ use Modules\Editor\Models\EditorDoc;
|
|||
use Modules\Editor\Models\EditorDocHistory;
|
||||
use Modules\Editor\Models\EditorDocHistoryMapper;
|
||||
use Modules\Editor\Models\EditorDocMapper;
|
||||
use Modules\Editor\Models\EditorDocType;
|
||||
use Modules\Editor\Models\EditorDocTypeL11n;
|
||||
use Modules\Editor\Models\EditorDocTypeL11nMapper;
|
||||
use Modules\Editor\Models\EditorDocTypeMapper;
|
||||
use Modules\Media\Models\CollectionMapper;
|
||||
use Modules\Media\Models\MediaMapper;
|
||||
use Modules\Media\Models\NullMedia;
|
||||
|
|
@ -45,6 +49,145 @@ use phpOMS\Utils\Parser\Markdown\Markdown;
|
|||
*/
|
||||
final class ApiController extends Controller
|
||||
{
|
||||
/**
|
||||
* Validate document create request
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return array<string, bool>
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function validateEditorDocTypeCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['name'] = empty($request->getData('name')))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Api method to create document
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiEditorDocTypeCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
if (!empty($val = $this->validateEditorDocTypeCreate($request))) {
|
||||
$response->set('editor_doc_type_create', new FormValidation($val));
|
||||
$response->header->status = RequestStatusCode::R_400;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$type = $this->createDocTypeFromRequest($request);
|
||||
$this->createModel($request->header->account, $type, EditorDocTypeMapper::class, 'doc_type', $request->getOrigin());
|
||||
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Document', 'Document type successfully created', $type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to create task from request.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return EditorDoc
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function createDocTypeFromRequest(RequestAbstract $request) : EditorDocType
|
||||
{
|
||||
$type = new EditorDocType();
|
||||
$type->name = $request->getData('name');
|
||||
|
||||
if (!empty($request->getData('title'))) {
|
||||
$type->setL11n($request->getData('title'), $request->getData('lang') ?? $request->getLanguage());
|
||||
}
|
||||
|
||||
return $type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate l11n create request
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return array<string, bool>
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function validateEditorDocTypeL11nCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['title'] = empty($request->getData('title')))
|
||||
|| ($val['type'] = empty($request->getData('type')))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Api method to create tag localization
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiEditorDocTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
if (!empty($val = $this->validateEditorDocTypeL11nCreate($request))) {
|
||||
$response->set('editor_doc_type_l11n_create', new FormValidation($val));
|
||||
$response->header->status = RequestStatusCode::R_400;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$l11nEditorDocType = $this->createEditorDocTypeL11nFromRequest($request);
|
||||
$this->createModel($request->header->account, $l11nEditorDocType, EditorDocTypeL11nMapper::class, 'editor_doc_type_l11n', $request->getOrigin());
|
||||
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Category localization successfully created', $l11nEditorDocType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to create tag localization from request.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return EditorDocTypeL11n
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function createEditorDocTypeL11nFromRequest(RequestAbstract $request) : EditorDocTypeL11n
|
||||
{
|
||||
$l11nEditorDocType = new EditorDocTypeL11n();
|
||||
$l11nEditorDocType->type = (int) ($request->getData('type') ?? 0);
|
||||
$l11nEditorDocType->setLanguage((string) (
|
||||
$request->getData('language') ?? $request->getLanguage()
|
||||
));
|
||||
$l11nEditorDocType->title = (string) ($request->getData('title') ?? '');
|
||||
|
||||
return $l11nEditorDocType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate document create request
|
||||
*
|
||||
|
|
@ -127,6 +270,7 @@ final class ApiController extends Controller
|
|||
EditorDocMapper::writer()->createRelationTable('media', [$media->getId()], $doc->getId());
|
||||
|
||||
$ref = new Reference();
|
||||
$ref->name = $media->name;
|
||||
$ref->source = new NullMedia($media->getId());
|
||||
$ref->createdBy = new NullAccount($request->header->account);
|
||||
$ref->setVirtualPath($accountPath = '/Accounts/' . $account->getId() . ' ' . $account->login . '/Editor/' . $doc->createdAt->format('Y') . '/' . $doc->createdAt->format('m') . '/' . $doc->getId());
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ use Modules\Admin\Models\Account;
|
|||
use Modules\Admin\Models\NullAccount;
|
||||
use Modules\Media\Models\Media;
|
||||
use Modules\Tag\Models\Tag;
|
||||
use phpOMS\Contract\ArrayableInterface;
|
||||
|
||||
/**
|
||||
* News article class.
|
||||
|
|
@ -28,7 +27,7 @@ use phpOMS\Contract\ArrayableInterface;
|
|||
* @link https://karaka.app
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class EditorDoc implements \JsonSerializable, ArrayableInterface
|
||||
class EditorDoc implements \JsonSerializable
|
||||
{
|
||||
/**
|
||||
* Article ID.
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ use Modules\Admin\Models\Account;
|
|||
use Modules\Admin\Models\NullAccount;
|
||||
use Modules\Media\Models\Media;
|
||||
use Modules\Tag\Models\Tag;
|
||||
use phpOMS\Contract\ArrayableInterface;
|
||||
|
||||
/**
|
||||
* News article class.
|
||||
|
|
@ -28,7 +27,7 @@ use phpOMS\Contract\ArrayableInterface;
|
|||
* @link https://karaka.app
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class EditorDocHistory implements \JsonSerializable, ArrayableInterface
|
||||
class EditorDocHistory implements \JsonSerializable
|
||||
{
|
||||
/**
|
||||
* Article ID.
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ declare(strict_types=1);
|
|||
|
||||
namespace Modules\Editor\Models;
|
||||
|
||||
use phpOMS\Contract\ArrayableInterface;
|
||||
use phpOMS\Localization\ISO639x1Enum;
|
||||
|
||||
/**
|
||||
|
|
@ -25,7 +24,7 @@ use phpOMS\Localization\ISO639x1Enum;
|
|||
* @link https://karaka.app
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class EditorDocType implements \JsonSerializable, ArrayableInterface
|
||||
class EditorDocType implements \JsonSerializable
|
||||
{
|
||||
/**
|
||||
* Article ID.
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ declare(strict_types=1);
|
|||
|
||||
namespace Modules\Editor\Models;
|
||||
|
||||
use phpOMS\Contract\ArrayableInterface;
|
||||
use phpOMS\Localization\ISO639x1Enum;
|
||||
|
||||
/**
|
||||
|
|
@ -25,7 +24,7 @@ use phpOMS\Localization\ISO639x1Enum;
|
|||
* @link https://karaka.app
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class EditorDocTypeL11n implements \JsonSerializable, ArrayableInterface
|
||||
class EditorDocTypeL11n implements \JsonSerializable
|
||||
{
|
||||
/**
|
||||
* ID.
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user