From 2866f62c88dbf65d72cfe690150b2215515b803d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 2 Mar 2013 14:46:06 +0100 Subject: [PATCH] Suppoorting Open Graph and Dublin Core when displaying single item Following link shorteners in parse_url --- mod/display.php | 26 +++++++++++++++++++++++++ mod/parse_url.php | 23 ++++++++++++++++------ view/theme/vier/smarty3/wall_thread.tpl | 2 +- view/theme/vier/wall_thread.tpl | 2 +- 4 files changed, 45 insertions(+), 8 deletions(-) diff --git a/mod/display.php b/mod/display.php index 57a329f305..e272674354 100644 --- a/mod/display.php +++ b/mod/display.php @@ -166,6 +166,32 @@ function display_content(&$a, $update = 0) { $o .= ""; $o .= conversation($a,$items,'display', $update); + // Preparing the meta header + require_once('include/bbcode.php'); + require_once("include/html2plain.php"); + $description = trim(html2plain(bbcode($r[0]["body"], false, false), 0, true)); + $title = trim(html2plain(bbcode($r[0]["title"], false, false), 0, true)); + + if ($title == "") + $title = $r[0]["author-name"]; + + // + $a->page['htmlhead'] .= ''."\n"; + $a->page['htmlhead'] .= ''."\n"; + $a->page['htmlhead'] .= ''."\n"; + $a->page['htmlhead'] .= ''."\n"; + + $a->page['htmlhead'] .= ''."\n"; + $a->page['htmlhead'] .= ''."\n"; + + $a->page['htmlhead'] .= ''."\n"; + $a->page['htmlhead'] .= ''."\n"; + // + $a->page['htmlhead'] .= ''."\n"; + $a->page['htmlhead'] .= ''."\n"; + $a->page['htmlhead'] .= ''."\n"; + // article:tag + } else { $r = q("SELECT `id`,`deleted` FROM `item` WHERE `id` = '%s' OR `uri` = '%s' LIMIT 1", diff --git a/mod/parse_url.php b/mod/parse_url.php index 1393a15d36..c8670d4d96 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -33,7 +33,7 @@ function completeurl($url, $scheme) { $complete = $schemearr["scheme"]."://".$schemearr["host"]; - if ($schemearr["port"] != "") + if (@$schemearr["port"] != "") $complete .= ":".$schemearr["port"]; if(strpos($urlarr['path'],'/') !== 0) @@ -41,10 +41,10 @@ function completeurl($url, $scheme) { $complete .= $urlarr["path"]; - if ($urlarr["query"] != "") + if (@$urlarr["query"] != "") $complete .= "?".$urlarr["query"]; - if ($urlarr["fragment"] != "") + if (@$urlarr["fragment"] != "") $complete .= "#".$urlarr["fragment"]; return($complete); @@ -52,18 +52,29 @@ function completeurl($url, $scheme) { function parseurl_getsiteinfo($url) { $siteinfo = array(); - $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_NOBODY, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch,CURLOPT_USERAGENT,'Opera/9.64(Windows NT 5.1; U; de) Presto/2.1.1'); $header = curl_exec($ch); + $curl_info = @curl_getinfo($ch); + $http_code = $curl_info['http_code']; curl_close($ch); + if ((($curl_info['http_code'] == "301") OR ($curl_info['http_code'] == "302")) + AND (($curl_info['redirect_url'] != "") OR ($curl_info['location'] != ""))) { + if ($curl_info['redirect_url'] != "") + $siteinfo = parseurl_getsiteinfo($curl_info['redirect_url']); + else + $siteinfo = parseurl_getsiteinfo($curl_info['location']); + return($siteinfo); + } + // Fetch the first mentioned charset. Can be in body or header if (preg_match('/charset=(.*?)['."'".'"\s\n]/', $header, $matches)) $charset = trim(array_pop($matches)); @@ -173,7 +184,7 @@ function parseurl_getsiteinfo($url) { } } - if ($siteinfo["image"] == "") { + if (@$siteinfo["image"] == "") { $list = $xpath->query("//img[@src]"); foreach ($list as $node) { $attr = array(); @@ -212,7 +223,7 @@ function parseurl_getsiteinfo($url) { "height"=>$photodata[1]); } - if ($siteinfo["text"] == "") { + if (@$siteinfo["text"] == "") { $text = ""; $list = $xpath->query("//div[@class='article']"); diff --git a/view/theme/vier/smarty3/wall_thread.tpl b/view/theme/vier/smarty3/wall_thread.tpl index 5559a20659..adaf0b639f 100644 --- a/view/theme/vier/smarty3/wall_thread.tpl +++ b/view/theme/vier/smarty3/wall_thread.tpl @@ -64,7 +64,7 @@ -
+
{{if $item.title}}

{{$item.title}}

{{/if}} {{$item.body}}
diff --git a/view/theme/vier/wall_thread.tpl b/view/theme/vier/wall_thread.tpl index 366493a686..7ca07d8591 100644 --- a/view/theme/vier/wall_thread.tpl +++ b/view/theme/vier/wall_thread.tpl @@ -59,7 +59,7 @@
-
+
{{ if $item.title }}

$item.title

{{ endif }} $item.body