From: Vincent Vanwaelscappel Date: Fri, 3 Mar 2023 11:08:35 +0000 (+0100) Subject: wait #4774 @1 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=44243a40c19cdc2219af241e0bcc903da249e132;p=fluidbook-toolbox.git wait #4774 @1 --- diff --git a/app/Jobs/FluidbookDocumentUpload.php b/app/Jobs/FluidbookDocumentUpload.php index 6fb7507ca..73b9ee505 100644 --- a/app/Jobs/FluidbookDocumentUpload.php +++ b/app/Jobs/FluidbookDocumentUpload.php @@ -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); } } diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index 06c8045b9..90607476e 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -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(); }