Example #1
0
/**
 *	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);
}
Example #3
0
 /**
  *   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']);
                 }
             }
         }
     }
 }