Moved "limitBodySize"
This commit is contained in:
parent
bdbfffafea
commit
6871481a78
|
@ -549,4 +549,91 @@ class BBCode
|
||||||
$s = htmlspecialchars($s, ENT_NOQUOTES, 'UTF-8');
|
$s = htmlspecialchars($s, ENT_NOQUOTES, 'UTF-8');
|
||||||
return $s;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1067,93 +1067,6 @@ class Item
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 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)
|
private static function setHashtags(&$item)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ use Friendica\Protocol\OStatus;
|
||||||
use Friendica\Util\Crypto;
|
use Friendica\Util\Crypto;
|
||||||
use Friendica\Util\Network;
|
use Friendica\Util\Network;
|
||||||
use Friendica\Util\XML;
|
use Friendica\Util\XML;
|
||||||
|
use Friendica\Content\Text\BBCode;
|
||||||
|
|
||||||
use dba;
|
use dba;
|
||||||
use DOMDocument;
|
use DOMDocument;
|
||||||
|
@ -2449,7 +2450,7 @@ class DFRN
|
||||||
// make sure nobody is trying to sneak some html tags by us
|
// make sure nobody is trying to sneak some html tags by us
|
||||||
$item["body"] = notags(base64url_decode($item["body"]));
|
$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)
|
/// @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)) {
|
if ((strpos($item['body'], '<') !== false) && (strpos($item['body'], '>') !== false)) {
|
||||||
|
|
|
@ -9,6 +9,7 @@ use Friendica\Core\PConfig;
|
||||||
use Friendica\Database\DBM;
|
use Friendica\Database\DBM;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
use Friendica\Model\Item;
|
use Friendica\Model\Item;
|
||||||
|
use Friendica\Content\Text\BBCode;
|
||||||
use Friendica\Protocol\Email;
|
use Friendica\Protocol\Email;
|
||||||
use Friendica\Protocol\PortableContact;
|
use Friendica\Protocol\PortableContact;
|
||||||
use Friendica\Util\Network;
|
use Friendica\Util\Network;
|
||||||
|
@ -488,7 +489,7 @@ class OnePoll
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$datarray['body'] = escape_tags($r['body']);
|
$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']);
|
logger("Mail: Importing ".$msg_uid." for ".$mailconf['user']);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user