]> _ Git - fluidbook-toolbox.git/commitdiff
wait #4774 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 3 Mar 2023 11:08:35 +0000 (12:08 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 3 Mar 2023 11:08:35 +0000 (12:08 +0100)
app/Jobs/FluidbookDocumentUpload.php
app/Models/FluidbookPublication.php

index 6fb7507ca867f2861299574ebf61db814511be81..73b9ee50569a6941ce1c792150f01c9080cee84a 100644 (file)
@@ -6,6 +6,7 @@ use App\Fluidbook\Links;
 use App\Models\FluidbookDocument;
 use App\Models\User;
 use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\Log;
 
 class FluidbookDocumentUpload extends Base
 {
@@ -40,9 +41,8 @@ class FluidbookDocumentUpload extends Base
         try {
             FluidbookDocumentUpload::updateProgression($this->uploadID, $this->document->id, __('Début du traitement du document'), 1.25);
             $this->document->processUpload($this->uploadID, $sync);
-            Links::addLinksFromPDF($this->fluidbook_id);
         } catch (\Throwable $e) {
-            error_log($e);
+            Log::error($e);
             FluidbookDocumentUpload::updateProgression($this->uploadID, $this->document->id, __('Une erreur s\'est produite :error', ['error' => $e->getMessage()]), -1);
         }
     }
index 06c8045b92c2a1b0b36b88a05357080d6e74387d..90607476e9126e7ad9acb5271d03795abdab5934 100644 (file)
@@ -58,6 +58,8 @@ class FluidbookPublication extends ToolboxSettingsModel
 
     protected $_documentsSize = null;
 
+    protected $_compositionUpdated = false;
+
 
     use PublicationSettings;
     use SCORMVersionTrait;
@@ -166,11 +168,45 @@ class FluidbookPublication extends ToolboxSettingsModel
 
     }
 
+    protected function _normalizeComposition($c)
+    {
+        if (is_string($c)) {
+            $c = json_decode($c, true);
+        }
+        $c = ArrayUtil::asArray($c);
+
+        $res = [];
+        foreach ($c as $k => $item) {
+            if (null === $item) {
+                return [];
+            }
+            $res[intval($k)] = [intval($item[0]), intval($item[1])];
+        }
+        ksort($res);
+        return $res;
+    }
+
+    public function setAttribute($key, $value)
+    {
+        if ($key === 'composition') {
+            $value = $this->_normalizeComposition($value);
+            if ($this->_normalizeComposition($this->getAttribute($key)) !== $value) {
+                $this->_compositionUpdated = true;
+            }
+            $this->composition = $value;
+        }
+        return parent::setAttribute($key, $value);
+    }
+
+
     public function onSaving(): bool
     {
         $this->setComposedAttributes();
         $this->checkHash();
         $this->checkExternalServers();
+        if ($this->_compositionUpdated) {
+            $this->setAttribute('composition_updated_at', new Datetime());
+        }
         return parent::onSaving();
     }
 
@@ -186,7 +222,10 @@ class FluidbookPublication extends ToolboxSettingsModel
     {
         $this->setComposedAttributes();
         $this->checkHash();
-        FluidbookImagesPreprocess::dispatch($this->id);
+        if ($this->_compositionUpdated) {
+            Links::addLinksFromPDF($this->id);
+            FluidbookImagesPreprocess::dispatch($this->id);
+        }
         return parent::onSaved();
     }