Passed
Push — master ( ab680b...34ba2b )
by Paul
05:51
created

Upgrade_4_0_2::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 4
nc 1
nop 0
dl 0
loc 6
ccs 0
cts 6
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Modules\Upgrader;
4
5
use GeminiLabs\SiteReviews\Application;
6
use GeminiLabs\SiteReviews\Database\OptionManager;
7
use GeminiLabs\SiteReviews\Defaults\CreateReviewDefaults;
8
use GeminiLabs\SiteReviews\Helpers\Arr;
9
10
class Upgrade_4_0_2
11
{
12
    /**
13
     * @return void
14
     */
15
    public function deleteSessions()
16
    {
17
        global $wpdb;
18
        $wpdb->query("
19
            DELETE
20
            FROM {$wpdb->options}
21
            WHERE option_name LIKE '_glsr_session%'
22
        ");
23
    }
24
25
    /**
26
     * @return void
27
     */
28
    public function migrateSettings()
29
    {
30
        if ($settings = get_option(OptionManager::databaseKey(3))) {
31
            $multilingual = 'yes' == Arr::get($settings, 'settings.general.support.polylang')
32
                ? 'polylang'
33
                : '';
34
            $settings = Arr::set($settings, 'settings.general.multilingual', $multilingual);
35
            $settings = Arr::set($settings, 'settings.general.rebusify', 'no');
36
            $settings = Arr::set($settings, 'settings.general.rebusify_email', '');
37
            $settings = Arr::set($settings, 'settings.general.rebusify_serial', '');
38
            $settings = Arr::set($settings, 'settings.reviews.name.format', '');
39
            $settings = Arr::set($settings, 'settings.reviews.name.initial', '');
40
            $settings = Arr::set($settings, 'settings.submissions.blacklist.integration', '');
41
            $settings = Arr::set($settings, 'settings.submissions.limit', '');
42
            $settings = Arr::set($settings, 'settings.submissions.limit_whitelist.email', '');
43
            $settings = Arr::set($settings, 'settings.submissions.limit_whitelist.ip_address', '');
44
            $settings = Arr::set($settings, 'settings.submissions.limit_whitelist.username', '');
45
            unset($settings['settings']['general']['support']);
46
            update_option(OptionManager::databaseKey(4), $settings);
47
        }
48
    }
49
50
    /**
51
     * @return void
52
     */
53
    public function protectMetaKeys()
54
    {
55
        global $wpdb;
56
        $keys = array_keys(glsr(CreateReviewDefaults::class)->defaults());
57
        $keys = implode("','", $keys);
58
        $postType = Application::POST_TYPE;
59
        $wpdb->query("
60
            UPDATE {$wpdb->postmeta} pm
61
            INNER JOIN {$wpdb->posts} p ON p.id = pm.post_id
62
            SET pm.meta_key = CONCAT('_', pm.meta_key)
63
            WHERE pm.meta_key IN ('{$keys}')
64
            AND p.post_type = '{$postType}'
65
        ");
66
    }
67
68
    /**
69
     * @return void
70
     */
71
    public function run()
72
    {
73
        $this->migrateSettings();
74
        $this->protectMetaKeys();
75
        $this->deleteSessions();
76
        delete_transient(Application::ID.'_cloudflare_ips');
77
    }
78
}
79