PublicScope::apply()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 8
nc 2
nop 1
dl 0
loc 15
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Blog\Comment\Scope;
6
7
use Cycle\ORM\Select\QueryBuilder;
0 ignored issues
show
Bug introduced by
The type Cycle\ORM\Select\QueryBuilder was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
8
use Cycle\ORM\Select\ScopeInterface as ConstrainInterface;
0 ignored issues
show
Bug introduced by
The type Cycle\ORM\Select\ScopeInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
9
10
/**
11
 * Not deleted
12
 * Public with condition
13
 * Sorted.
14
 */
15
final class PublicScope implements ConstrainInterface
16
{
17
    private ?array $publicOrCondition;
18
19
    public function __construct(?array $publicOrCondition = null)
20
    {
21
        $this->publicOrCondition = $publicOrCondition;
22
    }
23
24
    public function apply(QueryBuilder $query): void
25
    {
26
        // public or...
27
        if ($this->publicOrCondition !== null) {
28
            $query->where([
29
                '@or' => [
30
                    ['public' => true],
31
                    $this->publicOrCondition,
32
                ],
33
            ]);
34
        } else {
35
            $query->andWhere('public', '=', true);
36
        }
37
        // sort
38
        $query->orderBy('published_at', 'DESC');
39
    }
40
}
41