use Friendica\Util\Proxy;
use Friendica\Util\Strings;
use Friendica\Util\XML;
+use GuzzleHttp\Psr7\Uri;
class BBCode
{
case 'title':
$value = self::toPlaintext(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:
$data[$field] = html_entity_decode($value, ENT_QUOTES, 'UTF-8');
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
if (!in_array($simplehtml, [self::INTERNAL, self::MASTODON_API, self::TWITTER_API])) {
return $image;
}
private static function escapeUrl(string $url): string
+ {
+ return self::escapeContent(self::idnUrl($url));
+ }
+
+ private static function escapeContent(string $url): string
{
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
{
return preg_replace_callback(