Test Failed
Push — fix/media-validation ( 3351fe )
by Ben
09:34
created

FileFieldDimensionsRule   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 8
eloc 15
c 1
b 0
f 0
dl 0
loc 35
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A validateDimensions() 0 7 2
A validate() 0 24 6
1
<?php declare(strict_types=1);
2
3
namespace Thinktomorrow\Chief\Fields\ValidationRules;
4
5
use Thinktomorrow\Chief\Media\Application\MediaRequest;
6
7
class FileFieldDimensionsRule extends AbstractMediaFieldRule
8
{
9
    public function validate($attribute, $value, $params, $validator): bool
10
    {
11
        $value = $this->normalizePayload($value);
12
13
        foreach([MediaRequest::NEW, MediaRequest::REPLACE] as $type) {
14
            foreach($value[$type] as $file) {
15
                if($file && false !== $this->validateDimensions($attribute, $file, $params)) {
16
                    return true;
17
                }
18
            }
19
        }
20
21
        $validator->setCustomMessages([
22
            'filefield_dimensions' => 'De :attribute heeft niet de juiste afmetingen: ' . implode(', ', $params),
23
        ]);
24
25
        if(!isset($validator->customAttributes[$attribute])) {
26
            $validator->addCustomAttributes([
27
                $attribute => 'afbeelding',
28
            ]);
29
        }
30
31
32
        return false;
33
    }
34
35
    public function validateDimensions($attribute, $value, $parameters)
36
    {
37
        if($this->refersToExistingAsset($value)) {
38
            return $this->validateAssetDimensions($this->existingAsset($value), $parameters);
39
        }
40
41
        return parent::validateDimensions($attribute, $value, $parameters);
42
    }
43
}
44