You are here

function menu_link_node_menu_disable in Menu Link (Field) 7

Implements hook_disable().

File

menu_link_node_menu/menu_link_node_menu.install, line 103
Install, update and uninstall functions for the Menu link module.

Code

function menu_link_node_menu_disable() {
  $instances = field_read_instances(array(
    'entity_type' => 'node',
    'field_name' => MENU_LINK_DEFAULT_FIELD,
  ));
  if (!empty($instances)) {
    $bundles = array();
    foreach ($instances as $instance) {
      $bundles[] = $instance['bundle'];
    }

    // Pass on ownership of menu links previously owned by the Menu link module
    // to the Menu module. We don't need to use menu_link_save() as an ownership
    // change doesn't have to trigger hooks.
    db_update('menu_links')
      ->fields(array(
      'module' => 'menu',
    ))
      ->condition('module', 'menu_link')
      ->exists(db_select('field_data_' . MENU_LINK_DEFAULT_FIELD, 'f')
      ->fields('f')
      ->condition('f.entity_type', 'node')
      ->condition('f.bundle', $bundles)
      ->where('f.' . MENU_LINK_DEFAULT_FIELD . '_mlid = mlid'))
      ->execute();

    // De-activate instances of the default menu link field on content types.
    foreach ($instances as $instance) {
      $instance['active'] = 0;
      field_update_instance($instance);
    }
  }
}