Файл: include/module.php
Строк: 154
<?php
// initialize modules:
function module_init() {
module_list();
}
// apply function $function to every known module:
function module_iterate($function, $argument = "") {
$result = false;
foreach (module_list() as $name) {
$result_ = $function($name, $argument);
if ($result_) $result[] = $result_;
}
return $result;
}
// invoke hook $hook of module $name with optional arguments:
function module_invoke($name, $hook) {
if (file_exists(PATH_MODULE.$name.".php")) module_include($name);
$n = func_num_args();
$function = $name ."_". $hook;
if (function_exists($function)) {
$arr = func_get_args();
switch ($n) {
case 2:
return $function();
break;
case 3:
return $function($arr[2]);
break;
case 4:
return $function($arr[2], $arr[3]);
break;
case 5:
return $function($arr[2], $arr[3], $arr[4]);
break;
case 6:
return $function($arr[2], $arr[3], $arr[4], $arr[5]);
break;
case 7:
return $function($arr[2], $arr[3], $arr[4], $arr[5], $arr[6]);
break;
case 8:
return $function($arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7]);
break;
case 9:
return $function($arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7], $arr[8]);
break;
case 10:
return $function($arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7], $arr[8], $arr[9]);
break;
}
}
}
// return array of module names (includes lazy module loading):
function module_list() {
static $list;
global $mod, $container;
if (!$mod) {
if (!$list) {
$handle = opendir(PATH_MODULE);
$list = array();
while ($file = readdir($handle)) {
if (".php" == substr($file, -4)) {
$filename = substr($file, 0, -4);
include_once(PATH_MODULE."$filename.php");
$list[$filename] = $filename;
/*
if ($container->is_debug) {
$item = new DebugSQL();
$item->sql = 'load: (3) '.$filename;
$container->debug_array[] = $item;
}
*/
}
}
closedir($handle);
asort($list);
}
} else {
module_include($mod);
}
return $list;
}
function module_include($module_name) {
if (module_hook($module_name, 'init')) return false;
if (file_exists(PATH_MODULE.$module_name.".php")) {
/*
if ($container->is_debug) {
$item = new DebugSQL();
$item->sql = 'load: (1) '.$module_name;
$container->debug_array[] = $item;
}
*/
include_once(PATH_MODULE.$module_name.".php");
if (module_hook($module_name, 'include')) {
$arr = module_invoke($module_name, 'include');
if (is_array($arr))
foreach ($arr as $item) {
module_include($item);
}
} else {
$handle = opendir(PATH_MODULE);
while ($file = readdir($handle)) {
if (".module" == substr($file, -7)) {
$filename = substr($file, 0, -7);
include_once(PATH_MODULE."$filename.module");
if ($container->is_debug) {
$item = new DebugSQL();
$item->sql = 'load: (2) '.$filename;
$container->debug_array[] = $item;
}
$list[$filename] = $filename;
}
}
closedir($handle);
}
}
}
// return 1 if module $name exists, 0 otherwise:
function module_exist($name) {
$list = module_list();
return ($list[$name]) ? 1 : 0;
}
// return 1 if module $name implements hook $hook, 0 otherwise:
function module_hook($name, $hook) {
return function_exists($name ."_". $hook);
}
?>