-function shortenmsg($msg, $limit) {
- $lines = explode("\n", $msg);
- $msg = "";
- $recycle = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8');
- foreach ($lines AS $row=>$line) {
- if (strlen(trim($msg."\n".$line)) <= $limit)
- $msg = trim($msg."\n".$line);
- // Is the new message empty by now or is it a reshared message?
- elseif (($msg == "") OR (($row == 1) AND (substr($msg, 0, 4) == $recycle)))
- $msg = substr(substr(trim($msg."\n".$line), 0, $limit), 0, -3)."...";
- else
- break;
+/**
+ * @brief Fetches attachment data that were generated with the "attachment" element
+ *
+ * @param string $body Message body
+ * @return array
+ * 'type' -> Message type ("link", "video", "photo")
+ * 'text' -> Text before the shared message
+ * 'after' -> Text after the shared message
+ * 'image' -> Preview image of the message
+ * 'url' -> Url to the attached message
+ * 'title' -> Title of the attachment
+ * 'description' -> Description of the attachment
+ */
+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", "photo", "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"] = html_entity_decode($url, ENT_QUOTES, 'UTF-8');
+
+ $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];
+
+ if ($title != "") {
+ $title = bbcode(html_entity_decode($title, ENT_QUOTES, 'UTF-8'), false, false, true);
+ $title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
+ $title = str_replace(array("[", "]"), array("[", "]"), $title);
+ $data["title"] = $title;