/** * Include files with APUs and load required data layer methods * * @param array $_required_apu list of APU names * @param bool $add_controler_dl load also data layer methods required by page controler? * @return none * @access private */ function _apu_require($_required_apu, $add_controler_dl = true) { global $data, $_SERWEB; static $_loaded_apu = array(); $required_data_layer = array(); $loaded_modules = getLoadedModules(); foreach ($_required_apu as $item) { if (false === array_search($item, $_loaded_apu)) { //if required apu isn't loaded yet, load it $file_found = false; //try found apu in loaded modules foreach ($loaded_modules as $module) { if (file_exists($_SERWEB["modulesdir"] . $module . "/" . $item . ".php")) { require_once $_SERWEB["modulesdir"] . $module . "/" . $item . ".php"; $file_found = true; break; } } // if apu was not found in modules, requere the one from 'application_layer' directory if (!$file_found) { //require application unit require_once $_SERWEB["appdir"] . $item . ".php"; } $_loaded_apu[] = $item; $required_data_layer = array_merge($required_data_layer, call_user_func(array($item, 'get_required_data_layer_methods'))); } } if ($add_controler_dl) { $page_ctl_class = isset($GLOBALS['_page_controller_classname']) ? $GLOBALS['_page_controller_classname'] : 'page_conroler'; $required_data_layer = array_merge($required_data_layer, call_user_func(array($page_ctl_class, 'get_required_data_layer_methods'))); } $data->add_method($required_data_layer); }
/** * Call function <module_name>_init() for each loaded module */ function init_modules() { $loaded_modules = getLoadedModules(); foreach ($loaded_modules as $module) { init_module($module); } $GLOBALS['__modules_initiated__'] = true; unset($loaded_modules); }
/** * dynamicaly agregate aditional methods */ function require_and_agregate_methods() { global $_data_layer_required_methods; global $_SERWEB; global $config; if (!isset($_data_layer_required_methods) or !is_array($_data_layer_required_methods)) { $_data_layer_required_methods = array(); } $_data_layer_required_methods = array_merge($config->data_layer_always_required_functions, $_data_layer_required_methods); $loaded_modules = getLoadedModules(); reset($_data_layer_required_methods); while (list(, $item) = each($_data_layer_required_methods)) { if (false === array_search($item, $this->_data_layer_loaded_methods)) { //if required method isn't loaded yet, load it $file_found = false; //require class with method definition if (file_exists($_SERWEB["datadir"] . "customized/method." . $item . ".php")) { //if exists customized version of method, require it require_once $_SERWEB["datadir"] . "customized/method." . $item . ".php"; $file_found = true; } if (!$file_found) { //try found file in modules foreach ($loaded_modules as $module) { if (file_exists($_SERWEB["modulesdir"] . $module . "/method." . $item . ".php")) { require_once $_SERWEB["modulesdir"] . $module . "/method." . $item . ".php"; $file_found = true; break; } } } if (!$file_found) { //otherwise require default version require_once $_SERWEB["datadir"] . "method." . $item . ".php"; } //agregate methods of required class to this object my_aggregate_methods($this, "CData_Layer_" . $item); //add method to $_data_layer_loaded_methods array $this->_data_layer_loaded_methods[] = $item; //add methods required by currently loaded method to $_data_layer_required_methods array $class_methods = get_class_methods("CData_Layer_" . $item); if (in_array('_get_required_methods', $class_methods)) { $_data_layer_required_methods = array_merge($_data_layer_required_methods, call_user_func(array("CData_Layer_" . $item, '_get_required_methods'))); } else { $class_vars = get_class_vars("CData_Layer_" . $item); if (isset($class_vars['required_methods']) and is_array($class_vars['required_methods'])) { $_data_layer_required_methods = array_merge($_data_layer_required_methods, $class_vars['required_methods']); } } } } }