Index: branches/5.2.x/core/kernel/processors/tag_processor.php
===================================================================
diff -u -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);
}
}