Index: branches/unlabeled/unlabeled-1.12.10/core/kernel/utility/factory.php =================================================================== diff -u -r3798 -r4350 --- branches/unlabeled/unlabeled-1.12.10/core/kernel/utility/factory.php (.../factory.php) (revision 3798) +++ branches/unlabeled/unlabeled-1.12.10/core/kernel/utility/factory.php (.../factory.php) (revision 4350) @@ -208,7 +208,7 @@ * @param Array $dependecies List of classes required for this class functioning * @access public */ - function registerClass($real_class,$file,$pseudo_class=null, $dependecies = Array() ) + function registerClass($real_class, $file, $pseudo_class=null, $dependecies = Array() ) { if(!isset($pseudo_class)) $pseudo_class = $real_class; if(!isset($this->Files[$real_class])) $this->Files[$real_class]=$file; @@ -219,6 +219,7 @@ } if($dependecies) { + if (!is_array($dependecies)) $dependecies = array($dependecies); foreach($dependecies as $required_class) { $this->registerDependency($real_class, $required_class); @@ -238,7 +239,9 @@ */ function registerDependency($depended_class, $class_name) { - $this->Dependencies[$depended_class][] = $this->realClasses[$class_name]; + if (!in_array($this->realClasses[$class_name], $this->Dependencies[$depended_class])) { + $this->Dependencies[$depended_class][] = $this->realClasses[$class_name]; + } } } Index: branches/unlabeled/unlabeled-1.25.2/core/kernel/utility/unit_config_reader.php =================================================================== diff -u -r4078 -r4350 --- branches/unlabeled/unlabeled-1.25.2/core/kernel/utility/unit_config_reader.php (.../unit_config_reader.php) (revision 4078) +++ branches/unlabeled/unlabeled-1.25.2/core/kernel/utility/unit_config_reader.php (.../unit_config_reader.php) (revision 4350) @@ -138,7 +138,7 @@ foreach ($this->configData as $prefix => $config) { $this->parseConfig($prefix); } - + $this->Application->HandleEvent( new kEvent('m:OnAfterConfigRead') ); } @@ -284,36 +284,27 @@ { $config =& $this->configData[$prefix]; $event_manager =& $this->Application->recallObject('EventManager'); + + $register_classes = getArrayValue($config,'RegisterClasses'); + if (!$register_classes) $register_classes = array(); $class_params=Array('ItemClass','ListClass','EventHandlerClass','TagProcessorClass'); foreach($class_params as $param_name) { if ( !(isset($config[$param_name]) ) ) continue; - $class_info =& $config[$param_name]; - $pseudo_class = $this->getPrefixByParamName($param_name,$prefix); - $this->Application->registerClass( $class_info['class'], - $config['BasePath'].'/'.$class_info['file'], - $pseudo_class); - $event_manager->registerBuildEvent($pseudo_class,$class_info['build_event']); - - // register classes on which current class depends - $require_classes = getArrayValue($class_info, 'require_classes'); - if($require_classes) - { - foreach($require_classes as $require_class) - { - $this->Application->Factory->registerDependency($class_info['class'], $require_class); - } - } + $config[$param_name]['pseudo'] = $this->getPrefixByParamName($param_name,$prefix); + $register_classes[] = $config[$param_name]; } - $register_classes = getArrayValue($config,'RegisterClasses'); - if($register_classes) + foreach($register_classes as $class_info) { - foreach($register_classes as $class_info) - { - $this->Application->registerClass( $class_info['class'], - $config['BasePath'].'/'.$class_info['file'], - $class_info['pseudo']); + $this->Application->registerClass( + $class_info['class'], + $config['BasePath'].'/'.$class_info['file'], + $class_info['pseudo'], + getArrayValue($class_info, 'require_classes') + ); + if (getArrayValue($class_info, 'build_event')) { + $event_manager->registerBuildEvent($class_info['pseudo'],$class_info['build_event']); } } @@ -432,7 +423,7 @@ else { $this->configData[$prefix][$name] = $value; } - + } function getPrefixByParamName($paramName,$prefix)