diff --git a/Controller/ApiAssetController.php b/Controller/ApiAssetController.php index c665be9..01c7e19 100644 --- a/Controller/ApiAssetController.php +++ b/Controller/ApiAssetController.php @@ -112,8 +112,10 @@ final class ApiAssetController extends Controller { $path = $this->createAssetDir($asset); + $collection = null; + if (!empty($uploadedFiles = $request->files)) { - $uploaded = $this->app->moduleManager->get('Media')->uploadFiles( + $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles( names: [], fileNames: [], files: $uploadedFiles, @@ -123,7 +125,6 @@ final class ApiAssetController extends Controller pathSettings: PathSettings::FILE_PATH ); - $collection = null; foreach ($uploaded as $media) { $this->createModelRelation( $request->header->account, @@ -160,54 +161,51 @@ final class ApiAssetController extends Controller } } - if (!empty($mediaFiles = $request->getDataJson('media'))) { - $collection = null; + $mediaFiles = $request->getDataJson('media'); + foreach ($mediaFiles as $file) { + /** @var \Modules\Media\Models\Media $media */ + $media = MediaMapper::get()->where('id', (int) $file)->limit(1)->execute(); - foreach ($mediaFiles as $file) { - /** @var \Modules\Media\Models\Media $media */ - $media = MediaMapper::get()->where('id', (int) $file)->limit(1)->execute(); + $this->createModelRelation( + $request->header->account, + $asset->id, + $media->id, + AssetMapper::class, + 'files', + '', + $request->getOrigin() + ); - $this->createModelRelation( - $request->header->account, - $asset->id, - $media->id, - AssetMapper::class, - 'files', - '', - $request->getOrigin() - ); + $ref = new Reference(); + $ref->name = $media->name; + $ref->source = new NullMedia($media->id); + $ref->createdBy = new NullAccount($request->header->account); + $ref->setVirtualPath($path); - $ref = new Reference(); - $ref->name = $media->name; - $ref->source = new NullMedia($media->id); - $ref->createdBy = new NullAccount($request->header->account); - $ref->setVirtualPath($path); + $this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin()); - $this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin()); + if ($collection === null) { + /** @var \Modules\Media\Models\Collection $collection */ + $collection = MediaMapper::getParentCollection($path)->limit(1)->execute(); - 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 - ); - } + 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, - $ref->id, - CollectionMapper::class, - 'sources', - '', - $request->getOrigin() - ); } + + $this->createModelRelation( + $request->header->account, + $collection->id, + $ref->id, + CollectionMapper::class, + 'sources', + '', + $request->getOrigin() + ); } } @@ -260,7 +258,7 @@ final class ApiAssetController extends Controller $uploaded = []; if (!empty($uploadedFiles = $request->files)) { - $uploaded = $this->app->moduleManager->get('Media')->uploadFiles( + $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles( names: [], fileNames: [], files: $uploadedFiles, @@ -321,18 +319,17 @@ final class ApiAssetController extends Controller } } - if (!empty($mediaFiles = $request->getDataJson('media'))) { - foreach ($mediaFiles as $media) { - $this->createModelRelation( - $request->header->account, - $asset->id, - (int) $media, - AssetMapper::class, - 'files', - '', - $request->getOrigin() - ); - } + $mediaFiles = $request->getDataJson('media'); + foreach ($mediaFiles as $media) { + $this->createModelRelation( + $request->header->account, + $asset->id, + (int) $media, + AssetMapper::class, + 'files', + '', + $request->getOrigin() + ); } $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Media', 'Media added to asset.', [ @@ -562,8 +559,6 @@ final class ApiAssetController extends Controller * * @return array * - * @todo Implement API validation function - * * @since 1.0.0 */ private function validateAssetDelete(RequestAbstract $request) : array diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 42123bc..516550d 100644 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -55,15 +55,13 @@ final class BackendController extends Controller $view->setTemplate('/Modules/AssetManagement/Theme/Backend/asset-list'); $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1006601001, $request, $response); - $list = AssetMapper::getAll() + $view->data['assets'] = AssetMapper::getAll() ->with('type') ->with('type/l11n') ->where('type/l11n/language', $response->header->l11n->language) ->sort('id', 'DESC') ->execute(); - $view->data['assets'] = $list; - return $view; } @@ -139,6 +137,8 @@ final class BackendController extends Controller $view->data['asset'] = $asset; + // @feature Create a new read mapper function that returns relation models instead of its own model + // https://github.com/Karaka-Management/phpOMS/issues/320 $query = new Builder($this->app->dbPool->get()); $results = $query->selectAs(AssetMapper::HAS_MANY['files']['external'], 'file') ->from(AssetMapper::TABLE)