]> _ Git - fluidbook-toolbox.git/commitdiff
wip #8000 @3
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 12 Feb 2026 18:14:32 +0000 (19:14 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 12 Feb 2026 18:14:32 +0000 (19:14 +0100)
app/Fluidbook/Compiler/Links.php
app/Fluidbook/Link/LinksData.php
app/Http/Controllers/Admin/Operations/FluidbookPublication/Services/ShortLinksOperation.php [new file with mode: 0644]
app/Jobs/AuditLinkRegister.php
app/Models/FluidbookPublication.php
app/Models/ShortLink.php

index 1a82f21092fddd7943e14ec071c97d3d824d7c3f..fe7925d79ee2169f42d51b789f0ef3290b1666db 100644 (file)
@@ -12,6 +12,7 @@ use Fluidbook\Tools\Links\AnchorLink;
 use Fluidbook\Tools\Links\ContentLink;
 use Fluidbook\Tools\Links\NormalLink;
 use Illuminate\Support\Facades\Log;
+use function PHPUnit\Framework\containsOnly;
 
 trait Links
 {
@@ -129,7 +130,9 @@ trait Links
         $linksCopy = $links;
 
         foreach ($linksCopy as $k => $linkData) {
-
+            if(!$linkData['to']) {
+                continue;
+            }
             if (stristr($linkData['to'], 'javascript:canvasToPDF(')) {
                 $this->addJsLib('jspdf', ['js/libs/jspdf.min.js']);
             }
index ab80ca47872f16f574ccb3e8d956502b8e47b6f1..e03fe845eb1978e93cd4dfc5daeb597ec3fa4589 100644 (file)
@@ -574,7 +574,7 @@ class LinksData
         copy($base . '.meta3.gz', $latestMeta);
 
         $fluidbook->touch();
-        if ($fluidbook->linkShortener != 0 && $fluidbook->linkShortener != "none") {
+        if ($fluidbook->linkShortener && $fluidbook->linkShortener != "none") {
             AuditLinkRegister::dispatch();
         }
     }
diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/Services/ShortLinksOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/Services/ShortLinksOperation.php
new file mode 100644 (file)
index 0000000..e547c9f
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\FluidbookPublication\Services;
+
+use App\Fluidbook\Link\LinksData;
+use App\Http\Middleware\CheckIfAdmin;
+use App\Models\FluidbookPublication;
+use Fluidbook\Tools\Links\Link;
+use Illuminate\Support\Facades\Route;
+
+
+trait ShortLinksOperation
+{
+
+    protected function setupShortlinkRoutes($segment, $routeName, $controller)
+    {
+        foreach (['services', 's'] as $segment) {
+            Route::match(['get'], $segment . '/shortlinks/{cid?}', $controller . '@listShortLinks')->withoutMiddleware([CheckIfAdmin::class]);
+        }
+    }
+
+    public function listShortLinks($cid)
+    {
+        $publication = FluidbookPublication::where('cid', $cid)->first();
+        if (null === $publication) {
+            abort(404);
+        }
+        if (!$publication->linkShortener || $publication->linkShortener == 'none') {
+            abort(404);
+        }
+
+        LinksData::getLinksAndRulers($publication->id, $links, $rulers);
+        $res = ['youtube' => []];
+        foreach ($links as $link) {
+            if ($link['type'] == Link::WEBVIDEO && $link['video_service'] == 'youtube') {
+
+            }
+        }
+    }
+
+}
index 1b5fb77ae177130b1181dee0ba4654c3974ec3c5..d8eef35f7659a1dfe5ae1a1ebb0d052fc2c31311 100644 (file)
@@ -69,7 +69,7 @@ class AuditLinkRegister extends Base
                 $link['to'] = trim($link['to']);
                 if (Arr::exists($link, 'video_service')) {
                     if ($link['type'] == LinkAlias::WEBVIDEO && $link['video_service'] === "youtube") {
-                        $link['to'] = "https://youtu.be/" . $link['to'];
+                        $link['to'] = 'https://www.youtube.com/watch?v=' . $link['to'];
                     }
                 }
 
@@ -87,8 +87,6 @@ class AuditLinkRegister extends Base
                     'page' => $link['page'],
                     'url' => $link['to'],
                 ];
-
-
             }
 
             if (count($externalLinks) > 0) {
@@ -108,5 +106,6 @@ class AuditLinkRegister extends Base
         //Log::info('Job exécuté avec succès');
 
         ShortLink::touchChangeFile();
+        AuditLink::dispatch(count($externalLinks));
     }
 }
index 545eb0c37a45d7e842b6bebe50e32755d8bb015d..bed88ed206d1db4ecc09a9eacc2393ff3323d23a 100644 (file)
@@ -35,6 +35,7 @@ use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\GetPageF
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\NewHeidiOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\PDFFormOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\PumaOperation;
+use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\ShortLinksOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\SocialImageOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\StatsOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\UpgradeOperation;
@@ -123,6 +124,7 @@ class FluidbookPublication extends ToolboxStatusModel
         GetPageFromWebsiteOperation::class,
         FormOperation::class,
         PDFFormOperation::class,
+        ShortLinksOperation::class,
         // Carts
         BastideOperation::class,
         PumaOperation::class,
index ad9602c459e405cbf730ecb7168d3e0e16321d1e..1d557419a97ca36bc700ada6f39194839b5743e5 100644 (file)
@@ -50,6 +50,15 @@ class ShortLink extends ToolboxModel
         $this->addField('fluidbook_links', ShortLinkFluidbooks::class, __('Présence dans les fluidbooks'), ['column_label' => '<i class="las la-link" title="' . __('Nombre d\'occurence dans les fluidbooks') . '"></i>', 'column' => true]);
         $this->addOwnerField(['column' => false, 'type' => Hidden::class]);
 
+
+        $servers = LinkShortener::getAvaiableShorteners();
+
+        if (count($servers) > 1) {
+            $this->addFilter('server', 'dropdown', __('Serveur'), function ($value, $crud) {
+                $crud->addClause('where', 'server', '=', $value);
+            }, $servers);
+        }
+
         $this->addFilter('severity', 'dropdown', __('Diagnostic'), function ($value, $crud) {
             if ($value === 'ok') {
                 $crud->addClause('where', 'http_code', '=', 200);
@@ -59,6 +68,7 @@ class ShortLink extends ToolboxModel
                 $crud->addClause('where', 'http_code', '>=', 400);
             }
         }, ['ok' => __('Valide'), 'error' => __('Erreur'), 'warning' => __('Avertissement')]);
+
     }
 
     public function showPrimaryColumn()
@@ -72,10 +82,8 @@ class ShortLink extends ToolboxModel
     protected static function _getData()
     {
         $auditLinks = FluidbookAuditLink::getAllURLAudits();
-
         $data = [];
         foreach (LinkShortener::getAvaiableShorteners(true) as $id => $s) {
-
             foreach (LinkShortener::listAll($id)->result as $i) {
                 $shorturl = 'https://' . $s['domain'] . '/' . $i->keyword;
                 $time = new DateTime($i->timestamp);