aboutsummaryrefslogtreecommitdiffstats
path: root/include/items.php
diff options
context:
space:
mode:
authorTobias Diekershoff <tobias.diekershoff@gmx.net>2011-06-10 19:14:10 +0200
committerTobias Diekershoff <tobias.diekershoff@gmx.net>2011-06-10 19:14:10 +0200
commiteb6666e1563cef91843539d3b98dc4936c4cea1f (patch)
treee62d8b4af9cdd40e9bcc1eaafb108e97c6757a1b /include/items.php
parent8390e8b19bf1797c8751c0d5c625a42c26dfc4eb (diff)
parent7c60701efc091945dd2ee14728263d8dae0f88b0 (diff)
downloadvolse-hubzilla-eb6666e1563cef91843539d3b98dc4936c4cea1f.tar.gz
volse-hubzilla-eb6666e1563cef91843539d3b98dc4936c4cea1f.tar.bz2
volse-hubzilla-eb6666e1563cef91843539d3b98dc4936c4cea1f.zip
Merge branch 'master' of git://github.com/friendika/friendika
Diffstat (limited to 'include/items.php')
-rw-r--r--include/items.php25
1 files changed, 21 insertions, 4 deletions
diff --git a/include/items.php b/include/items.php
index dfe92378a..a5d430aa2 100644
--- a/include/items.php
+++ b/include/items.php
@@ -180,7 +180,11 @@ function construct_activity_object($item) {
if($item['object']) {
$o = '<as:object>' . "\r\n";
- $r = parse_xml_string($item['object']);
+ $r = parse_xml_string($item['object'],false);
+
+
+ if(! $r)
+ return '';
if($r->type)
$o .= '<as:object-type>' . xmlify($r->type) . '</as:object-type>' . "\r\n";
if($r->id)
@@ -188,8 +192,15 @@ function construct_activity_object($item) {
if($r->title)
$o .= '<title>' . xmlify($r->title) . '</title>' . "\r\n";
if($r->link) {
- if(substr($r->link,0,1) === '<')
+ if(substr($r->link,0,1) === '<') {
+ // patch up some facebook "like" activity objects that got stored incorrectly
+ // for a couple of months prior to 9-Jun-2011 and generated bad XML.
+ // we can probably remove this hack here and in the following function in a few months time.
+ if(strstr($r->link,'&') && (! strstr($r->link,'&amp;')))
+ $r->link = str_replace('&','&amp;', $r->link);
+ $r->link = preg_replace('/\<link(.*?)\"\>/','<link$1"/>',$r->link);
$o .= $r->link;
+ }
else
$o .= '<link rel="alternate" type="text/html" href="' . xmlify($r->link) . '" />' . "\r\n";
}
@@ -206,7 +217,9 @@ function construct_activity_target($item) {
if($item['target']) {
$o = '<as:target>' . "\r\n";
- $r = parse_xml_string($item['target']);
+ $r = parse_xml_string($item['target'],false);
+ if(! $r)
+ return '';
if($r->type)
$o .= '<as:object-type>' . xmlify($r->type) . '</as:object-type>' . "\r\n";
if($r->id)
@@ -214,8 +227,12 @@ function construct_activity_target($item) {
if($r->title)
$o .= '<title>' . xmlify($r->title) . '</title>' . "\r\n";
if($r->link) {
- if(substr($r->link,0,1) === '<')
+ if(substr($r->link,0,1) === '<') {
+ if(strstr($r->link,'&') && (! strstr($r->link,'&amp;')))
+ $r->link = str_replace('&','&amp;', $r->link);
+ $r->link = preg_replace('/\<link(.*?)\"\>/','<link$1"/>',$r->link);
$o .= $r->link;
+ }
else
$o .= '<link rel="alternate" type="text/html" href="' . xmlify($r->link) . '" />' . "\r\n";
}