From 08e41c98652864d07d4287f5e0bd51cca4762361 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 3 Feb 2026 18:51:43 +0100 Subject: [PATCH] wip #7868 @0.5 --- app/Models/LinkShortener.php | 24 +++++++++++++++++++++--- app/Models/ShortLink.php | 21 ++++++++++++++------- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/app/Models/LinkShortener.php b/app/Models/LinkShortener.php index 7a15deef7..179bb25e6 100644 --- a/app/Models/LinkShortener.php +++ b/app/Models/LinkShortener.php @@ -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) { diff --git a/app/Models/ShortLink.php b/app/Models/ShortLink.php index 9529176d9..dea7ae625 100644 --- a/app/Models/ShortLink.php +++ b/app/Models/ShortLink.php @@ -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(); + } } -- 2.39.5