From 004861fbb726353ff804921332af7cf371db14e3 Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 25 Nov 2019 08:41:34 +0000 Subject: merge opengraph fixes from dev --- include/opengraph.php | 123 ++++++++++++++++++++++++-------------------------- 1 file changed, 60 insertions(+), 63 deletions(-) (limited to 'include/opengraph.php') diff --git a/include/opengraph.php b/include/opengraph.php index 9de021d54..4c88570d3 100644 --- a/include/opengraph.php +++ b/include/opengraph.php @@ -3,73 +3,70 @@ * @file include/opengraph.php * @brief Add Opengraph metadata and related functions. */ - - + + /** * @brief Adds Opengraph meta tags into HTML head * * @param array $item - * @param array $profile + * @param array $channel * */ - - function opengraph_add_meta($item, $profile) { - - if(! empty($item)) { - - if(! empty($item['title'])) - $ogtitle = $item['title']; - - // find first image if exist - if(preg_match("/\[[zi]mg(=[0-9]+x[0-9]+)?\]([^\[]+)/is", $item['body'], $matches)) { - $ogimage = $matches[2]; - $ogimagetype = guess_image_type($ogimage); - } - - // use summary as description if exist - $ogdesc = (empty($item['summary']) ? $item['body'] : $item['summary'] ); - - $ogdesc = str_replace("#^[", "[", $ogdesc); - - $ogdesc = bbcode($ogdesc, [ 'tryoembed' => false ]); - $ogdesc = trim(html2plain($ogdesc, 0, true)); - $ogdesc = html_entity_decode($ogdesc, ENT_QUOTES, 'UTF-8'); - - // remove all URLs - $ogdesc = preg_replace("/https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,\@]+/", "", $ogdesc); - - // shorten description - $ogdesc = substr($ogdesc, 0, 300); - $ogdesc = str_replace("\n", " ", $ogdesc); - while (strpos($ogdesc, " ") !== false) - $ogdesc = str_replace(" ", " ", $ogdesc); - $ogdesc = (strlen($ogdesc) < 298 ? $ogdesc : rtrim(substr($ogdesc, 0, strrpos($ogdesc, " ")), "?.,:;!-") . "..."); - - $ogtype = "article"; - } - - $channel = channelx_by_n($profile['profile_uid']); - - if(! isset($ogdesc)) { - if($profile['about'] && perm_is_allowed($channel['channel_id'],get_observer_hash(),'view_profile')) { - $ogdesc = $profile['about']; - } - else { - $ogdesc = sprintf( t('This is the home page of %s.'), $channel['channel_name']); - } - } - - if(! isset($ogimage)) { - $ogimage = $channel['xchan_photo_l']; - $ogimagetype = $channel['xchan_photo_mimetype']; - } - - App::$page['htmlhead'] .= '' . "\r\n"; - App::$page['htmlhead'] .= '' . "\r\n"; - App::$page['htmlhead'] .= '' . "\r\n"; - App::$page['htmlhead'] .= '' . "\r\n"; - App::$page['htmlhead'] .= '' . "\r\n"; - - return true; + + function opengraph_add_meta($item, $channel) { + + if(! empty($item)) { + + if(! empty($item['title'])) + $ogtitle = $item['title']; + + // find first image if exist + if(preg_match("/\[[zi]mg(=[0-9]+x[0-9]+)?\]([^\[]+)/is", $item['body'], $matches)) { + $ogimage = $matches[2]; + $ogimagetype = guess_image_type($ogimage); + } + + // use summary as description if exist + $ogdesc = (empty($item['summary']) ? $item['body'] : $item['summary'] ); + + $ogdesc = str_replace("#^[", "[", $ogdesc); + + $ogdesc = bbcode($ogdesc, [ 'tryoembed' => false ]); + $ogdesc = trim(html2plain($ogdesc, 0, true)); + $ogdesc = html_entity_decode($ogdesc, ENT_QUOTES, 'UTF-8'); + + // remove all URLs + $ogdesc = preg_replace("/https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,\@]+/", "", $ogdesc); + + // shorten description + $ogdesc = substr($ogdesc, 0, 300); + $ogdesc = str_replace("\n", " ", $ogdesc); + while (strpos($ogdesc, " ") !== false) + $ogdesc = str_replace(" ", " ", $ogdesc); + $ogdesc = (strlen($ogdesc) < 298 ? $ogdesc : rtrim(substr($ogdesc, 0, strrpos($ogdesc, " ")), "?.,:;!-") . "..."); + + $ogtype = "article"; + } + + if(! isset($ogdesc)) { + if(App::$profile['about'] && perm_is_allowed($channel['channel_id'],get_observer_hash(),'view_profile')) { + $ogdesc = App::$profile['about']; + } + else { + $ogdesc = sprintf( t('This is the home page of %s.'), $channel['channel_name']); + } + } + + if(! isset($ogimage)) { + $ogimage = $channel['xchan_photo_l']; + $ogimagetype = $channel['xchan_photo_mimetype']; + } + + App::$page['htmlhead'] .= '' . "\r\n"; + App::$page['htmlhead'] .= '' . "\r\n"; + App::$page['htmlhead'] .= '' . "\r\n"; + App::$page['htmlhead'] .= '' . "\r\n"; + App::$page['htmlhead'] .= '' . "\r\n"; + + return true; } - \ No newline at end of file -- cgit v1.2.3