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) {
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
{
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]);
}
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();
+ }
}