ValidatorBootstrapper   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 7
eloc 27
c 4
b 0
f 0
dl 0
loc 77
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A registerBindings() 0 3 1
A registerRuleExtensions() 0 9 1
A getBindings() 0 5 1
A registerErrorTemplates() 0 21 4
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Admin\Bootstrappers\Validation;
6
7
use AbterPhp\Admin\Validation\Factory\User;
8
use AbterPhp\Admin\Validation\Factory\UserGroup;
9
use AbterPhp\Framework\Constant\Env;
10
use AbterPhp\Framework\Validation\Rules\Base64;
11
use AbterPhp\Framework\Validation\Rules\ExactlyOne;
12
use AbterPhp\Framework\Validation\Rules\Forbidden;
13
use AbterPhp\Framework\Validation\Rules\MaxLength;
14
use AbterPhp\Framework\Validation\Rules\MinLength;
15
use AbterPhp\Framework\Validation\Rules\Url;
16
use AbterPhp\Framework\Validation\Rules\Uuid;
17
use InvalidArgumentException;
18
use Opulence\Framework\Configuration\Config;
19
use Opulence\Framework\Validation\Bootstrappers\ValidatorBootstrapper as BaseBootstrapper;
20
use Opulence\Ioc\IContainer;
21
use Opulence\Validation\Rules\Errors\ErrorTemplateRegistry;
22
use Opulence\Validation\Rules\RuleExtensionRegistry;
23
24
/**
25
 * Defines the validator bootstrapper
26
 */
27
class ValidatorBootstrapper extends BaseBootstrapper
28
{
29
    protected const LANG_PATH = 'lang/';
30
31
    /**
32
     * @var string[]
33
     */
34
    protected array $validatorFactories = [
35
        User::class,
36
        UserGroup::class,
37
    ];
38
39
    /**
40
     * @return string[]
41
     */
42
    public function getBindings(): array
43
    {
44
        return array_merge(
45
            parent::getBindings(),
46
            $this->validatorFactories
47
        );
48
    }
49
50
    /**
51
     * @inheritdoc
52
     */
53
    public function registerBindings(IContainer $container)
54
    {
55
        parent::registerBindings($container);
56
    }
57
58
    /**
59
     * @SuppressWarnings(PHPMD.StaticAccess)
60
     *
61
     * Registers the error templates
62
     *
63
     * @param ErrorTemplateRegistry $errorTemplateRegistry The registry to register to
64
     *
65
     * @throws InvalidArgumentException Thrown if the config was invalid
66
     */
67
    protected function registerErrorTemplates(ErrorTemplateRegistry $errorTemplateRegistry)
68
    {
69
        global $abterModuleManager;
70
71
        $config = [];
72
73
        $lang = getenv(Env::DEFAULT_LANGUAGE);
74
75
        $path = sprintf('%s/%s/validation.php', Config::get('paths', 'resources.lang'), $lang);
76
        if (is_file($path)) {
77
            $config = require $path;
78
        }
79
80
        foreach ($abterModuleManager->getResourcePaths() as $path) {
81
            $path = sprintf('%s/%s/%s/validation.php', $path, static::LANG_PATH, $lang);
82
            if (is_file($path)) {
83
                $config = array_merge($config, require $path);
84
            }
85
        }
86
87
        $errorTemplateRegistry->registerErrorTemplatesFromConfig($config);
88
    }
89
90
    /**
91
     * Registers any custom rule extensions
92
     *
93
     * @param RuleExtensionRegistry $ruleExtensionRegistry The registry to register rules to
94
     */
95
    protected function registerRuleExtensions(RuleExtensionRegistry $ruleExtensionRegistry)
96
    {
97
        $ruleExtensionRegistry->registerRuleExtension(new Forbidden());
98
        $ruleExtensionRegistry->registerRuleExtension(new ExactlyOne());
99
        $ruleExtensionRegistry->registerRuleExtension(new Base64());
100
        $ruleExtensionRegistry->registerRuleExtension(new MaxLength());
101
        $ruleExtensionRegistry->registerRuleExtension(new MinLength());
102
        $ruleExtensionRegistry->registerRuleExtension(new Url());
103
        $ruleExtensionRegistry->registerRuleExtension(new Uuid());
104
    }
105
}
106