Passed
Push — feature/rebusify ( 495106...67b08f )
by Paul
06:10 queued 02:03
created

Upgrade_4_0_0   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 26
c 1
b 0
f 1
dl 0
loc 55
ccs 0
cts 41
cp 0
rs 10
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A protectMetaKeys() 0 12 1
A deleteSessions() 0 6 1
A migrateSettings() 0 11 3
A __construct() 0 6 1
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\Helper;
9
10
class Upgrade_4_0_0
11
{
12
    public function __construct()
13
    {
14
        $this->migrateSettings();
15
        $this->protectMetaKeys();
16
        $this->deleteSessions();
17
        delete_transient(Application::ID.'_cloudflare_ips');
18
    }
19
20
    /**
21
     * @return void
22
     */
23
    public function deleteSessions()
24
    {
25
        global $wpdb;
26
        $wpdb->query("
27
            DELETE
28
            FROM {$wpdb->options}
29
            WHERE option_name LIKE '_glsr_session%'
30
        ");
31
    }
32
33
    /**
34
     * @return void
35
     */
36
    public function migrateSettings()
37
    {
38
        if ($settings = get_option(OptionManager::databaseKey(3))) {
39
            $previousVersion = glsr(Helper::class)->dataGet($settings, 'version', '0.0.0');
0 ignored issues
show
Unused Code introduced by
The assignment to $previousVersion is dead and can be removed.
Loading history...
40
            $multilingual = 'yes' == glsr(Helper::class)->dataGet($settings, 'settings.general.support.polylang')
41
                ? 'polylang'
42
                : '';
43
            $settings = glsr(Helper::class)->dataSet($settings, 'settings.general.multilingual', $multilingual);
44
            $settings = glsr(Helper::class)->dataSet($settings, 'settings.submissions.blacklist.integration', '');
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