Index: branches/5.2.x/core/kernel/processors/tag_processor.php =================================================================== diff -u -N -r13840 -r14095 --- branches/5.2.x/core/kernel/processors/tag_processor.php (.../tag_processor.php) (revision 13840) +++ branches/5.2.x/core/kernel/processors/tag_processor.php (.../tag_processor.php) (revision 14095) @@ -1,6 +1,6 @@ Prefix . '_' . $this->Special, '_'); + } + + /** * Processes tag * * @param Tag $tag @@ -86,13 +102,12 @@ // pass_params for non ParseBlock tags :) if ($flag_values['pass_params']) { - $params = array_merge_recursive2($this->Application->Parser->Params, $params); + $params = array_merge($this->Application->Parser->Params, $params); } $ret = $this->$Method($params); - $this->Prefix = $backup_prefix; - $this->Special = $backup_special; + $this->Init($backup_prefix, $backup_special); $ret = $this->PostProcess($ret, $flag_values); @@ -109,7 +124,9 @@ return $ret; } - $this->Application->handleError(E_USER_ERROR, 'Tag Undefined:
'.$prefix.':'.$tag.'', $file, $line); + $error_tag = Array ('file' => $file, 'line' => $line); + throw new ParserException('Undefined tag: ' . $prefix . ':' . $tag . '', 0, null, $error_tag); + return false; } } @@ -125,10 +142,12 @@ // aggregated tag defined $tmp = $this->Application->processPrefix($tag_mapping[0]); $__tag_processor = $tmp['prefix'].'_TagProcessor'; + $processor =& $this->Application->recallObject($__tag_processor); - $processor->Prefix = $tmp['prefix']; - $processor->Special = getArrayValue($tag_mapping, 2) ? $tag_mapping[2] : $tmp['special']; + /* @var $processor kTagProcessor */ + $processor->Init($tmp['prefix'], getArrayValue($tag_mapping, 2) ? $tag_mapping[2] : $tmp['special']); + $params['original_tag'] = $Method; // allows to define same method for different aggregated tags in same tag processor $params['PrefixSpecial'] = $this->getPrefixSpecial(); // $prefix; $ret = $processor->ProcessParsedTag($tag_mapping[1], $params, $prefix); @@ -140,10 +159,8 @@ } else { // aggregated tag not defined - if ($this->Application->isDebugMode()) { - $this->Application->Debugger->appendTrace(); - } - $this->Application->handleError(E_USER_ERROR, 'Tag '.$Method.' Undefined in '.get_class($this).'[Agregated Tag]:
'.$tag.'', $file, $line); + $error_tag = Array ('file' => $file, 'line' => $line); + throw new ParserException('Undefined aggregated tag ' . $prefix . ':' . $Method . ' (in ' . get_class($this) . ' tag processor)', 0, null, $error_tag); } }