You are here

function hs_taxonomy_views_common_config_form_submit in Hierarchical Select 5.3

Same name and namespace in other branches
  1. 6.3 modules/hs_taxonomy_views.module \hs_taxonomy_views_common_config_form_submit()

Additional submit callback to redirect the user to the "Edit view" form.

Parameters

$form_id:

$form_values:

$view_name: Name of a view. Provides necessary context.

$vid: A vocabulary id. Provides necessary context.

File

modules/hs_taxonomy_views.module, line 275
Implementation of the Hierarchical Select API for the Taxonomy module's Views exposed filters.

Code

function hs_taxonomy_views_common_config_form_submit($form_id, $form_values, $view_name, $vid) {
  $view_id = db_result(db_query("SELECT vid FROM {view_view} WHERE name = '%s'", $view_name));
  $field = 'term_node_' . $vid . '.tid';
  $filter = db_fetch_object(db_query("SELECT operator FROM {view_filter} WHERE vid = %d AND field = '%s'", $view_id, $field));
  $exposed_filter = db_fetch_object(db_query("SELECT operator, single FROM {view_exposed_filter} WHERE vid = %d AND field = '%s'", $view_id, $field));

  // Overrides when save_lineage is enabled.
  if ($form_values['hierarchical_select_config']['save_lineage']) {

    // "Operator" must always be 'AND'.
    $filter->operator = 'AND';

    // The exposed filter must be locked to 'AND'.
    $exposed_filter->operator = 1;

    // "Force single" must be disabled.
    $exposed_filter->single = 0;
  }
  else {

    // "Force single" must be enabled.
    $exposed_filter->single = 1;
  }

  // Overrides when the dropbox is enabled.
  if ($form_values['hierarchical_select_config']['dropbox']['status']) {

    // "Force single" must be disabled.
    $exposed_filter->single = 0;
  }
  if ($view_id === FALSE) {
    drupal_set_message(t("Could not update the view because it doesn't live in the database."), 'error');
  }
  else {
    db_query("UPDATE {view_filter} SET operator = '%s' WHERE vid = %d AND field = '%s'", $filter->operator, $view_id, $field);
    db_query("UPDATE {view_exposed_filter} SET operator = %d, single = %d WHERE vid = %d AND field = '%s'", $exposed_filter->operator, $exposed_filter->single, $view_id, $field);
    cache_clear_all('views_urls', 'cache_views');
    drupal_set_message(t("Updated the View's exposed filter according to the settings you made."));
  }
}