PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.10
Independent Analytics – WordPress Analytics Plugin v1.10
2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / inc / migrations / migration.php
independent-analytics / inc / migrations Last commit date
versions 3 years ago migration.php 3 years ago migration_job.php 3 years ago
migration.php
92 lines
1 <?php
2
3 namespace IAWP;
4
5 abstract class Migration
6 {
7 /**
8 * Classes that extend must provide their database version
9 *
10 * @var string
11 */
12 protected $database_version = '0';
13
14 /**
15 * Trigger the migration
16 *
17 * @return void
18 */
19 final protected function migrate(): void
20 {
21 $db_version = get_option('iawp_db_version', '0');
22
23 if (version_compare($db_version, $this->database_version, '<')) {
24 // Trigger the classes' migration function
25 $this->handle();
26 update_option('iawp_db_version', $this->database_version);
27 }
28 }
29
30 /**
31 * Classes that extend must define a handle method where migration work is done
32 *
33 * @return void
34 */
35 abstract protected function handle(): void;
36
37 /**
38 * @return void
39 */
40 public static function create_or_migrate(): void
41 {
42 if (self::should_migrate()) {
43 update_option('iawp_is_migrating', '1');
44
45 $migrate_1_0 = new Migration_1_0();
46 $migrate_1_0->migrate();
47
48 $migrate_1_6 = new Migration_1_6();
49 $migrate_1_6->migrate();
50
51 $migrate_1_8 = new Migration_1_8();
52 $migrate_1_8->migrate();
53
54 $migrate_1_9 = new Migration_1_9();
55 $migrate_1_9->migrate();
56
57 delete_option('iawp_is_migrating');
58 }
59 }
60
61 /**
62 * @return bool
63 */
64 public static function is_migrating(): bool
65 {
66 $db_version = get_option('iawp_db_version', '0');
67 $is_migrating = get_option('iawp_is_migrating') === '1';
68 $is_current = version_compare($db_version, '1.9', '=');
69 $is_outdated = !$is_current;
70
71 return $is_outdated || $is_migrating;
72 }
73
74 public static function is_actually_migrating(): bool
75 {
76 return get_option('iawp_is_migrating') === '1';
77 }
78
79 /**
80 * @return bool
81 */
82 public static function should_migrate(): bool
83 {
84 $db_version = get_option('iawp_db_version', '0');
85 $is_migrating = get_option('iawp_is_migrating') === '1';
86 $is_current = version_compare($db_version, '1.9', '=');
87 $is_outdated = !$is_current;
88
89 return $is_outdated && !$is_migrating;
90 }
91 }
92