From: Vincent Vanwaelscappel Date: Fri, 13 Feb 2026 15:54:54 +0000 (+0100) Subject: wip #8000 @2 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=a2fc2f1807f07611fad93c8ba498e9afcd71f366;p=fluidbook-toolbox.git wip #8000 @2 --- diff --git a/app/Fluidbook/Link/LinksData.php b/app/Fluidbook/Link/LinksData.php index e03fe845e..30b6d83eb 100644 --- a/app/Fluidbook/Link/LinksData.php +++ b/app/Fluidbook/Link/LinksData.php @@ -552,7 +552,7 @@ class LinksData self::_fixLinks($links); } - public static function saveLinksInFile($book_id, $user_id, $comments, $links, $rulers = [], $specialLinks = [], $specialRulers = []) + public static function saveLinksInFile($book_id, $user_id, $comments, $links, $rulers = [], $specialLinks = [], $specialRulers = [], $triggerJobs = true) { /** @var FluidbookPublication $fluidbook */ $fluidbook = FluidbookPublication::withoutGlobalScopes()->find($book_id); @@ -572,10 +572,13 @@ class LinksData file_put_contents($base . '.links3.gz', gzencode(json_encode($lr))); copy($base . '.links3.gz', $latestLinks); copy($base . '.meta3.gz', $latestMeta); - + $fluidbook->touch(); - if ($fluidbook->linkShortener && $fluidbook->linkShortener != "none") { - AuditLinkRegister::dispatch(); + + if ($triggerJobs) { + if ($fluidbook->linkShortener && $fluidbook->linkShortener != "none") { + AuditLinkRegister::dispatch(); + } } } diff --git a/app/Jobs/AuditLink.php b/app/Jobs/AuditLink.php index 572b04573..eacf5adce 100644 --- a/app/Jobs/AuditLink.php +++ b/app/Jobs/AuditLink.php @@ -45,7 +45,6 @@ class AuditLink extends Base HTTP::setCookieFile(Files::mkdir(protected_path('fluidbookpublication/linkaudit')) . 'cookies.txt'); $this->extracted($urls); - Log::info('Job exécuté avec succès'); ShortLink::touchChangeFile(); } diff --git a/app/Jobs/AuditLinkRegister.php b/app/Jobs/AuditLinkRegister.php index d8eef35f7..eaa1adafb 100644 --- a/app/Jobs/AuditLinkRegister.php +++ b/app/Jobs/AuditLinkRegister.php @@ -105,7 +105,8 @@ class AuditLinkRegister extends Base //Log::info('Deleted ' . count($missing) . ' links'); //Log::info('Job exécuté avec succès'); + $f = $this->isSync() ? 'dispatchSync' : 'dispatch'; + AuditLink::$f(count($externalLinks)); ShortLink::touchChangeFile(); - AuditLink::dispatch(count($externalLinks)); } } diff --git a/app/Models/ShortLink.php b/app/Models/ShortLink.php index 1d557419a..2398eff27 100644 --- a/app/Models/ShortLink.php +++ b/app/Models/ShortLink.php @@ -3,6 +3,9 @@ namespace App\Models; use App\Fields\ShortLinkFluidbooks; +use App\Fluidbook\Link\Link; +use App\Fluidbook\Link\LinksData; +use App\Jobs\AuditLinkRegister; use App\Models\Base\ToolboxModel; use Carbon\Carbon; use Cubist\Backpack\CubistBackpackServiceProvider; @@ -12,6 +15,7 @@ use Cubist\Backpack\Magic\Fields\SelectFromArray; use Cubist\Backpack\Magic\Fields\URL; use Cubist\Backpack\Magic\Traits\CustomDataSource; use Cubist\Util\Files\Files; +use Cubist\Util\WebVideo; use DateTime; class ShortLink extends ToolboxModel @@ -115,15 +119,36 @@ class ShortLink extends ToolboxModel return Files::mkdir(resource_path('shortlink')) . 'lastchange'; } - public static function shouldRefreshDatabase() - { - return true; - } - public function onSaved(): bool { - if ($this->url !== LinkShortener::expand($this->shortlink, $this->server)) { + $formerValue = LinkShortener::expand($this->shortlink, $this->server); + if ($this->url !== $formerValue) { LinkShortener::updateURL($this->shortlink, $this->url, $this->server); + $fbl = json_decode($this->fluidbook_links, true); + if (count($fbl) > 0) { + $fluidbooks = []; + foreach ($fbl as $l) { + if (!isset($fluidbooks[$l['fluidbook_id']])) { + $fluidbooks[$l['fluidbook_id']] = []; + } + $fluidbooks[$l['fluidbook_id']][$l['link_id']] = $l; + } + + foreach ($fluidbooks as $id => $changedLinks) { + LinksData::getLinksAndRulers($id, $links, $rulers); + foreach ($changedLinks as $uid => $l) { + $currentLink = $links[$uid]; + if ($currentLink['type'] == Link::WEBVIDEO && $currentLink['video_service'] == 'youtube') { + $links[$uid]['to'] = WebVideo::_findVideoId($this->url, 'youtube'); + } else { + $links[$uid]['to'] = $this->uid; + } + } + LinksData::saveLinksInFile($id, backpack_user()->id, __('Lien court :shortlink édité', ['shortlink' => $this->shortlink]), $links, $rulers, [], [], false); + } + } + AuditLinkRegister::dispatchSync(); + static::touchChangeFile(); } return parent::onSaved(); }