findBySiteIdIndexedBySetting()   B
last analyzed

Complexity

Conditions 5
Paths 4

Size

Total Lines 25
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 25
rs 8.439
c 0
b 0
f 0
cc 5
eloc 14
nc 4
nop 1
1
<?php
2
3
namespace Loevgaard\DandomainAltapayBundle\Provider;
4
5
use Loevgaard\DandomainAltapayBundle\Entity\SiteSetting;
6
use Loevgaard\DandomainAltapayBundle\Entity\SiteSettingRepository;
7
use Symfony\Component\DependencyInjection\ContainerInterface;
8
9
class SiteSettingsProvider
10
{
11
    /**
12
     * @var ContainerInterface
13
     */
14
    protected $container;
15
16
    /**
17
     * @var SiteSettingRepository
18
     */
19
    protected $siteSettingRepository;
20
21
    public function __construct(ContainerInterface $container, SiteSettingRepository $siteSettingRepository)
22
    {
23
        $this->container = $container;
24
        $this->siteSettingRepository = $siteSettingRepository;
25
    }
26
27
    public function findBySiteIdIndexedBySetting(int $siteId) : array
28
    {
29
        $availableSettings = SiteSetting::getSettings();
30
31
        // set default settings
32
        $defaultSettings = [];
33
        foreach ($availableSettings as $availableSetting) {
34
            $defaultSettings[$availableSetting] = $this->container
35
                ->getParameter('loevgaard_dandomain_altapay.default_settings.'.$availableSetting);
36
        }
37
38
        // fetch settings and set default settings if not set
39
        $settings = $this->siteSettingRepository->findBySiteIdIndexedBySetting($siteId);
40
        if (!empty($settings)) {
41
            foreach ($availableSettings as $availableSetting) {
42
                if (!isset($settings[$availableSetting])) {
43
                    $settings[$availableSetting] = $defaultSettings[$availableSetting];
44
                }
45
            }
46
        } else {
47
            $settings = $defaultSettings;
48
        }
49
50
        return $settings;
51
    }
52
}
53