From: Vincent Vanwaelscappel Date: Mon, 7 Apr 2025 15:09:12 +0000 (+0200) Subject: wip #7454 @2 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=e700f06196124cbeeeee6741fa06cae7aa80b57e;p=fluidbook-toolbox.git wip #7454 @2 --- diff --git a/app/Http/Controllers/API/FluidbookPublicationAPIController.php b/app/Http/Controllers/API/FluidbookPublicationAPIController.php index 715760752..31022420d 100644 --- a/app/Http/Controllers/API/FluidbookPublicationAPIController.php +++ b/app/Http/Controllers/API/FluidbookPublicationAPIController.php @@ -11,12 +11,12 @@ use Cubist\Util\Files\Files; class FluidbookPublicationAPIController extends Controller { - public function download($id, $version) + public function download($id, $version = 'online', $action = 'download') { if (!FluidbookPublication::hasPermission($id, 'read')) { abort(401); } - $download = new Download(FluidbookPublication::find($id), $version, 'download', auth()->user()); + $download = new Download(FluidbookPublication::find($id), $version, $action, auth()->user()); $url = $download->package(false); if (count($url)) { return $url[0]; @@ -24,13 +24,19 @@ class FluidbookPublicationAPIController extends Controller return false; } - public function metadata($id) + public function metadata($fluidbook) { - if (!FluidbookPublication::hasPermission($id, 'read')) { + if (!$fluidbook instanceof FluidbookPublication) { + $fluidbook = FluidbookPublication::find($fluidbook); + } + if (!FluidbookPublication::hasPermission($fluidbook->id, 'read')) { abort(401); } - $fluidbook = FluidbookPublication::find($id); - return ['title' => $fluidbook->title, + + return [ + 'id' => $fluidbook->id, + 'reference' => $fluidbook->reference, + 'title' => $fluidbook->title, 'lang' => $fluidbook->locale, 'locale' => $fluidbook->locale, 'date' => (new \DateTime($fluidbook->updated_at))->getTimestamp()]; @@ -46,4 +52,13 @@ class FluidbookPublicationAPIController extends Controller return $job->handle(); } + public function findByReference($reference): ?array + { + if ($fluidbook = FluidbookPublication::where('reference', $reference)->first()) { + return $this->metadata($fluidbook); + } else { + return null; + } + } + } diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index 64872e1e7..3c155437f 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -139,6 +139,8 @@ class FluidbookPublication extends ToolboxStatusModel $this->addField('hash', Hidden::class); $this->addField('cid', Hidden::class); + $this->addField('reference', Hidden::class); + $this->addField('export_data', Hidden::class, __('Paramètres d\'export')); diff --git a/routes/api.php b/routes/api.php index dfe006290..72c0bbec7 100644 --- a/routes/api.php +++ b/routes/api.php @@ -17,8 +17,9 @@ Route::group([ 'middleware' => ['auth:api'], 'excluded_middleware' => ['verifycsrftoken'] ], function () { - Route::get('fluidbook-publication/{id}/download/{version}', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'download']); + Route::get('fluidbook-publication/{id}/download/{version}/{action}', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'download']); Route::get('fluidbook-publication/{id}/metadata', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'metadata']); + Route::get('fluidbook-publication/findbyreference/{reference}', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'findByReference']); Route::post('fluidbook-publication/create', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'create']); Route::post('cache/clear/{tag?}', [\App\Http\Controllers\API\CacheAPIController::class, 'clear']); });