From fd08b50a80c3aed25f9e2a19cbfe9fb3ad35cf1f Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Tue, 7 Nov 2017 20:23:58 +0100 Subject: Don't URL encode description links if parameter 'redirector.encode_url' is set to false --- application/FeedBuilder.php | 2 +- application/LinkUtils.php | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) (limited to 'application') diff --git a/application/FeedBuilder.php b/application/FeedBuilder.php index 3cfaafb4..ebae18b4 100644 --- a/application/FeedBuilder.php +++ b/application/FeedBuilder.php @@ -152,7 +152,7 @@ class FeedBuilder } else { $permalink = ''. t('Permalink') .''; } - $link['description'] = format_description($link['description'], '', $pageaddr); + $link['description'] = format_description($link['description'], '', false, $pageaddr); $link['description'] .= PHP_EOL .'
— '. $permalink; $pubDate = $link['created']; diff --git a/application/LinkUtils.php b/application/LinkUtils.php index 267e62cd..e3d95d08 100644 --- a/application/LinkUtils.php +++ b/application/LinkUtils.php @@ -102,12 +102,13 @@ function count_private($links) * * @param string $text input string. * @param string $redirector if a redirector is set, use it to gerenate links. + * @param bool $urlEncode Use `urlencode()` on the URL after the redirector or not. * * @return string returns $text with all links converted to HTML links. * * @see Function inspired from http://www.php.net/manual/en/function.preg-replace.php#85722 */ -function text2clickable($text, $redirector = '') +function text2clickable($text, $redirector = '', $urlEncode = true) { $regex = '!(((?:https?|ftp|file)://|apt:|magnet:)\S+[a-z0-9\(\)]/?)!si'; @@ -117,8 +118,9 @@ function text2clickable($text, $redirector = '') // Redirector is set, urlencode the final URL. return preg_replace_callback( $regex, - function ($matches) use ($redirector) { - return ''. $matches[1] .''; + function ($matches) use ($redirector, $urlEncode) { + $url = $urlEncode ? urlencode($matches[1]) : $matches[1]; + return ''. $matches[1] .''; }, $text ); @@ -164,12 +166,13 @@ function space2nbsp($text) * * @param string $description shaare's description. * @param string $redirector if a redirector is set, use it to gerenate links. + * @param bool $urlEncode Use `urlencode()` on the URL after the redirector or not. * @param string $indexUrl URL to Shaarli's index. - * + * @return string formatted description. */ -function format_description($description, $redirector = '', $indexUrl = '') { - return nl2br(space2nbsp(hashtag_autolink(text2clickable($description, $redirector), $indexUrl))); +function format_description($description, $redirector = '', $urlEncode = true, $indexUrl = '') { + return nl2br(space2nbsp(hashtag_autolink(text2clickable($description, $redirector, $urlEncode), $indexUrl))); } /** -- cgit v1.2.3