$s = htmlspecialchars($s, ENT_NOQUOTES, 'UTF-8');
return $s;
}
+
+ /**
+ * The purpose of this function is to apply system message length limits to
+ * imported messages without including any embedded photos in the length
+ *
+ * @brief Truncates imported message body string length to max_import_size
+ * @param string $body
+ * @return string
+ */
+ public static function limitBodySize($body)
+ {
+ $maxlen = get_max_import_size();
+
+ // If the length of the body, including the embedded images, is smaller
+ // than the maximum, then don't waste time looking for the images
+ if ($maxlen && (strlen($body) > $maxlen)) {
+
+ logger('the total body length exceeds the limit', LOGGER_DEBUG);
+
+ $orig_body = $body;
+ $new_body = '';
+ $textlen = 0;
+
+ $img_start = strpos($orig_body, '[img');
+ $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
+ $img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false);
+ while (($img_st_close !== false) && ($img_end !== false)) {
+
+ $img_st_close++; // make it point to AFTER the closing bracket
+ $img_end += $img_start;
+ $img_end += strlen('[/img]');
+
+ if (!strcmp(substr($orig_body, $img_start + $img_st_close, 5), 'data:')) {
+ // This is an embedded image
+
+ if (($textlen + $img_start) > $maxlen) {
+ if ($textlen < $maxlen) {
+ logger('the limit happens before an embedded image', LOGGER_DEBUG);
+ $new_body = $new_body . substr($orig_body, 0, $maxlen - $textlen);
+ $textlen = $maxlen;
+ }
+ } else {
+ $new_body = $new_body . substr($orig_body, 0, $img_start);
+ $textlen += $img_start;
+ }
+
+ $new_body = $new_body . substr($orig_body, $img_start, $img_end - $img_start);
+ } else {
+
+ if (($textlen + $img_end) > $maxlen) {
+ if ($textlen < $maxlen) {
+ logger('the limit happens before the end of a non-embedded image', LOGGER_DEBUG);
+ $new_body = $new_body . substr($orig_body, 0, $maxlen - $textlen);
+ $textlen = $maxlen;
+ }
+ } else {
+ $new_body = $new_body . substr($orig_body, 0, $img_end);
+ $textlen += $img_end;
+ }
+ }
+ $orig_body = substr($orig_body, $img_end);
+
+ if ($orig_body === false) {
+ // in case the body ends on a closing image tag
+ $orig_body = '';
+ }
+
+ $img_start = strpos($orig_body, '[img');
+ $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
+ $img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false);
+ }
+
+ if (($textlen + strlen($orig_body)) > $maxlen) {
+ if ($textlen < $maxlen) {
+ logger('the limit happens after the end of the last image', LOGGER_DEBUG);
+ $new_body = $new_body . substr($orig_body, 0, $maxlen - $textlen);
+ }
+ } else {
+ logger('the text size with embedded images extracted did not violate the limit', LOGGER_DEBUG);
+ $new_body = $new_body . $orig_body;
+ }
+
+ return $new_body;
+ } else {
+ return $body;
+ }
+ }
}
}
}
- /**
- * The purpose of this function is to apply system message length limits to
- * imported messages without including any embedded photos in the length
- *
- * @brief Truncates imported message body string length to max_import_size
- * @param string $body
- * @return string
- */
- public static function limitBodySize($body)
- {
- $maxlen = get_max_import_size();
-
- // If the length of the body, including the embedded images, is smaller
- // than the maximum, then don't waste time looking for the images
- if ($maxlen && (strlen($body) > $maxlen)) {
-
- logger('the total body length exceeds the limit', LOGGER_DEBUG);
-
- $orig_body = $body;
- $new_body = '';
- $textlen = 0;
-
- $img_start = strpos($orig_body, '[img');
- $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
- $img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false);
- while (($img_st_close !== false) && ($img_end !== false)) {
-
- $img_st_close++; // make it point to AFTER the closing bracket
- $img_end += $img_start;
- $img_end += strlen('[/img]');
-
- if (!strcmp(substr($orig_body, $img_start + $img_st_close, 5), 'data:')) {
- // This is an embedded image
-
- if (($textlen + $img_start) > $maxlen) {
- if ($textlen < $maxlen) {
- logger('the limit happens before an embedded image', LOGGER_DEBUG);
- $new_body = $new_body . substr($orig_body, 0, $maxlen - $textlen);
- $textlen = $maxlen;
- }
- } else {
- $new_body = $new_body . substr($orig_body, 0, $img_start);
- $textlen += $img_start;
- }
-
- $new_body = $new_body . substr($orig_body, $img_start, $img_end - $img_start);
- } else {
-
- if (($textlen + $img_end) > $maxlen) {
- if ($textlen < $maxlen) {
- logger('the limit happens before the end of a non-embedded image', LOGGER_DEBUG);
- $new_body = $new_body . substr($orig_body, 0, $maxlen - $textlen);
- $textlen = $maxlen;
- }
- } else {
- $new_body = $new_body . substr($orig_body, 0, $img_end);
- $textlen += $img_end;
- }
- }
- $orig_body = substr($orig_body, $img_end);
-
- if ($orig_body === false) {
- // in case the body ends on a closing image tag
- $orig_body = '';
- }
-
- $img_start = strpos($orig_body, '[img');
- $img_st_close = ($img_start !== false ? strpos(substr($orig_body, $img_start), ']') : false);
- $img_end = ($img_start !== false ? strpos(substr($orig_body, $img_start), '[/img]') : false);
- }
-
- if (($textlen + strlen($orig_body)) > $maxlen) {
- if ($textlen < $maxlen) {
- logger('the limit happens after the end of the last image', LOGGER_DEBUG);
- $new_body = $new_body . substr($orig_body, 0, $maxlen - $textlen);
- }
- } else {
- logger('the text size with embedded images extracted did not violate the limit', LOGGER_DEBUG);
- $new_body = $new_body . $orig_body;
- }
-
- return $new_body;
- } else {
- return $body;
- }
- }
-
private static function setHashtags(&$item)
{
use Friendica\Util\Crypto;
use Friendica\Util\Network;
use Friendica\Util\XML;
+use Friendica\Content\Text\BBCode;
use dba;
use DOMDocument;
// make sure nobody is trying to sneak some html tags by us
$item["body"] = notags(base64url_decode($item["body"]));
- $item["body"] = Item::limitBodySize($item["body"]);
+ $item["body"] = BBCode::limitBodySize($item["body"]);
/// @todo Do we really need this check for HTML elements? (It was copied from the old function)
if ((strpos($item['body'], '<') !== false) && (strpos($item['body'], '>') !== false)) {
use Friendica\Database\DBM;
use Friendica\Model\Contact;
use Friendica\Model\Item;
+use Friendica\Content\Text\BBCode;
use Friendica\Protocol\Email;
use Friendica\Protocol\PortableContact;
use Friendica\Util\Network;
continue;
}
$datarray['body'] = escape_tags($r['body']);
- $datarray['body'] = Item::limitBodySize($datarray['body']);
+ $datarray['body'] = BBCode::limitBodySize($datarray['body']);
logger("Mail: Importing ".$msg_uid." for ".$mailconf['user']);