Passed
Push — master ( f0530b...3e604e )
by Paul
14:52 queued 08:11
created

Migrate_5_3_0   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Test Coverage

Coverage 52.17%

Importance

Changes 1
Bugs 1 Features 0
Metric Value
wmc 7
eloc 20
c 1
b 1
f 0
dl 0
loc 44
ccs 12
cts 23
cp 0.5217
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A fixDatabaseVersion() 0 9 3
A run() 0 4 1
A migrateDatabase() 0 15 3
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Modules\Migrations;
4
5
use GeminiLabs\SiteReviews\Application;
6
use GeminiLabs\SiteReviews\Database\SqlSchema;
7
8
class Migrate_5_3_0
9
{
10
    /**
11
     * @return bool
12
     */
13 7
    public function run()
14
    {
15 7
        $this->migrateDatabase();
16 7
        return true;
17
    }
18
19
    /**
20
     * @return void
21
     */
22 7
    protected function fixDatabaseVersion()
23
    {
24 7
        $databaseVersion = get_option(glsr()->prefix.'db_version');
25 7
        if ('5.2' === $databaseVersion) {
26
            $version = '1.0'; // @compat
27
            if (glsr(SqlSchema::class)->columnExists('ratings', 'terms')) {
28
                $version = Application::DB_VERSION;
29
            }
30
            update_option(glsr()->prefix.'db_version', $version);
31
        }
32 7
    }
33
34
    /**
35
     * @return void
36
     */
37 7
    protected function migrateDatabase()
38
    {
39 7
        require_once ABSPATH.'/wp-admin/includes/plugin.php';
40 7
        if (!is_plugin_active_for_network(plugin_basename(glsr()->file))) {
41 7
            $this->fixDatabaseVersion();
42 7
            return;
43
        }
44
        $sites = get_sites([
45
            'fields' => 'ids',
46
            'network_id' => get_current_network_id(),
47
        ]);
48
        foreach ($sites as $siteId) {
49
            switch_to_blog($siteId);
50
            $this->fixDatabaseVersion();
51
            restore_current_blog();
52
        }
53
    }
54
}
55