<?php $modules = array(); function getModuleList() { global $MODULES_DIR; $mlist = array(); $d = opendir($MODULES_DIR); while(false !== ($f = readdir($d))) { if($f == '.' || $f == '..') continue; array_push($mlist, basename($f, ".php")); } closedir($d); sort($mlist); return $mlist; } function loadModule($modulename) { global $MODULES_DIR; global $modules; $modulefile = $MODULES_DIR . "/" . $modulename . ".php"; if(!$modules[$modulename]) { if(file_exists($modulefile)) { include_once($modulefile); $module = call_user_func($modulename . "_init"); $modules[$modulename] = $module; } else { // Module does not exist. } } } function loadAllModules() { foreach(getModuleList() as $m) { loadModule($m); } } function getModuleParams($code) { $params = array(); $ps = explode(",", $code); foreach($ps as $p) { $v = explode("=", $p); $params[$v[0]] = $v[1]; } return $params; } function runModule($code) { global $modules; $str = ""; $m = explode("?", $code); $module = $m[0]; $params = getModuleParams($m[1]); loadModule($module); if($modules[$module]) { $str .= $modules[$module]->run($params); } else { $str .= "<p><strong>CMS ERROR: Could not find module:"; $str .= " [[" . $modulecode . "]]</strong></p>\n"; } return $str; } ?>