Passed
Push — master ( 859573...a81ea2 )
by Gabriel
03:21
created

HasAcceptsMediaTrait::initHasAcceptsMedia()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2.032

Importance

Changes 2
Bugs 1 Features 0
Metric Value
cc 2
eloc 4
nc 2
nop 0
dl 0
loc 8
ccs 4
cts 5
cp 0.8
crap 2.032
rs 10
c 2
b 1
f 0
1
<?php
2
3
namespace ByTIC\MediaLibrary\Collections\Traits;
4
5
use ByTIC\MediaLibrary\Validation\Validators\AbstractValidator;
6
7
/**
8
 * Trait HasAcceptsMediaTrait.
9
 *
10
 * @method  getValidator();
11
 * @method  getConstraint();
12
 */
13
trait HasAcceptsMediaTrait
14
{
15
    /** @var callable */
16
    public $acceptsMedia;
17
18 13
    protected function initHasAcceptsMedia()
19
    {
20 13
        if (method_exists($this, 'getValidator')) {
21 13
            $this->initHasAcceptsMediaWithValidation();
22
23 13
            return;
24
        }
25
        $this->initHasAcceptsMediaEmpty();
26
    }
27
28 13
    protected function initHasAcceptsMediaWithValidation()
29
    {
30 13
        $this->acceptsMedia(function ($file) {
31
            /** @var AbstractValidator $validator */
32 2
            $validator = $this->getValidator();
33 2
            $constraint = $this->getConstraint();
34
35 2
            $violations = $validator->validate($file, $constraint);
36 2
            if ($violations->count() < 1) {
37 2
                return true;
38
            }
39
40
            return $violations;
41 13
        });
42 13
    }
43
44
    protected function initHasAcceptsMediaEmpty()
45
    {
46
        $this->acceptsMedia(function () {
47
            return true;
48
        });
49
    }
50
51
    /**
52
     * @param callable $acceptsFile
53
     *
54
     * @return HasAcceptsMediaTrait
55
     */
56 13
    public function acceptsMedia(callable $acceptsFile): self
57
    {
58 13
        $this->acceptsMedia = $acceptsFile;
59
60 13
        return $this;
61
    }
62
}
63