]> _ Git - fluidbook-toolbox.git/commitdiff
wip #7868 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 3 Feb 2026 17:51:43 +0000 (18:51 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 3 Feb 2026 17:51:43 +0000 (18:51 +0100)
app/Models/LinkShortener.php
app/Models/ShortLink.php

index 7a15deef793852363765aef6a29b2bf1d2a472d9..179bb25e64cf93abd9d99af7948f68b2b1fc4ae6 100644 (file)
@@ -56,22 +56,40 @@ class LinkShortener extends ToolboxModel
         return self::$_cache[$id];
     }
 
+    public static function expand($shorturl, $shortener)
+    {
+        $res = self::_request('expand', ['shorturl' => $shorturl], $shortener, $code);
+        return $res->longurl ?? false;
+    }
+
     public static function shorturl($url, $shortener)
     {
         return cache()->remember('shorturl_' . $shortener . '_' . $url, 3600, function () use ($url, $shortener) {
-            $res = self::_request('shorturl', ['url' => $url], $shortener);
+            $res = self::_request('shorturl', ['url' => $url], $shortener, $code);
+            if ($code === 200) {
+
+            }
             if ($res->shorturl) {
                 return $res->shorturl;
             }
         });
     }
 
+
+    public static function updateURL($shorturl, $newurl, $shortener)
+    {
+        $res = self::_request('update', ['shorturl' => $shorturl, 'url' => $newurl, 'title' => 'auto'], $shortener, $code);
+        if ($code === 200) {
+            ShortLink::touchChangeFile();
+        }
+    }
+
     public static function listAll($shortener)
     {
-        return self::_request('list', ['perpage' => 100000000], $shortener);
+        return self::_request('list', ['perpage' => 100000000], $shortener, $code);
     }
 
-    protected static function _request($action, $data, $shortener, $format = 'json')
+    protected static function _request($action, $data, $shortener, &$code, $format = 'json')
     {
         $s = self::getShortener($shortener);
         if (!$s) {
index 9529176d9ddc5a5990cb3f35718345c8e0736c7f..dea7ae62522827be6e101547fe8e6265c1974c5b 100644 (file)
@@ -3,10 +3,11 @@
 namespace App\Models;
 
 use App\Models\Base\ToolboxModel;
+use Cubist\Backpack\Magic\Fields\Hidden;
 use Cubist\Backpack\Magic\Fields\SelectFromArray;
-use Cubist\Backpack\Magic\Fields\Text;
 use Cubist\Backpack\Magic\Fields\URL;
 use Cubist\Backpack\Magic\Traits\CustomDataSource;
+use Cubist\Util\Files\Files;
 use DateTime;
 
 class ShortLink extends ToolboxModel
@@ -34,10 +35,10 @@ class ShortLink extends ToolboxModel
     {
         parent::setFields();
 
-        $this->addField('server', SelectFromArray::class, __('Serveur'), ['options' => LinkShortener::getAvaiableShorteners()]);
+        $this->addField('server', SelectFromArray::class, __('Serveur'), ['type' => 'hidden', 'options' => LinkShortener::getAvaiableShorteners()]);
         $this->addField('url', URL::class, __('URL'), ['column' => true]);
-        $this->addField('shortlink', URL::class, __('Short URL'), ['column' => true, 'database_unique' => true]);
-        $this->addOwnerField(['column' => false]);
+        $this->addField('shortlink', URL::class, __('Short URL'), ['type' => 'hidden_visible', 'column' => true, 'database_unique' => true]);
+        $this->addOwnerField(['column' => false, 'type' => Hidden::class]);
 
     }
 
@@ -72,10 +73,16 @@ class ShortLink extends ToolboxModel
         return $data;
     }
 
-    public static function shouldRefreshDatabase()
+    public static function getDataLastChangeFile()
     {
-        return true;
+        return Files::mkdir(resource_path('shortlink')) . 'lastchange';
     }
 
-
+    public function onSaved(): bool
+    {
+        if ($this->url !== LinkShortener::expand($this->shortlink, $this->server)) {
+            LinkShortener::updateURL($this->shortlink, $this->url, $this->server);
+        }
+        return parent::onSaved();
+    }
 }