All pastes #506943 Raw Edit

Samvh

public text v1 · immutable
·published 2007-05-24 09:13 UTC
rendered paste body
function menu_distribute($pid) {
  $result_brothers = db_query('SELECT * FROM {menu} WHERE pid = \'%d\' ORDER BY weight, title asc', $pid);

  if ( db_num_rows($result_brothers) > 19 ) {
    drupal_set_message("Too many children for clean distribution of weights, movement failed.", "error");
    return false;
  }
  else if ( db_num_rows($result_brothers) < 2 ) {
    drupal_set_message("No brothers and sisters, no movement possible.", "error");
    return false;
  }
  else {
    $row_count = db_num_rows($result_brothers);
    $weight = - round($row_count/2);

    while ( $current_row = db_fetch_object($result_brothers) ) {
      drupal_set_message($current_row->title. ": $weight.");
      db_query('UPDATE {menu} SET weight = \'%d\' WHERE mid = \'%d\'', $weight, $current_row->mid);
      $weight++;
    }

    drupal_set_message("Menu is being rebuilt.");
    menu_rebuild();    
    return true;
  }
}