PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.3.1
Independent Analytics – WordPress Analytics Plugin v2.3.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 / Migrations.php
independent-analytics / IAWP / Migrations Last commit date
Migration.php 2 years ago Migration_10.php 2 years ago Migration_11.php 2 years ago Migration_12.php 2 years ago Migration_13.php 2 years ago Migration_14.php 2 years ago Migration_15.php 2 years ago Migration_16.php 2 years ago Migration_17.php 2 years ago Migration_18.php 2 years ago Migration_19.php 2 years ago Migration_1_0.php 2 years ago Migration_1_6.php 2 years ago Migration_1_8.php 2 years ago Migration_1_9.php 2 years ago Migration_2.php 2 years ago Migration_20.php 2 years ago Migration_21.php 2 years ago Migration_22.php 2 years ago Migration_23.php 2 years ago Migration_24.php 2 years ago Migration_25.php 2 years ago Migration_26.php 2 years ago Migration_27.php 2 years ago Migration_3.php 2 years ago Migration_4.php 2 years ago Migration_5.php 2 years ago Migration_6.php 2 years ago Migration_7.php 2 years ago Migration_8.php 2 years ago Migration_9.php 2 years ago Migration_Job.php 2 years ago Migrations.php 2 years ago Step_Migration.php 2 years ago
Migrations.php
137 lines
1 <?php
2
3 namespace IAWP\Migrations;
4
5 use IAWP\Query;
6 use IAWP\Utils\Dir;
7 use IAWP\Utils\Server;
8 /** @internal */
9 class Migrations
10 {
11 /**
12 * @return void
13 */
14 public static function create_or_migrate() : void
15 {
16 if (self::should_migrate()) {
17 \update_option('iawp_is_migrating', '1');
18 Server::increase_max_execution_time();
19 new \IAWP\Migrations\Migration_1_0();
20 new \IAWP\Migrations\Migration_1_6();
21 new \IAWP\Migrations\Migration_1_8();
22 new \IAWP\Migrations\Migration_1_9();
23 new \IAWP\Migrations\Migration_2();
24 new \IAWP\Migrations\Migration_3();
25 new \IAWP\Migrations\Migration_4();
26 new \IAWP\Migrations\Migration_5();
27 new \IAWP\Migrations\Migration_6();
28 new \IAWP\Migrations\Migration_7();
29 new \IAWP\Migrations\Migration_8();
30 new \IAWP\Migrations\Migration_9();
31 new \IAWP\Migrations\Migration_10();
32 new \IAWP\Migrations\Migration_11();
33 new \IAWP\Migrations\Migration_12();
34 new \IAWP\Migrations\Migration_13();
35 new \IAWP\Migrations\Migration_14();
36 new \IAWP\Migrations\Migration_15();
37 new \IAWP\Migrations\Migration_16();
38 new \IAWP\Migrations\Migration_17();
39 new \IAWP\Migrations\Migration_18();
40 new \IAWP\Migrations\Migration_19();
41 new \IAWP\Migrations\Migration_20();
42 new \IAWP\Migrations\Migration_21();
43 $completed = self::run_step_migrations([new \IAWP\Migrations\Migration_22(), new \IAWP\Migrations\Migration_23(), new \IAWP\Migrations\Migration_24(), new \IAWP\Migrations\Migration_25(), new \IAWP\Migrations\Migration_26(), new \IAWP\Migrations\Migration_27()]);
44 if ($completed === \true) {
45 \update_option('iawp_is_migrating', '0');
46 \delete_option('iawp_last_finished_migration_step');
47 \delete_option('iawp_migration_error');
48 \delete_option('iawp_migration_error_query');
49 }
50 }
51 }
52 /**
53 * is_migrating is serving multiple purposes. It's also being used to stop ajax requests and dashboard
54 * widgets from running when the database version is newer than one that comes with the installed version
55 * of independent analytics. The probably should be a method called something `database_ready` that serves
56 * this purpose more explicitly.
57 *
58 * @return bool
59 */
60 public static function is_migrating() : bool
61 {
62 $db_version = \get_option('iawp_db_version', '0');
63 $is_migrating = \get_option('iawp_is_migrating') === '1';
64 $is_current = \version_compare($db_version, '27', '=');
65 $is_outdated = !$is_current;
66 return $is_outdated || $is_migrating;
67 }
68 public static function is_database_ahead_of_plugin() : bool
69 {
70 $db_version = \get_option('iawp_db_version', '0');
71 return \version_compare($db_version, '27', '>');
72 }
73 public static function is_actually_migrating() : bool
74 {
75 return \get_option('iawp_is_migrating') === '1';
76 }
77 /**
78 * @return bool
79 */
80 public static function should_migrate() : bool
81 {
82 $db_version = \get_option('iawp_db_version', '0');
83 $is_migrating = \get_option('iawp_is_migrating') === '1';
84 $is_current = \version_compare($db_version, '27', '=');
85 $is_outdated = !$is_current;
86 return $is_outdated && !$is_migrating;
87 }
88 public static function handle_migration_18_error() : void
89 {
90 $directory = \trailingslashit(\wp_upload_dir()['basedir']) . 'iawp/';
91 $db_version = \get_option('iawp_db_version', '0');
92 $is_migrating = \get_option('iawp_is_migrating', '0') === '1';
93 if ($db_version === '17' && $is_migrating && \is_dir($directory)) {
94 \update_option('iawp_db_version', '18');
95 \update_option('iawp_is_migrating', '0');
96 \delete_option('iawp_last_finished_migration_step');
97 \delete_option('iawp_migration_error');
98 \delete_option('iawp_migration_error_query');
99 try {
100 $directory = \trailingslashit(\wp_upload_dir()['basedir']) . 'iawp/';
101 Dir::delete($directory);
102 } catch (\Throwable $e) {
103 }
104 }
105 }
106 public static function handle_migration_22_error() : void
107 {
108 $db_version = \get_option('iawp_db_version', '0');
109 $is_migrating = \get_option('iawp_is_migrating', '0') === '1';
110 $last_finished_step = \get_option('iawp_last_finished_migration_step', '0');
111 $has_error = \get_option('iawp_migration_error_query', null) !== null && \get_option('iawp_migration_error', null) !== null;
112 $referrers_table = Query::get_table_name(Query::REFERRERS);
113 $has_index = \IAWP\Migrations\Step_Migration::has_index($referrers_table, 'referrers_domain_index');
114 if ($db_version === '21' && $is_migrating && $last_finished_step === '0' && $has_error && !$has_index) {
115 \update_option('iawp_is_migrating', '0');
116 \delete_option('iawp_last_finished_migration_step');
117 \delete_option('iawp_migration_error');
118 \delete_option('iawp_migration_error_query');
119 }
120 }
121 /**
122 * @param Step_Migration[] $migrations
123 *
124 * @return bool
125 */
126 private static function run_step_migrations(array $migrations) : bool
127 {
128 foreach ($migrations as $migration) {
129 $completed = $migration->migrate();
130 if (!$completed) {
131 return \false;
132 }
133 }
134 return \true;
135 }
136 }
137