• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

api-platform / core / 13814792797

12 Mar 2025 03:09PM UTC coverage: 5.889% (-1.4%) from 7.289%
13814792797

Pull #7012

github

web-flow
Merge 199d44919 into 284937039
Pull Request #7012: doc: comment typo in ApiResource.php

10048 of 170615 relevant lines covered (5.89%)

5.17 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Doctrine/Odm/Extension/ParameterExtension.php
1
<?php
2

3
/*
4
 * This file is part of the API Platform project.
5
 *
6
 * (c) Kévin Dunglas <dunglas@gmail.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11

12
declare(strict_types=1);
13

14
namespace ApiPlatform\Doctrine\Odm\Extension;
15

16
use ApiPlatform\Doctrine\Common\ParameterValueExtractorTrait;
17
use ApiPlatform\Doctrine\Odm\Filter\FilterInterface;
18
use ApiPlatform\Metadata\Operation;
19
use ApiPlatform\State\ParameterNotFound;
20
use Doctrine\ODM\MongoDB\Aggregation\Builder;
21
use Psr\Container\ContainerInterface;
22

23
/**
24
 * Reads operation parameters and execute its filter.
25
 *
26
 * @author Antoine Bluchet <soyuka@gmail.com>
27
 */
28
final class ParameterExtension implements AggregationCollectionExtensionInterface, AggregationItemExtensionInterface
29
{
30
    use ParameterValueExtractorTrait;
31

32
    public function __construct(private readonly ContainerInterface $filterLocator)
33
    {
34
    }
×
35

36
    private function applyFilter(Builder $aggregationBuilder, ?string $resourceClass = null, ?Operation $operation = null, array &$context = []): void
37
    {
38
        foreach ($operation->getParameters() ?? [] as $parameter) {
×
39
            if (null === ($v = $parameter->getValue()) || $v instanceof ParameterNotFound) {
×
40
                continue;
×
41
            }
42

43
            $values = $this->extractParameterValue($parameter, $v);
×
44
            if (null === ($filterId = $parameter->getFilter())) {
×
45
                continue;
×
46
            }
47

48
            $filter = $this->filterLocator->has($filterId) ? $this->filterLocator->get($filterId) : null;
×
49
            if ($filter instanceof FilterInterface) {
×
50
                $filterContext = ['filters' => $values, 'parameter' => $parameter];
×
51
                $filter->apply($aggregationBuilder, $resourceClass, $operation, $filterContext);
×
52
                // update by reference
53
                if (isset($filterContext['mongodb_odm_sort_fields'])) {
×
54
                    $context['mongodb_odm_sort_fields'] = $filterContext['mongodb_odm_sort_fields'];
×
55
                }
56
            }
57
        }
58
    }
59

60
    /**
61
     * {@inheritdoc}
62
     */
63
    public function applyToCollection(Builder $aggregationBuilder, string $resourceClass, ?Operation $operation = null, array &$context = []): void
64
    {
65
        $this->applyFilter($aggregationBuilder, $resourceClass, $operation, $context);
×
66
    }
67

68
    /**
69
     * {@inheritdoc}
70
     */
71
    public function applyToItem(Builder $aggregationBuilder, string $resourceClass, array $identifiers, ?Operation $operation = null, array &$context = []): void
72
    {
73
        $this->applyFilter($aggregationBuilder, $resourceClass, $operation, $context);
×
74
    }
75
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc