diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/search/search.module | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/modules/search/search.module b/modules/search/search.module index 70cd29d4d..6df0ed436 100644 --- a/modules/search/search.module +++ b/modules/search/search.module @@ -169,14 +169,15 @@ function search_menu($may_cache) { // we dynamically add the keywords to the search tabs' paths. $keys = search_get_keys(); $keys = strlen($keys) ? '/'. $keys : ''; - foreach (module_list() as $name) { - if (module_hook($name, 'search') && $title = module_invoke($name, 'search', 'name')) { - $items[] = array('path' => 'search/'. $name . $keys, 'title' => $title, - 'callback' => 'search_view', - 'callback arguments' => array($name), - 'access' => user_access('search content'), - 'type' => MENU_LOCAL_TASK); - } + foreach (module_implements('search') as $name) { + $title = module_invoke($name, 'search', 'name'); + $items[] = array('path' => 'search/'. $name . $keys, 'title' => $title, + 'callback' => 'search_view', + 'callback arguments' => array($name), + // Only allow access if the search hook returned a valid title. + 'access' => user_access('search content') && $title, + 'type' => MENU_LOCAL_TASK, + ); } } |