PluginProbe
Independent Analytics – WordPress Analytics Plugin / 2.11.5
Independent Analytics – WordPress Analytics Plugin v2.11.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_38.php
Migration_38.php
62 lines 5.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 /** @internal */
6 class Migration_38 extends \IAWP\Migrations\Step_Migration
7 {
8 use \IAWP\Migrations\Creates_Reports;
9 /**
10 * @return int
11 */
12 protected function database_version() : int
13 {
14 return 38;
15 }
16 /**
17 * @return array
18 */
19 protected function queries() : array
20 {
21 return [$this->drop_table_if_exists($this->tables::clicks()), $this->create_clicks_table(), $this->drop_table_if_exists($this->tables::click_targets()), $this->create_click_targets_table(), $this->drop_table_if_exists($this->tables::clicked_links()), $this->create_clicked_links_table(), $this->drop_table_if_exists($this->tables::link_rules()), $this->create_link_rules_table(), $this->add_initial_rules(), $this->create_pdf_report(), $this->create_zip_report(), $this->create_email_report(), $this->create_phone_number_report()];
22 }
23 private function create_clicks_table() : string
24 {
25 return "\n CREATE TABLE {$this->tables::clicks()} (\n click_id BIGINT(20) UNSIGNED AUTO_INCREMENT,\n view_id BIGINT(20) UNSIGNED,\n click_target_id BIGINT(20) UNSIGNED,\n created_at DATETIME NOT NULL,\n PRIMARY KEY (click_id),\n INDEX (view_id),\n INDEX (click_target_id)\n ) DEFAULT CHARACTER SET {$this->character_set()} COLLATE {$this->collation()};\n \n ";
26 }
27 private function create_click_targets_table() : string
28 {
29 return "\n CREATE TABLE {$this->tables::click_targets()} (\n click_target_id BIGINT(20) UNSIGNED AUTO_INCREMENT,\n target VARCHAR(2083),\n protocol ENUM('mailto', 'tel'),\n PRIMARY KEY (click_target_id)\n ) DEFAULT CHARACTER SET {$this->character_set()} COLLATE {$this->collation()};\n ";
30 }
31 private function create_clicked_links_table() : string
32 {
33 return "\n CREATE TABLE {$this->tables::clicked_links()} (\n click_id BIGINT(20) UNSIGNED AUTO_INCREMENT,\n link_rule_id BIGINT(20) UNSIGNED,\n PRIMARY KEY (click_id, link_rule_id)\n ) DEFAULT CHARACTER SET {$this->character_set()} COLLATE {$this->collation()};\n \n ";
34 }
35 private function create_link_rules_table() : string
36 {
37 return "\n CREATE TABLE {$this->tables::link_rules()} (\n link_rule_id BIGINT(20) UNSIGNED AUTO_INCREMENT,\n name VARCHAR(255) NOT NULL,\n type VARCHAR(255) NOT NULL,\n value VARCHAR(255) NOT NULL,\n is_active BOOLEAN NOT NULL DEFAULT TRUE,\n position INT UNSIGNED DEFAULT 0,\n created_at DATETIME NOT NULL,\n PRIMARY KEY (link_rule_id)\n ) DEFAULT CHARACTER SET {$this->character_set()} COLLATE {$this->collation()};\n ";
38 }
39 private function add_initial_rules() : string
40 {
41 global $wpdb;
42 $created_at = (new \DateTime())->format('Y-m-d H:i:s');
43 return $wpdb->prepare("\n INSERT INTO {$this->tables::link_rules()}\n (link_rule_id, name, type, value, position, created_at)\n VALUES\n (1, 'PDF', 'extension', 'pdf', 0, %s),\n (2, 'Zip', 'extension', 'zip', 1, %s),\n (3, 'Email', 'protocol', 'mailto', 2, %s),\n (4, 'Phone number', 'protocol', 'tel', 3, %s);\n ", $created_at, $created_at, $created_at, $created_at);
44 }
45 private function create_pdf_report() : string
46 {
47 return $this->build_report_insert_query(['name' => \esc_html__('PDFs', 'independent-analytics'), 'type' => 'clicks', 'user_created_report' => 0, 'sort_column' => 'link_clicks', 'sort_direction' => 'desc', 'filters' => [['inclusion' => 'include', 'column' => 'link_name', 'operator' => 'is', 'operand' => '1']]]);
48 }
49 private function create_zip_report() : string
50 {
51 return $this->build_report_insert_query(['name' => \esc_html__('Zips', 'independent-analytics'), 'type' => 'clicks', 'user_created_report' => 0, 'sort_column' => 'link_clicks', 'sort_direction' => 'desc', 'filters' => [['inclusion' => 'include', 'column' => 'link_name', 'operator' => 'is', 'operand' => '2']]]);
52 }
53 private function create_email_report() : string
54 {
55 return $this->build_report_insert_query(['name' => \esc_html__('Emails', 'independent-analytics'), 'type' => 'clicks', 'user_created_report' => 0, 'sort_column' => 'link_clicks', 'sort_direction' => 'desc', 'filters' => [['inclusion' => 'include', 'column' => 'link_name', 'operator' => 'is', 'operand' => '3']]]);
56 }
57 private function create_phone_number_report() : string
58 {
59 return $this->build_report_insert_query(['name' => \esc_html__('Phone numbers', 'independent-analytics'), 'type' => 'clicks', 'user_created_report' => 0, 'sort_column' => 'link_clicks', 'sort_direction' => 'desc', 'filters' => [['inclusion' => 'include', 'column' => 'link_name', 'operator' => 'is', 'operand' => '4']]]);
60 }
61 }
62