$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;
}
});
}
+ 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);
--- /dev/null
+<?php
+
+namespace App\Models;
+
+use App\Models\Base\ToolboxModel;
+use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Cubist\Backpack\Magic\Fields\Text;
+use Cubist\Backpack\Magic\Traits\CustomDataSource;
+use DateTime;
+
+class ShortLink extends ToolboxModel
+{
+ use CustomDataSource;
+
+ protected $table = 'short_link';
+ protected $_options = ['name' => '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;
+ }
+}