]> _ Git - fluidbook-toolbox.git/commitdiff
wip #7877 @4
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 2 Dec 2025 17:47:45 +0000 (18:47 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 2 Dec 2025 17:47:45 +0000 (18:47 +0100)
app/Console/Commands/FluidbookAccessibilityOptions.php [new file with mode: 0644]
app/Models/Traits/PublicationSettings.php

diff --git a/app/Console/Commands/FluidbookAccessibilityOptions.php b/app/Console/Commands/FluidbookAccessibilityOptions.php
new file mode 100644 (file)
index 0000000..244e0eb
--- /dev/null
@@ -0,0 +1,75 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Console\Commands\Base\ToolboxCommand;
+use App\Fluidbook\Link\LinksData;
+use App\Models\FluidbookPublication;
+use Fluidbook\Tools\Links\Link;
+use Illuminate\Support\Facades\DB;
+
+class FluidbookAccessibilityOptions extends ToolboxCommand
+{
+    protected $signature = 'fluidbook:accessibility:options';
+    protected $description = 'Fix and cleanup accessibility options of all fluidbooks';
+
+    public function handle()
+    {
+        $voices = [
+            'readspeaker:Sophie/en_us' => '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";
+
+            }
+        });
+    }
+}
index 95103f443f0128804239d9a0390d342f05f92f29..e2af9eccd6176d355b15f5fd37ecc93a6be90c07 100644 (file)
@@ -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' => '<a href="/fluidbook-publication/$id/pdftextsforaudiodescription">' . $this->__('Télécharger les contenus extraits du PDF au format audiodescription') . '</a>',