diff --git a/unused_modules.info b/unused_modules.info index 1ccfeadfd7c15a23cc2b72ebfcabe81b5baa9e0b..be5a741a2f7335e8102b54fcd6d5f7bb99a9e37d 100644 --- a/unused_modules.info +++ b/unused_modules.info @@ -2,4 +2,5 @@ name = Unused Modules description = List modules and projects that are unused and safe to delete. package = Development configure = admin/config/development/unused_modules -core = 7.x \ No newline at end of file +dependencies[] = drupal_static +core = 6.x \ No newline at end of file diff --git a/unused_modules.module b/unused_modules.module index 49a9e8b9fcb09d1ac21e54187ba84214e6767c72..b15824e82c5566936146b4ec59f15eec6b5a0bec 100644 --- a/unused_modules.module +++ b/unused_modules.module @@ -104,7 +104,8 @@ function unused_modules_show_projects($op = 'all') { return t("Hurray, no orphaned projects!"); } - return theme('table', array('header' => $header, 'rows' => $rows)); + // @drupal-6 backport: pass $header and $rows directly to theme_table. + return theme('table', $header, $rows); } /** @@ -151,7 +152,8 @@ function unused_modules_show_modules($op) { return t("Hurray, no orphaned modules!"); } - return theme('table', array('header' => $header, 'rows' => $rows)); + // @drupal-6 backport: pass $header and $rows directly to theme_table. + return theme('table', $header, $rows); } /** @@ -211,17 +213,19 @@ function _unused_modules_get_modules_by_project() { * Returns an array of available modules. */ function _unused_modules_get_available_modules() { + // @drupal-6 backport: needs dependency module 'drupal_static'. $available_modules = &drupal_static(__FUNCTION__); if (!isset($available_modules)) { // Get all modules available. - $available_modules = drupal_system_listing("/\.module$/", "modules", 'name', 0); + // @drupal-6 backport: little different regex for .module selector. + $available_modules = drupal_system_listing('\.module$', 'modules', 'name', 0); // Sort for readability. ksort($available_modules); - // Remove core modules. - _unused_modules_remove_core_modules($available_modules); // Add module info. _unused_modules_add_module_info($available_modules); + // Remove core modules. + _unused_modules_remove_core_modules($available_modules); // Add information from .info file. _unused_modules_add_info_file_information($available_modules); // Add project info. @@ -258,8 +262,11 @@ function _unused_modules_get_enabled_modules() { */ function _unused_modules_add_module_info(&$modules) { foreach ($modules as &$module) { + // @drupal-6 backport: use module filename for uri. + $module->uri = $module->filename; + // Set module_path. - $module->module_path = str_replace("/" . $module->filename, "", $module->uri); + $module->module_path = str_replace("/" . $module->basename, "", $module->uri); } } @@ -276,27 +283,43 @@ function _unused_modules_add_project_path(&$modules) { $modules_grouped_by_project[$module->project][$module->name] = $module; } - // Determine common basepath by picking the shortest path of all project - // modules. + // Add project_path to module. foreach ($modules_grouped_by_project as $project) { - $project_paths = array(); + + // Determine common basepath by looking for needle "/<project>/" in uri. + // As a fallback use the shortest path method. foreach ($project as $module) { - $project_paths[] = $module->module_path; + if ($module->error !== TRUE) { + $needle = "/" . $module->project . "/"; + $before_needle = TRUE; + $project_path = strstr($module->uri, $needle, $before_needle) . "/" . $module->project; + + $module->project_path = $project_path; + } } - // Get length of each module path in a project. - $lengths = array_map('strlen', $project_paths); - // Sort by value (lowest number first) - asort($lengths); - // Get lowest key. - reset($lengths); - $key = key($lengths); - // Shortest path. - $shortest_path = $project_paths[$key]; - - // Add the project_path to each module. - foreach ($project as $module) { - $module->project_path = $shortest_path; + // Fallback: determine common basepath by picking the shortest path of all + // project modules. + if (!isset($module->project_path)) { + $project_paths = array(); + foreach ($project as $module) { + $project_paths[] = $module->module_path; + } + + // Get length of each module path in a project. + $lengths = array_map('strlen', $project_paths); + // Sort by value (lowest number first) + asort($lengths); + // Get lowest key. + reset($lengths); + $key = key($lengths); + // Shortest path. + $shortest_path = $project_paths[$key]; + + // Add the project_path to each module. + foreach ($project as $module) { + $module->project_path = $shortest_path; + } } unset($project_paths);