public function get_module_dirs() { //show uninstalled & installed modules $ret = DB::Execute('SELECT * FROM available_modules'); $module_dirs = array(); while ($row = $ret->FetchRow()) { if (ModuleManager::exists($row['name'])) { $module_dirs[$row['name']][$row['vkey']] = $row['version']; ModuleManager::include_install($row['name']); } else { DB::Execute('DELETE FROM available_modules WHERE name=%s and vkey=%d', array($row['name'], $row['vkey'])); } } if (empty($module_dirs)) { $module_dirs = Base_SetupCommon::refresh_available_modules(); } return $module_dirs; }
private function _extract_modules_names(&$all_files) { $modules = array(); $module_prefix = 'modules/'; $str_length = strlen($module_prefix); foreach ($all_files as $f) { if (is_dir($f) && substr_compare($f, $module_prefix, 0, $str_length) == 0) { $module_dir = substr($f, $str_length); // module path with slashes Test/Module $module_path = trim($module_dir, DIRECTORY_SEPARATOR); if (ModuleManager::exists(str_replace(DIRECTORY_SEPARATOR, '_', $module_path))) { $modules[] = $module_path; } } } // remove each file under module path foreach ($modules as $mod) { $modxx = $module_prefix . $mod; foreach ($all_files as $k => $v) { if (strpos($v, $modxx) === 0) { unset($all_files[$k]); } } } return $modules; }