public function ViewsBulkOperationsController::updateSelection in Views Bulk Operations (VBO) 8.3
Same name and namespace in other branches
- 8.2 src/Controller/ViewsBulkOperationsController.php \Drupal\views_bulk_operations\Controller\ViewsBulkOperationsController::updateSelection()
- 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'
File
- src/
Controller/ ViewsBulkOperationsController.php, line 110
Class
- ViewsBulkOperationsController
- Defines VBO controller class.
Namespace
Drupal\views_bulk_operations\ControllerCode
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;
}