Merge remote-tracking branch 'upstream/develop' into 1602-mixed-content
This commit is contained in:
commit
d27ed6e9d8
3 changed files with 99 additions and 1 deletions
|
@ -858,6 +858,8 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
|
||||||
$Text = preg_replace_callback("/\[nobb\](.*?)\[\/nobb\]/ism", 'bb_spacefy',$Text);
|
$Text = preg_replace_callback("/\[nobb\](.*?)\[\/nobb\]/ism", 'bb_spacefy',$Text);
|
||||||
$Text = preg_replace_callback("/\[pre\](.*?)\[\/pre\]/ism", 'bb_spacefy',$Text);
|
$Text = preg_replace_callback("/\[pre\](.*?)\[\/pre\]/ism", 'bb_spacefy',$Text);
|
||||||
|
|
||||||
|
// Remove the abstract element. It is a non visible element.
|
||||||
|
$Text = remove_abstract($Text);
|
||||||
|
|
||||||
// Move all spaces out of the tags
|
// Move all spaces out of the tags
|
||||||
$Text = preg_replace("/\[(\w*)\](\s*)/ism", '$2[$1]', $Text);
|
$Text = preg_replace("/\[(\w*)\](\s*)/ism", '$2[$1]', $Text);
|
||||||
|
@ -1300,4 +1302,43 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
|
||||||
|
|
||||||
return trim($Text);
|
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;
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -18,6 +18,7 @@ require_once("include/event.php");
|
||||||
require_once("include/text.php");
|
require_once("include/text.php");
|
||||||
require_once("include/oembed.php");
|
require_once("include/oembed.php");
|
||||||
require_once("include/html2bbcode.php");
|
require_once("include/html2bbcode.php");
|
||||||
|
require_once("include/bbcode.php");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This class contain functions to create and send DFRN XML files
|
* @brief This class contain functions to create and send DFRN XML files
|
||||||
|
@ -720,6 +721,9 @@ class dfrn {
|
||||||
else
|
else
|
||||||
$body = $item['body'];
|
$body = $item['body'];
|
||||||
|
|
||||||
|
// Remove the abstract element. It is only locally important.
|
||||||
|
$body = remove_abstract($body);
|
||||||
|
|
||||||
if ($type == 'html') {
|
if ($type == 'html') {
|
||||||
$htmlbody = $body;
|
$htmlbody = $body;
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,19 @@ function shortenmsg($msg, $limit, $twitter = false) {
|
||||||
return($msg);
|
return($msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
function plaintext($a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2) {
|
/**
|
||||||
|
* @brief Convert a message into plaintext for connectors to other networks
|
||||||
|
*
|
||||||
|
* @param App $a The application class
|
||||||
|
* @param array $b The message array that is about to be posted
|
||||||
|
* @param int $limit The maximum number of characters when posting to that network
|
||||||
|
* @param bool $includedlinks Has an attached link to be included into the message?
|
||||||
|
* @param int $htmlmode This triggers the behaviour of the bbcode conversion
|
||||||
|
* @param string $target_network Name of the network where the post should go to.
|
||||||
|
*
|
||||||
|
* @return string The converted message
|
||||||
|
*/
|
||||||
|
function plaintext($a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2, $target_network = "") {
|
||||||
require_once("include/bbcode.php");
|
require_once("include/bbcode.php");
|
||||||
require_once("include/html2plain.php");
|
require_once("include/html2plain.php");
|
||||||
require_once("include/network.php");
|
require_once("include/network.php");
|
||||||
|
@ -144,6 +156,9 @@ function plaintext($a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2) {
|
||||||
// Add an URL element if the text contains a raw link
|
// 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);
|
$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
|
// At first look at data that is attached via "type-..." stuff
|
||||||
// This will hopefully replaced with a dedicated bbcode later
|
// This will hopefully replaced with a dedicated bbcode later
|
||||||
//$post = get_attached_data($b["body"]);
|
//$post = get_attached_data($b["body"]);
|
||||||
|
@ -154,6 +169,44 @@ function plaintext($a, $b, $limit = 0, $includedlinks = false, $htmlmode = 2) {
|
||||||
elseif ($b["title"] != "")
|
elseif ($b["title"] != "")
|
||||||
$post["text"] = trim($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);
|
$html = bbcode($post["text"], false, false, $htmlmode);
|
||||||
$msg = html2plain($html, 0, true);
|
$msg = html2plain($html, 0, true);
|
||||||
$msg = trim(html_entity_decode($msg,ENT_QUOTES,'UTF-8'));
|
$msg = trim(html_entity_decode($msg,ENT_QUOTES,'UTF-8'));
|
||||||
|
|
Loading…
Reference in a new issue