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

api-platform / core / 10943429050

19 Sep 2024 02:48PM UTC coverage: 7.647% (-0.03%) from 7.675%
10943429050

push

github

web-flow
feat: api-platform/json-hal component (#6621)

* feat: add hal support for laravel

* feat: quick review

* fix: typo & cs-fixer

* fix: typo in composer.json

* fix: cs-fixer & phpstan

* fix: forgot about hal item normalizer, therefore there's no more createbook nor updatebook test as Hal is a readonly format

0 of 94 new or added lines in 2 files covered. (0.0%)

9082 existing lines in 291 files now uncovered.

12629 of 165144 relevant lines covered (7.65%)

22.89 hits per line

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

60.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
    {
UNCOV
34
    }
938✔
35

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

UNCOV
43
            $values = $this->extractParameterValue($parameter, $v);
340✔
UNCOV
44
            if (null === ($filterId = $parameter->getFilter())) {
340✔
UNCOV
45
                continue;
340✔
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
    {
UNCOV
65
        $this->applyFilter($aggregationBuilder, $resourceClass, $operation, $context);
548✔
66
    }
67

68
    /**
69
     * {@inheritdoc}
70
     */
71
    public function applyToItem(Builder $aggregationBuilder, string $resourceClass, array $identifiers, ?Operation $operation = null, array &$context = []): void
72
    {
UNCOV
73
        $this->applyFilter($aggregationBuilder, $resourceClass, $operation, $context);
434✔
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

© 2026 Coveralls, Inc