X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FContent%2FOEmbed.php;h=94e95e5f51d234e04b3be242159c4b68cc894158;hb=d1435bef6144f517ae4392d200e2eb14114adf1c;hp=943b91e1f293264782dae575ddf9b8be7d54fa77;hpb=7d5494dd67f58e1fc63c6571946e26290092321c;p=friendica.git diff --git a/src/Content/OEmbed.php b/src/Content/OEmbed.php index 943b91e1f2..94e95e5f51 100644 --- a/src/Content/OEmbed.php +++ b/src/Content/OEmbed.php @@ -10,9 +10,9 @@ use DOMNode; use DOMText; use DOMXPath; use Exception; -use Friendica\Core\Addon; use Friendica\Core\Cache; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Renderer; use Friendica\Core\System; @@ -21,8 +21,7 @@ use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; use Friendica\Util\ParseUrl; use Friendica\Util\Proxy as ProxyUtils; - -require_once 'include/dba.php'; +use Friendica\Util\Strings; /** * Handles all OEmbed content fetching and replacement @@ -52,16 +51,17 @@ class OEmbed * @param bool $no_rich_type If set to true rich type content won't be fetched. * * @return \Friendica\Object\OEmbed + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function fetchURL($embedurl, $no_rich_type = false) { $embedurl = trim($embedurl, '\'"'); - $a = get_app(); + $a = \get_app(); $cache_key = 'oembed:' . $a->videowidth . ':' . $embedurl; - $condition = ['url' => normalise_link($embedurl), 'maxwidth' => $a->videowidth]; + $condition = ['url' => Strings::normaliseLink($embedurl), 'maxwidth' => $a->videowidth]; $oembed_record = DBA::selectFirst('oembed', ['content'], $condition); if (DBA::isResult($oembed_record)) { $json_string = $oembed_record['content']; @@ -83,8 +83,7 @@ class OEmbed if (!in_array($ext, $noexts)) { // try oembed autodiscovery - $redirects = 0; - $html_text = Network::fetchUrl($embedurl, false, $redirects, 15, 'text/*'); + $html_text = Network::fetchUrl($embedurl, false, 15, 'text/*'); if ($html_text) { $dom = @DOMDocument::loadHTML($html_text); if ($dom) { @@ -116,7 +115,7 @@ class OEmbed if (!empty($oembed->type) && $oembed->type != 'error') { DBA::insert('oembed', [ - 'url' => normalise_link($embedurl), + 'url' => Strings::normaliseLink($embedurl), 'maxwidth' => $a->videowidth, 'content' => $json_string, 'created' => DateTimeFormat::utcNow() @@ -160,7 +159,7 @@ class OEmbed } } - Addon::callHooks('oembed_fetch_url', $embedurl, $oembed); + Hook::callAll('oembed_fetch_url', $embedurl, $oembed); return $oembed; } @@ -181,7 +180,6 @@ class OEmbed $tw = $th * $tr; $tpl = Renderer::getMarkupTemplate('oembed_video.tpl'); $ret .= Renderer::replaceMacros($tpl, [ - '$baseurl' => System::baseUrl(), '$embedurl' => $oembed->embed_url, '$escapedhtml' => base64_encode($oembed->html), '$tw' => $tw, @@ -246,8 +244,7 @@ class OEmbed $ret .= ''; - $ret = str_replace("\n", "", $ret); - return mb_convert_encoding($ret, 'HTML-ENTITIES', mb_detect_encoding($ret)); + return str_replace("\n", "", $ret); } public static function BBCode2HTML($text) @@ -262,6 +259,9 @@ class OEmbed /** * Find .... * and replace it with [embed]url[/embed] + * + * @param $text + * @return string */ public static function HTML2BBCode($text) { @@ -300,6 +300,7 @@ class OEmbed * @brief Determines if rich content OEmbed is allowed for the provided URL * @param string $url * @return boolean + * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ public static function isAllowedURL($url) { @@ -308,12 +309,12 @@ class OEmbed } $domain = parse_url($url, PHP_URL_HOST); - if (!x($domain)) { + if (empty($domain)) { return false; } $str_allowed = Config::get('system', 'allowed_oembed', ''); - if (!x($str_allowed)) { + if (empty($str_allowed)) { return false; } @@ -334,7 +335,7 @@ class OEmbed throw new Exception('OEmbed failed for URL: ' . $url); } - if (x($title)) { + if (!empty($title)) { $o->title = $title; } @@ -355,25 +356,24 @@ class OEmbed * Since the iframe is automatically resized on load, there are no need for ugly * and impractical scrollbars. * - * @todo This function is currently unused until someone™ adds support for a separate OEmbed domain + * @todo This function is currently unused until someone™ adds support for a separate OEmbed domain * * @param string $src Original remote URL to embed * @param string $width * @param string $height * @return string formatted HTML * - * @see oembed_format_object() + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @see oembed_format_object() */ private static function iframe($src, $width, $height) { - $a = get_app(); - if (!$height || strstr($height, '%')) { $height = '200'; } $width = '100%'; - $src = System::baseUrl() . '/oembed/' . base64url_encode($src); + $src = System::baseUrl() . '/oembed/' . Strings::base64UrlEncode($src); return ''; }