From c35feb27f2d5d9a1dc9cf885517953663dae9748 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 24 Feb 2013 12:54:53 +0100 Subject: [PATCH 1/3] community: Only show top postings, no comments parse_url: Follow location in "meta"-header --- mod/community.php | 3 ++- mod/parse_url.php | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/mod/community.php b/mod/community.php index 27a9e2194..84fc15deb 100644 --- a/mod/community.php +++ b/mod/community.php @@ -75,7 +75,8 @@ function community_content(&$a, $update = 0) { WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' - AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `user`.`hidewall` = 0 + AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `item`.`id` = `item`.`parent` + AND `user`.`hidewall` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self` ORDER BY `received` DESC LIMIT %d, %d ", intval($a->pager['start']), diff --git a/mod/parse_url.php b/mod/parse_url.php index a2b4c9e28..1393a15d3 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -97,6 +97,28 @@ function parseurl_getsiteinfo($url) { $xpath = new DomXPath($doc); + $list = $xpath->query("//meta[@content]"); + foreach ($list as $node) { + $attr = array(); + if ($node->attributes->length) + foreach ($node->attributes as $attribute) + $attr[$attribute->name] = $attribute->value; + + if (@$attr["http-equiv"] == 'refresh') { + $path = $attr["content"]; + $pathinfo = explode(";", $path); + $content = ""; + foreach ($pathinfo AS $value) { + if (substr(strtolower($value), 0, 4) == "url=") + $content = substr($value, 4); + } + if ($content != "") { + $siteinfo = parseurl_getsiteinfo($content); + return($siteinfo); + } + } + } + //$list = $xpath->query("head/title"); $list = $xpath->query("//title"); foreach ($list as $node) From 2866f62c88dbf65d72cfe690150b2215515b803d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 2 Mar 2013 14:46:06 +0100 Subject: [PATCH 2/3] 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 57a329f30..e27267435 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 1393a15d3..c8670d4d9 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 5559a2065..adaf0b639 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 366493a68..7ca07d859 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
From 00888a73bb7666a7b082e84f3c7edb2a42d86543 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 3 Mar 2013 17:58:35 +0100 Subject: [PATCH 3/3] OStatus conversation: Prevent posting loops --- include/ostatus_conversation.php | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/include/ostatus_conversation.php b/include/ostatus_conversation.php index cecbb0496..36ba207ab 100644 --- a/include/ostatus_conversation.php +++ b/include/ostatus_conversation.php @@ -1,5 +1,6 @@ time()) { - logger('complete_conversation: poll intervall not reached'); + logger('complete_conversation: poll interval not reached'); return; } } logger('complete_conversation: cron_start'); - $start = date("Y-m-d H:i:s", time() - 86400); + $start = date("Y-m-d H:i:s", time() - ($poll_timeframe * 60)); $conversations = q("SELECT * FROM `term` WHERE `type` = 7 AND `term` > '%s'", dbesc($start)); foreach ($conversations AS $conversation) { @@ -100,18 +109,18 @@ function complete_conversation($itemid, $conversation_url, $only_add_conversatio else $parent_uri = $parent["uri"]; - if ($parent["id"] != 0) { - $message_exists = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1", + $message_exists = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1", intval($message["uid"]), dbesc($single_conv->id)); - if ($message_exists) { + if ($message_exists) { + if ($parent["id"] != 0) { $existing_message = $message_exists[0]; $r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s', `thr-parent` = '%s' WHERE `id` = %d LIMIT 1", intval($parent["id"]), dbesc($parent["uri"]), dbesc($parent_uri), intval($existing_message["id"])); - continue; } + continue; } $arr = array();