You are here

function views_bulk_operations_form_validate in Views Bulk Operations (VBO) 6

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

Form validate function for views_bulk_operations_form().

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

File

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

Code

function views_bulk_operations_form_validate($form, &$form_state) {
  $form_id = $form_state['values']['form_id'];
  $plugin = $form['#plugin'];
  $view_id = _views_bulk_operations_view_id($plugin->view);
  $view_name = $plugin->view->name;
  switch ($form_state['values']['step']) {
    case VBO_STEP_VIEW:
      if (!array_filter($form_state['values']['objects']['selection']) && (empty($_SESSION['vbo_values'][$view_name][$view_id]) || !array_filter($_SESSION['vbo_values'][$view_name][$view_id]['selection']))) {
        form_set_error('objects', t('No item selected. Please select one or more items.'));
      }
      if (!empty($form_state['clicked_button']['#hash'])) {
        $form_state['values']['operation'] = $form_state['clicked_button']['#hash'];
      }
      if (!$form_state['values']['operation']) {

        // No action selected
        form_set_error('operation', t('No operation selected. Please select an operation to perform.'));
      }
      if (form_get_errors()) {
        _views_bulk_operations_add_js($plugin, $form['#id'], $form_id);
      }
      break;
    case VBO_STEP_SINGLE:
      if (!array_filter($form_state['values']['objects']['selection']) && (empty($_SESSION['vbo_values'][$view_name][$view_id]) || !array_filter($_SESSION['vbo_values'][$view_name][$view_id]['selection']))) {
        form_set_error('objects', t('No item selected. Please select one or more items.'));
      }
      $operation = $plugin
        ->get_operation_info($form_state['values']['operation']);
      if ($operation['configurable']) {
        _views_bulk_operations_action_validate($operation, $form, $form_state);
      }
      if (form_get_errors()) {
        _views_bulk_operations_add_js($plugin, $form['#id'], $form_id);
      }
      break;
    case VBO_STEP_CONFIG:
      $operation = $form_state['storage']['operation'];
      _views_bulk_operations_action_validate($operation, $form, $form_state);

      // If the action validation fails, Form API will bring us back to this step.
      // We need to strip the view here because the form function will not be called.
      // Also, the $plugin variable above was carried over from last submission, so it
      // does not represent the current instance of the plugin.
      // That's why we had to store instances of the plugin in this global array.
      if (form_get_errors()) {
        global $vbo_plugins;
        if (isset($vbo_plugins[$form_id])) {
          _views_bulk_operations_strip_view($vbo_plugins[$form_id]->view);
        }
      }
      break;
  }
}