Passed
Push — feature/rebusify ( 816514...289185 )
by Paul
07:17
created

Upgrade_4_0_0   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Test Coverage

Coverage 96.3%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 21
c 1
b 0
f 1
dl 0
loc 50
ccs 26
cts 27
cp 0.963
rs 10
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A protectMetaKeys() 0 12 1
A deleteSessions() 0 6 1
A __construct() 0 6 1
A migrateSettings() 0 7 2
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 6
    public function __construct()
13
    {
14 6
        $this->migrateSettings();
15 6
        $this->protectMetaKeys();
16 6
        $this->deleteSessions();
17 6
        delete_transient(Application::ID.'_cloudflare_ips');
18 6
    }
19
20
    /**
21
     * @return void
22
     */
23 6
    public function deleteSessions()
24
    {
25 6
        global $wpdb;
26 6
        $wpdb->query("
27
            DELETE
28 6
            FROM {$wpdb->options}
29
            WHERE option_name LIKE '_glsr_session%'
30
        ");
31 6
    }
32
33
    /**
34
     * @return void
35
     */
36 6
    public function migrateSettings()
37
    {
38 6
        $settingsKey = glsr(Helper::class)->snakeCase(Application::ID.'-v3');
39 6
        if ($settings = get_option($settingsKey)) {
40
            add_option(OptionManager::databaseKey(), $settings);
41
        }
42 6
        glsr(OptionManager::class)->set('settings.submissions.blacklist.integration', '');
43 6
    }
44
45
    /**
46
     * @return void
47
     */
48 6
    public function protectMetaKeys()
49
    {
50 6
        global $wpdb;
51 6
        $keys = array_keys(glsr(CreateReviewDefaults::class)->defaults());
52 6
        $keys = implode("','", $keys);
53 6
        $postType = Application::POST_TYPE;
54 6
        $wpdb->query("
55 6
            UPDATE {$wpdb->postmeta} pm
56 6
            INNER JOIN {$wpdb->posts} p ON p.id = pm.post_id
57
            SET pm.meta_key = CONCAT('_', pm.meta_key)
58 6
            WHERE pm.meta_key IN ('{$keys}')
59 6
            AND p.post_type = '{$postType}'
60
        ");
61 6
    }
62
}
63