extract private images before bbcode translation since preg has issues with large data sizes.

This commit is contained in:
friendica 2011-11-27 04:09:14 -08:00
parent 0f4a42f550
commit cf7568efd7
3 changed files with 23 additions and 2 deletions

View file

@ -9,7 +9,7 @@ require_once('include/nav.php');
require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_VERSION', '2.3.1176' );
define ( 'FRIENDICA_VERSION', '2.3.1177' );
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
define ( 'DB_UPDATE_VERSION', 1105 );

View file

@ -30,6 +30,24 @@ function tryoembed($match){
function bbcode($Text,$preserve_nl = false) {
// extract a single private image which uses data url's since preg has issues with
// large data sizes. Put it back in after we've done all the regex matching.
$saved_image = '';
$img_start = strpos($Text,'[img]data:');
if($img_start !== false) {
$start_fragment = substr($Text,0,$img_start);
$img_start += strlen('[img]');
$saved_image = substr($Text,$img_start);
$img_end = strpos($saved_image,'[/img]');
$saved_image = substr($saved_image,0,$img_end);
logger('saved_image: ' . $saved_image);
$img_end += strlen('[/img]');
$Text = $start_fragment . '[$#saved_image#$]' . substr($Text,strlen($start_fragment) + strlen('[img]') + $img_end);
}
// If we find any event code, turn it into an event.
// After we're finished processing the bbcode we'll
// replace all of the event code with a reformatted version.
@ -206,7 +224,9 @@ function bbcode($Text,$preserve_nl = false) {
// fix any escaped ampersands that may have been converted into links
$Text = preg_replace("/\<(.*?)(src|href)=(.*?)\&amp\;(.*?)\>/ism",'<$1$2=$3&$4>',$Text);
if(strlen($saved_image))
$Text = str_replace('[$#saved_image#$]','<img src="' . $saved_image .'" alt="' . t('Image/photo') . '" />',$Text);
call_hooks('bbcode',$Text);
return $Text;

View file

@ -1303,6 +1303,7 @@ function diaspora_retraction($importer,$xml) {
return;
if($type === 'Person') {
require_once('include/Contact.php');
contact_remove($contact['id']);
}
elseif($type === 'Post') {