From 0b3467beecec539e1ae756112676f9a7b69a48ee Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 21 Nov 2023 20:02:42 +0100 Subject: [PATCH] wip #6501 @1.5 --- app/Fluidbook/Farm.php | 27 ++++++++++++++++--- .../CompositionOperation.php | 9 +++++-- .../DownloadOperation.php | 6 ++--- .../Services/ExportPdfOperation.php | 2 +- app/Models/FluidbookDocument.php | 1 + app/Models/FluidbookPublication.php | 1 + .../fields/fluidbook_composition.blade.php | 15 ++++++----- 7 files changed, 45 insertions(+), 16 deletions(-) diff --git a/app/Fluidbook/Farm.php b/app/Fluidbook/Farm.php index 233f63af4..933890ff0 100644 --- a/app/Fluidbook/Farm.php +++ b/app/Fluidbook/Farm.php @@ -13,13 +13,16 @@ use Mockery\Exception; class Farm { - protected static $_outPDF = []; protected static $_forceServer = false; + //protected static $_forceServer = 'alphaville'; + + protected static $_region = 'UE'; + protected static $_farmServers = [ ['name' => 'alphaville', 'host' => 'fluidbook-processfarm', 'port' => 9000, 'weight' => 12, 'region' => 'UE'], - ['name' => 'brazil', 'host' => 'brazil.cubedesigners.com', 'weight' => 6, 'region' => 'US'], + ['name' => 'brazil', 'host' => 'brazil.cubedesigners.com', 'weight' => 6, 'region' => 'UE'], ['name' => 'clockwork', 'host' => 'clockwork.cubedesigners.com', 'weight' => 2, 'region' => 'UE'], ['name' => 'dracula', 'host' => 'dracula.cubedesigners.com', 'weight' => 6, 'region' => 'UE'], ['name' => 'dobermann', 'host' => 'dobermann.cubedesigners.com', 'weight' => 6, 'region' => 'UE'], @@ -33,6 +36,22 @@ class Farm //['name' => 'nakedgun', 'host' => 'nakedgun.cubedesigners.com', 'weight' => 4, 'region' => 'UE'], ]; + /** + * @param string $region + */ + public static function setRegion(string $region): void + { + self::$_region = $region; + } + + /** + * @return string + */ + public static function getRegion(): string + { + return self::$_region; + } + public static function forceServer($server) { self::$_forceServer = $server; @@ -70,7 +89,9 @@ class Farm return $farmServer; } for ($i = 0; $i < $farmServer['weight']; $i++) { - $hat[] = $k; + if ($farmServer['region'] === self::getRegion()) { + $hat[] = $k; + } } } shuffle($hat); diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php index fdd95b809..400f01b19 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php @@ -41,7 +41,7 @@ trait CompositionOperation $fb = FluidbookPublication::withoutGlobalScopes()->find($fluidbook_id); if ($type === 'originalpdf') { $doc = $fb->getDocument($page); - return XSendFileController::sendfile(protected_path('fluidbookpublication/docs/' . $doc->id . '/original.pdf'), 86400, ['Content-Disposition', 'attachment; filename="' . $doc->id . '.pdf"']); + return XSendFileController::sendfile($fb->protected_path('fluidbookpublication/docs/' . $doc->id . '/original.pdf'), 86400, ['Content-Disposition', 'attachment; filename="' . $doc->id . '.pdf"']); } $types = ['texts' => FluidbookDocument::TEXT_PLAIN, 'index' => FluidbookDocument::TEXT_INDEX, 'layout' => FluidbookDocument::TEXT_LAYOUT]; if (!isset($types[$type])) { @@ -100,14 +100,19 @@ trait CompositionOperation if (null === $file) { abort(500); } + + $fluidbook_id = request('fluidbook_id'); + $fluidbook = FluidbookPublication::withoutGlobalScopes()->find($fluidbook_id); + $document = new FluidbookDocument(); + $document->region = $fluidbook->region; $document->file = $file->getClientOriginalName(); $document->file_data = ["fileName" => $file->getClientOriginalName(), "fileSize" => $file->getSize(), "modificationDate" => $file->getMTime(), "creationDate" => $file->getCTime()]; $document->owner = backpack_user()->id; $document->save(); move_uploaded_file($file->getPathname(), Files::mkdir($document->path()) . 'original.pdf'); FluidbookDocumentUpload::updateProgression($uploadID, $document->id, __('Mise en file d\'attente du traitement du document'), 1.2); - FluidbookDocumentUpload::dispatch($uploadID, $document, backpack_user(), request('fluidbook_id', null)); + FluidbookDocumentUpload::dispatch($uploadID, $document, backpack_user(), $fluidbook->id); return response()->json(['uploadID' => $uploadID, 'document' => $document->id]); } diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php index 43ddc7da3..821ad064a 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php @@ -50,7 +50,7 @@ trait DownloadOperation abort(404); } - $relayPath = Files::mkdir(protected_path('/fluidbookpublication/delivery/')); + $relayPath = Files::mkdir(FluidbookPublication::getProtectedPath($id, '/fluidbookpublication/delivery/')); $relayPath .= $id; $relayPath .= $type === "desktop" ? '' : '-mobile'; $relayPath .= '.jpg'; @@ -73,7 +73,7 @@ trait DownloadOperation if ($fluidbook->getPagesNumber() === 0) { abort(404, __('Cette publication ne comporte aucune page')); } - $path = protected_path('fluidbookpublication/packager/download/' . $file); + $path = $fluidbook->protected_path('fluidbookpublication/packager/download/' . $file); if (!file_exists($path)) { abort(404, __('Le fichier n\'existe pas')); } @@ -103,7 +103,7 @@ trait DownloadOperation // Mark the fluidbook as downloaded when status is ready and user is not an admin if ($fluidbook->status == 1 && !can('fluidbook-publication:admin')) { - $fluidbook->setStatus( 2); + $fluidbook->setStatus(2); $fluidbook->save(); } diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/Services/ExportPdfOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/Services/ExportPdfOperation.php index dea5f053c..8c78fa558 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/Services/ExportPdfOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/Services/ExportPdfOperation.php @@ -100,7 +100,7 @@ trait ExportPdfOperation // Paths init $baseDocument = $this->getPDFComplexBaseDocument($book); - $destDir = Files::mkdir(protected_path('fluidbookpublication/cache/exportpdf/' . $book->id)); + $destDir = Files::mkdir($book->protected_path('fluidbookpublication/cache/exportpdf/' . $book->id)); $fname = md5($baseDocument) . '-' . md5(implode(',%ù', $range) . ($print ? '1' : '0')) . '.pdf'; $destFile = $destDir . '/' . $fname; diff --git a/app/Models/FluidbookDocument.php b/app/Models/FluidbookDocument.php index b9cdac7c2..7ea25ab6b 100644 --- a/app/Models/FluidbookDocument.php +++ b/app/Models/FluidbookDocument.php @@ -344,6 +344,7 @@ class FluidbookDocument extends ToolboxModel public function _getFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html', $forceCheck = true) { + Farm::setRegion($this->region); if (!$this->hasFile($page, $format, $resolution, $quality, $withText, $withGraphics, $version, $forceCheck)) { return Farm::getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $version, $this->getResolutionRatio(), $this->getMobileFirstRatio(), $this->path()); } diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index b15b4b3ac..81ecbc118 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -419,6 +419,7 @@ class FluidbookPublication extends ToolboxStatusModel if (file_exists($thumbpdf)) { try { + Farm::setRegion($this->region); return Farm::getFileFromPDF($thumbpdf, $page, $format, $resolution, $this->JPEGQuality, $withText, $withGraphics, $version, null, $force, 1); } catch (\Exception $e) { throw new \Exception('Unable to generate thumbnails file from custom PDF "' . $this->pdfThumbnails . '" (original message : ' . $e->getMessage() . ')'); diff --git a/resources/views/fields/fluidbook_composition.blade.php b/resources/views/fields/fluidbook_composition.blade.php index c7b2648a5..e832e5199 100644 --- a/resources/views/fields/fluidbook_composition.blade.php +++ b/resources/views/fields/fluidbook_composition.blade.php @@ -306,6 +306,7 @@ var form = $('
' + '' + '' + + '' + '
'); $('#composition_uploader').append(form); $("#compositionUploadBrowse").click(); @@ -859,17 +860,17 @@ @include('crud::fields.inc.wrapper_start')
{{__('Charger un PDF')}} + class="la la-upload"> {{__('Charger un PDF')}}
-- 2.39.5