getInstanceClassName()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
nc 2
nop 1
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
/*
5
 * Copyright (C)
6
 * Nathan Boiron <[email protected]>
7
 * Romain Canon <[email protected]>
8
 *
9
 * This file is part of the TYPO3 NotiZ project.
10
 * It is free software; you can redistribute it and/or modify it
11
 * under the terms of the GNU General Public License, either
12
 * version 3 of the License, or any later version.
13
 *
14
 * For the full copyright and license information, see:
15
 * http://www.gnu.org/licenses/gpl-3.0.html
16
 */
17
18
namespace CuyZ\Notiz\Core\Definition\Tree\Notification\Settings;
19
20
use CuyZ\Notiz\Core\Notification\Settings\NotificationSettings;
21
use Romm\ConfigurationObject\Service\Items\MixedTypes\MixedTypesInterface;
22
use Romm\ConfigurationObject\Service\Items\MixedTypes\MixedTypesResolver;
23
use TYPO3\CMS\Core\SingletonInterface;
24
25
/**
26
 * Resolver for the property:
27
 *
28
 * @see \CuyZ\Notiz\Core\Definition\Tree\Notification\NotificationDefinition::$settings
29
 */
30
class NotificationSettingsResolver implements SingletonInterface, MixedTypesInterface
31
{
32
    /**
33
     * Dynamically sets the settings class name of the notification.
34
     *
35
     * This class name was previously inserted by the method below:
36
     *
37
     * @see \CuyZ\Notiz\Core\Definition\Tree\Notification\NotificationDefinition::fetchSettingsClassName
38
     *
39
     * @param MixedTypesResolver $resolver
40
     */
41
    public static function getInstanceClassName(MixedTypesResolver $resolver)
42
    {
43
        $settingsClassName = self::getSettingsClassName($resolver);
44
45
        if (null !== $settingsClassName) {
0 ignored issues
show
introduced by
The condition null !== $settingsClassName is always true.
Loading history...
46
            $resolver->setObjectType($settingsClassName);
47
        }
48
    }
49
50
    /**
51
     * @param MixedTypesResolver $resolver
52
     * @return string
53
     */
54
    protected static function getSettingsClassName(MixedTypesResolver $resolver): string
55
    {
56
        $data = $resolver->getData();
57
58
        $data = is_array($data)
59
            ? $data
60
            : [];
61
62
        return isset($data[NotificationSettings::SETTINGS_CLASS_NAME])
63
            ? $data[NotificationSettings::SETTINGS_CLASS_NAME]
64
            : NotificationSettings::TYPE_DEFAULT;
65
    }
66
}
67