You are here

function om_maximenu_update_blocks_db in OM Maximenu 6

Same name and namespace in other branches
  1. 8 inc/om_maximenu.utils.inc \om_maximenu_update_blocks_db()
  2. 7 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_fetch_object(db_query("SELECT * FROM {blocks} WHERE module = '%s' AND delta = '%s' AND theme = '%s'", 'om_maximenu', 'om-maximenu-' . $menu_id, $theme_default));
      if (!empty($existing->delta)) {

        // if the menu is existing
        $status = !empty($maximenu_content['block_options']['region']) ? 1 : 0;
        db_query("\n          UPDATE {blocks} SET status = %d, weight = %d, region = '%s', visibility = %d, pages = '%s' WHERE module = '%s' AND delta = '%s' AND theme = '%s'", $status, $maximenu_content['block_options']['weight'], $maximenu_content['block_options']['region'], $maximenu_content['menu_visibility']['visibility'], trim($maximenu_content['menu_visibility']['pages']), 'om_maximenu', 'om-maximenu-' . $menu_id, $theme_default);
      }
      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_query("\n          INSERT INTO {blocks} (module, delta, theme, status, weight, region, visibility, pages, cache)\n          VALUES ('om_maximenu', '%s', '%s', %d, %d, '%s', %d, '%s', -1)", 'om-maximenu-' . $menu_id, $theme_default, $status, $maximenu_content['block_options']['weight'], $maximenu_content['block_options']['region'], $maximenu_content['menu_visibility']['visibility'], trim($maximenu_content['menu_visibility']['pages']));
      }
    }
    elseif ($maximenu_content['output'] == 'float') {

      // menu as float must be deleted from block table
      db_query("DELETE FROM {blocks} WHERE module = '%s' AND delta = '%s'", 'om_maximenu', 'om-maximenu-' . $menu_id);
    }
    elseif ($maximenu_content['output'] == 'main_menu') {

      // menu as main_menu must be deleted from blocks table
      db_query("DELETE FROM {blocks} WHERE module = '%s' AND delta = '%s'", 'om_maximenu', 'om-maximenu-' . $menu_id);
    }
  }
}