$this->config->push('triggersLinks', ['page' => $page, 'link' => $link, 'delay' => $delay]);
}
+ public function shortenURL($url)
+ {
+ if ($this->config->linkShortener === 'none' || !Url::isDistant($url)) {
+ return $url;
+ }
+ return $url;
+ }
}
namespace App\Fluidbook;
+use GuzzleHttp\Client;
+
class LinkShortener
{
+ protected static $shorteners = ['l.fluidbook.com' => '324507fb8d'];
+
public static function getAvaiableShorteners()
{
- return ['l.fluidbook.com'];
+ return array_keys(self::$shorteners);
+ }
+
+ public static function shorturl($url, $shortener)
+ {
+ return cache()->remember('shorturl_' . $shortener . '_' . $url, 3600, function () use ($url, $shortener) {
+ $res = self::_request('shorturl', ['url' => $url], $shortener);
+ if ($res->shorturl) {
+ return $res->shorturl;
+ }
+ });
+ }
+
+ protected static function _request($action, $data, $shortener, $format = 'json')
+ {
+ if (!isset(self::$shorteners[$shortener])) {
+ throw new \Exception("shortener " . $shortener . " not available");
+ }
+
+ $apiURL = 'https://' . $shortener . '/yourls-api.php';
+ $data['action'] = $action;
+ $data['format'] = $format;
+ $data['hash'] = 'sha512';
+ $data['timestamp'] = time();
+ $data['signature'] = hash($data['hash'], $data['timestamp'] . self::$shorteners[$shortener]);
+
+ $client = new Client();
+ $response = $client->request('POST', $apiURL, ['form_params' => $data, 'http_errors' => false]);
+ return json_decode($response->getBody());
}
}
--- /dev/null
+<?php
+
+namespace App\Http\Controllers\Admin;
+
+class FluidbookAuditLinkCrudController extends \Cubist\Backpack\Magic\Controllers\CubistMagicController
+{
+ use \Cubist\Backpack\Magic\Operations\CreateOperation;
+ use \Cubist\Backpack\Http\Controllers\Operations\CloneEditOperation;
+ use \Backpack\CRUD\app\Http\Controllers\Operations\UpdateOperation;
+ use \Cubist\Backpack\Http\Controllers\Operations\BulkPublishOperation;
+ use \Backpack\CRUD\app\Http\Controllers\Operations\CloneOperation;
+ use \Backpack\CRUD\app\Http\Controllers\Operations\BulkCloneOperation;
+ use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
+ use \Backpack\CRUD\app\Http\Controllers\Operations\BulkDeleteOperation;
+
+
+
+ /*
+ __('auditlink')
+ __('auditlinks')
+ */
+
+ protected $_modelNamespace = 'App\Models\FluidbookAuditLink';
+ protected $_routeURL = 'fluidbook-audit_link';
+ protected $_singular = 'auditlink';
+ protected $_plural = 'auditlinks';
+ protected $_oneInstance= false;
+}
use \App\Http\Controllers\Admin\Operations\ChangestatusOperation;
use \App\Http\Controllers\Admin\Operations\FluidbookCollection\SettingsExportOperation;
use \App\Http\Controllers\Admin\Operations\FluidbookCollection\AuditLinksOperation;
+
/*
use \App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\ExportPdfOperation;
use \App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\GetPageFromWebsiteOperation;
use \App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\FormOperation;
+ use \App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\PDFFormOperation;
use \App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\BastideOperation;
use \App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\PumaOperation;
use \App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\KimplayOperation;
$this->_addSettingField('', FormSeparator::class);
$this->_addSettingField('autolinkRule', SelectFromArray::class, $this->__('Règle pour l\'ajout des liens via excel'), ["default" => "web", 'options' => ['web' => 'Lien web', 'cart' => __('Lien panier'), 'steelite' => 'Steelite']]);
$this->_addSettingField('', FormSeparator::class);
- $shorteners = LinkShortener::getAvaiableShorteners();
$options = ['none' => $this->__('Aucun')];
- foreach ($shorteners as $shortener) {
+ foreach (LinkShortener::getAvaiableShorteners() as $shortener) {
$options[$shortener] = $shortener;
}
$this->_addSettingField('linkShortener', SelectFromArray::class, $this->__('Raccourcisseur de liens'), ['default' => 'none', 'options' => $options]);