You are here

public function ViewsBulkOperationsController::updateSelection in Views Bulk Operations (VBO) 8.3

Same name and namespace in other branches
  1. 8.2 src/Controller/ViewsBulkOperationsController.php \Drupal\views_bulk_operations\Controller\ViewsBulkOperationsController::updateSelection()
  2. 4.0.x src/Controller/ViewsBulkOperationsController.php \Drupal\views_bulk_operations\Controller\ViewsBulkOperationsController::updateSelection()

AJAX callback to update selection (multipage).

Parameters

string $view_id: The current view ID.

string $display_id: The display ID of the current view.

\Symfony\Component\HttpFoundation\Request $request: The request object.

1 string reference to 'ViewsBulkOperationsController::updateSelection'
views_bulk_operations.routing.yml in ./views_bulk_operations.routing.yml
views_bulk_operations.routing.yml

File

src/Controller/ViewsBulkOperationsController.php, line 110

Class

ViewsBulkOperationsController
Defines VBO controller class.

Namespace

Drupal\views_bulk_operations\Controller

Code

public function updateSelection($view_id, $display_id, Request $request) {
  $response = [];
  $tempstore_data = $this
    ->getTempstoreData($view_id, $display_id);
  if (empty($tempstore_data)) {
    throw new NotFoundHttpException();
  }
  $list = $request->request
    ->get('list');
  $op = $request->request
    ->get('op', 'check');

  // Reverse operation when in exclude mode.
  if (!empty($tempstore_data['exclude_mode'])) {
    if ($op === 'add') {
      $op = 'remove';
    }
    elseif ($op === 'remove') {
      $op = 'add';
    }
  }
  switch ($op) {
    case 'add':
      foreach ($list as $bulkFormKey) {
        if (!isset($tempstore_data['list'][$bulkFormKey])) {
          $tempstore_data['list'][$bulkFormKey] = $this
            ->getListItem($bulkFormKey);
        }
      }
      break;
    case 'remove':
      foreach ($list as $bulkFormKey) {
        if (isset($tempstore_data['list'][$bulkFormKey])) {
          unset($tempstore_data['list'][$bulkFormKey]);
        }
      }
      break;
    case 'method_include':
      unset($tempstore_data['exclude_mode']);
      $tempstore_data['list'] = [];
      break;
    case 'method_exclude':
      $tempstore_data['exclude_mode'] = TRUE;
      $tempstore_data['list'] = [];
      break;
  }
  $this
    ->setTempstoreData($tempstore_data);
  $count = empty($tempstore_data['exclude_mode']) ? count($tempstore_data['list']) : $tempstore_data['total_results'] - count($tempstore_data['list']);
  $selection_info_renderable = $this
    ->getMultipageList($tempstore_data);
  $response_data = [
    'count' => $count,
    'selection_info' => $this->renderer
      ->renderRoot($selection_info_renderable),
  ];
  $response = new AjaxResponse();
  $response
    ->setData($response_data);
  return $response;
}