--- lineage.module 2008-09-05 02:15:48.000000000 -0500 +++ lineage-new.module 2009-10-24 14:16:33.000000000 -0500 @@ -19,14 +19,44 @@ function lineage_taxonomy($op, $type, $a } } +/** + * Implements hook_form_taxonomy_overview_terms_alter(). + */ +function lineage_form_taxonomy_overview_terms_alter(&$form,&$form_state) { + if ($form_state['confirm_reset_alphabetical']) { + if ($form_state['values']['override_alphabetical'] == 1) { + taxonomy_vocabulary_confirm_reset_alphabetical_submit($form,$form_state); + lineage_update_all($form_state['values']['vid']); + drupal_redirect_form($form,$form_state['redirect']); + } + unset($form['reset_alphabetical']); + $form['override_alphabetical'] = array('#type'=>'hidden','#value'=>1); + } +} + + function lineage_enable() { drupal_set_message(t("Updated @number taxonomy records.", array('@number' => lineage_update_all()))); } -function lineage_update_all() { +/** + * Updates all lineage records. + * @param $vid=false If passed, limit to records for only one vocabulary. + * @return $count The number of records updated. + */ +function lineage_update_all($vid=false) { $count = 0; - $result = db_query("SELECT td.tid, td.name, td.weight FROM {term_data} td LEFT JOIN {term_hierarchy} th ON th.tid = td.tid WHERE th.parent = 0"); + $base_q = "SELECT td.tid, td.name, td.weight FROM {term_data} td LEFT JOIN {term_hierarchy} th ON th.tid = td.tid WHERE th.parent = 0"; + + // If we are only updating one vocabulary, select only those terms. + if ($vid) { + $result = db_query($base_q." AND td.vid = '%d'",$vid); + } + else { + $result = db_query($base_q); + } + while ($term = db_fetch_object($result)) { $count += lineage_update_term($term); }