You are here

function om_maximenu_update_blocks_db in OM Maximenu 7

Same name and namespace in other branches
  1. 8 inc/om_maximenu.utils.inc \om_maximenu_update_blocks_db()
  2. 6 inc/om_maximenu.utils.inc \om_maximenu_update_blocks_db()

Block db updater

2 calls to om_maximenu_update_blocks_db()
om_maximenu_admin_submit in inc/om_maximenu.admin.inc
1 Submit for all settings
om_maximenu_import_submit in inc/om_maximenu.import.inc
Import from existing menus

File

inc/om_maximenu.utils.inc, line 474
OM Maximenu Admin Utilities

Code

function om_maximenu_update_blocks_db($menu_id = 0, $maximenu_content = array()) {
  if ($menu_id != 0) {
    if ($maximenu_content['output'] == 'block') {
      $theme_default = variable_get('theme_default', 'garland');
      $existing = db_select('block', 'n')
        ->fields('n')
        ->condition('module', 'om_maximenu', '=')
        ->condition('delta', 'om-maximenu-' . $menu_id, '=')
        ->condition('theme', $theme_default, '=')
        ->execute()
        ->fetchObject();
      if (!empty($existing->delta)) {

        // if the menu is existing
        $status = !empty($maximenu_content['block_options']['region']) ? 1 : 0;
        db_update('block')
          ->fields(array(
          'status' => $status,
          'weight' => $maximenu_content['block_options']['weight'],
          'region' => $maximenu_content['block_options']['region'],
          'visibility' => (int) $maximenu_content['menu_visibility']['visibility'],
          'pages' => trim($maximenu_content['menu_visibility']['pages']),
        ))
          ->condition('module', 'om_maximenu')
          ->condition('delta', 'om-maximenu-' . $menu_id)
          ->condition('theme', $theme_default)
          ->execute();
      }
      else {

        // because we are handling the visibility, etc., we have to handle everything to synch with blocks settings
        $status = !empty($maximenu_content['block_options']['region']) ? 1 : 0;
        db_insert('block')
          ->fields(array(
          'module' => 'om_maximenu',
          'delta' => 'om-maximenu-' . $menu_id,
          'theme' => $theme_default,
          'status' => $status,
          'weight' => $maximenu_content['block_options']['weight'],
          'region' => $maximenu_content['block_options']['region'],
          'visibility' => (int) $maximenu_content['menu_visibility']['visibility'],
          'pages' => trim($maximenu_content['menu_visibility']['pages']),
          'cache' => -1,
        ))
          ->execute();
      }
    }
    elseif ($maximenu_content['output'] == 'float') {

      // menu as float must be deleted from block table
      db_delete('block')
        ->condition('module', 'om_maximenu')
        ->condition('delta', 'om-maximenu-' . $menu_id)
        ->execute();
    }
    elseif ($maximenu_content['output'] == 'main_menu') {

      // menu as main_menu must be deleted from blocks table
      db_delete('block')
        ->condition('module', 'om_maximenu')
        ->condition('delta', 'om-maximenu-' . $menu_id)
        ->execute();
    }
  }
}