mirror of
https://github.com/friendica/friendica
synced 2024-11-09 16:22:56 +00:00
commit
6b04dcf90b
1 changed files with 19 additions and 1 deletions
|
@ -48,6 +48,7 @@ use Friendica\Util\ParseUrl;
|
||||||
use Friendica\Util\Proxy;
|
use Friendica\Util\Proxy;
|
||||||
use Friendica\Util\Strings;
|
use Friendica\Util\Strings;
|
||||||
use Friendica\Util\XML;
|
use Friendica\Util\XML;
|
||||||
|
use GuzzleHttp\Psr7\Uri;
|
||||||
|
|
||||||
class BBCode
|
class BBCode
|
||||||
{
|
{
|
||||||
|
@ -147,7 +148,7 @@ class BBCode
|
||||||
case 'title':
|
case 'title':
|
||||||
$value = self::toPlaintext(html_entity_decode($value, ENT_QUOTES, 'UTF-8'));
|
$value = self::toPlaintext(html_entity_decode($value, ENT_QUOTES, 'UTF-8'));
|
||||||
$value = html_entity_decode($value, ENT_QUOTES, 'UTF-8');
|
$value = html_entity_decode($value, ENT_QUOTES, 'UTF-8');
|
||||||
$data['title'] = self::escapeUrl($value);
|
$data['title'] = self::escapeContent($value);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
$data[$field] = html_entity_decode($value, ENT_QUOTES, 'UTF-8');
|
$data[$field] = html_entity_decode($value, ENT_QUOTES, 'UTF-8');
|
||||||
|
@ -312,6 +313,7 @@ class BBCode
|
||||||
|
|
||||||
public static function proxyUrl(string $image, int $simplehtml = self::INTERNAL, int $uriid = 0, string $size = ''): string
|
public static function proxyUrl(string $image, int $simplehtml = self::INTERNAL, int $uriid = 0, string $size = ''): string
|
||||||
{
|
{
|
||||||
|
$image = self::idnUrl($image);
|
||||||
// Only send proxied pictures to API and for internal display
|
// Only send proxied pictures to API and for internal display
|
||||||
if (!in_array($simplehtml, [self::INTERNAL, self::MASTODON_API, self::TWITTER_API])) {
|
if (!in_array($simplehtml, [self::INTERNAL, self::MASTODON_API, self::TWITTER_API])) {
|
||||||
return $image;
|
return $image;
|
||||||
|
@ -2105,10 +2107,26 @@ class BBCode
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function escapeUrl(string $url): string
|
private static function escapeUrl(string $url): string
|
||||||
|
{
|
||||||
|
return self::escapeContent(self::idnUrl($url));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function escapeContent(string $url): string
|
||||||
{
|
{
|
||||||
return str_replace(['[', ']'], ['[', ']'], $url);
|
return str_replace(['[', ']'], ['[', ']'], $url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function idnUrl(string $url): string
|
||||||
|
{
|
||||||
|
$parts = parse_url($url);
|
||||||
|
if (empty($parts)) {
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
|
||||||
|
$parts['host'] = idn_to_ascii(urldecode($parts['host']));
|
||||||
|
return (string)Uri::fromParts($parts);
|
||||||
|
}
|
||||||
|
|
||||||
private static function unifyLinks(string $text): string
|
private static function unifyLinks(string $text): string
|
||||||
{
|
{
|
||||||
return preg_replace_callback(
|
return preg_replace_callback(
|
||||||
|
|
Loading…
Reference in a new issue