Index: search404.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/search404/search404.module,v retrieving revision 1.15.2.12 diff -u -p -r1.15.2.12 search404.module --- search404.module 26 Jun 2009 10:47:06 -0000 1.15.2.12 +++ search404.module 17 Aug 2009 10:05:02 -0000 @@ -100,7 +100,7 @@ function search404_search_engine_query() */ function search404_page() { drupal_set_title(t('Page not found')); - if (module_exists('search') && user_access('search content')) { + if (module_exists('search') && (user_access('search content') || user_access('search by page'))) { $keys = ""; // if apachesolr_search is installed use apachesolr_search instead default node search $type_search = (module_exists('apachesolr_search')) ? 'apachesolr_search' : 'node'; @@ -112,7 +112,20 @@ function search404_page() { } if ($keys) { // TODO: watchdog? - if (module_exists('google') && user_access('search Google CSE') && variable_get('search404_do_google_cse', false)) { + if (module_exists('search_by_page')) { + drupal_set_message(t('The page you requested does not exist. For your convenience, a search was performed using the query %keys.', array('%keys' => check_plain($keys))), 'error'); + drupal_goto('search_pages/'. $keys); + // EVIL HAXX! + $oldgetq = $_GET['q']; + $olddestination = $_REQUEST['destination']; + unset($_REQUEST['destination']); + $_GET['q'] = "search/$type_search/$keys"; + $results = theme('search_results', $results, 'node'); + $_GET['q'] = $oldgetq; + $_REQUEST['destination'] = $olddestination; + // END OF EVIL HAXX! + } + elseif (module_exists('google') && user_access('search Google CSE') && variable_get('search404_do_google_cse', false)) { drupal_set_message(t('The page you requested does not exist. For your convenience, a google search was performed using the query %keys.', array('%keys' => check_plain($keys))), 'error'); drupal_goto ('search/google/'. $keys); } else {