All pastes #516796 Raw Edit

chx

public php v1 · immutable
#516796 ·published 2007-05-28 21:09 UTC
rendered paste body
function system_update_6020() {  $ret = array();  // We should die a horrible death here if this query fails.  $menu = unserialize(db_result(db_query("SELECT data FROM {cache_menu} WHERE cid LIKE '1:%%'")));  if (!$menu) {    drupal_set_message('no menu', 'error');    return;  }  $schema['menu_router'] = drupal_get_schema_unprocessed('system', 'menu_router');  $schema['menu_links'] = drupal_get_schema_unprocessed('system', 'menu_links');  _drupal_initialize_schema('system', $schema);  $ret = array();  foreach ($schema as $table) {    db_create_table($ret, $table);  }  $new_menu = menu_router_build(TRUE);  if ($menu && module_exists('menu')) {    $items = $menu['items'];    drupal_install_schema('menu');    $menu_names = array();    $system_menus = array(      1 => 'navigation',      variable_get('menu_primary_menu', 2) => 'primary-links',      variable_get('menu_secondary_menu', 0) => 'secondary-links',    );    // These are the root menus.    foreach ($items[0]['children'] as $mid) {      if (isset($system_menus[$mid])) {        $menu_name = $system_menus[$mid];      }      else {        $title = $items[$mid]['title'];        $menu_name = preg_replace('[^a-z0-9]', '-', $title);        while (isset($menu_names[$menu_name])) {          $menu = $menu_names[$menu_name];        }        $description = db_result(db_query('SELECT description FROM {menu} WHERE mid = %d', $mid));        db_query("INSERT INTO {menu_custom} (menu_name, title, description) VALUES ('%s', '%s', '%s')", $menu_name, $title, $description);      }      $menu_names[$menu_name] = $menu_name .'-';      foreach ($items[$mid]['children'] as $child_mid) {        _system_update_6020($items, $menu_name, $child_mid);      }      menu_cache_clear($menu_name);    }  }  _menu_navigation_links_rebuild($new_menu);  return $ret;}function _system_update_6020($items, $menu_name, $parent_mid) {  static $map;  $map[$parent_mid] = 0;  foreach ($items[$parent_mid] as $key => $item) {    $item = menu_link_build($item);    $item['menu_name'] = $menu_name;    $item['plid'] = $map[$item['pid']];    if ($mid > 0) {      $item['description'] = db_result(db_query('SELECT description FROM {menu} WHERE mid = %d', $mid));    }    $map[$mid] = menu_link_save($item);    if (isset($item['children'])) {      foreach ($item['children'] as $child_mid) {        _system_update_6020($items, $menu_name, $child_mid);      }    }  }}