function MigrateMessageController::addFilterToQuery

Adds a filter to the query for migrate message administration.

This method retrieves the session-based filters from the request and applies them to the provided query object. If no filters are present, the query is left unchanged.

Parameters

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

\Drupal\Core\Database\Query\SelectInterface $query: The database query.

1 call to MigrateMessageController::addFilterToQuery()
MigrateMessageController::details in core/modules/migrate/src/Controller/MigrateMessageController.php
Displays a listing of migration messages for the given migration ID.

File

core/modules/migrate/src/Controller/MigrateMessageController.php, line 250

Class

MigrateMessageController
Provides controller methods for the Message form.

Namespace

Drupal\migrate\Controller

Code

protected function addFilterToQuery(Request $request, SelectInterface $query) : void {
  $session_filters = $request->getSession()
    ->get('migration_messages_overview_filter', []);
  if (empty($session_filters)) {
    return;
  }
  // Build the condition.
  foreach ($session_filters as $filter) {
    if (empty($filter['value'])) {
      continue;
    }
    switch ($filter['type']) {
      case 'array':
        $values = array_values($filter['value']);
        if ($filter['field'] === 'msg.level') {
          $values = array_map(fn($x) => (int) $x, $values);
        }
        $query->condition($filter['field'], $values, 'IN');
        break;

      case 'string':
        $query->condition($filter['field'], "%{$filter['value']}%", 'LIKE');
        break;

      default:
        $query->condition($filter['field'], $filter['value']);
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.