From 0746917916bca4ca20f8c7b099bad72af3a6a341 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sat, 23 Sep 2023 22:54:43 +0000 Subject: [PATCH] fix language --- Controller/ApiController.php | 77 +++++++++++++++------------ Controller/BackendController.php | 9 ++-- Theme/Backend/exchange-export.tpl.php | 2 +- Theme/Backend/exchange-import.tpl.php | 2 +- 4 files changed, 51 insertions(+), 39 deletions(-) diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 89ba555..ff2ba46 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -22,6 +22,7 @@ use Modules\Exchange\Models\InterfaceManager; use Modules\Exchange\Models\InterfaceManagerMapper; use Modules\Exchange\Models\PermissionCategory; use Modules\Media\Models\CollectionMapper; +use Modules\Media\Models\MediaMapper; use Modules\Media\Models\NullCollection; use Modules\Media\Models\PathSettings; use phpOMS\Account\PermissionType; @@ -174,9 +175,6 @@ final class ApiController extends Controller */ public function apiInterfaceInstall(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - $uploadedFiles = $request->files; - $files = []; - if (!empty($val = $this->validateInterfaceInstall($request))) { $response->data['interface_install'] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400; @@ -185,18 +183,19 @@ final class ApiController extends Controller } // is allowed to create - if (!$this->app->accountManager->get($request->header->account)->hasPermission(PermissionType::CREATE, $this->app->unitId, null, self::NAME, PermissionCategory::TEMPLATE)) { + if (!$this->app->accountManager->get($request->header->account) + ->hasPermission(PermissionType::CREATE, $this->app->unitId, null, self::NAME, PermissionCategory::TEMPLATE) + ) { $response->header->status = RequestStatusCode::R_403; return; } - $collection = new NullCollection(); - if ($uploadedFiles !== []) { + if (!empty($uploadedFiles = $request->files)) { $path = '/Modules/Exchange/Interface/' . $request->getData('title'); /** @var \Modules\Media\Models\Media[] $uploaded */ - $uploaded = $this->app->moduleManager->get('Media')->uploadFiles( + $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles( names: $request->getDataList('names'), fileNames: $request->getDataList('filenames'), files: $uploadedFiles, @@ -206,38 +205,48 @@ final class ApiController extends Controller pathSettings: PathSettings::FILE_PATH ); - foreach ($uploaded as $upload) { - if ($upload->id === 0) { - continue; + $collection = null; + foreach ($uploaded as $media) { + if ($request->hasData('type')) { + $this->createModelRelation( + $request->header->account, + $media->id, + $request->getDataInt('type'), + MediaMapper::class, + 'types', + '', + $request->getOrigin() + ); } - $files[] = $upload; + if ($collection === null) { + /** @var \Modules\Media\Models\Collection $collection */ + $collection = MediaMapper::getParentCollection($path) + ->limit(1) + ->execute(); + + if ($collection->id === 0) { + $collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection( + $path, + $request->header->account, + __DIR__ . '/../../../Modules/Media/Files' . $path, + ); + } + } + + $this->createModelRelation( + $request->header->account, + $collection->id, + $media->id, + CollectionMapper::class, + 'sources', + '', + $request->getOrigin() + ); } - - /** @var \Modules\Media\Models\Collection $collection */ - $collection = $this->app->moduleManager->get('Media')->createMediaCollectionFromMedia( - $request->getDataString('name') ?? '', - $request->getDataString('description') ?? '', - $files, - $request->header->account - ); - - $this->createModel($request->header->account, $collection, CollectionMapper::class, 'collection', $request->getOrigin()); - - if ($collection->id === 0) { - $response->header->status = RequestStatusCode::R_403; - $this->fillJsonResponse($request, $response, NotificationLevel::ERROR, 'Interface', 'Couldn\'t create collection for interface', null); - - return; - } - - $collection->setPath('/Modules/Media/Files/Modules/Exchange/Interface/' . ($request->getDataString('title') ?? '')); - $collection->setVirtualPath('/Modules/Exchange/Interface'); - - $this->createModel($request->header->account, $collection, CollectionMapper::class, 'collection', $request->getOrigin()); } - $interface = $this->createInterfaceFromRequest($request, $collection->id); + $interface = $this->createInterfaceFromRequest($request, $collection?->id ?? 0); $this->createModel($request->header->account, $interface, InterfaceManagerMapper::class, 'interface', $request->getOrigin()); $this->createStandardCreateResponse($request, $response, $interface); diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 931ed28..b7eaa2f 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -172,6 +172,7 @@ final class BackendController extends Controller /** @var \Modules\Exchange\Models\InterfaceManager $interface */ $interface = InterfaceManagerMapper::get() ->with('source') + ->with('source/sources') ->with('settings') ->where('id', (int) $request->getData('id')) ->execute(); @@ -179,9 +180,11 @@ final class BackendController extends Controller $view->data['interface'] = $interface; $view->data['db'] = $this->app->dbPool->get(); - $lang = include $interface->source->getAbsolutePath() - . $interface->source->name - . '/Lang/' . $response->header->l11n->language . '.lang.php'; + $lang = \is_file( + $langFile = $interface->source->getAbsolutePath() . '/' + . $interface->source->name + . '/Lang/' . $response->header->l11n->language . '.lang.php' + ) ? include $langFile : []; $view->data['lang'] = $lang; diff --git a/Theme/Backend/exchange-export.tpl.php b/Theme/Backend/exchange-export.tpl.php index 6ffbf22..1e8e5e2 100755 --- a/Theme/Backend/exchange-export.tpl.php +++ b/Theme/Backend/exchange-export.tpl.php @@ -19,6 +19,6 @@ echo $this->data['nav']->render(); $interface = $this->data['interface']; -include $interface->source->getAbsolutePath() +include $interface->source->getAbsolutePath() . '/' . $interface->source->name . '/' . 'export.tpl.php'; diff --git a/Theme/Backend/exchange-import.tpl.php b/Theme/Backend/exchange-import.tpl.php index 66cab34..fcebdfc 100755 --- a/Theme/Backend/exchange-import.tpl.php +++ b/Theme/Backend/exchange-import.tpl.php @@ -19,6 +19,6 @@ echo $this->data['nav']->render(); $interface = $this->data['interface']; -include $interface->source->getAbsolutePath() +include $interface->source->getAbsolutePath() . '/' . $interface->source->name . '/' . 'import.tpl.php';