]> git.mxchange.org Git - friendica.git/commitdiff
Use the "attachment" element instead of a mixture of several elements
authorMichael Vogel <icarus@dabo.de>
Sun, 17 Apr 2016 18:43:41 +0000 (20:43 +0200)
committerMichael Vogel <icarus@dabo.de>
Sun, 17 Apr 2016 18:43:41 +0000 (20:43 +0200)
include/api.php
include/bbcode.php
include/items.php
include/plaintext.php
mod/parse_url.php

index 305a86ca13e7148de24210c2515ea675a1ffd9f0..996c52f54eee646d8c62adcf032fa5d829ec5f61 100644 (file)
@@ -24,6 +24,7 @@
        require_once('include/group.php');
        require_once('include/like.php');
        require_once('include/NotificationsManager.php');
+       require_once('include/plaintext.php');
 
 
        define('API_METHOD_ANY','*');
                $scale_sql = ($scale === false ? "" : sprintf("and scale=%d",intval($scale)));
                $data_sql = ($scale === false ? "" : "data, ");
 
-               $r = q("select %s `resource-id`, `created`, `edited`, `title`, `desc`, `album`, `filename`,
+               $r = q("select %s `resource-id`, `created`, `edited`, `title`, `desc`, `album`, `filename`,
                                                `type`, `height`, `width`, `datasize`, `profile`, min(`scale`) as minscale, max(`scale`) as maxscale
                                from photo where `uid` = %d and `resource-id` = '%s' %s group by `resource-id`",
                        $data_sql,
                        $Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism",'[url=$1]$1[/url]',$Text);
                }
 
-               $Text = preg_replace_callback("((.*?)\[class=(.*?)\](.*?)\[\/class\])ism","api_cleanup_share",$Text);
+               // Simplify "attachment" element
+               $Text = api_clean_attachments($Text);
+
                return($Text);
        }
 
-       function api_cleanup_share($shared) {
-               if ($shared[2] != "type-link")
-                       return($shared[0]);
-
-               if (!preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",$shared[3], $bookmark))
-                       return($shared[0]);
-
-               $title = "";
-               $link = "";
-
-               if (isset($bookmark[2][0]))
-                       $title = $bookmark[2][0];
-
-               if (isset($bookmark[1][0]))
-                       $link = $bookmark[1][0];
+       /**
+        * @brief Removes most sharing information for API text export
+        *
+        * @param string $body The original body
+        *
+        * @return string Cleaned body
+        */
+       function api_clean_attachments($body) {
+               $data = get_attachment_data($body);
 
-               if (strpos($shared[1],$title) !== false)
-                       $title = "";
+               if (!$data)
+                       return $body;
 
-               if (strpos($shared[1],$link) !== false)
-                       $link = "";
+               $body = "";
 
-               $text = trim($shared[1]);
+               if (isset($data["text"]))
+                       $body = $data["text"];
 
-               //if (strlen($text) < strlen($title))
-               if (($text == "") AND ($title != ""))
-                       $text .= "\n\n".trim($title);
+               if (($body == "") AND (isset($data["title"])))
+                       $body = $data["title"];
 
-               if ($link != "")
-                       $text .= "\n".trim($link);
+               if (isset($data["url"]))
+                       $body .= "\n".$data["url"];
 
-               return(trim($text));
+               return $body;
        }
 
        function api_best_nickname(&$contacts) {
index 8545b2ff8253c9b29c9b71d87b8003a383623e3b..820a307cb695c06ff02f6c42503c8c677c129fea 100644 (file)
@@ -31,238 +31,86 @@ function bb_map_location($match) {
 }
 
 function bb_attachment($Text, $simplehtml = false, $tryoembed = true) {
-       $Text = preg_replace_callback("/(.*?)\[attachment(.*?)\](.*?)\[\/attachment\]/ism",
-               function ($match) use ($simplehtml, $tryoembed){
 
-                       $attributes = $match[2];
+       $data = get_attachment_data($Text);
 
-                       $type = "";
-                       preg_match("/type='(.*?)'/ism", $attributes, $matches);
-                       if ($matches[1] != "")
-                               $type = strtolower($matches[1]);
+       if (!$data)
+               return $Text;
 
-                       preg_match('/type="(.*?)"/ism', $attributes, $matches);
-                       if ($matches[1] != "")
-                               $type = strtolower($matches[1]);
-
-                       if ($type == "")
-                               return($match[0]);
-
-                       if (!in_array($type, array("link", "audio", "video")))
-                               return($match[0]);
-
-                       $url = "";
-                       preg_match("/url='(.*?)'/ism", $attributes, $matches);
-                       if ($matches[1] != "")
-                               $url = $matches[1];
-
-                       preg_match('/url="(.*?)"/ism', $attributes, $matches);
-                       if ($matches[1] != "")
-                               $url = $matches[1];
-
-                       $title = "";
-                       preg_match("/title='(.*?)'/ism", $attributes, $matches);
-                       if ($matches[1] != "")
-                               $title = $matches[1];
-
-                       preg_match('/title="(.*?)"/ism', $attributes, $matches);
-                       if ($matches[1] != "")
-                               $title = $matches[1];
-
-                       //$title = htmlentities($title, ENT_QUOTES, 'UTF-8', false);
-                       $title = bbcode(html_entity_decode($title, ENT_QUOTES, 'UTF-8'), false, false, true);
-                       $title = str_replace(array("[", "]"), array("&#91;", "&#93;"), $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];
-                       }
-
-                       $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];
-                       }
-
-                       if (((strpos($match[1], "[img=") !== false) OR (strpos($match[1], "[img]") !== false)) AND ($image != "")) {
-                               $preview = $image;
-                               $image = "";
-                       }
-
-                       if ($simplehtml == 7) {
-                               $title2 = $title;
-
-                               $test1 = trim(html_entity_decode($match[1],ENT_QUOTES,'UTF-8'));
-                               $test2 = trim(html_entity_decode($title,ENT_QUOTES,'UTF-8'));
-
-                               // If the link description is similar to the text above then don't add the link description
-                               if (($title != "") AND ((strpos($test1,$test2) !== false) OR
-                                       (similar_text($test1,$test2) / strlen($title)) > 0.9))
-                                       $title2 = $url;
-                               $text = sprintf('<a href="%s" title="%s" class="attachment thumbnail" rel="nofollow external">%s</a><br />',
-                                               $url, $title, $title2);
-                       } elseif (($simplehtml != 4) AND ($simplehtml != 0))
-                               $text = sprintf('<a href="%s" target="_blank">%s</a><br>', $url, $title);
-                       else {
-                               $text = sprintf('<span class="type-%s">', $type);
-
-                               $bookmark = array(sprintf('[bookmark=%s]%s[/bookmark]', $url, $title), $url, $title);
-                               if ($tryoembed)
-                                       $oembed = tryoembed($bookmark);
-                               else
-                                       $oembed = $bookmark[0];
-
-                               if (strstr(strtolower($oembed), "<iframe "))
-                                       $text = $oembed;
-                               else {
-                                       if (($image != "") AND !strstr(strtolower($oembed), "<img "))
-                                               $text .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-image" /></a><br />', $url, proxy_url($image), $title);
-                                       elseif (($preview != "") AND !strstr(strtolower($oembed), "<img "))
-                                               $text .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-preview" /></a><br />', $url, proxy_url($preview), $title);
-
-                                       $text .= $oembed;
-
-                                       $text .= sprintf('<blockquote>%s</blockquote></span>', trim($match[3]));
-                               }
-                       }
-
-                       return($match[1].$text);
-               },$Text);
-
-       return($Text);
-}
-
-function bb_rearrange_share($shared) {
-       if (!in_array(strtolower($shared[2]), array("type-link", "type-audio", "type-video")))
-               return($shared[0]);
-
-       if (!preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",$shared[3], $bookmark))
-               return($shared[0]);
-
-       $type = substr(trim(strtolower($shared[2])), 5);
-
-       $title = "";
-       $url = "";
-       $preview = "";
-       $description = "";
-
-       if (isset($bookmark[2][0]))
-               $title = $bookmark[2][0];
-
-       if (isset($bookmark[1][0]))
-               $url = $bookmark[1][0];
-
-       $cleanedshare = trim($shared[3]);
-       $cleanedshare = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $cleanedshare);
-       preg_match("/\[img\](.*?)\[\/img\]/ism", $cleanedshare, $matches);
-
-       if ($matches)
-               $preview = trim($matches[1]);
-
-       preg_match("/\[quote\](.*?)\[\/quote\]/ism", $cleanedshare, $matches);
-       if ($matches)
-               $description = trim($matches[1]);
+       if (((strpos($data["text"], "[img=") !== false) OR (strpos($data["text"], "[img]") !== false)) AND ($data["image"] != "")) {
+               $data["preview"] = $data["image"];
+               $data["image"] = "";
+       }
 
-       $url = str_replace(array("[", "]"), array("&#91;", "&#93;"), htmlentities($url, ENT_QUOTES, 'UTF-8', false));
-       $title = str_replace(array("[", "]"), array("&#91;", "&#93;"), htmlentities($title, ENT_QUOTES, 'UTF-8', false));
-       $preview = str_replace(array("[", "]"), array("&#91;", "&#93;"), htmlentities($preview, ENT_QUOTES, 'UTF-8', false));
+       if ($simplehtml == 7) {
+               $title2 = $data["title"];
+
+               $test1 = trim(html_entity_decode($data["text"],ENT_QUOTES,'UTF-8'));
+               $test2 = trim(html_entity_decode($data["title"],ENT_QUOTES,'UTF-8'));
+
+               // If the link description is similar to the text above then don't add the link description
+               if (($data["title"] != "") AND ((strpos($test1,$test2) !== false) OR
+                       (similar_text($test1,$test2) / strlen($data["title"])) > 0.9))
+                       $title2 = $data["url"];
+               $text = sprintf('<a href="%s" title="%s" class="attachment thumbnail" rel="nofollow external">%s</a><br />',
+                               $data["url"], $data["title"], $title2);
+       } elseif (($simplehtml != 4) AND ($simplehtml != 0))
+               $text = sprintf('<a href="%s" target="_blank">%s</a><br>', $data["url"], $data["title"]);
+       else {
+               $text = sprintf('<span class="type-%s">', $data["type"]);
+
+               $bookmark = array(sprintf('[bookmark=%s]%s[/bookmark]', $data["url"], $data["title"]), $data["url"], $data["title"]);
+               if ($tryoembed)
+                       $oembed = tryoembed($bookmark);
+               else
+                       $oembed = $bookmark[0];
 
-       $Text = trim($shared[1])."\n[attachment type='".$type."'";
+               if (strstr(strtolower($oembed), "<iframe "))
+                       $text = $oembed;
+               else {
+                       if (($data["image"] != "") AND !strstr(strtolower($oembed), "<img "))
+                               $text .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-image" /></a><br />', $data["url"], proxy_url($data["image"]), $data["title"]);
+                       elseif (($data["preview"] != "") AND !strstr(strtolower($oembed), "<img "))
+                               $text .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-preview" /></a><br />', $data["url"], proxy_url($data["preview"]), $data["title"]);
 
-       if ($url != "")
-               $Text .= " url='".$url."'";
-       if ($title != "")
-               $Text .= " title='".$title."'";
-       if ($preview != "") {
-               require_once("include/Photo.php");
-               $picturedata = get_photo_info($preview);
+                       $text .= $oembed;
 
-               if (count($picturedata) > 0) {
-                       // if the preview picture is larger than 500 pixels then show it in a larger mode
-                       // But only, if the picture isn't higher than large (To prevent huge posts)
-                       if (($picturedata[0] >= 500) AND ($picturedata[0] >= $picturedata[1]))
-                               $Text .= " image='".$preview."'";
-                       else
-                               $Text .= " preview='".$preview."'";
-               } else
-                       $Text .= " preview='".$preview."'";
+                       $text .= sprintf('<blockquote>%s</blockquote></span>', trim($data["description"]));
+               }
        }
-       $Text .= "]".$description."[/attachment]";
-
-       return($Text);
+       return $data["text"].$text.$data["after"];
 }
 
 function bb_remove_share_information($Text, $plaintext = false, $nolink = false) {
-       $Text = preg_replace_callback("((.*?)\[class=(.*?)\](.*?)\[\/class\])ism",
-               function ($match) use ($plaintext, $nolink){
-                       return(bb_cleanup_share($match, $plaintext, $nolink));
-               },$Text);
-       return($Text);
-}
-
-function bb_cleanup_share($shared, $plaintext, $nolink) {
-       $shared[1] = trim($shared[1]);
 
-       if (!in_array($shared[2], array("type-link", "type-video")))
-               return($shared[0]);
+       $data = get_attachment_data($Text);
 
-       if ($plaintext)
-               $shared[3] = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism","[bookmark=$1]$1[/bookmark]", $shared[3]);
-
-       if (!preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",$shared[3], $bookmark))
-               return($shared[0]);
+       if (!$data)
+               return $Text;
 
        if ($nolink)
-               return($shared[1]);
-
-       $title = "";
-       $link = "";
-
-       if (isset($bookmark[2][0]))
-               $title = $bookmark[2][0];
-
-       if (isset($bookmark[1][0]))
-               $link = $bookmark[1][0];
-
-       if (($shared[1] != "") AND (strpos($title, $shared[1]) !== false))
-               $shared[1] = $title;
+               return $data["text"];
 
-       if (($title != "") AND ((strpos($shared[1],$title) !== false) OR
-               (similar_text($shared[1],$title) / strlen($title)) > 0.9))
-               $title = "";
-
-//        if (strpos($shared[1],$link) !== false)
-//                $link = "";
-
-       $text = trim($shared[1]);
+       if ($plaintext)
+               $data["title"] = $data["url"];
 
-       if (($text == "") AND ($title != "") AND ($link == ""))
-               $text .= "\n\n".trim($title);
+       if (($data["text"] == "") AND ($data["title"] != "") AND ($data["url"] == ""))
+               return $data["title"];
 
        // If the link already is included in the post, don't add it again
-       if (($link != "") AND strpos($text, $link))
-               return(trim($text));
+       if (($data["url"] != "") AND strpos($data["text"], $data["url"]))
+               return $data["text"];
+
+       $text = $data["text"];
 
-       if (($link != "") AND ($title != ""))
-               $text .= "\n[url=".trim($link)."]".trim($title)."[/url]";
+       if (($data["url"] != "") AND ($data["title"] != ""))
+               $text .= "\n[url=".$data["url"]."]".$data["title"]."[/url]";
        elseif (($link != ""))
-               $text .= "\n".trim($link);
+               $text .= "\n".$data["url"];
 
-       return(trim($text));
+       return $text;
 }
 
-
 function bb_cleanstyle($st) {
   return "<span style=\"".cleancss($st[1]).";\">".$st[2]."</span>";
 }
@@ -895,9 +743,6 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
        $Text = preg_replace("/\n\[code\]/ism", "[code]", $Text);
        $Text = preg_replace("/\[\/code\]\n/ism", "[/code]", $Text);
 
-       // Rearrange shares to attachments
-       $Text = preg_replace_callback("((.*?)\[class=(.*?)\](.*?)\[\/class\])ism", "bb_rearrange_share",$Text);
-
        // when the content is meant exporting to other systems then remove the avatar picture since this doesn't really look good on these systems
        if (!$tryoembed)
                $Text = preg_replace("/\[share(.*?)avatar\s?=\s?'.*?'\s?(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism","\n[share$1$2]$3[/share]",$Text);
index b32ed2b16f1227baef96c70a942f77920462d02a..5c0bb047ae63cf60d1d09b44d3ff6a4ec5798a9f 100644 (file)
@@ -161,24 +161,31 @@ function add_page_info_data($data) {
        if ($no_photos AND ($data["type"] == "photo"))
                return("");
 
-       // If the link contains BBCode stuff, make a short link out of this to avoid parsing problems
-       if (strpos($data["url"], '[') OR strpos($data["url"], ']')) {
-               require_once("include/network.php");
-               $data["url"] = short_link($data["url"]);
-       }
-
-       if (($data["type"] != "photo") AND is_string($data["title"]))
-               $text .= "[bookmark=".$data["url"]."]".trim($data["title"])."[/bookmark]";
-
-       if (($data["type"] != "video") AND ($photo != ""))
-               $text .= '[img]'.$photo.'[/img]';
-       elseif (($data["type"] != "video") AND (sizeof($data["images"]) > 0)) {
-               $imagedata = $data["images"][0];
-               $text .= '[img]'.$imagedata["src"].'[/img]';
+       if (sizeof($data["images"]) > 0)
+               $preview = $data["images"][0];
+       else
+               $preview = "";
+
+       // Escape some bad characters
+       $data["url"] = str_replace(array("[", "]"), array("&#91;", "&#93;"), htmlentities($data["url"], ENT_QUOTES, 'UTF-8', false));
+       $data["title"] = str_replace(array("[", "]"), array("&#91;", "&#93;"), htmlentities($data["title"], ENT_QUOTES, 'UTF-8', false));
+
+       $text = "[attachment type='".$data["type"]."'";
+
+       if ($data["url"] != "")
+               $text .= " url='".$data["url"]."'";
+       if ($data["title"] != "")
+               $text .= " title='".$data["title"]."'";
+       if (sizeof($data["images"]) > 0) {
+               $preview = str_replace(array("[", "]"), array("&#91;", "&#93;"), htmlentities($data["images"][0]["src"], ENT_QUOTES, 'UTF-8', false));
+               // if the preview picture is larger than 500 pixels then show it in a larger mode
+               // But only, if the picture isn't higher than large (To prevent huge posts)
+               if (($data["images"][0]["width"] >= 500) AND ($data["images"][0]["width"] >= $data["images"][0]["height"]))
+                       $text .= " image='".$preview."'";
+               else
+                       $text .= " preview='".$preview."'";
        }
-
-       if (($data["type"] != "photo") AND is_string($data["text"]))
-               $text .= "[quote]".$data["text"]."[/quote]";
+       $text .= "]".$data["text"]."[/attachment]";
 
        $hashtags = "";
        if (isset($data["keywords"]) AND count($data["keywords"])) {
@@ -192,7 +199,7 @@ function add_page_info_data($data) {
                }
        }
 
-       return("\n[class=type-".$data["type"]."]".$text."[/class]".$hashtags);
+       return "\n".$text.$hashtags;
 }
 
 function query_page_info($url, $no_photos = false, $photo = "", $keywords = false, $keyword_blacklist = "") {
@@ -1261,17 +1268,17 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                logger("Consume DFRN messages", LOGGER_DEBUG);
 
                $r = q("SELECT  `contact`.*, `contact`.`uid` AS `importer_uid`,
-                                        `contact`.`pubkey` AS `cpubkey`,
-                                        `contact`.`prvkey` AS `cprvkey`,
-                                        `contact`.`thumb` AS `thumb`,
-                                        `contact`.`url` as `url`,
-                                        `contact`.`name` as `senderName`,
-                                        `user`.*
-                        FROM `contact`
-                        LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`
-                        WHERE `contact`.`id` = %d AND `user`.`uid` = %d",
-                       dbesc($contact["id"]), dbesc($importer["uid"])
-               );
+                                       `contact`.`pubkey` AS `cpubkey`,
+                                       `contact`.`prvkey` AS `cprvkey`,
+                                       `contact`.`thumb` AS `thumb`,
+                                       `contact`.`url` as `url`,
+                                       `contact`.`name` as `senderName`,
+                                       `user`.*
+                       FROM `contact`
+                       LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid`
+                       WHERE `contact`.`id` = %d AND `user`.`uid` = %d",
+                       dbesc($contact["id"]), dbesc($importer["uid"])
+               );
                if ($r) {
                        logger("Now import the DFRN feed");
                        dfrn::import($xml,$r[0], true);
index a2b2c56522c6a49f8756421cc1724422a6e263f8..95236027b173b26f747b3b0a4c28e23292f5a9e5 100644 (file)
@@ -1,20 +1,11 @@
 <?php
-function get_attached_data($body) {
-/*
- - text:
- - type: link, video, photo
- - title:
- - url:
- - image:
- - description:
- - (thumbnail)
-*/
+function get_old_attachment_data($body) {
+
+       $post = array();
 
        // Simplify image codes
        $body = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $body);
 
-       $post = array();
-
        if (preg_match_all("(\[class=(.*?)\](.*?)\[\/class\])ism",$body, $attached,  PREG_SET_ORDER)) {
                foreach ($attached AS $data) {
                        if (!in_array($data[1], array("type-link", "type-video", "type-photo")))
@@ -43,6 +34,116 @@ function get_attached_data($body) {
                }
        }
 
+       return $post;
+}
+
+function get_attachment_data($body) {
+
+       $data = array();
+
+       if (!preg_match("/(.*)\[attachment(.*)\](.*?)\[\/attachment\](.*)/ism", $body, $match))
+               return get_old_attachment_data($body);
+
+       $attributes = $match[2];
+
+       $data["text"] = trim($match[1]);
+
+       $type = "";
+       preg_match("/type='(.*?)'/ism", $attributes, $matches);
+       if ($matches[1] != "")
+               $type = strtolower($matches[1]);
+
+       preg_match('/type="(.*?)"/ism', $attributes, $matches);
+       if ($matches[1] != "")
+               $type = strtolower($matches[1]);
+
+       if ($type == "")
+               return(array());
+
+       if (!in_array($type, array("link", "audio", "video")))
+               return(array());
+
+       if ($type != "")
+               $data["type"] = $type;
+
+       $url = "";
+       preg_match("/url='(.*?)'/ism", $attributes, $matches);
+       if ($matches[1] != "")
+               $url = $matches[1];
+
+       preg_match('/url="(.*?)"/ism', $attributes, $matches);
+       if ($matches[1] != "")
+               $url = $matches[1];
+
+       if ($url != "")
+               $data["url"] = $url;
+
+       $title = "";
+       preg_match("/title='(.*?)'/ism", $attributes, $matches);
+       if ($matches[1] != "")
+               $title = $matches[1];
+
+       preg_match('/title="(.*?)"/ism', $attributes, $matches);
+       if ($matches[1] != "")
+               $title = $matches[1];
+
+       //$title = htmlentities($title, ENT_QUOTES, 'UTF-8', false);
+       $title = bbcode(html_entity_decode($title, ENT_QUOTES, 'UTF-8'), false, false, true);
+       $title = str_replace(array("[", "]"), array("&#91;", "&#93;"), $title);
+
+       if ($title != "")
+               $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];
+       }
+
+       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];
+       }
+
+       if (($image == "") AND ($preview != ""))
+               $data["image"] = $preview;
+       else
+               $data["preview"] = $preview;
+
+       $data["description"] = trim($match[3]);
+
+       $data["after"] = trim($match[4]);
+
+       return($data);
+}
+
+function get_attached_data($body) {
+/*
+ - text:
+ - type: link, video, photo
+ - title:
+ - url:
+ - image:
+ - description:
+ - (thumbnail)
+*/
+
+       $post = get_attachment_data($body);
+
        // if nothing is found, it maybe having an image.
        if (!isset($post["type"])) {
                require_once("mod/parse_url.php");
index a1ca5a3db5e2e1c831d35bada4b52a3502b54183..bf111f143c69d053716da3ceb71671c1a69ff89b 100644 (file)
@@ -407,6 +407,8 @@ function arr_add_hashes(&$item,$k) {
 
 function parse_url_content(&$a) {
 
+       require_once("include/items.php");
+
        $text = null;
        $str_tags = '';
 
@@ -484,78 +486,9 @@ function parse_url_content(&$a) {
 
        $siteinfo = parseurl_getsiteinfo($url);
 
-//     if ($textmode) {
-//             require_once("include/items.php");
-//
-//             echo add_page_info_data($siteinfo);
-//             killme();
-//     }
-
-       $url= $siteinfo["url"];
-
-       // If the link contains BBCode stuff, make a short link out of this to avoid parsing problems
-       if (strpos($url, '[') OR strpos($url, ']')) {
-               require_once("include/network.php");
-               $url = short_link($url);
-       }
-
-       $sitedata = "";
-
-       if($siteinfo["title"] != "") {
-               $text = $siteinfo["text"];
-               $title = $siteinfo["title"];
-       }
-
-       $image = "";
-
-       if (($siteinfo["type"] != "video") AND (sizeof($siteinfo["images"]) > 0)){
-               /* Execute below code only if image is present in siteinfo */
-
-               $total_images = 0;
-               $max_images = get_config('system','max_bookmark_images');
-               if($max_images === false)
-                       $max_images = 2;
-               else
-                       $max_images = intval($max_images);
-
-               foreach ($siteinfo["images"] as $imagedata) {
-                       if($textmode)
-                               $image .= '[img='.$imagedata["width"].'x'.$imagedata["height"].']'.$imagedata["src"].'[/img]' . "\n";
-                       else
-                               $image .= '<img height="'.$imagedata["height"].'" width="'.$imagedata["width"].'" src="'.$imagedata["src"].'" alt="photo" /><br />';
-                       $total_images ++;
-                       if($max_images && $max_images >= $total_images)
-                               break;
-               }
-       }
-
-       if(strlen($text)) {
-               if($textmode)
-                       $text = '[quote]'.trim($text).'[/quote]';
-               else
-                       $text = '<blockquote>'.htmlspecialchars(trim($text)).'</blockquote>';
-       }
-
-       if($image)
-               $text = $br.$br.$image.$text;
-       else
-               $text = $br.$text;
-
-       $title = str_replace(array("\r","\n"),array('',''),$title);
-
-       $result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags;
-
-       logger('parse_url: returns: ' . $result);
-
-       $sitedata .=  trim($result);
-
-       if (($siteinfo["type"] == "video") AND ($url != ""))
-               echo "[class=type-video]".$sitedata."[/class]";
-       elseif (($siteinfo["type"] != "photo"))
-               echo "[class=type-link]".$sitedata."[/class]";
-       else
-               echo "[class=type-photo]".$title.$br.$image."[/class]";
+       unset($siteinfo["keywords"]);
 
+       echo add_page_info_data($siteinfo);
        killme();
 }
 ?>