From e7c4d0bc504b43af4f561cc4365e4d6b684c6c5d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 24 Apr 2016 17:00:19 +0200 Subject: [PATCH] Bugfix DFRN and bookmark detection --- include/bbcode.php | 5 +++++ include/dfrn.php | 2 +- include/plaintext.php | 28 ++++++++++++---------------- mod/item.php | 5 +++-- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/include/bbcode.php b/include/bbcode.php index 8f19566b58..70cd22d5f9 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -38,6 +38,11 @@ function bb_attachment($Text, $simplehtml = false, $tryoembed = true) { if (!$data) return $Text; + if (isset($data["title"])) { + $data["title"] = strip_tags($data["title"]); + $data["title"] = str_replace(array("http://", "https://"), "", $data["title"]); + } + if (((strpos($data["text"], "[img=") !== false) OR (strpos($data["text"], "[img]") !== false)) AND ($data["image"] != "")) { $data["preview"] = $data["image"]; $data["image"] = ""; diff --git a/include/dfrn.php b/include/dfrn.php index 14be747305..f6f4366029 100644 --- a/include/dfrn.php +++ b/include/dfrn.php @@ -1988,7 +1988,7 @@ class dfrn { $item["extid"] = $xpath->query("dfrn:extid/text()", $entry)->item(0)->nodeValue; - if ($xpath->query("dfrn:extid/text()", $entry)->item(0)->nodeValue == "true") + if ($xpath->query("dfrn:bookmark/text()", $entry)->item(0)->nodeValue == "true") $item["bookmark"] = true; $notice_info = $xpath->query("statusnet:notice_info", $entry); diff --git a/include/plaintext.php b/include/plaintext.php index 08581cf338..39eed5111e 100644 --- a/include/plaintext.php +++ b/include/plaintext.php @@ -136,29 +136,25 @@ function get_attachment_data($body) { $data["title"] = $title; $image = ""; - if ($type != "video") { - preg_match("/image='(.*?)'/ism", $attributes, $matches); - if ($matches[1] != "") - $image = $matches[1]; + preg_match("/image='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $image = $matches[1]; - preg_match('/image="(.*?)"/ism', $attributes, $matches); - if ($matches[1] != "") - $image = $matches[1]; - } + preg_match('/image="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $image = $matches[1]; if ($image != "") $data["image"] = $image; $preview = ""; - if ($type != "video") { - preg_match("/preview='(.*?)'/ism", $attributes, $matches); - if ($matches[1] != "") - $preview = $matches[1]; + preg_match("/preview='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $preview = $matches[1]; - preg_match('/preview="(.*?)"/ism', $attributes, $matches); - if ($matches[1] != "") - $preview = $matches[1]; - } + preg_match('/preview="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $preview = $matches[1]; if ($preview != "") $data["preview"] = $preview; diff --git a/mod/item.php b/mod/item.php index 10877b00ac..86940cd69b 100644 --- a/mod/item.php +++ b/mod/item.php @@ -505,10 +505,11 @@ function item_post(&$a) { } } - // embedded bookmark in post? set bookmark flag + // embedded bookmark or attachment in post? set bookmark flag $bookmark = 0; - if(preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",$body,$match,PREG_SET_ORDER)) { + $data = get_attachment_data($body); + if (preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", $body, $match, PREG_SET_ORDER) OR isset($data["type"])) { $objecttype = ACTIVITY_OBJ_BOOKMARK; $bookmark = 1; }