From afc0a933cd03f8be2cc5e67b9b6ff01e20b921a4 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 2 Dec 2025 18:47:45 +0100 Subject: [PATCH] wip #7877 @4 --- .../FluidbookAccessibilityOptions.php | 75 +++++++++++++++++++ app/Models/Traits/PublicationSettings.php | 2 +- 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 app/Console/Commands/FluidbookAccessibilityOptions.php diff --git a/app/Console/Commands/FluidbookAccessibilityOptions.php b/app/Console/Commands/FluidbookAccessibilityOptions.php new file mode 100644 index 000000000..244e0eb53 --- /dev/null +++ b/app/Console/Commands/FluidbookAccessibilityOptions.php @@ -0,0 +1,75 @@ + 'azuretts:en-US/Female/en-US-AvaMultilingualNeural', + 'festival:voice_cmu_us_slt_arctic_hts' => 'azuretts:en-US/Female/en-US-AvaMultilingualNeural' + ]; + + + + + FluidbookPublication::withoutTimestamps(function () { + $ids = DB::select('SELECT id FROM fluidbook_publication'); + foreach ($ids as $id) { + $fluidbook = FluidbookPublication::withoutGlobalScopes()->find($id->id); + if(!$fluidbook){ + continue; + } + + if ($fluidbook->accessible_contents) { + continue; + } + /** @var $fluidbook FluidbookPublication */ + $hasAudiodescriptionContents = false; + $dir = $fluidbook->getAssetDir(); + if ($fluidbook->audiodescriptionTexts) { + $hasAudiodescriptionContents = true; + } + if (!$hasAudiodescriptionContents) { + try { + LinksData::getLinksAndRulers($fluidbook->id, $links, $rulers); + foreach ($links as $link) { + if ($link['type'] == Link::AUDIODESCRIPTION) { + $hasAudiodescriptionContents = true; + break; + } + } + } catch (\Error|\Exception $e) { + + } + } + + if (!$hasAudiodescriptionContents) { + $fluidbook->audiodescriptionTexts = ''; + $fluidbook->audiodescriptionVoice = ''; + $fluidbook->accessible_contents = 'disabled'; + } else { + $fluidbook->audiodescription = '1'; + if (isset($voices[$fluidbook->audiodescriptionVoice])) { + $fluidbook->audiodescriptionVoice = $voices[$fluidbook->audiodescriptionVoice]; + } + $fluidbook->accessible_contents = 'excel'; + } + + $fluidbook->saveQuietly(); + echo $fluidbook->id . "\n"; + + } + }); + } +} diff --git a/app/Models/Traits/PublicationSettings.php b/app/Models/Traits/PublicationSettings.php index 95103f443..e2af9eccd 100644 --- a/app/Models/Traits/PublicationSettings.php +++ b/app/Models/Traits/PublicationSettings.php @@ -1304,7 +1304,7 @@ trait PublicationSettings protected function _accessibility() { $this->_addSettingField('section_accessibility', FormBigSection::class, $this->__('Accessibilité')); - $this->_addSettingField('accessible_contents', SelectFromArray::class, $this->__('Contenus alternatifs accessibles'), ['default' => 'disabled', 'options' => ['disabled' => __('Désactivés'), 'docling' => __('Contenus accessibles extraits automatiquement et édités'), 'excel' => __('Fichier excel ou liens "audiodescription"')]]); + $this->_addSettingField('accessible_contents', SelectFromArray::class, $this->__('Contenus alternatifs accessibles'), ['default' => 'disabled', 'options' => ['disabled' => __('Désactivés'), 'docling' => __('Contenus accessibles') . ' (docling)', 'excel' => __('Fichier excel ou liens "audiodescription"')]]); $this->_addSettingField('audiodescriptionTexts', FilesOrURL::class, $this->__('Contenus textuels'), [ 'accept' => self::$acceptXLSX, 'hint' => '' . $this->__('Télécharger les contenus extraits du PDF au format audiodescription') . '', -- 2.39.5