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

HasAcceptsMediaTrait   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Test Coverage

Coverage 66.67%

Importance

Changes 2
Bugs 1 Features 0
Metric Value
eloc 17
c 2
b 1
f 0
dl 0
loc 48
ccs 16
cts 24
cp 0.6667
rs 10
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A initHasAcceptsMedia() 0 8 2
A acceptsMedia() 0 5 1
A initHasAcceptsMediaEmpty() 0 4 1
A initHasAcceptsMediaWithValidation() 0 13 2
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