You are here

function draggableviews_handler_native::set in DraggableViews 7.2

Save weight value.

Parameters

$form_state: Array of form state of the form. View object $form_state['values']['view'].

Overrides draggableviews_handler::set

File

handlers/draggableviews_handler_native.inc, line 21

Class

draggableviews_handler_native

Code

function set($form_state) {
  $fv = $form_state['values'];
  $view = $form_state['build_info']['args'][0];
  $view_name = $view->name;
  $view_display = $view->current_display;

  // View arguments.
  $arguments = $view->args;
  if (isset($view->exposed_raw_input)) {
    $arguments += $view->exposed_raw_input;
    ksort($arguments);

    // Redirect view to the same page with exposed filters set.
    $form_state['redirect'] = array(
      current_path(),
      array(
        'query' => $view->exposed_raw_input,
      ),
    );
  }

  // Give other modules a chance to alter saved arguments.
  drupal_alter('draggableviews_handler_native_arguments', $arguments, $view, $fv['draggableviews']);

  // Never save 'items_per_page' argument added by exposed pager filter.
  unset($arguments['items_per_page']);
  $args_string = json_encode($arguments);

  // Save records to our custom table.
  $weight = 0;

  // Reorder the items by weight.
  uasort($fv['draggableviews'], 'drupal_sort_weight');
  foreach ($fv['draggableviews'] as $item) {

    // Make sure id is available.
    if (!isset($item['id'])) {
      continue;
    }

    // Delete previous order record.
    db_delete('draggableviews_structure')
      ->condition('view_name', $view_name)
      ->condition('view_display', $view_display)
      ->condition('args', $args_string)
      ->condition('entity_id', $item['id'])
      ->execute();

    // Create new order record.
    $record = array(
      'view_name' => $view_name,
      'view_display' => $view_display,
      'args' => $args_string,
      'entity_id' => $item['id'],
      'weight' => $weight,
    );

    // If parent element exists, save it.
    if (isset($item['parent'])) {
      $record['parent'] = $item['parent'];
    }
    drupal_write_record('draggableviews_structure', $record);
    $weight++;
  }
}