/** * @todo Fix dao problem * * @param array $search_param An array of arrays with such a structure * <code> * array( * 'search dir' => [search dir] * 'suffix' => [suffix] * 'enabled' => [enabled] * 'installed' => [installed] * ) * </code> * @static */ function initModules($search_params, $additionalModules = array()) { foreach ($additionalModules as $k => $v) { $additionalModules[$k]->registerHooks($this); $this->m_modules[] =& $additionalModules[$k]; } foreach ($search_params as $param) { if ($param['enabled'] || $param['installed']) { $modules = array(); $dao =& new xModuleDAO(); $dtos = $dao->find(NULL, $param['enabled'], $param['installed']); foreach ($dtos as $dto) { $modules[] = $dto->m_path; } } else { $modules = xModuleManager::findAllModules($param['search dir'], $param['suffix']); } foreach ($modules as $module) { if (strpos($module, $param['search dir']) !== 0) { continue; } if (!is_file($module)) { continue; } $name = basename($module, '.' . $param['suffix'] . '.php'); include_once $module; if (function_exists('xm_load_module_' . $name)) { $mod = call_user_func('xm_load_module_' . $name); if (!is_array($mod)) { $mod = array($mod); } foreach ($mod as $m) { if (xanth_instanceof($m, 'xModule')) { $m->registerHooks($this); $this->m_modules[] =& $m; } } } } //foreach modules } //foreach search params $this->sortHooks(); }
/** * */ function install() { ob_start(); //select DB if (xConf::get('db_type', 'mysql') == 'mysql') { $db = new xDBMysql(); $db->connect(xConf::get('db_host', ''), xConf::get('db_user', ''), xConf::get('db_pass', ''), xConf::get('db_port', '')); xDB::setDB($db); $name = xConf::get('db_name', ''); $db->query("DROP DATABASE {$name}"); $db->query("CREATE DATABASE {$name}"); $db->selectDB($name); } else { exit('Unknown database type'); } //error handler set_error_handler('xanth_php_error_handler'); $comp = new xModuleManager(); $comp->initModules('engine', 'comp', false, false, array(new xFrameworkComponent())); $comp->invokeAll('xm_install', array($name = xConf::get('db_name', ''))); $comp = new xModuleManager(); $comp->initModules('extensions', 'ext', true, true); $comp->invokeAll('xm_install', array($name = xConf::get('db_name', ''))); //print log echo xLogEntry::renderFromScreen(); echo "Xanthin Successfully installed"; ob_end_flush(); }