Test Failed
Push — develop ( 289f4b...2384b4 )
by Paul
09:15 queued 10s
created

Controller   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 10
eloc 23
c 1
b 0
f 0
dl 0
loc 66
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A filterSettings() 0 3 1
A gatekeeper() 0 8 1
A renderSettings() 0 5 1
A renderNotice() 0 4 2
A filterSubsubsub() 0 4 1
A filterSettingsCallback() 0 12 4
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Integrations\SureCart\Controllers;
4
5
use GeminiLabs\SiteReviews\Controllers\AbstractController;
6
use GeminiLabs\SiteReviews\Gatekeeper;
7
use GeminiLabs\SiteReviews\Helpers\Arr;
8
use GeminiLabs\SiteReviews\Modules\Html\Template;
9
10
class Controller extends AbstractController
11
{
12
    /**
13
     * @filter site-reviews/settings
14
     */
15
    public function filterSettings(array $settings): array
16
    {
17
        return array_merge(glsr()->config('integrations/surecart'), $settings);
18
    }
19
20
    /**
21
     * @filter site-reviews/settings/sanitize
22
     */
23
    public function filterSettingsCallback(array $settings, array $input): array
24
    {
25
        $key = 'settings.integrations.surecart';
26
        $surecart = Arr::get($input, $key);
27
        $multiFields = ['ownership'];
28
        if (Arr::getAs('bool', $surecart, 'enabled') && !$this->gatekeeper()->allows()) { // this renders any error notices
29
            $settings = Arr::set($settings, "{$key}.enabled", 'no');
30
        }
31
        foreach ($multiFields as $name) {
32
            $settings = Arr::set($settings, "{$key}.{$name}", Arr::get($surecart, $name, []));
33
        }
34
        return $settings;
35
    }
36
37
    /**
38
     * @filter site-reviews/integration/subsubsub
39
     */
40
    public function filterSubsubsub(array $subsubsub): array
41
    {
42
        $subsubsub['surecart'] = 'SureCart';
43
        return $subsubsub;
44
    }
45
46
    /**
47
     * @action admin_init
48
     */
49
    public function renderNotice(): void
50
    {
51
        if (glsr_get_option('integrations.surecart.enabled', false, 'bool')) {
52
            $this->gatekeeper()->allows(); // this renders any error notices
53
        }
54
    }
55
56
    /**
57
     * @action site-reviews/settings/surecart
58
     */
59
    public function renderSettings(string $rows): void
60
    {
61
        glsr(Template::class)->render('integrations/surecart/settings', [
62
            'context' => [
63
                'rows' => $rows,
64
            ],
65
        ]);
66
    }
67
68
    protected function gatekeeper(): Gatekeeper
69
    {
70
        return new Gatekeeper([
71
            'surecart/surecart.php' => [
72
                'minimum_version' => '3.7',
73
                'name' => 'SureCart',
74
                'plugin_uri' => 'https://wordpress.org/plugins/surecart/',
75
                'untested_version' => '4.0',
76
            ],
77
        ]);
78
    }
79
}
80