From 43b5992c50471526ba706516de8bb7b9c1d970de Mon Sep 17 00:00:00 2001 From: soufiane Date: Wed, 29 Oct 2025 14:46:04 +0100 Subject: [PATCH] wip #7819 @11:00 --- app/Console/Commands/AuditLink.php | 35 +++++++++++++++++++ app/Jobs/AuditLink.php | 54 ++++++++++++++++++++++++++++++ app/Models/FluidbookAuditLink.php | 1 + app/Models/FluidbookCollection.php | 11 +++++- 4 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 app/Console/Commands/AuditLink.php create mode 100644 app/Jobs/AuditLink.php diff --git a/app/Console/Commands/AuditLink.php b/app/Console/Commands/AuditLink.php new file mode 100644 index 000000000..140c91d38 --- /dev/null +++ b/app/Console/Commands/AuditLink.php @@ -0,0 +1,35 @@ +argument('id')); + $c->runAuditLink($this->option('sync', false)); + //$f->generateThumbnailsPreview($this->option('sync', false)); + } +} diff --git a/app/Jobs/AuditLink.php b/app/Jobs/AuditLink.php new file mode 100644 index 000000000..effa0cf86 --- /dev/null +++ b/app/Jobs/AuditLink.php @@ -0,0 +1,54 @@ +c = $collection; + } + public function handle() + { + $externalLinks = []; + foreach ($this->c->publications as $publication) { + LinksData::getLinksAndRulers($publication['fluidbook'], $links, $rulers); + + // We want only url link begin with http or https and webvideo link + // type // 10: web video // 2: url + $links = array_filter($links, function($n){ + return ($n['type'] == 2 && preg_match('/https?:\/\//', $n['to']) ) || $n['type'] == 10; + }); + + foreach ($links as $link) { + $externalLinks[] = [ + 'fluidbook_id' => $publication['fluidbook'], + 'page' => $link['page'], + 'link_id' => $link['uid'], + 'error_code' => false, + 'first_time_error' => '', // Datetime of the first time we saw this error + 'last_date_test' => '', + 'url' => $link['to'], + 'new_url' => '', + 'redirection_code' => '', + 'final_code_url' => '', + 'final_target' => '', + ]; + } + //$externalLinks[] = array_filter($links); + } + dd($externalLinks); + + Log::info('Job exécuté avec succès'); + } +} diff --git a/app/Models/FluidbookAuditLink.php b/app/Models/FluidbookAuditLink.php index 2f5c2b0f5..e02b909d3 100644 --- a/app/Models/FluidbookAuditLink.php +++ b/app/Models/FluidbookAuditLink.php @@ -29,6 +29,7 @@ class FluidbookAuditLink extends ToolboxModel $this->addField('link_id', Integer::class, '',[]); $this->addField('error_code', Text::class, '',[]); $this->addField('first_time_error', Text::class, '',[]); + $this->addField('last_date_test', Text::class, '',[]); $this->addField('url', Text::class, '',[]); $this->addField('new_url', Text::class, '',[]); $this->addField('redirection_code', Text::class, '',[]); diff --git a/app/Models/FluidbookCollection.php b/app/Models/FluidbookCollection.php index 32acd8a20..7db402ac9 100644 --- a/app/Models/FluidbookCollection.php +++ b/app/Models/FluidbookCollection.php @@ -4,12 +4,15 @@ namespace App\Models; use App\Fields\FluidbookExportVersion; use App\Fields\FluidbookStatus; +use App\Fluidbook\Compiler\Links; use App\Http\Controllers\Admin\Operations\ChangeownerOperation; use App\Http\Controllers\Admin\Operations\ChangestatusOperation; use App\Http\Controllers\Admin\Operations\FluidbookCollection\DownloadOperation; use App\Http\Controllers\Admin\Operations\FluidbookCollection\PreviewOperation; use App\Http\Controllers\Admin\Operations\FluidbookCollection\SettingsExportOperation; +use App\Jobs\AuditLink; use App\Jobs\FluidbookCollectionRefreshIndex; +use App\Jobs\GenerateDeliveryThumbnailsPreview; use App\Models\Base\ToolboxDownloadable; use App\Jobs\RefreshUsersTree; use App\Models\Base\ToolboxStatusModel; @@ -249,7 +252,7 @@ class FluidbookCollection extends ToolboxStatusModel ["name" => ".*", "type" => "auto"] ] ]; - + $client = $this->_connectToSearchServer(); $client->collections['fluidbooks']->delete(); $client->collections->create($booksSchema); @@ -262,4 +265,10 @@ class FluidbookCollection extends ToolboxStatusModel dispatch(new FluidbookCollectionRefreshIndex($this->id)); return $res; } + + public function runAuditLink($sync = false) + { + dispatch_sync(new AuditLink($this)); + //dispatch(new GenerateDeliveryThumbnailsPreview($this, 'mobile'))->onQueue('theme'); + } } -- 2.39.5