Вход Регистрация
Файл: 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($file0, -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($file0, -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]) ? 0;
}

// return 1 if module $name implements hook $hook, 0 otherwise:
function module_hook($name$hook) {
  return 
function_exists($name ."_"$hook);
}
?>
Онлайн: 0
Реклама