function TemporaryQueryGuard::collectFilteredFields

Recursively collects all entity query condition fields.

Entity conditions can be nested within AND and OR groups. This recursively finds all unique fields in an entity query condition.

Parameters

\Drupal\jsonapi\Query\EntityConditionGroup $group: The root entity condition group.

array $fields: Internal use only.

Return value

array An array of entity query condition field names.

1 call to TemporaryQueryGuard::collectFilteredFields()
TemporaryQueryGuard::applyAccessControls in core/modules/jsonapi/src/Access/TemporaryQueryGuard.php
Applies access controls to an entity query.

File

core/modules/jsonapi/src/Access/TemporaryQueryGuard.php, line 572

Class

TemporaryQueryGuard
Adds sufficient access control to collection queries.

Namespace

Drupal\jsonapi\Access

Code

protected static function collectFilteredFields(EntityConditionGroup $group, array $fields = []) {
  foreach ($group->members() as $member) {
    if ($member instanceof EntityConditionGroup) {
      $fields = static::collectFilteredFields($member, $fields);
    }
    else {
      $fields[] = $member->field();
    }
  }
  return array_unique($fields);
}

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