? abc.patch ? af1.patch ? search_services.patch Index: search_service.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/services/services/search_service/Attic/search_service.inc,v retrieving revision 1.1.2.2 diff -u -p -r1.1.2.2 search_service.inc --- search_service.inc 1 Sep 2008 14:57:48 -0000 1.1.2.2 +++ search_service.inc 1 Nov 2008 01:46:56 -0000 @@ -34,6 +34,43 @@ function search_service_nodes($keys, $si } /** + * Callback for search.content service. + */ +function search_service_content($keys, $simple = FALSE) { + // define standard keys for simple set + $stdkeys = array('link', 'type', 'title', 'user', 'date', 'snippet'); + + // invoke the search hook to generate results + $results = array(); + foreach (module_list() as $name) { + if (($name != 'user' || $name != 'usersearch' || 'node') && module_hook($name, 'search') && + $title = check_plain(module_invoke($name, 'search', 'name')) + ) { + $search_results = module_invoke($name, 'search', 'search', $keys); + if (! empty($search_results) ) { + $results = array_merge($results, $search_results); + } + } + } + if ($results and is_array($results) and count($results)) { + // if simple results requested, remove extra data + if ($simple) { + $num = count($results); + for ($i = 0; $i<$num; $i++) { + $keys = array_keys($results[$i]); + foreach ($keys as $key) { + if (!in_array($key, $stdkeys)) { + unset($results[$i][$key]); + } + } + } + } + return $results; + } + return services_error(t('Search returned no results.')); +} + +/** * Callback for search.users service. */ function search_service_users($keys) { Index: search_service.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/services/services/search_service/Attic/search_service.module,v retrieving revision 1.1.4.14 diff -u -p -r1.1.4.14 search_service.module --- search_service.module 6 Sep 2008 04:13:08 -0000 1.1.4.14 +++ search_service.module 1 Nov 2008 01:46:56 -0000 @@ -43,7 +43,29 @@ function search_service_service() { ), ), '#return' => 'array', - '#help' => t('Searches nodes according to keys via hook_search.'), + '#help' => t('Searches nodes according to keys via node_search.'), + ), + array( + '#method' => 'search.content', + '#callback' => 'search_service_content', + '#access arguments' => array('search content'), + '#file' => array('file' => 'inc', 'module' => 'search_service'), + '#key' => TRUE, + '#args' => array( + array( + '#name' => 'search_keys', + '#type' => 'string', + '#description' => t('Search keys.'), + ), + array( + '#name' => 'simple', + '#type' => 'string', + '#optional' => TRUE, + '#description' => t('If set, returns only the main search fields (link, type, title, user, date, snippet) and no additional data.'), + ), + ), + '#return' => 'array', + '#help' => t('Uses all hook_search(), except for node_search(), user_search() and usersearch_search() to search content according to keys.'), ), array( '#method' => 'search.users',