--- search.module.orig 2005-12-16 05:23:27.000000000 -0800 +++ search.module 2005-12-20 16:24:12.000000000 -0800 @@ -136,12 +136,23 @@ global $user; if ($op == 'list') { $blocks[0]['info'] = t('Search form'); + $blocks[1]['info'] = t('Recent searches'); return $blocks; } - else if ($op == 'view' && user_access('search content') && arg(0) != 'search') { - $block['content'] = search_form('', '', null, ''); - $block['subject'] = t('Search'); - return $block; + else if ($op == 'view') { + switch ($delta) { + case 0: + if (user_access('search content') && (arg(0) != 'search')) { + $block['content'] = search_form('', '', null, ''); + $block['subject'] = t('Search'); + return $block; + } + else return NULL; + case 1: + $block['content'] = _search_recent(); + $block['subject'] = t('Recent searches'); + return $block; + } } } @@ -180,6 +191,23 @@ } /** +* Ancillary function for search_block: builds a block of recent search terms +* @return string themed block +* +*/ +function _search_recent() { + $sql = "SELECT DISTINCT message query FROM {watchdog} WHERE (type = 'search') AND (message like '%(content).') ORDER BY timestamp DESC"; + $result = db_query_range($sql, 0, 5); + $items = array(); + while ($recent = db_fetch_object($result)) { + $term = substr(substr($recent->query, 12),0,-16); + $items[] = l($term, 'search/node/' . $term, array("rel" => "nofollow")); + } + $output = theme_item_list($items, NULL); + return $output; +} + +/** * Implementation of hook_validate(). */ function search_settings_form_validate($form_id, &$form) {