PluginProbe
Redirection / 5.6.0
Redirection v5.6.0
5.10.0 5.9.0 5.8.1 5.8.0 3.7.2 3.7.3 4.0 4.0.1 4.1 4.1.1 4.2 4.2.1 4.2.2 4.2.3 4.3 4.3.1 4.3.2 4.3.3 4.4 4.4.1 4.4.2 4.5 4.5.1 4.6.2 4.7.1 All 130 releases
redirection / database / schema / 420.php

420.php in Redirection 5.6.0, at database/schema/420.php

135 lines 4.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class Red_Database_420 extends Red_Database_Upgrader {
4 /**
5 * @return array<string, string>
6 */
7 public function get_stages() {
8 return [
9 'add_extra_logging' => 'Add extra logging support',
10 'remove_module_id' => 'Remove module ID from logs',
11 'remove_group_id' => 'Remove group ID from logs',
12 'add_extra_404' => 'Add extra 404 logging support',
13 ];
14 }
15
16 /**
17 * @param \wpdb $wpdb
18 * @return bool
19 */
20 protected function remove_module_id( $wpdb ) {
21 if ( ! $this->has_module_id( $wpdb ) ) {
22 return true;
23 }
24
25 return $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_logs` DROP `module_id`" );
26 }
27
28 /**
29 * @param \wpdb $wpdb
30 * @return bool
31 */
32 protected function remove_group_id( $wpdb ) {
33 if ( ! $this->has_group_id( $wpdb ) ) {
34 return true;
35 }
36
37 return $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_logs` DROP `group_id`" );
38 }
39
40 /**
41 * @param \wpdb $wpdb
42 * @return bool
43 */
44 private function has_module_id( $wpdb ) {
45 $existing = $wpdb->get_row( "SHOW CREATE TABLE `{$wpdb->prefix}redirection_logs`", ARRAY_N );
46
47 if ( isset( $existing[1] ) && strpos( strtolower( $existing[1] ), 'module_id' ) !== false ) {
48 return true;
49 }
50
51 return false;
52 }
53
54 /**
55 * @param \wpdb $wpdb
56 * @return bool
57 */
58 private function has_group_id( $wpdb ) {
59 $existing = $wpdb->get_row( "SHOW CREATE TABLE `{$wpdb->prefix}redirection_logs`", ARRAY_N );
60
61 if ( isset( $existing[1] ) && strpos( strtolower( $existing[1] ), 'group_id' ) !== false ) {
62 return true;
63 }
64
65 return false;
66 }
67
68 /**
69 * @param \wpdb $wpdb
70 * @return bool
71 */
72 private function has_log_domain( $wpdb ) {
73 $existing = $wpdb->get_row( "SHOW CREATE TABLE `{$wpdb->prefix}redirection_logs`", ARRAY_N );
74
75 if ( isset( $existing[1] ) && strpos( strtolower( $existing[1] ), 'domain` varchar' ) !== false ) {
76 return true;
77 }
78
79 return false;
80 }
81
82 /**
83 * @param \wpdb $wpdb
84 * @return bool
85 */
86 private function has_404_domain( $wpdb ) {
87 $existing = $wpdb->get_row( "SHOW CREATE TABLE `{$wpdb->prefix}redirection_404`", ARRAY_N );
88
89 if ( isset( $existing[1] ) && strpos( strtolower( $existing[1] ), 'domain` varchar' ) !== false ) {
90 return true;
91 }
92
93 return false;
94 }
95
96 /**
97 * @param \wpdb $wpdb
98 * @return bool
99 */
100 protected function add_extra_logging( $wpdb ) {
101 if ( $this->has_log_domain( $wpdb ) ) {
102 return true;
103 }
104
105 // Update any URL with a double slash at the end
106 $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_logs` ADD `domain` VARCHAR(255) NULL DEFAULT NULL AFTER `url`" );
107 $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_logs` ADD `http_code` INT(11) unsigned NOT NULL DEFAULT 0 AFTER `referrer`" );
108 $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_logs` ADD `request_method` VARCHAR(10) NULL DEFAULT NULL AFTER `http_code`" );
109 $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_logs` ADD `redirect_by` VARCHAR(50) NULL DEFAULT NULL AFTER `request_method`" );
110 $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_logs` ADD `request_data` MEDIUMTEXT NULL DEFAULT NULL AFTER `request_method`" );
111
112 return $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_logs` CHANGE COLUMN `agent` `agent` MEDIUMTEXT NULL" );
113 }
114
115 /**
116 * @param \wpdb $wpdb
117 * @return bool
118 */
119 protected function add_extra_404( $wpdb ) {
120 if ( $this->has_404_domain( $wpdb ) ) {
121 return true;
122 }
123
124 // Update any URL with a double slash at the end
125 $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_404` ADD `domain` VARCHAR(255) NULL DEFAULT NULL AFTER `url`" );
126 $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_404` ADD `http_code` INT(11) unsigned NOT NULL DEFAULT 0 AFTER `referrer`" );
127 $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_404` ADD `request_method` VARCHAR(10) NULL DEFAULT NULL AFTER `http_code`" );
128 $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_404` ADD `request_data` MEDIUMTEXT NULL DEFAULT NULL AFTER `request_method`" );
129
130 // Same as log table
131 $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_404` DROP INDEX `url`" );
132 return $this->do_query( $wpdb, "ALTER TABLE `{$wpdb->prefix}redirection_404` CHANGE COLUMN `url` `url` MEDIUMTEXT NOT NULL" );
133 }
134 }
135