PluginProbe
Independent Analytics – WordPress Analytics Plugin / 2.13.5
Independent Analytics – WordPress Analytics Plugin v2.13.5
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 All 120 releases
independent-analytics / IAWP / Migrations / Migration_29.php
Migration_29.php
67 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace IAWP\Migrations;
4
5 use IAWP\Database;
6 use IAWP\Query;
7 /** @internal */
8 class Migration_29 extends \IAWP\Migrations\Step_Migration
9 {
10 /**
11 * @return int
12 */
13 protected function database_version() : int
14 {
15 return 29;
16 }
17 /**
18 * @return array
19 */
20 protected function queries() : array
21 {
22 return [$this->rename_visitor_id_column(), $this->create_new_visitor_id_column(), $this->drop_table_if_exists(Query::get_table_name(Query::VISITORS)), $this->create_visitors_table(), $this->populate_visitors_table(), $this->populate_token_id_column(), $this->add_index(), $this->remove_very_old_visitors_archive_table()];
23 }
24 private function rename_visitor_id_column() : string
25 {
26 $sessions_table = Query::get_table_name(Query::SESSIONS);
27 return "\n ALTER TABLE {$sessions_table} CHANGE COLUMN visitor_id old_visitor_id varchar(32);\n ";
28 }
29 private function create_new_visitor_id_column() : string
30 {
31 $sessions_table = Query::get_table_name(Query::SESSIONS);
32 return "\n ALTER TABLE {$sessions_table} ADD COLUMN visitor_id BIGINT(20) UNSIGNED AFTER old_visitor_id\n ";
33 }
34 private function create_visitors_table() : string
35 {
36 $visitors_table = Query::get_table_name(Query::VISITORS);
37 $character_set = Database::character_set();
38 $collation = Database::collation();
39 return "\n CREATE TABLE IF NOT EXISTS {$visitors_table} (\n visitor_id BIGINT(20) UNSIGNED AUTO_INCREMENT,\n hash VARCHAR(32) NOT NULL,\n PRIMARY KEY (visitor_id),\n UNIQUE INDEX (hash)\n ) DEFAULT CHARACTER SET {$character_set} COLLATE {$collation};\n ";
40 }
41 private function populate_visitors_table() : string
42 {
43 $sessions_table = Query::get_table_name(Query::SESSIONS);
44 $visitors_table = Query::get_table_name(Query::VISITORS);
45 return "\n INSERT INTO {$visitors_table} (hash)\n SELECT DISTINCT old_visitor_id\n FROM {$sessions_table}\n WHERE old_visitor_id IS NOT NULL\n ";
46 }
47 private function populate_token_id_column() : string
48 {
49 $sessions_table = Query::get_table_name(Query::SESSIONS);
50 $visitors_table = Query::get_table_name(Query::VISITORS);
51 return "\n UPDATE {$sessions_table} AS sessions\n JOIN {$visitors_table} AS visitors on sessions.old_visitor_id = visitors.hash\n SET sessions.visitor_id = visitors.visitor_id\n ";
52 }
53 private function add_index() : string
54 {
55 $sessions_table = Query::get_table_name(Query::SESSIONS);
56 return "\n CREATE INDEX new_bigint_visitor_id ON {$sessions_table} (visitor_id)\n ";
57 }
58 private function remove_very_old_visitors_archive_table() : ?string
59 {
60 $visitors_archive_table = Query::get_table_name(Query::VISITORS_1_16_ARCHIVE);
61 if (\strlen($visitors_archive_table) > 64) {
62 return null;
63 }
64 return "\n DROP TABLE IF EXISTS {$visitors_archive_table};\n ";
65 }
66 }
67