$a = get_app();
+ // Remove the abstract element. It is a non visible element.
+ $Text = remove_abstract($Text);
+
// Hide all [noparse] contained bbtags by spacefying them
// POSSIBLE BUG --> Will the 'preg' functions crash if there's an embedded image?
return trim($Text);
}
+
+/**
+ * @brief Removes the "abstract" element from the text
+ *
+ * @param string $text The text with BBCode
+ * @return string The same text - but without "abstract" element
+ */
+function remove_abstract($text) {
+ $text = preg_replace("/[\s|\n]*\[abstract\].*?\[\/abstract\][\s|\n]*/ism", '', $text);
+ $text = preg_replace("/[\s|\n]*\[abstract=.*?\].*?\[\/abstract][\s|\n]*/ism", '', $text);
+
+ return $text;
+}
+
+/**
+ * @brief Returns the value of the "abstract" element
+ *
+ * @param string $text The text that maybe contains the element
+ * @param string $addon The addon for which the abstract is meant for
+ * @return string The abstract
+ */
+function fetch_abstract($text, $addon = "") {
+ $abstract = "";
+ $abstracts = array();
+ $addon = strtolower($addon);
+
+ if (preg_match_all("/\[abstract=(.*?)\](.*?)\[\/abstract\]/ism",$text, $results, PREG_SET_ORDER))
+ foreach ($results AS $result)
+ $abstracts[strtolower($result[1])] = $result[2];
+
+ if (isset($abstracts[$addon]))
+ $abstract = $abstracts[$addon];
+
+ if ($abstract == "")
+ if (preg_match("/\[abstract\](.*?)\[\/abstract\]/ism",$text, $result))
+ $abstract = $result[1];
+
+ return $abstract;
+}
?>
return($msg);
}
-function plaintext($a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2) {
+function plaintext($a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2, $target_network = "") {
require_once("include/bbcode.php");
require_once("include/html2plain.php");
require_once("include/network.php");
// Add an URL element if the text contains a raw link
$body = preg_replace("/([^\]\='".'"'."]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url]$2[/url]', $body);
+ // Remove the abstract
+ $body = remove_abstract($body);
+
// At first look at data that is attached via "type-..." stuff
// This will hopefully replaced with a dedicated bbcode later
//$post = get_attached_data($b["body"]);
elseif ($b["title"] != "")
$post["text"] = trim($b["title"]);
+ $abstract = "";
+
+ // Fetch the abstract from the given target network
+ if ($target_network != "") {
+ $default_abstract = fetch_abstract($b["body"]);
+ $abstract = fetch_abstract($b["body"], $target_network);
+
+ // If we post to a network with no limit we only fetch
+ // an abstract exactly for this network
+ if (($limit == 0) AND ($abstract == $default_abstract))
+ $abstract = "";
+
+ } else // Try to guess the correct target network
+ switch ($htmlmode) {
+ case 8:
+ $abstract = fetch_abstract($b["body"], NETWORK_TWITTER);
+ break;
+ case 7:
+ $abstract = fetch_abstract($b["body"], NETWORK_STATUSNET);
+ break;
+ case 6:
+ $abstract = fetch_abstract($b["body"], NETWORK_APPNET);
+ break;
+ default: // We don't know the exact target.
+ // We fetch an abstract since there is a posting limit.
+ if ($limit > 0)
+ $abstract = fetch_abstract($b["body"]);
+ }
+
+ if ($abstract != "") {
+ $post["text"] = $abstract;
+
+ if ($post["type"] == "text") {
+ $post["type"] = "link";
+ $post["url"] = $b["plink"];
+ }
+ }
+
$html = bbcode($post["text"], false, false, $htmlmode);
$msg = html2plain($html, 0, true);
$msg = trim(html_entity_decode($msg,ENT_QUOTES,'UTF-8'));