+function bb_attachment($Text, $plaintext = false, $tryoembed = true) {
+ $Text = preg_replace_callback("/\[attachment(.*?)\](.*?)\[\/attachment\]/ism",
+ function ($match) use ($plaintext){
+
+ $attributes = $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($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);
+
+ $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 ($plaintext)
+ $text = sprintf('<a href="%s" target="_blank">%s</a>', $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 (($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, $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, $preview, $title);
+
+ $text .= $oembed;
+
+ $text .= sprintf('<blockquote>%s</blockquote></span>', trim($match[2]));
+ }
+
+ return($text);
+ },$Text);
+
+ return($Text);
+}
+
+/* function bb_rearrange_link($shared) {
+ if ($shared[1] != "type-link")
+ return($shared[0]);
+
+ $newshare = trim($shared[2]);
+ $newshare = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $newshare);
+
+ if (!strpos($shared[0], "[bookmark"))
+ $newshare = preg_replace("/\[url\=(.*?)\](.*?)\[\/url\]/ism", '[bookmark=$1]$2[/bookmark]', $newshare, 1);
+
+ preg_match("/\[img\](.*?)\[\/img\]/ism", $newshare, $matches);
+
+ if ($matches) {
+ $newshare = str_replace($matches[0], '', $newshare);
+ $newshare = "[img]".$matches[1]."[/img]\n".$newshare;
+ }
+
+ $search = array("\n\n", "\n ", " \n");
+ $replace = array("\n", "\n", "\n");
+ do {
+ $oldtext = $newshare;
+ $newshare = str_replace($search, $replace, $newshare);
+ } while ($oldtext != $newshare);
+
+ $newshare = "[class=type-link]".$newshare."[/class]";
+
+ return($newshare);
+} */
+
+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]);
+
+ $url = str_replace(array("[", "]"), array("[", "]"), htmlentities($url, ENT_QUOTES, 'UTF-8', false));
+ $title = str_replace(array("[", "]"), array("[", "]"), htmlentities($title, ENT_QUOTES, 'UTF-8', false));
+ $preview = str_replace(array("[", "]"), array("[", "]"), htmlentities($preview, ENT_QUOTES, 'UTF-8', false));
+
+ $Text = trim($shared[1])."\n[attachment type='".$type."'";
+
+ if ($url != "")
+ $Text .= " url='".$url."'";
+ if ($title != "")
+ $Text .= " title='".$title."'";
+ if ($preview != "") {
+ require_once("include/Photo.php");
+ $picturedata = get_photo_info($preview);
+
+ 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 .= "]".$description."[/attachment]";
+
+ return($Text);
+}
+
+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) {
+ if (!in_array($shared[2], array("type-link", "type-video")))
+ return($shared[0]);
+
+ 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 ($nolink)
+ return(trim($shared[1]));
+
+ $title = "";
+ $link = "";
+
+ if (isset($bookmark[2][0]))
+ $title = $bookmark[2][0];
+
+ if (isset($bookmark[1][0]))
+ $link = $bookmark[1][0];
+
+ if (($title != "") AND (strpos($shared[1],$title) !== false))
+ $title = "";
+
+// if (strpos($shared[1],$link) !== false)
+// $link = "";
+
+ $text = trim($shared[1]);
+
+ if (($text == "") AND ($title != "") AND ($link == ""))
+ $text .= "\n\n".trim($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 (($link != "") AND ($title != ""))
+ $text .= "\n[url=".trim($link)."]".trim($title)."[/url]";
+ elseif (($link != ""))
+ $text .= "\n".trim($link);
+
+ return(trim($text));
+}
+
+