PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.17
Independent Analytics – WordPress Analytics Plugin v1.17
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_7.php
independent-analytics / IAWP / Migrations Last commit date
Migration.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_Job.php 3 years ago
Migration_7.php
116 lines
1 <?php
2
3 namespace IAWP\Migrations;
4
5 use IAWP\Query;
6
7 class Migration_7 extends Migration
8 {
9 /**
10 * @var string
11 */
12 protected $database_version = '7';
13
14 /**
15 * @return void
16 */
17 protected function handle(): void
18 {
19 global $wpdb;
20
21 update_option('iawp_need_clear_cache', true);
22
23 $charset_collate = $wpdb->get_charset_collate();
24
25 $sessions_table = Query::get_table_name(Query::SESSIONS);
26 $views_table = Query::get_table_name(Query::VIEWS);
27 $visitors_table = Query::get_table_name(Query::VISITORS);
28
29 $wpdb->query("DROP TABLE IF EXISTS $sessions_table;");
30 $wpdb->query("CREATE TABLE $sessions_table (
31 session_id bigint(20) UNSIGNED AUTO_INCREMENT,
32 visitor_id varchar(256),
33 initial_view_id bigint(20) UNSIGNED,
34 referrer_id bigint(20) UNSIGNED,
35 campaign_id bigint(20) UNSIGNED,
36 created_at datetime NOT NULL,
37 legacy_view boolean DEFAULT false NOT NULL,
38 PRIMARY KEY (session_id)
39 ) $charset_collate;");
40
41 $wpdb->query("
42 ALTER TABLE $views_table
43 ADD (
44 session_id bigint(20) UNSIGNED
45 ),
46 ADD INDEX (visitor_id);
47 ");
48
49 $wpdb->query("
50 INSERT INTO $sessions_table (visitor_id, initial_view_id, referrer_id, campaign_id, created_at, legacy_view)
51 SELECT IF(visitors.visitor_token = '', NULL, visitors.visitor_token) AS visitor_id,
52 views.id AS initial_view_id,
53 views.referrer_id,
54 views.campaign_id,
55 views.viewed_at AS created_at,
56 1 AS legacy_view
57 FROM $views_table AS views
58 LEFT JOIN $visitors_table AS visitors ON views.visitor_id = visitors.id;
59 ");
60
61 // Add the indices after bulk insert
62 $wpdb->query("
63 ALTER TABLE $sessions_table
64 ADD INDEX(visitor_id),
65 ADD INDEX(initial_view_id),
66 ADD INDEX(referrer_id),
67 ADD INDEX(campaign_id);
68 ");
69
70 $wpdb->query("
71 UPDATE
72 $views_table AS views
73 INNER JOIN $sessions_table AS sessions ON views.id = sessions.initial_view_id
74 SET
75 views.session_id = sessions.session_id;
76 ");
77
78 $wpdb->query("
79 ALTER TABLE $views_table DROP COLUMN referrer_id, DROP INDEX visitor_id, DROP COLUMN visitor_id, DROP COLUMN campaign_id, ADD INDEX (session_id);
80 ");
81
82 $visitors_tmp_table = Query::get_table_name(Query::VISITORS_TMP);
83 $visitors_archive_table = Query::get_table_name(Query::VISITORS_1_16_ARCHIVE);
84
85 $wpdb->query("DROP TABLE IF EXISTS $visitors_tmp_table;");
86 $wpdb->query("CREATE TABLE $visitors_tmp_table (
87 visitor_id varchar(256),
88 country_code varchar(256),
89 city varchar(256),
90 subdivision varchar(256),
91 country varchar(256),
92 continent varchar(256),
93 PRIMARY KEY (visitor_id)
94 ) $charset_collate;");
95
96 $wpdb->query("INSERT INTO $visitors_tmp_table (visitor_id, country_code, city, subdivision, country, continent)
97 SELECT
98 visitor_token,
99 country_code,
100 city,
101 subdivision,
102 country,
103 continent
104 FROM
105 $visitors_table AS visitors ON DUPLICATE KEY UPDATE country_code = visitors.country_code,
106 city = visitors.city,
107 subdivision = visitors.subdivision,
108 country = visitors.country,
109 continent = visitors.continent;
110 ");
111
112 $wpdb->query("RENAME TABLE $visitors_table TO $visitors_archive_table;");
113 $wpdb->query("RENAME TABLE $visitors_tmp_table TO $visitors_table;");
114 }
115 }
116