From: Vincent Vanwaelscappel Date: Fri, 30 Jan 2026 19:20:41 +0000 (+0100) Subject: wip #7868 @1 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=7fb452f9a7f9727a1f3f797d9f924d1d1258292d;p=fluidbook-toolbox.git wip #7868 @1 --- diff --git a/app/Models/LinkShortener.php b/app/Models/LinkShortener.php index ce41540f6..7a15deef7 100644 --- a/app/Models/LinkShortener.php +++ b/app/Models/LinkShortener.php @@ -29,11 +29,16 @@ class LinkShortener extends ToolboxModel $this->addField('api_key', Text::class, __('Clé d\'API')); } - public static function getAvaiableShorteners() + public static function getAvaiableShorteners($all = false) { $res = []; foreach (self::all() as $server) { - $res[$server->id] = $server->url; + if ($all) { + $d = ['domain' => $server->url, 'api_key' => $server->api_key, 'owner' => $server->owner]; + } else { + $d = $server->url; + } + $res[$server->id] = $d; } return $res; } @@ -61,6 +66,11 @@ class LinkShortener extends ToolboxModel }); } + public static function listAll($shortener) + { + return self::_request('list', ['perpage' => 100000000], $shortener); + } + protected static function _request($action, $data, $shortener, $format = 'json') { $s = self::getShortener($shortener); diff --git a/app/Models/ShortLink.php b/app/Models/ShortLink.php new file mode 100644 index 000000000..6abb23259 --- /dev/null +++ b/app/Models/ShortLink.php @@ -0,0 +1,75 @@ + 'shortlink', + 'singular' => 'lien', + 'plural' => 'liens']; + + protected $_enableEdition = false; + protected $_enableClone = false; + protected $_enableCreation = false; + + protected $_enableRevisions = false; + + protected $primaryKey = 'shorturl'; + public $incrementing = false; + protected $keyType = 'string'; + + protected static $_permissionBase = 'linkshortener'; + + public function setFields() + { + parent::setFields(); + + $this->addField('server', SelectFromArray::class, __('Serveur'), ['options' => LinkShortener::getAvaiableShorteners()]); + $this->addField('url', Text::class, __('URL'), ['column' => true]); + $this->addOwnerField(['column' => false]); + } + + /** + * @throws \Exception + */ + protected static function _getData() + { + $data = []; + foreach (LinkShortener::getAvaiableShorteners(true) as $id => $s) { + try { + foreach (LinkShortener::listAll($id)->result as $i) { + $shorturl = 'https://' . $s['domain'] . '/' . $i->keyword; + $time = new DateTime($i->timestamp); + $d = [ + 'shorturl' => $shorturl, + 'url' => $i->url, + 'server' => $id, + 'created_at' => $time, + 'updated_at' => $time, + 'deleted_at' => null, + 'created_ok' => '1', + 'owner' => $s['owner'], + ]; + $data[$shorturl] = $d; + } + } catch (\Exception $e) { + + } + } + return $data; + } + + public static function shouldRefreshDatabase() + { + return true; + } +}