]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6501 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 21 Nov 2023 19:02:42 +0000 (20:02 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 21 Nov 2023 19:02:42 +0000 (20:02 +0100)
app/Fluidbook/Farm.php
app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php
app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php
app/Http/Controllers/Admin/Operations/FluidbookPublication/Services/ExportPdfOperation.php
app/Models/FluidbookDocument.php
app/Models/FluidbookPublication.php
resources/views/fields/fluidbook_composition.blade.php

index 233f63af483d0787ffe551ceb6b0eb589395c6ec..933890ff00018cfd1db3e219efaad00115ee258f 100644 (file)
@@ -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);
index fdd95b809fc68f15b494cd0971af8f564434c7de..400f01b19d47937804bf9099940186ca5587ad77 100644 (file)
@@ -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]);
     }
 
index 43ddc7da33f9b1c17773c43a4adcf74ca05bc52e..821ad064a2b236a335122c9c9775d06255113bec 100644 (file)
@@ -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();
         }
 
index dea5f053ce6b464903f185d9f4340cf998796626..8c78fa558b8c6bbc76fcdc9326fe62dde377de0a 100644 (file)
@@ -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;
 
index b9cdac7c2f4e95fd9a4f38469ce7a1b86a9ab316..7ea25ab6b09d9e32ad920fb688613925aaa5769c 100644 (file)
@@ -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());
         }
index b15b4b3ac6a297585ed9a4c6beb940199f7d3bec..81ecbc1185021e886c471f5f313cdf6cb54baf18 100644 (file)
@@ -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() . ')');
index c7b2648a58a5f78d8069ec6c6972470a254f82ca..e832e51998023c9900d2adc22e9f48e63b7aa889 100644 (file)
                     var form = $('<form id="compositionUploadForm" action="{{backpack_url($entry->getOption('name').'/uploaddocument')}}" enctype="multipart/form-data" method="post">' +
                         '<input type="file" id="compositionUploadBrowse" name="file" value="" accept=".pdf" />' +
                         '<input type="hidden" name="_token" value="{{csrf_token()}}" />' +
+                        '<input type="hidden" name="fluidbook_id" value="{{$entry->id}}" />' +
                         '</form>');
                     $('#composition_uploader').append(form);
                     $("#compositionUploadBrowse").click();
 @include('crud::fields.inc.wrapper_start')
 <div id="composition">
     <input
-            id="compositionField"
-            type="hidden"
-            name="{{ $field['name'] }}"
-            value="{{ $v }}"
-            data-doc-sizes="{{  json_encode($entry->getDocumentSizes()) }}"
-            @include('crud::fields.inc.attributes')
+        id="compositionField"
+        type="hidden"
+        name="{{ $field['name'] }}"
+        value="{{ $v }}"
+        data-doc-sizes="{{  json_encode($entry->getDocumentSizes()) }}"
+        @include('crud::fields.inc.attributes')
     >
     <div id="composition_uploader">
         <a class="btn btn-primary" href="#" data-toggle="tooltip" title="{{__('Charger un PDF')}}"
            id="compositionAddPDF"><i
-                    class="la la-upload"></i> {{__('Charger un PDF')}}</a>
+                class="la la-upload"></i> {{__('Charger un PDF')}}</a>
     </div>
     <div id="composition_pages"></div>
     <div id="composition_history">