From ffc1d8f76680eba8efb2451ce2d0548ef4586608 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Wed, 26 Nov 2025 15:58:20 +0100 Subject: [PATCH] #7850 @1 --- app/Jobs/AuditLinkRegister.php | 24 ++++++++++++++++++------ app/Models/FluidbookCollection.php | 12 ++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/app/Jobs/AuditLinkRegister.php b/app/Jobs/AuditLinkRegister.php index cd8acce3c..a94b45d59 100644 --- a/app/Jobs/AuditLinkRegister.php +++ b/app/Jobs/AuditLinkRegister.php @@ -21,12 +21,11 @@ class AuditLinkRegister extends Base public function handle() { - $publications = Arr::flatten(FluidbookCollection::where('links_audit', 1)->pluck('publications')->toArray(), 1); - - $publications = array_map(function ($n) { - return $n['fluidbook']; - }, $publications); - + $collections = FluidbookCollection::where('links_audit', 1)->get(); + $publications = []; + foreach ($collections as $collection) { + $publications = array_merge($publications, $collection->getFluidbooksID()); + } // Nécessaire pour vérifier si la liste des fluidbooks fourni par les collections // existent vraiment ou s'ils ont été supprimé sans être supprimé dans la collection $publications = FluidbookPublication::whereIn('id', $publications)->pluck('id'); @@ -37,6 +36,7 @@ class AuditLinkRegister extends Base $key = $item->fluidbook_id . '_' . $item->link_id; $existing[$key] = ['fluidbook_id' => $item->fluidbook_id, 'link_id' => $item->link_id, 'page' => $item->page, 'url' => $item->url]; } + $seen = []; foreach ($publications as $publication) { $publication = (int)$publication; @@ -55,6 +55,7 @@ class AuditLinkRegister extends Base }); foreach ($links as $link) { + $seen[] = $publication . '_' . $link['uid']; $link['to'] = trim($link['to']); if (Arr::exists($link, 'video_service')) { if ($link['type'] == LinkAlias::WEBVIDEO && $link['video_service'] === "youtube") { @@ -76,6 +77,8 @@ class AuditLinkRegister extends Base 'page' => $link['page'], 'url' => $link['to'], ]; + + } if (count($externalLinks) > 0) { @@ -84,6 +87,15 @@ class AuditLinkRegister extends Base Log::info('Parsed fluidbook ' . $publication . ' : found ' . count($externalLinks) . ' links'); } + // Delete links that are not anymore in the fluidbooks + $missing = array_diff(array_keys($existing), $seen); + foreach ($missing as $m) { + $e = explode('_', $m, 2); + FluidbookAuditLink::where('fluidbook_id', $e[0])->where('link_id', $e[1])->delete(); + + } + Log::info('Deleted ' . count($missing) . ' links'); + Log::info('Job exécuté avec succès'); } diff --git a/app/Models/FluidbookCollection.php b/app/Models/FluidbookCollection.php index 4bc3127ba..993f44be4 100644 --- a/app/Models/FluidbookCollection.php +++ b/app/Models/FluidbookCollection.php @@ -216,6 +216,18 @@ class FluidbookCollection extends ToolboxStatusModel } } + public function getFluidbooksID(){ + $res=[]; + $fluidbooks=$this->publications; + if(!is_array($fluidbooks)){ + $fluidbooks=json_decode($fluidbooks,true); + } + foreach ($fluidbooks as $fluidbook) { + $res[]=$fluidbook['fluidbook']; + } + return array_unique($res); + } + public function setStatus($newStatus) { parent::setStatus($newStatus); -- 2.39.5