You are here

function views_bulk_operations_form_submit in Views Bulk Operations (VBO) 6

Same name and namespace in other branches
  1. 5 views_bulk_operations.module \views_bulk_operations_form_submit()
  2. 6.3 views_bulk_operations.module \views_bulk_operations_form_submit()
  3. 7.3 views_bulk_operations.module \views_bulk_operations_form_submit()

Form submit function for views_bulk_operations_form().

1 string reference to 'views_bulk_operations_form_submit'
views_bulk_operations_form in ./views_bulk_operations.module
Form implementation for main VBO multistep form.

File

./views_bulk_operations.module, line 714
Allows operations to be performed on items selected in a view.

Code

function views_bulk_operations_form_submit($form, &$form_state) {
  $form_id = $form_state['values']['form_id'];
  $plugin = $form['#plugin'];
  $view = $plugin->view;
  $view_id = _views_bulk_operations_view_id($view);
  $view_name = $view->name;
  $form_state['storage']['step'] = $step = $form_state['values']['step'];
  switch ($step) {
    case VBO_STEP_VIEW:
      $form_state['storage']['selection'] = _views_bulk_operations_get_selection($plugin, $form_state, $form_id);
      $form_state['storage']['selectall'] = $form_state['values']['objects']['selectall'];
      $form_state['storage']['operation'] = $operation = $plugin
        ->get_operation_info($form_state['values']['operation']);
      $_SESSION['vbo_values'][$view_name][$view_id]['operation'] = $operation['key'];
      if (!$operation['configurable'] && !empty($operation['options']['skip_confirmation'])) {
        break;

        // Go directly to execution
      }
      return;
    case VBO_STEP_SINGLE:
      $form_state['storage']['selection'] = _views_bulk_operations_get_selection($plugin, $form_state, $form_id);
      $form_state['storage']['selectall'] = $form_state['values']['objects']['selectall'];
      $form_state['storage']['operation'] = $operation = $plugin
        ->get_operation_info($form_state['values']['operation']);
      $_SESSION['vbo_values'][$view_name][$view_id]['operation'] = $operation['key'];
      if ($operation['configurable']) {
        $form_state['storage']['operation_arguments'] = _views_bulk_operations_action_submit($operation, $form, $form_state);
      }
      if (!empty($operation['options']['skip_confirmation'])) {
        break;

        // Go directly to execution
      }
      return;
    case VBO_STEP_CONFIG:
      $operation = $form_state['storage']['operation'];
      $form_state['storage']['operation_arguments'] = _views_bulk_operations_action_submit($operation, $form, $form_state);
      if (!empty($operation['options']['skip_confirmation'])) {
        break;

        // Go directly to execution
      }
      return;
    case VBO_STEP_CONFIRM:
      break;
  }

  // Clean up unneeded SESSION variables.
  unset($_SESSION['vbo_values'][$view->name]);

  // Execute the VBO.
  $objects = _views_bulk_operations_get_selection_full($plugin, $form_state);
  $operation = $form_state['storage']['operation'];
  $operation_arguments = array();
  if ($operation['configurable']) {
    $operation_arguments = $form_state['storage']['operation_arguments'];
  }
  _views_bulk_operations_execute($view, $objects, $operation, $operation_arguments, array(
    'execution_type' => $plugin->options['execution_type'],
    'display_result' => $plugin->options['display_result'],
    'max_performance' => $plugin->options['max_performance'],
    'settings' => $operation['options']['settings'],
  ));

  // Clean up the form.
  $query = drupal_query_string_encode($_GET, array(
    'q',
  ));
  $form_state['redirect'] = array(
    'path' => $view
      ->get_url(),
    'query' => $query,
  );
  unset($form_state['storage']);
}