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:
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
{