lack of time and I can't wait until the new version here is a solution to this bug (only for "[ quote ]"):
File: com_comment/com_comment/joscomment/comment.class.php
Line: 2469
And replace this function by :
function parseUBB_recurse( $matches )
{
$split = $this->_splitTag;
$limittext = $this->_limittextTag;
$TO = $this->_TO;
$TC = $this->_TC;
/* other recurse : #\[img]((?:[^[]|\[(?!/?img])|(?R))+)\[/img]#i*/
/* ?: => group but do not capture
* change ...)*)\[/x... in )+)\[/x if empty inside not authorized
*
* always : $split+start+$split text $split.end.$split
*/
$patterns = array(
'#\[b]((?:[^[]|\[(?!/?b])|(?R))*)\[/b]#i',
'#\[u]((?:[^[]|\[(?!/?u])|(?R))*)\[/u]#i',
'#\[i]((?:[^[]|\[(?!/?i])|(?R))*)\[/i]#i',
'#\[url=(.*?)]((?:[^[]|\[(?!/?url])|(?R))*)\[/url]#i',
'#\[url]((?:[^[]|\[(?!/?url])|(?R))*)\[/url]#i',
'#\[email]((?:[^[]|\[(?!/?email])|(?R))*)\[/email]#i',
'#\[email=(.*?)]((?:[^[]|\[(?!/?email])|(?R))*)\[/email]#i',
'#\[font=(.*?)]((?:[^[]|\[(?!/?font])|(?R))*)\[/font]#i',
'#\[size=(.*?)]((?:[^[]|\[(?!/?size])|(?R))*)\[/size]#i',
'#\[color=(.*?)]((?:[^[]|\[(?!/?color])|(?R))*)\[/color]#i',
'#\[quote]((?:[^[]|\[(?!/?quote])|(?R))*)\[/quote]#i',
'#\[quote=(.*?)]((?:[^[]|\[(?!/?quote])|(?R))*)\[/quote]#i',
'#\[code]((?:[^[]|\[(?!/?code])|(?R))*)\
#i',
'#\((?:[^[]|\[(?!/?img])|(?R))*)\#i',
'#\((?:[^[]|\[(?!/?img])|(?R))*)\#i',
);
/*
* replacements
*/
$replacements = array();
if ($this->_support_UBBcode) {
$replacements[] = $split.'b' .$TO.'b'.$TC.$split.'\\1'. $split.'b'.$TO.'/b'.$TC.$split;
$replacements[] = $split.'u' .$TO.'u'.$TC.$split.'\\1'. $split.'u'.$TO.'/u'.$TC.$split;
$replacements[] = $split.'i' .$TO.'i'.$TC.$split.'\\1'. $split.'i'.$TO.'/i'.$TC.$split;
if ($this->_support_link) {
$replacements[] = $split.'a' .$TO.'a target=\'_blank\' rel=\'external nofollow\' href=\'\\1\' title=\'Visit \\1\''.$TC.$split.$limittext.'\\2'. $split.'a'.$TO.'/a'.$TC.$split;
$replacements[] = $split.'a' .$TO.'a target=\'_blank\' rel=\'external nofollow\' href=\'\\1\' title=\'Visit \\1\''.$TC.$split.$limittext.'\\1'. $split.'a'.$TO.'/a'.$TC.$split;
$replacements[] = $split.'a' .$TO.'a href=\'mailto:\\1\''.$TC.$split.$limittext.'\\1'. $split.'a'.$TO.'/a'.$TC.$split;
$replacements[] = $split.'a' .$TO.'a href=\'mailto:\\1\''.$TC.$split.$limittext.'\\2'. $split.'a'.$TO.'/a'.$TC.$split;
} else {
$replacements[] = $split.' link:\\1';
$replacements[] = $split.' link:\\1';
$replacements[] = $split.' \\1';
$replacements[] = $split.' \\1';
}
$replacements[] = $split.'span' .$TO.'span style=\'font-family: \\1\''.$TC.$split.'\\2'. $split.'span'.$TO.'/span'.$TC.$split;
$replacements[] = $split.'span' .$TO.'span style=\'font-size: \\1\''.$TC.$split.'\\2'. $split.'span'.$TO.'/span'.$TC.$split;
if ($this->_hide) {
$replacements[] = $split.'\\2';
} else {
$replacements[] = $split.$TO.'span style=\'color: \\1\''.$TC.$split.'\\2'.$split.$TO.'/span'.$TC.$split;
}
} else {
$replacements[] = $split.' \\1';
$replacements[] = $split.' \\1';
$replacements[] = $split.' \\1';
$replacements[] = $split.' link:\\1';
$replacements[] = $split.' link:\\1';
$replacements[] = $split.' \\1';
$replacements[] = $split.' \\1';
$replacements[] = $split.' \\2';
$replacements[] = $split.' \\2';
$replacements[] = $split.' \\2';
}
/*
* quotes
*/
// $patterns = array("/\[quote\](.+?)\[\/quote\]/is",
// "/\
(.+?)\ wrote: (.+?)\[\/quote\]/is");
// $replacements = array("<div class='quote'><div class='genmed'><b>" . _JOOMLACOMMENT_UBB_QUOTE . "</b></div><div class='quotebody'>\\1</div></div>",
// "<div class='quote'><div class='genmed'><b>\\1 " . _JOOMLACOMMENT_UBB_WROTE . "</b></div><div class='quotebody'>\\2</div></div>");
if ($this->_support_quotecode) {
$replacements[] = $split.'div' .$TO.'div class=\'quote\''.$TC. $split
.$split.'div' .$TO.'div class=\'genmed\''.$TC.$split
.$split.'b' .$TO.'b'.$TC.$split. _JOOMLACOMMENT_UBB_QUOTE
.$split.'b' .$TO.'/b'.$TC.$split
.$split.'div' .$TO.'/div'.$TC.$split
.$split.'div' .$TO.'div class=\'quotebody\''.$TC.$split.'\\1'
.$split.'div' .$TO.'/div'.$TC.$split
.$split.'div' .$TO.'/div'.$TC.$split;
$replacements[] = $split.'div' .$TO.'div class=\'quote\''.$TC. $split
.$split.'div' .$TO.'div class=\'genmed\''.$TC.$split
.$split.'b' .$TO.'b'.$TC.$split.'\\1 '._JOOMLACOMMENT_UBB_WROTE
.$split.'b' .$TO.'/b'.$TC.$split
.$split.'div' .$TO.'/div'.$TC.$split
.$split.'div' .$TO.'div class=\'quotebody\''.$TC.$split.'\\2'
.$split.'div' .$TO.'/div'.$TC.$split
.$split.'div' .$TO.'/div'.$TC.$split;
} else {
$replacements[] = $split.' \\1';
$replacements[] = $split.' \\2';
}
/*
* code
*/
if ($this->_support_quotecode) {
$replacements[] = $split.'div' .$TO.'div class=\'code\''.$TC. $split
.$split.'div' .$TO.'div class=\'genmed\''.$TC.$split
.$split.'b' .$TO.'b'.$TC.$split. _JOOMLACOMMENT_UBB_CODE
.$split.'b' .$TO.'/b'.$TC.$split
.$split.'div' .$TO.'/div'.$TC.$split
.$split.'div' .$TO.'div class=\'quotebody\''.$TC.$split
.$split.'pre' .$TO.'pre'.$TC.$split.'\\1'
.$split.'pre' .$TO.'/pre'.$TC.$split
.$split.'div' .$TO.'/div'.$TC.$split
.$split.'div' .$TO.'/div'.$TC.$split;
} else {
$replacements[] = $split.' \\1';
}
/*
* images
*/
if ($this->_support_pictures) {
$maxwidthpictures = (int) $this->_pictures_maxwidth;
if ($maxwidthpictures>0) {
$divO = $split.'div' .$TO.'div style=\'width:'.$maxwidthpictures.'px;overflow:hidden;\''.$TC. $split;
$divC = $split.'div' .$TO.'/div'.$TC.$split;
} else {
$divO = $divC = '';
}
$replacements[] = $divO. $split .$TO.'img src=\'\\1\' alt=\'Posted image\' /'.$TC.$split.$divC;
$replacements[] = $divO. $split .$TO.'img src=\'\\1\' alt=\'Posted image\' /'.$TC.$split.$divC;
} else {
/* no image = link */
if ($this->_support_link) {
$replacements[] = $split.'a' .$TO.'a target=\'_blank\' rel=\'external nofollow\' href=\'\\1\' title=\'Visit \\1\''.$TC.$split.$limittext.'\\1'. $split.'a'.$TO.'/a'.$TC.$split;
$replacements[] = $split.'a' .$TO.'a target=\'_blank\' rel=\'external nofollow\' href=\'\\1\' title=\'Visit \\1\''.$TC.$split.$limittext.'\\2'. $split.'a'.$TO.'/a'.$TC.$split;
} else {
$replacements[] = $split.' image:\\1';
$replacements[] = $split.' image:\\1';
}
}
if (is_array($matches)) {
$html = preg_replace($patterns, $replacements, $matches[0]);
$matches = $html;
}
/* *
* By Wass
*/
if ($this->_support_quotecode){
while( preg_match( '#\
(.*)\ wrote: (.+)\[/quote\]#isU', $matches ) ){
$matches= preg_replace('#\
(.*)\ wrote: (.+)\[/quote\]#isU','<div class="quote"><div class="genmed"><b>$1 '._JOOMLACOMMENT_UBB_WROTE.'</b></div><div class="quotebody">$2</div></div>',$matches);
}
while( preg_match( '#\[quote(.*)\](.+)\[/quote\]#isU', $matches ) ){
$matches= preg_replace('#\[quote(.*)\](.+)\[/quote\]#isU','<div class="quote"><div class="genmed"><b>$1 '._JOOMLACOMMENT_UBB_QUOTE.'</b></div><div class="quotebody">$2</div></div>',$matches);
}
}
return preg_replace_callback($patterns, array(&$this, 'parseUBB_recurse'), $matches );
}[/code]