From 6f78e04089b68c2be0102ef3e685503cf1b78f9f Mon Sep 17 00:00:00 2001 From: Afterster Date: Tue, 15 Oct 2013 00:08:23 +0200 Subject: [PATCH] Add YOURLS shortener, with optional IDN support --- .../shorten.multi/class.multiShortener.php | 35 +++++++++++++++++++ .../plugins/shorten.multi/i18n/conf/en.php | 2 ++ .../plugins/shorten.multi/i18n/conf/es.php | 2 ++ .../plugins/shorten.multi/i18n/conf/fr.php | 2 ++ .../plugins/shorten.multi/i18n/conf/pt.php | 2 ++ core/src/plugins/shorten.multi/manifest.xml | 4 +++ 6 files changed, 47 insertions(+) diff --git a/core/src/plugins/shorten.multi/class.multiShortener.php b/core/src/plugins/shorten.multi/class.multiShortener.php index 4e940d85fe..8c73763864 100755 --- a/core/src/plugins/shorten.multi/class.multiShortener.php +++ b/core/src/plugins/shorten.multi/class.multiShortener.php @@ -114,6 +114,41 @@ public function postProcess($action, $httpVars, $params) } break; + case 4: + $url = $params["ob_output"]; + if (!isSet($type["YOURLS_DOMAIN"])) { + print($url); + $this->logError("Config", "yourls Shortener : you must set the domain name"); + return; + } + if (!isSet($type["YOURLS_APIKEY"])) { + print($url); + $this->logError("Config", "yourls Shortener : you must set the api key"); + return; + } + $useidn = false; + if (isSet($type["YOURLS_USEIDN"])) { + $useidn = $type["YOURLS_USEIDN"]; + } + $yourls_domain = $type["YOURLS_DOMAIN"]; + $yourls_api = $type["YOURLS_APIKEY"]; + $yourls = 'http://'.$yourls_domain.'/yourls-api.php?signature='.$yourls_api.'&action=shorturl&format=simple&url='.urlencode($url); + $response = AJXP_Utils::getRemoteContent($yourls); + if (isSet($response)) { + $shorturl = $response; + if ($useidn) { + // WARNING: idn_to_utf8 requires php-idn module. + // WARNING: http_build_url requires php-pecl-http module. + $purl = parse_url($shorturl); + $purl['host'] = idn_to_utf8($purl['host']); + $shorturl = http_build_url($purl); + } + print($shorturl); + $this->updateMetaShort($httpVars["file"], $shorturl); + } else { + print($url); + } + break; } diff --git a/core/src/plugins/shorten.multi/i18n/conf/en.php b/core/src/plugins/shorten.multi/i18n/conf/en.php index 2e07b1a592..812c3e8351 100755 --- a/core/src/plugins/shorten.multi/i18n/conf/en.php +++ b/core/src/plugins/shorten.multi/i18n/conf/en.php @@ -22,4 +22,6 @@ "Bit.ly account user name" => "Bit.ly account user name", "API Key" => "API Key", "Bit.ly account API Key" => "Bit.ly account API Key", +"Yourls domain" => "Yourls domain", +"Use IDN" => "Use IDN", ); diff --git a/core/src/plugins/shorten.multi/i18n/conf/es.php b/core/src/plugins/shorten.multi/i18n/conf/es.php index d257a74d92..f196133d2f 100755 --- a/core/src/plugins/shorten.multi/i18n/conf/es.php +++ b/core/src/plugins/shorten.multi/i18n/conf/es.php @@ -22,4 +22,6 @@ "Bit.ly account user name" => "Usuario de la cuenta Bit.ly", "API Key" => "Clave API", "Bit.ly account API Key" => "Clave API de la cuenta Bit.ly", +"Yourls domain" => "Yourls domain", +"Use IDN" => "Use IDN", ); diff --git a/core/src/plugins/shorten.multi/i18n/conf/fr.php b/core/src/plugins/shorten.multi/i18n/conf/fr.php index 2e07b1a592..812c3e8351 100755 --- a/core/src/plugins/shorten.multi/i18n/conf/fr.php +++ b/core/src/plugins/shorten.multi/i18n/conf/fr.php @@ -22,4 +22,6 @@ "Bit.ly account user name" => "Bit.ly account user name", "API Key" => "API Key", "Bit.ly account API Key" => "Bit.ly account API Key", +"Yourls domain" => "Yourls domain", +"Use IDN" => "Use IDN", ); diff --git a/core/src/plugins/shorten.multi/i18n/conf/pt.php b/core/src/plugins/shorten.multi/i18n/conf/pt.php index aaa417ad63..97d40235d7 100644 --- a/core/src/plugins/shorten.multi/i18n/conf/pt.php +++ b/core/src/plugins/shorten.multi/i18n/conf/pt.php @@ -24,4 +24,6 @@ "Bit.ly account API Key" => "Chave API da conta Bit.ly", "Shorten Download Links before sending them back to the user." => "Shorten Download Links before sending them back to the user.", "Shorten Download Links before sending them back to the user. Requires a Bit.ly account." => "Shorten Download Links before sending them back to the user. Requires a Bit.ly account.", +"Yourls domain" => "Yourls domain", +"Use IDN" => "Use IDN", ); diff --git a/core/src/plugins/shorten.multi/manifest.xml b/core/src/plugins/shorten.multi/manifest.xml index 92a63af377..29458a51ad 100755 --- a/core/src/plugins/shorten.multi/manifest.xml +++ b/core/src/plugins/shorten.multi/manifest.xml @@ -23,6 +23,10 @@ + + + +