diff --git a/Admin/Installer.php b/Admin/Installer.php index c21e7e5..e15e5ad 100755 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -166,7 +166,27 @@ final class Installer extends InstallerAbstract */ private static function createReference(ApplicationAbstract $app, array $data) : array { - return []; + /** @var \Modules\Media\Controller\ApiController $module */ + $module = $app->moduleManager->getModuleInstance('Media'); + + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('name', $data['name'] ?? ''); + $request->setData('virtualpath', $data['from'] ?? '/'); + $request->setData('child', $data['to'] ?? '/'); + + $module->apiReferenceCreate($request, $response); + + $responseData = $response->get(''); + if (!\is_array($responseData)) { + return []; + } + + return !\is_array($responseData['response']) + ? $responseData['response']->toArray() + : $responseData['response']; } /** @@ -349,15 +369,6 @@ final class Installer extends InstallerAbstract $request->setData('media-list', \json_encode($uploadedIds)); $module->apiCollectionCreate($request, $response); - - $responseData = $response->get(''); - if (!\is_array($responseData)) { - return []; - } - - return !\is_array($responseData['response']) - ? $responseData['response']->toArray() - : $responseData['response']; } $responseData = $response->get(''); diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 806d218..5d7e525 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -634,13 +634,22 @@ final class ApiController extends Controller if ($parentCollectionId === 0) { /** @var Collection $parentCollection */ $parentCollection = CollectionMapper::get() - ->where('virtualPath', (string) ($request->getData('virtualpath') ?? '')) - ->where('name', (string) ($request->getData('name') ?? '')) + ->where('virtualPath', \dirname($request->getData('virtualpath') ?? '')) + ->where('name', \basename($request->getData('virtualpath') ?? '')) ->execute(); $parentCollectionId = $parentCollection->getId(); } + if (!$request->hasData('source')) { + $child = MediaMapper::get() + ->where('virtualPath', \dirname($request->getData('child'))) + ->where('name', \basename($request->getData('child'))) + ->execute(); + + $request->setData('source', $child->getId()); + } + $this->createModelRelation( $request->header->account, $parentCollectionId, @@ -666,10 +675,10 @@ final class ApiController extends Controller private function createReferenceFromRequest(RequestAbstract $request) : Reference { $mediaReference = new Reference(); - $mediaReference->name = (string) $request->getData('name'); + $mediaReference->name = \basename($request->getData('virtualpath')); $mediaReference->source = new NullMedia((int) $request->getData('source')); $mediaReference->createdBy = new NullAccount($request->header->account); - $mediaReference->setVirtualPath($request->getData('virtualpath')); + $mediaReference->setVirtualPath(\dirname($request->getData('virtualpath'))); return $mediaReference; } @@ -686,9 +695,8 @@ final class ApiController extends Controller private function validateReferenceCreate(RequestAbstract $request) : array { $val = []; - if (($val['name'] = empty($request->getData('name'))) - || ($val['virtualpath'] = empty($request->getData('virtualpath'))) - || ($val['source'] = empty($request->getData('source'))) + if (($val['parent'] = (empty($request->getData('parent')) && empty($request->getData('virtualpath')))) + || ($val['source'] = (empty($request->getData('source')) && empty($request->getData('child')))) ) { return $val; } @@ -1328,7 +1336,7 @@ final class ApiController extends Controller $l11nMediaType = $this->createMediaTypeL11nFromRequest($request); $this->createModel($request->header->account, $l11nMediaType, MediaTypeL11nMapper::class, 'media_type_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Category localization successfully created', $l11nMediaType); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $l11nMediaType); } /** diff --git a/Models/MediaContentMapper.php b/Models/MediaContentMapper.php index b871ba0..15b033f 100755 --- a/Models/MediaContentMapper.php +++ b/Models/MediaContentMapper.php @@ -59,5 +59,5 @@ class MediaContentMapper extends DataMapperFactory * @var string * @since 1.0.0 */ - public const PRIMARYFIELD ='media_parsed_id'; + public const PRIMARYFIELD = 'media_parsed_id'; } diff --git a/Models/MediaMapper.php b/Models/MediaMapper.php index b5532fb..5b50a0e 100755 --- a/Models/MediaMapper.php +++ b/Models/MediaMapper.php @@ -79,10 +79,6 @@ class MediaMapper extends DataMapperFactory * @since 1.0.0 */ public const OWNS_ONE = [ - 'type' => [ - 'mapper' => MediaTypeMapper::class, - 'external' => 'media_type', - ], 'source' => [ 'mapper' => self::class, 'external' => 'media_source', @@ -144,7 +140,7 @@ class MediaMapper extends DataMapperFactory * @var string * @since 1.0.0 */ - public const PRIMARYFIELD ='media_id'; + public const PRIMARYFIELD = 'media_id'; /** * Get media based on virtual path. diff --git a/Models/MediaTypeL11nMapper.php b/Models/MediaTypeL11nMapper.php index f9bd731..70c25fa 100755 --- a/Models/MediaTypeL11nMapper.php +++ b/Models/MediaTypeL11nMapper.php @@ -54,7 +54,7 @@ final class MediaTypeL11nMapper extends DataMapperFactory * @var string * @since 1.0.0 */ - public const PRIMARYFIELD ='media_type_l11n_id'; + public const PRIMARYFIELD = 'media_type_l11n_id'; /** * Model to use by the mapper. diff --git a/Models/MediaTypeMapper.php b/Models/MediaTypeMapper.php index a2acca0..2dff8d5 100755 --- a/Models/MediaTypeMapper.php +++ b/Models/MediaTypeMapper.php @@ -76,5 +76,5 @@ final class MediaTypeMapper extends DataMapperFactory * @var string * @since 1.0.0 */ - public const PRIMARYFIELD ='media_type_id'; + public const PRIMARYFIELD = 'media_type_id'; } diff --git a/composer.json b/composer.json index 15e8d01..6fc1e5d 100755 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "karaka/module", - "description": "Module for Karaka.", + "description": "Module for Jingga.", "authors": [ { "name": "Dennis Eichhorn", diff --git a/info.json b/info.json index 4af0564..6c04ec1 100755 --- a/info.json +++ b/info.json @@ -11,7 +11,7 @@ "phpOMS-db": "1.0.0" }, "creator": { - "name": "Karaka", + "name": "Jingga", "website": "jingga.app" }, "description": "The media module.",