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_48.php
Migration_48.php
55 lines 2.7 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 /** @internal */
7 class Migration_48 extends \IAWP\Migrations\Step_Migration
8 {
9 /**
10 * @return int
11 */
12 protected function database_version() : int
13 {
14 return 48;
15 }
16 /**
17 * @return array
18 */
19 protected function queries() : array
20 {
21 return [$this->drop_table_if_exists($this->tables::utm_mediums()), $this->create_utm_mediums_table(), $this->populate_utm_mediums_table(), $this->add_utm_medium_id(), $this->populate_utm_medium_id_column(), $this->modify_utm_medium_id_column(), $this->drop_original_landing_page_title_column(), $this->index_new_column()];
22 }
23 private function create_utm_mediums_table() : string
24 {
25 return "\n CREATE TABLE {$this->tables::utm_mediums()} (\n id BIGINT(20) UNSIGNED AUTO_INCREMENT,\n utm_medium VARCHAR(512) NOT NULL,\n PRIMARY KEY (id)\n ) DEFAULT CHARACTER SET {$this->character_set()} COLLATE {$this->collation()};\n ";
26 }
27 private function populate_utm_mediums_table() : string
28 {
29 return "\n INSERT INTO {$this->tables::utm_mediums()} (utm_medium)\n SELECT DISTINCT LEFT(utm_medium, 512)\n FROM {$this->tables::campaigns()} WHERE utm_medium IS NOT NULL\n ";
30 }
31 private function add_utm_medium_id() : string
32 {
33 return "\n ALTER TABLE {$this->tables::campaigns()} ADD COLUMN utm_medium_id BIGINT(20) UNSIGNED;\n ";
34 }
35 private function populate_utm_medium_id_column() : string
36 {
37 $old_collation = Database::column_collation_for($this->tables::campaigns(), 'utm_medium');
38 $current_collation = $this->collation();
39 $collation_statement = $this->get_collation_statement($current_collation, $old_collation);
40 return "\n UPDATE\n {$this->tables::campaigns()} AS campaigns\n JOIN {$this->tables::utm_mediums()} AS mediums ON campaigns.utm_medium = mediums.utm_medium {$collation_statement}\n SET\n campaigns.utm_medium_id = mediums.id\n ";
41 }
42 private function modify_utm_medium_id_column() : string
43 {
44 return "\n ALTER TABLE {$this->tables::campaigns()} MODIFY COLUMN utm_medium_id BIGINT(20) UNSIGNED NOT NULL;\n ";
45 }
46 private function drop_original_landing_page_title_column() : string
47 {
48 return "\n ALTER TABLE {$this->tables::campaigns()} DROP COLUMN utm_medium;\n ";
49 }
50 private function index_new_column() : string
51 {
52 return "\n ALTER TABLE {$this->tables::campaigns()} ADD INDEX (utm_medium_id);\n ";
53 }
54 }
55