PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.29.0
Independent Analytics – WordPress Analytics Plugin v1.29.0
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 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 / IAWP / Migrations / Migration.php
independent-analytics / IAWP / Migrations Last commit date
Migration.php 3 years ago Migration_10.php 3 years ago Migration_11.php 3 years ago Migration_12.php 3 years ago Migration_13.php 3 years ago Migration_14.php 3 years ago Migration_15.php 3 years ago Migration_1_0.php 3 years ago Migration_1_6.php 3 years ago Migration_1_8.php 3 years ago Migration_1_9.php 3 years ago Migration_2.php 3 years ago Migration_3.php 3 years ago Migration_4.php 3 years ago Migration_5.php 3 years ago Migration_6.php 3 years ago Migration_7.php 3 years ago Migration_8.php 3 years ago Migration_9.php 3 years ago Migration_Job.php 3 years ago
Migration.php
102 lines
1 <?php
2
3 namespace IAWP_SCOPED\IAWP\Migrations;
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 public final function __construct()
14 {
15 $this->migrate();
16 }
17 /**
18 * @return void
19 */
20 public static function create_or_migrate() : void
21 {
22 if (self::should_migrate()) {
23 \update_option('iawp_is_migrating', '1');
24 new Migration_1_0();
25 new Migration_1_6();
26 new Migration_1_8();
27 new Migration_1_9();
28 new Migration_2();
29 new Migration_3();
30 new Migration_4();
31 new Migration_5();
32 new Migration_6();
33 new Migration_7();
34 new Migration_8();
35 new Migration_9();
36 new Migration_10();
37 new Migration_11();
38 new Migration_12();
39 new Migration_13();
40 new Migration_14();
41 new Migration_15();
42 \update_option('iawp_is_migrating', '0');
43 }
44 }
45 /**
46 * is_migrating is serving multiple purposes. It's also being used to stop ajax requests and dashboard
47 * widgets from running when the database version is newer than one that comes with the installed version
48 * of independent analytics. The probably should be a method called something `database_ready` that serves
49 * this purpose more explicitly.
50 *
51 * @return bool
52 */
53 public static function is_migrating() : bool
54 {
55 $db_version = \get_option('iawp_db_version', '0');
56 $is_migrating = \get_option('iawp_is_migrating') === '1';
57 $is_current = \version_compare($db_version, '15', '=');
58 $is_outdated = !$is_current;
59 return $is_outdated || $is_migrating;
60 }
61 public static function is_database_ahead_of_plugin() : bool
62 {
63 $db_version = \get_option('iawp_db_version', '0');
64 return \version_compare($db_version, '15', '>');
65 }
66 public static function is_actually_migrating() : bool
67 {
68 return \get_option('iawp_is_migrating') === '1';
69 }
70 /**
71 * @return bool
72 */
73 public static function should_migrate() : bool
74 {
75 $db_version = \get_option('iawp_db_version', '0');
76 $is_migrating = \get_option('iawp_is_migrating') === '1';
77 $is_current = \version_compare($db_version, '15', '=');
78 $is_outdated = !$is_current;
79 return $is_outdated && !$is_migrating;
80 }
81 /**
82 * Trigger the migration
83 *
84 * @return void
85 */
86 protected final function migrate() : void
87 {
88 $db_version = \get_option('iawp_db_version', '0');
89 if (\version_compare($db_version, $this->database_version, '<')) {
90 // Trigger the classes' migration function
91 $this->handle();
92 \update_option('iawp_db_version', $this->database_version);
93 }
94 }
95 /**
96 * Classes that extend must define a handle method where migration work is done
97 *
98 * @return void
99 */
100 protected abstract function handle() : void;
101 }
102