diff --git a/phpgwapi/inc/functions.inc.php b/phpgwapi/inc/functions.inc.php
index 9c21275d3b..10b44aa175 100644
--- a/phpgwapi/inc/functions.inc.php
+++ b/phpgwapi/inc/functions.inc.php
@@ -32,7 +32,7 @@
/*!
@function CreateObject
@abstract Load a class and include the class file if not done so already.
- @discussion Author: mdean
+ @discussion Author: mdean, milosch (thanks to jengo and ralf)
This function is used to create an instance of a class,
and if the class file has not been included it will do so.
Syntax: CreateObject('app.class', 'constructor_params');
@@ -40,8 +40,11 @@
@param $classname name of class
@param $p1-$p16 class parameters (all optional)
*/
- function CreateObject($classname, $p1='')
-/* function CreateObject($classname, $p1='',$p2='',$p3='',$p4='',$p5='',$p6='',$p7='',$p8='',$p9='',$p10='',$p11='',$p12='',$p13='',$p14='',$p15='',$p16='')*/
+ function CreateObject($classname,
+ $p1='_UNDEF_',$p2='_UNDEF_',$p3='_UNDEF_',$p4='_UNDEF_',
+ $p5='_UNDEF_',$p6='_UNDEF_',$p7='_UNDEF_',$p8='_UNDEF_',
+ $p9='_UNDEF_',$p10='_UNDEF_',$p11='_UNDEF_',$p12='_UNDEF_',
+ $p13='_UNDEF_',$p14='_UNDEF_',$p15='_UNDEF_',$p16='_UNDEF_')
{
global $phpgw, $phpgw_info, $phpgw_domain;
$classpart = explode (".", $classname);
@@ -53,14 +56,29 @@
$phpgw_info['flags']['included_classes'][$classname] = True;
include(PHPGW_INCLUDE_ROOT.'/'.$appname.'/inc/class.'.$classname.'.inc.php');
}
- if ($p1 == '')
+ if ($p1 == '_UNDEF_')
{
$obj = new $classname;
}
else
{
- /* $obj = new $classname($p1,$p2,$p3,$p4,$p5,$p6,$p7,$p8,$p9,$p10,$p11,$p12,$p13,$p14,$p15,$p16); */
- $obj = new $classname($p1);
+ $input = array($p1,$p2,$p3,$p4,$p5,$p6,$p7,$p8,$p9,$p10,$p11,$p12,$p13,$p14,$p15,$p16);
+ $i = 1;
+ $code = "\$obj = new \$classname(";
+ while (list($x,$test) = each($input))
+ {
+ if ($test == '_UNDEF_' || $i == 17)
+ {
+ break;
+ }
+ else
+ {
+ $code .= "\$p" . $i . ',';
+ }
+ $i++;
+ }
+ $code = substr($code,0,-1) . ');';
+ eval($code);
}
return $obj;
}