openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 5266f565a037f4a45dfa6f17c7b9252c55603cab
parent 3ac022091736f3f94cbaf3bef8dbef2fd3ecb57f
Author: Jan Dankert <devnull@localhost>
Date:   Sun, 29 Mar 2015 00:40:16 +0100

Parameter von Makros typsicher setzen, Warnung, wenn Parameter nicht gefunden.

Diffstat:
model/Value.class.php | 35++++++++++++++++++++++++-----------
textClasses/renderer/HtmlRenderer.class.php | 35+++++++++++++++++++++++++----------
2 files changed, 49 insertions(+), 21 deletions(-)

diff --git a/model/Value.class.php b/model/Value.class.php @@ -1210,14 +1210,14 @@ SQL if ( class_exists($className) ) { - $dynEl = new $className; - $dynEl->page = &$this->page; + $macro = new $className; + $macro->page = &$this->page; - if ( method_exists( $dynEl,'execute' ) ) + if ( method_exists( $macro,'execute' ) ) { - //$dynEl->delOutput(); - $dynEl->objectid = $this->page->objectid; - $dynEl->page = &$this->page; + //$$macro->delOutput(); + $macro->objectid = $this->page->objectid; + $macro->page = &$this->page; foreach( $this->element->getDynamicParameters() as $param_name=>$param_value ) { @@ -1238,15 +1238,28 @@ SQL $param_value = $value->getRawValue(); } - if ( isset( $dynEl->$param_name ) ) + if ( isset( $macro->$param_name ) ) { - Logger::debug("Setting parameter for macro Class $className, ".$param_name.':'.$param_value ); - $dynEl->$param_name = $param_value; + Logger::debug("Setting parameter for Macro-class $className, ".$param_name.':'.$param_value ); + + // Die Parameter der Makro-Klasse typisiert setzen. + if ( is_int($macro->$param_name) ) + $macro->$param_name = intval($param_value); + elseif ( is_array($macro->$param_name) ) + $macro->$param_name = explode(',',$param_value); + else + $macro->$param_name = $param_value; + + } + else + { + if ( !$this->publish ) + $inhalt .= "WARNING: Unknown parameter $param_name in macro $className\n"; } } - $dynEl->execute(); - $inhalt = $dynEl->getOutput(); + $macro->execute(); + $inhalt .= $macro->getOutput(); } else { diff --git a/textClasses/renderer/HtmlRenderer.class.php b/textClasses/renderer/HtmlRenderer.class.php @@ -209,24 +209,39 @@ class HtmlRenderer if ( class_exists($className) ) { - $dynEl = new $className; - $dynEl->page = &$this->page; + $macro = new $className; + $macro->page = &$this->page; - if ( method_exists( $dynEl,'execute' ) ) + if ( method_exists( $macro,'execute' ) ) { - $dynEl->objectid = $this->page->objectid; - $dynEl->page = &$this->page; + $macro->objectid = $this->page->objectid; + $macro->page = &$this->page; foreach( $child->attributes as $param_name=>$param_value ) { if ( $param_name == 'help') - $val = 'Available macro attributes: '.implode(',',array_keys(get_object_vars($dynEl))); - if ( isset( $dynEl->$param_name ) ) - $dynEl->$param_name = $param_value; + $val .= 'HELP: Available macro attributes in '.$className.': '.implode(',',array_keys(get_object_vars($macro))."\n"); + if ( isset( $macro->$param_name ) ) + { + // Die Parameter der Makro-Klasse typisiert setzen. + if ( is_int($macro->$param_name) ) + $macro->$param_name = intval($param_value); + elseif ( is_array($macro->$param_name) ) + $macro->$param_name = explode(',',$param_value); + else + $macro->$param_name = $param_value; + } + else + { + $val .= "WARNING: Unknown parameter '$param_name' in macro '$className'\n"; + } + + + } - $dynEl->execute(); - $val .= $dynEl->getOutput(); + $macro->execute(); + $val .= $macro->getOutput(); } else {