diff --git a/Admin/Install/Navigation.install.json b/Admin/Install/Navigation.install.json index 927a602..64f89b8 100755 --- a/Admin/Install/Navigation.install.json +++ b/Admin/Install/Navigation.install.json @@ -5,7 +5,7 @@ "type": 1, "subtype": 1, "name": "Tasks", - "uri": "{/base}/task/dashboard?{?}", + "uri": "{/base}/task/dashboard", "target": "self", "icon": "bolt", "order": 15, @@ -19,7 +19,7 @@ "type": 3, "subtype": 1, "name": "Dashboard", - "uri": "{/base}/task/dashboard?{?}", + "uri": "{/base}/task/dashboard", "target": "self", "icon": null, "order": 1, @@ -34,7 +34,7 @@ "type": 3, "subtype": 1, "name": "List", - "uri": "{/base}/task/list?{?}", + "uri": "{/base}/task/list", "target": "self", "icon": null, "order": 5, @@ -49,7 +49,7 @@ "type": 3, "subtype": 1, "name": "Create", - "uri": "{/base}/task/create?{?}", + "uri": "{/base}/task/create", "target": "self", "icon": null, "order": 10, @@ -64,7 +64,7 @@ "type": 3, "subtype": 1, "name": "Analysis", - "uri": "{/base}/task/analysis?{?}", + "uri": "{/base}/task/analysis", "target": "self", "icon": null, "order": 20, diff --git a/Admin/Install/SearchCommands.php b/Admin/Install/SearchCommands.php index e9dec00..1cdfbfd 100755 --- a/Admin/Install/SearchCommands.php +++ b/Admin/Install/SearchCommands.php @@ -22,6 +22,7 @@ return [ [ 'dest' => '\Modules\Tasks\Controller\SearchController:searchTag', 'verb' => RouteVerb::ANY, + 'active' => true, 'permission' => [ 'module' => SearchController::NAME, 'type' => PermissionType::READ, @@ -32,6 +33,7 @@ return [ [ 'dest' => '\Modules\Tasks\Controller\SearchController:searchGeneral', 'verb' => RouteVerb::ANY, + 'active' => true, 'permission' => [ 'module' => SearchController::NAME, 'type' => PermissionType::READ, diff --git a/Admin/SearchCommands.php b/Admin/SearchCommands.php index 95f94ec..a0d507d 100644 --- a/Admin/SearchCommands.php +++ b/Admin/SearchCommands.php @@ -22,6 +22,7 @@ return [ [ 'dest' => '\Modules\Tasks\Controller\SearchController:searchGeneral', 'verb' => RouteVerb::ANY, + 'active' => true, 'permission' => [ 'module' => SearchController::NAME, 'type' => PermissionType::READ, diff --git a/Controller/ApiController.php b/Controller/ApiController.php index a21b9d3..d9dcfa0 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -17,12 +17,8 @@ namespace Modules\Tasks\Controller; use Modules\Admin\Models\AccountMapper; use Modules\Admin\Models\GroupMapper; use Modules\Admin\Models\NullAccount; -use Modules\Media\Models\CollectionMapper; -use Modules\Media\Models\MediaMapper; -use Modules\Media\Models\NullMedia; +use Modules\Media\Models\Media; use Modules\Media\Models\PathSettings; -use Modules\Media\Models\Reference; -use Modules\Media\Models\ReferenceMapper; use Modules\Notification\Models\Notification; use Modules\Notification\Models\NotificationMapper; use Modules\Notification\Models\NotificationType; @@ -307,120 +303,45 @@ final class ApiController extends Controller $path = $this->createTaskDir($task); /** @var \Modules\Admin\Models\Account $account */ - $account = AccountMapper::get()->where('id', $request->header->account)->execute(); + $account = AccountMapper::get()->where('id', $request->header->account)->execute(); + $accountPath = '/Accounts/' + . $account->id . ' ' + . $account->login . '/Tasks/' + . $task->createdAt->format('Y') . '/' + . $task->createdAt->format('m') . '/' + . $task->id; - $collection = null; - - if (!empty($uploadedFiles = $request->files)) { + if (!empty($request->files)) { $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles( names: [], fileNames: [], - files: $uploadedFiles, + files: $request->files, account: $request->header->account, basePath: __DIR__ . '/../../../Modules/Media/Files' . $path, virtualPath: $path, - pathSettings: PathSettings::FILE_PATH + pathSettings: PathSettings::FILE_PATH, + rel: $task->id, + mapper: TaskMapper::class, + field: 'files' ); - foreach ($uploaded as $media) { - $this->createModelRelation( - $request->header->account, - $task->id, - $media->id, - TaskMapper::class, - 'files', - '', - $request->getOrigin() - ); - - $accountPath = '/Accounts/' - . $account->id . ' ' - . $account->login . '/Tasks/' - . $task->createdAt->format('Y') . '/' - . $task->createdAt->format('m') . '/' - . $task->id; - - $ref = new Reference(); - $ref->name = $media->name; - $ref->source = new NullMedia($media->id); - $ref->createdBy = new NullAccount($request->header->account); - $ref->setVirtualPath($accountPath); - - $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->id === 0) { - $collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection( - $accountPath, - $request->header->account, - __DIR__ . '/../../../Modules/Media/Files/Accounts/' - . $account->id . '/Tasks/' - . $task->createdAt->format('Y') . '/' - . $task->createdAt->format('m') . '/' - . $task->id - ); - } - } - - $this->createModelRelation( - $request->header->account, - $collection->id, - $ref->id, - CollectionMapper::class, - 'sources', - '', - $request->getOrigin() + if ($account->id !== 0) { + $this->app->moduleManager->get('Media', 'Api')->addMediaToCollectionAndModel( + account: $request->header->account, + files: \array_map(function (Media $media) { return $media->id; }, $uploaded->sources), + collectionPath: $accountPath ); } } - $mediaFiles = $request->getDataJson('media'); - foreach ($mediaFiles as $file) { - /** @var \Modules\Media\Models\Media $media */ - $media = MediaMapper::get()->where('id', (int) $file)->limit(1)->execute(); - - $this->createModelRelation( + if (!empty($media = $request->getDataJson('media'))) { + $this->app->moduleManager->get('Media', 'Api')->addMediaToCollectionAndModel( $request->header->account, + $media, $task->id, - $media->id, TaskMapper::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); - - $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->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() + $path ); } } @@ -652,103 +573,43 @@ final class ApiController extends Controller $path = $this->createTaskDir($task); /** @var \Modules\Admin\Models\Account $account */ - $account = AccountMapper::get()->where('id', $request->header->account)->execute(); + $account = AccountMapper::get()->where('id', $request->header->account)->execute(); + $accountPath = '/Accounts/' . $account->id . ' ' + . $account->login . '/Tasks/' + . $task->createdAt->format('Y') . '/' + . $task->createdAt->format('m') . '/' + . $task->id; - $collection = null; - - if (!empty($uploadedFiles = $request->files)) { + if (!empty($request->files)) { $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles( - [], - [], - $uploadedFiles, - $request->header->account, - __DIR__ . '/../../../Modules/Media/Files' . $path, - $path, + names: [], + fileNames: [], + files: $request->files, + account: $request->header->account, + basePath: __DIR__ . '/../../../Modules/Media/Files' . $path, + virtualPath: $path, + rel: $element->id, + mapper: TaskElementMapper::class, + field: 'files' ); - foreach ($uploaded as $media) { - $this->createModelRelation( - $request->header->account, - $element->id, - $media->id, - TaskElementMapper::class, - 'files', - '', - $request->getOrigin() - ); - - $accountPath = '/Accounts/' . $account->id . ' ' - . $account->login . '/Tasks/' - . $task->createdAt->format('Y') . '/' - . $task->createdAt->format('m') . '/' - . $task->id; - - $ref = new Reference(); - $ref->name = $media->name; - $ref->source = new NullMedia($media->id); - $ref->createdBy = new NullAccount($request->header->account); - $ref->setVirtualPath($accountPath); - - $this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin()); - - $collection ??= $this->app->moduleManager->get('Media')->createRecursiveMediaCollection( - $accountPath, - $request->header->account, - __DIR__ . '/../../../Modules/Media/Files/Accounts/' . $account->id - . '/Tasks/' . $task->createdAt->format('Y') . '/' - . $task->createdAt->format('m') . '/' - . $task->id - ); - - $this->createModelRelation( - $request->header->account, - $collection->id, - $ref->id, - CollectionMapper::class, - 'sources', - '', - $request->getOrigin() + if ($account->id !== 0) { + $this->app->moduleManager->get('Media', 'Api')->addMediaToCollectionAndModel( + account: $request->header->account, + files: \array_map(function (Media $media) { return $media->id; }, $uploaded->sources), + collectionPath: $accountPath ); } } - $mediaFiles = $request->getDataJson('media'); - foreach ($mediaFiles as $file) { - /** @var \Modules\Media\Models\Media $media */ - $media = MediaMapper::get()->where('id', (int) $file)->limit(1)->execute(); - - $this->createModelRelation( + if (!empty($media = $request->getDataJson('media'))) { + $this->app->moduleManager->get('Media', 'Api')->addMediaToCollectionAndModel( $request->header->account, + $media, $element->id, - $media->id, TaskElementMapper::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); - - $this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin()); - - $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() + $path ); } }