--- /dev/null
+<?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";
+
+ }
+ });
+ }
+}
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>',