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

Upgrade_4_0_0::protectMetaKeys()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 9
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 12
ccs 0
cts 12
cp 0
crap 2
rs 9.9666
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