? d6_port.patch Index: keyword_autocomplete.info =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/keyword_autocomplete/keyword_autocomplete.info,v retrieving revision 1.3 diff -u -p -r1.3 keyword_autocomplete.info --- keyword_autocomplete.info 6 Aug 2008 05:33:59 -0000 1.3 +++ keyword_autocomplete.info 27 Aug 2008 11:11:35 -0000 @@ -1,4 +1,4 @@ ; $Id: keyword_autocomplete.info,v 1.3 2008/08/06 05:33:59 rszrama Exp $ name = Keyword Autocomplete description = Adds autocomplete for search keywords to specified search forms. - +core = 6.x Index: keyword_autocomplete.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/keyword_autocomplete/keyword_autocomplete.install,v retrieving revision 1.1 diff -u -p -r1.1 keyword_autocomplete.install --- keyword_autocomplete.install 6 Aug 2008 05:08:06 -0000 1.1 +++ keyword_autocomplete.install 27 Aug 2008 11:11:35 -0000 @@ -4,23 +4,49 @@ /** * Implementation of hook_install(). */ +function keyword_autocomplete_schema() { + $schema = array(); + + $schema['keyword_autocomplete_keywords'] = array( + 'fields' => array( + 'keyword_id' => array( + 'type' => 'serial', + 'unsigned' => TRUE, + 'not null' => TRUE, + ), + 'search_keywords' => array( + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + 'default' => '', + ), + 'search_count' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + 'sources' => array( + 'type' => 'text', + ), + 'last_search' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'default' => 0, + ), + ), + 'indexes' => array( + 'search_keywords' => array(array('search_keywords', 32)), + ), + 'primary key' => array('keyword_id'), + ); + + return $schema; +} + function keyword_autocomplete_install() { - switch ($GLOBALS['db_type']) { - case 'mysql': - case 'mysqli': - db_query("CREATE TABLE {keyword_autocomplete_keywords} ( - keyword_id int unsigned NOT NULL default '0', - search_keywords varchar(255) NOT NULL default '', - search_count int unsigned NOT NULL default '0', - sources text NOT NULL, - last_search int unsigned NOT NULL default '0', - PRIMARY KEY (keyword_id), - KEY search_keywords (search_keywords(32)) - ) /*!40100 DEFAULT CHARACTER SET UTF8 */ "); - break; - case 'pgsql': - break; - } + drupal_install_schema('keyword_autocomplete'); } /** @@ -28,7 +54,7 @@ function keyword_autocomplete_install() */ function keyword_autocomplete_uninstall() { // Get rid of the table. - db_query("DROP TABLE {keyword_autocomplete_keywords}"); + drupal_install_schema('keyword_autocomplete'); // Get rid of the module variables. variable_del('keyword_autocomplete_forms'); Index: keyword_autocomplete.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/keyword_autocomplete/keyword_autocomplete.module,v retrieving revision 1.1 diff -u -p -r1.1 keyword_autocomplete.module --- keyword_autocomplete.module 6 Aug 2008 05:08:06 -0000 1.1 +++ keyword_autocomplete.module 27 Aug 2008 11:11:36 -0000 @@ -11,71 +11,60 @@ /** * Implementation of hook_menu(). */ -function keyword_autocomplete_menu($may_cache) { +function keyword_autocomplete_menu() { $items = array(); - if ($may_cache) { - $items[] = array( - 'path' => 'search/keyword-autocomplete', - 'callback' => 'keyword_autocomplete_keywords', - 'access' => user_access('view keyword autocomplete'), - 'type' => MENU_CALLBACK, - ); - $items[] = array( - 'path' => 'admin/settings/keyword-autocomplete', - 'title' => t('Keyword autocomplete'), - 'description' => t('Administer searched keywords and settings.'), - 'callback' => 'keyword_autocomplete_admin', - 'access' => user_access('administer keyword autocomplete'), - 'type' => MENU_NORMAL_ITEM, - ); - $items[] = array( - 'path' => 'admin/settings/keyword-autocomplete/keywords', - 'title' => t('Keywords'), - 'type' => MENU_DEFAULT_LOCAL_TASK, - 'weight' => -10, - ); - $items[] = array( - 'path' => 'admin/settings/keyword-autocomplete/add', - 'title' => t('Add keywords'), - 'description' => t('Add keywords to the autocomplete table.'), - 'callback' => 'drupal_get_form', - 'callback arguments' => array('keyword_autocomplete_edit_form', 0), - 'access' => user_access('administer keyword autocomplete'), - 'type' => MENU_LOCAL_TASK, - 'weight' => -5, - ); - $items[] = array( - 'path' => 'admin/settings/keyword-autocomplete/settings', - 'title' => t('Settings'), - 'description' => t('Adjust the settings for the keyword autocomplete module.'), - 'callback' => 'drupal_get_form', - 'callback arguments' => array('keyword_autocomplete_settings_form'), - 'access' => user_access('administer keyword autocomplete'), - 'type' => MENU_LOCAL_TASK, - 'weight' => 0, - ); - } - else { - $items[] = array( - 'path' => 'admin/settings/keyword-autocomplete/'. arg(3) .'/edit', - 'title' => t('Edit keywords'), - 'description' => t('Update keywords in the autocomplete table.'), - 'callback' => 'drupal_get_form', - 'callback arguments' => array('keyword_autocomplete_edit_form', arg(3)), - 'access' => user_access('administer keyword autocomplete'), - 'type' => MENU_CALLBACK, - ); - $items[] = array( - 'path' => 'admin/settings/keyword-autocomplete/'. arg(3) .'/delete', - 'title' => t('Delete keywords'), - 'description' => t('Delete keywords from the autocomplete table.'), - 'callback' => 'drupal_get_form', - 'callback arguments' => array('keyword_autocomplete_delete_form', arg(3)), - 'access' => user_access('administer keyword autocomplete'), - 'type' => MENU_CALLBACK, - ); - } + $items['search/keyword-autocomplete'] = array( + 'page callback' => 'keyword_autocomplete_keywords', + 'access arguments' => array('view keyword autocomplete'), + 'type' => MENU_CALLBACK, + ); + $items['admin/settings/keyword-autocomplete'] = array( + 'title' => 'Keyword autocomplete', + 'description' => 'Administer searched keywords and settings.', + 'page callback' => 'keyword_autocomplete_admin', + 'access arguments' => array('administer keyword autocomplete'), + 'type' => MENU_NORMAL_ITEM, + ); + $items['admin/settings/keyword-autocomplete/keywords'] = array( + 'title' => 'Keywords', + 'type' => MENU_DEFAULT_LOCAL_TASK, + 'weight' => -10, + ); + $items['admin/settings/keyword-autocomplete/add'] = array( + 'title' => 'Add keywords', + 'description' => 'Add keywords to the autocomplete table.', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('keyword_autocomplete_edit_form', '0'), + 'access arguments' => array('administer keyword autocomplete'), + 'type' => MENU_LOCAL_TASK, + 'weight' => -5, + ); + $items['admin/settings/keyword-autocomplete/settings'] = array( + 'title' => 'Settings', + 'description' => 'Adjust the settings for the keyword autocomplete module.', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('keyword_autocomplete_settings_form'), + 'access arguments' => array('administer keyword autocomplete'), + 'type' => MENU_LOCAL_TASK, + 'weight' => 0, + ); + $items['admin/settings/keyword-autocomplete/%/edit'] = array( + 'title' => 'Edit keywords', + 'description' => 'Update keywords in the autocomplete table.', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('keyword_autocomplete_edit_form', 3), + 'access arguments' => array('administer keyword autocomplete'), + 'type' => MENU_CALLBACK, + ); + $items['admin/settings/keyword-autocomplete/%/delete'] = array( + 'title' => 'Delete keywords', + 'description' => 'Delete keywords from the autocomplete table.', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('keyword_autocomplete_delete_form', 3), + 'access arguments' => array('administer keyword autocomplete'), + 'type' => MENU_CALLBACK, + ); return $items; } @@ -90,7 +79,7 @@ function keyword_autocomplete_perm() { /** * Implementation of hook_form_alter(). */ -function keyword_autocomplete_form_alter($form_id, &$form) { +function keyword_autocomplete_form_alter(&$form, &$form_state, $form_id) { // Act only on search forms... if ($form_id == 'search_form' || $form_id == 'search_theme_form' || $form_id = 'search_block_form') { // Add the autocomplete path to the various keyword textfields. @@ -105,33 +94,41 @@ function keyword_autocomplete_form_alter // The search form embedded in the theme. if ($form_id == 'search_theme_form' && $forms['search_theme_form'] === 'search_theme_form') { - $form['search_theme_form_keys']['#autocomplete_path'] = 'search/keyword-autocomplete'; + $form['search_theme_form']['#autocomplete_path'] = 'search/keyword-autocomplete'; } // The form in the search block. if ($form_id == 'search_block_form' && $forms['search_block_form'] === 'search_block_form') { - $form['search_block_form_keys']['#autocomplete_path'] = 'search/keyword-autocomplete'; + $form['search_block_form']['#autocomplete_path'] = 'search/keyword-autocomplete'; } } // Set a custom submit handler to store the keywords in the database. - $form['#submit']['keyword_autocomplete_search_form_submit'] = array(); + $form['#submit'][] = 'keyword_autocomplete_search_form_submit'; } } +function keyword_autocomplete_theme() { + return array( + 'total_keyword' => array( + 'arguments' => array('count' => 0), + ), + ); +} + // Stores keyword information in the database. -function keyword_autocomplete_search_form_submit($form_id, $form_values) { +function keyword_autocomplete_search_form_submit($form, &$form_state) { $keywords = ''; // Get the search keywords based on the form. - if ($form_id == 'search_form') { - $keywords = trim($form_values['keys']); + if ($form_state['values']['form_id'] == 'search_form') { + $keywords = trim($form_state['values']['keys']); } - elseif ($form_id == 'search_theme_form') { - $keywords = trim($form_values['search_theme_form_keys']); + elseif ($form_state['values']['form_id'] == 'search_theme_form') { + $keywords = trim($form_state['values']['search_theme_form']); } - elseif ($form_id == 'search_block_form') { - $keywords = trim($form_values['search_block_form_keys']); + elseif ($form_state['values']['form_id'] == 'search_block_form') { + $keywords = trim($form_state['values']['search_block_form']); } // Save the keywords to the database if they're valid. @@ -198,8 +195,8 @@ function keyword_autocomplete_save_keywo } // Save the row to the database. - db_query("INSERT INTO {keyword_autocomplete_keywords} (keyword_id, search_keywords, search_count, sources, last_search) VALUES (%d, '%s', %d, '%d', %d)", - db_next_id('{keyword_autocomplete_keywords}_keyword_id'), $keywords, $count, serialize($sources), time()); + db_query("INSERT INTO {keyword_autocomplete_keywords} (search_keywords, search_count, sources, last_search) VALUES ('%s', %d, '%d', %d)", + $keywords, $count, serialize($sources), time()); } } @@ -245,8 +242,7 @@ function keyword_autocomplete_keywords($ } // Print out the matches in the format expected by autocomplete.js. - print drupal_to_js($matches); - exit(); + drupal_json($matches); } // Displays a table for viewing and administering saved keywords. @@ -312,7 +308,7 @@ function theme_total_keywords($count) { } // Displays a form to filter keywords displayed in the admin table. -function keyword_autocomplete_admin_filter_form($filter = '') { +function keyword_autocomplete_admin_filter_form($form_state, $filter = '') { $form['filter'] = array( '#type' => 'fieldset', '#title' => t('Keywords filter'), @@ -336,9 +332,9 @@ function keyword_autocomplete_admin_filt return $form; } -function keyword_autocomplete_admin_filter_form_submit($form_id, $form_values) { +function keyword_autocomplete_admin_filter_form_submit($form, &$form_state) { // Trim the input for the filter text. - $filter = trim($form_values['filter_text']); + $filter = trim($form_state['values']['filter_text']); // Redirect to the filtered URL. if (!empty($filter)) { @@ -347,7 +343,7 @@ function keyword_autocomplete_admin_filt } // Displays the search keywords edit form. -function keyword_autocomplete_edit_form($keyword_id) { +function keyword_autocomplete_edit_form($form_state, $keyword_id) { $data = keyword_autocomplete_load_data($keyword_id); $form['keyword_id'] = array( @@ -382,16 +378,16 @@ function keyword_autocomplete_edit_form( return $form; } -function keyword_autocomplete_edit_form_validate($form_id, $form_values) { - if (!is_numeric($form_values['search_count']) || intval($form_values['search_count']) <= 0) { +function keyword_autocomplete_edit_form_validate($form, &$form_state) { + if (!is_numeric($form_state['values']['search_count']) || intval($form_state['values']['search_count']) <= 0) { form_set_error('search_count', t('Search count must be a positive whole number.')); } } -function keyword_autocomplete_edit_form_submit($form_id, $form_values) { +function keyword_autocomplete_edit_form_submit($form, &$form_state) { // If the submission was for a new set of keywords... - if ($form_values['keyword_id'] == 0) { - $keywords = $form_values['search_keywords']; + if ($form_state['values']['keyword_id'] == 0) { + $keywords = $form_state['values']['search_keywords']; // Grab the keyword ID for the keyword string if it's already saved. $result = db_result(db_query("SELECT keyword_id FROM {keyword_autocomplete_keywords} WHERE search_keywords = '%s'", $keywords)); @@ -399,26 +395,26 @@ function keyword_autocomplete_edit_form_ // If we found an ID, display a message and redirect to its edit form. if ($result > 0) { drupal_set_message(t('Those keywords have already been saved. You have been redirected to the edit form and may update its values accordingly.')); - return 'admin/settings/keyword-autocomplete/'. $result .'/edit'; + $form_state['redirect'] = 'admin/settings/keyword-autocomplete/'. $result .'/edit'; } // Otherwise save the new keyword string. - keyword_autocomplete_save_keywords($keywords, NULL, $form_values['search_count']); + keyword_autocomplete_save_keywords($keywords, NULL, $form_state['values']['search_count']); drupal_set_message(t('%keywords saved to the autocomplete table.', array('%keywords' => $keywords))); - return 'admin/settings/keyword-autocomplete'; + $form_state['redirect'] = 'admin/settings/keyword-autocomplete'; } // Update values for an existing keywords row. db_query("UPDATE {keyword_autocomplete_keywords} SET search_count = %d, last_search = %d WHERE keyword_id = %d", - intval($form_values['search_count']), time(), $form_values['keyword_id']); + intval($form_state['values']['search_count']), time(), $form_state['values']['keyword_id']); - drupal_set_message(t('%keywords values have been updated.', array('%keywords' => $form_values['search_keywords']))); - return 'admin/settings/keyword-autocomplete'; + drupal_set_message(t('%keywords values have been updated.', array('%keywords' => $form_state['values']['search_keywords']))); + $form_state['redirect'] = 'admin/settings/keyword-autocomplete'; } // Displays the delete confirmation form. -function keyword_autocomplete_delete_form($keyword_id) { +function keyword_autocomplete_delete_form($form_state, $keyword_id) { // Load the keywords data from the database. $data = keyword_autocomplete_load_data($keyword_id); @@ -436,15 +432,15 @@ function keyword_autocomplete_delete_for return confirm_form($form, t('Are you sure you want to delete the data for %keywords?', array('%keywords' => $data['search_keywords'])), 'admin/settings/keyword-autocomplete', NULL, t('Delete')); } -function keyword_autocomplete_delete_form_submit($form_id, $form_values) { +function keyword_autocomplete_delete_form_submit($form, &$form_state) { // Load the keywords data from the database. - $data = keyword_autocomplete_load_data($form_values['keyword_id']); + $data = keyword_autocomplete_load_data($form_state['values']['keyword_id']); // Delete the data from the table and display a confirmation message. db_query("DELETE FROM {keyword_autocomplete_keywords} WHERE keyword_id = %d", $data['keyword_id']); drupal_set_message(t('%keywords data deleted from the autocomplete table.', array('%keywords' => $data['search_keywords']))); - return 'admin/settings/keyword-autocomplete'; + $form_state['redirect'] = 'admin/settings/keyword-autocomplete'; } // Displays the module settings form.