Go Live Update URLS - Version 4.0.0

Version Description

  • Restructure admin page to separate WP Core from custom tables
  • Remove custom styles in admin
  • Improved js structure
  • Improved actions and filters
  • Improved verbiage with admin
Download this release

Release Info

Developer Mat Lipe
Plugin Icon 128x128 Go Live Update URLS
Version 4.0.0
Comparing to
See all releases

Code changes from version 3.1.2 to 4.0.0

go-live-update-urls.php CHANGED
@@ -5,15 +5,15 @@ Plugin URI: https://matlipe.com/go-live-update-urls/
5
Description: Updates all the URLs in the database to point to the new URL when making your site live or changing domains.
6
Author: Mat Lipe
7
Author URI: https://matlipe.com/
8
- Version: 3.1.2
9
Text Domain: go-live-update-urls
10
*/
11
- define( 'GLUU_VERSION', "3.1.2" );
12
13
define( 'GLUU_VIEWS_DIR', plugin_dir_path(__FILE__) . 'views/' );
14
define( 'GLUU_URL_VIEWS_DIR', plugins_url('go-live-update-urls').'/views/' );
15
16
- require( 'lib/GoLiveUpdateUrls.php' );
17
18
add_action('plugins_loaded', 'gluu_load' );
19
function gluu_load(){
@@ -21,6 +21,7 @@ function gluu_load(){
21
22
GoLiveUpdateUrls::init();
23
24
- global $GoLiveUpdateUrls; //backward compatibility
25
$GoLiveUpdateUrls = GoLiveUpdateUrls::get_instance();
26
}
5
Description: Updates all the URLs in the database to point to the new URL when making your site live or changing domains.
6
Author: Mat Lipe
7
Author URI: https://matlipe.com/
8
+ Version: 4.0.0
9
Text Domain: go-live-update-urls
10
*/
11
+ define( 'GLUU_VERSION', "4.0.0" );
12
13
define( 'GLUU_VIEWS_DIR', plugin_dir_path(__FILE__) . 'views/' );
14
define( 'GLUU_URL_VIEWS_DIR', plugins_url('go-live-update-urls').'/views/' );
15
16
+ require( 'src/GoLiveUpdateUrls.php' );
17
18
add_action('plugins_loaded', 'gluu_load' );
19
function gluu_load(){
21
22
GoLiveUpdateUrls::init();
23
24
+ //backward compatibility
25
+ global $GoLiveUpdateUrls;
26
$GoLiveUpdateUrls = GoLiveUpdateUrls::get_instance();
27
}
languages/go-live-update-urls.pot CHANGED
@@ -3,14 +3,14 @@ msgid ""
3
msgstr ""
4
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
"Project-Id-Version: Go Live Update URLS\n"
6
- "POT-Creation-Date: 2015-10-21 14:55-0400\n"
7
- "PO-Revision-Date: 2015-10-21 14:55-0400\n"
8
"Last-Translator: \n"
9
"Language-Team: \n"
10
"MIME-Version: 1.0\n"
11
"Content-Type: text/plain; charset=UTF-8\n"
12
"Content-Transfer-Encoding: 8bit\n"
13
- "X-Generator: Poedit 1.8.6\n"
14
"X-Poedit-Basepath: ..\n"
15
"X-Poedit-WPHeader: go-live-update-urls.php\n"
16
"X-Poedit-SourceCharset: UTF-8\n"
@@ -20,47 +20,82 @@ msgstr ""
20
"X-Poedit-SearchPath-0: .\n"
21
"X-Poedit-SearchPathExcluded-0: *.js\n"
22
23
- #: lib/GoLiveUpdateUrls.php:83
24
msgid "Ouch! That hurt! You should not be here!"
25
msgstr ""
26
27
- #: lib/GoLiveUpdateUrls.php:106
28
- msgid "URLs have been updated."
29
msgstr ""
30
31
- #: lib/GoLiveUpdateUrls.php:117
32
msgid "You must fill out both boxes to make the update!."
33
msgstr ""
34
35
- #: lib/GoLiveUpdateUrls.php:138
36
- msgid "Want a smarter, easier to use plugin with better support?"
37
msgstr ""
38
39
- #: lib/GoLiveUpdateUrls.php:141
40
- msgid "Go Pro!"
41
msgstr ""
42
43
- #: views/admin-tools-page.php:15
44
msgid ""
45
- "This will replace all occurrences \"in the entire database\" of the old URL "
46
- "with the New URL."
47
msgstr ""
48
49
- #: views/admin-tools-page.php:20
50
- #, php-format
51
msgid ""
52
- "Please un-check any tables which may contain serialized data. The only "
53
- "tables which are currently serialized data safe when using this plugin are %s"
54
msgstr ""
55
56
- #: views/admin-tools-page.php:29
57
msgid ""
58
- "Like any other database updating tool, you should always perform a backup "
59
- "before running."
60
msgstr ""
61
62
- #: views/admin-tools-page.php:36
63
- msgid "Un-check any tables that you would not like to update."
64
msgstr ""
65
66
#. Plugin Name of the plugin/theme
@@ -73,8 +108,8 @@ msgstr ""
73
74
#. Description of the plugin/theme
75
msgid ""
76
- "This Plugin Updates all the URLs in the database to point to the new URL "
77
- "when making your site live or changing domains."
78
msgstr ""
79
80
#. Author of the plugin/theme
3
msgstr ""
4
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
"Project-Id-Version: Go Live Update URLS\n"
6
+ "POT-Creation-Date: 2016-05-15 10:48-0400\n"
7
+ "PO-Revision-Date: 2016-05-15 10:47-0400\n"
8
"Last-Translator: \n"
9
"Language-Team: \n"
10
"MIME-Version: 1.0\n"
11
"Content-Type: text/plain; charset=UTF-8\n"
12
"Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Poedit 1.8.7\n"
14
"X-Poedit-Basepath: ..\n"
15
"X-Poedit-WPHeader: go-live-update-urls.php\n"
16
"X-Poedit-SourceCharset: UTF-8\n"
20
"X-Poedit-SearchPath-0: .\n"
21
"X-Poedit-SearchPathExcluded-0: *.js\n"
22
23
+ #: src/GoLiveUpdateUrls.php:51
24
msgid "Ouch! That hurt! You should not be here!"
25
msgstr ""
26
27
+ #: src/GoLiveUpdateUrls.php:74
28
+ msgid "The URLS in the checked tables have been updated."
29
msgstr ""
30
31
+ #: src/GoLiveUpdateUrls.php:85
32
msgid "You must fill out both boxes to make the update!."
33
msgstr ""
34
35
+ #: src/GoLiveUpdateUrls.php:203
36
+ msgid "Serialized Safe"
37
msgstr ""
38
39
+ #: views/admin-tools-page.php:17
40
+ #, php-format
41
+ msgctxt "{<strong>}"
42
+ msgid ""
43
+ "This will replace all occurrences %sin the entire database%s of the Old URL "
44
+ "with the New URL."
45
msgstr ""
46
47
+ #: views/admin-tools-page.php:22
48
msgid ""
49
+ "Like any other database updating tool, you should always perform a backup "
50
+ "before running."
51
msgstr ""
52
53
+ #: views/admin-tools-page.php:34
54
+ msgid "WordPress Core Tables"
55
+ msgstr ""
56
+
57
+ #: views/admin-tools-page.php:37
58
msgid ""
59
+ "These tables are safe to update with the basic version of this plugin (the "
60
+ "version you are currently using)."
61
+ msgstr ""
62
+
63
+ #: views/admin-tools-page.php:44 views/admin-tools-page.php:45
64
+ #: views/admin-tools-page.php:69
65
+ msgid "un-check all"
66
+ msgstr ""
67
+
68
+ #: views/admin-tools-page.php:46 views/admin-tools-page.php:68
69
+ #: views/admin-tools-page.php:70
70
+ msgid "check all"
71
+ msgstr ""
72
+
73
+ #: views/admin-tools-page.php:58
74
+ msgid "Tables Created By Plugins"
75
msgstr ""
76
77
+ #: views/admin-tools-page.php:61
78
+ #, php-format
79
+ msgctxt "{<br />}{<a>}{</a>}"
80
msgid ""
81
+ "These tables are probably NOT SAFE to update with the basic version of this "
82
+ "plugin. %sTo support tables created by plugins use the %sPro Version%s."
83
+ msgstr ""
84
+
85
+ #: views/admin-tools-page.php:82 views/admin-tools-page.php:85
86
+ msgid "Old URL"
87
+ msgstr ""
88
+
89
+ #: views/admin-tools-page.php:90 views/admin-tools-page.php:93
90
+ msgid "New URL"
91
+ msgstr ""
92
+
93
+ #: views/admin-tools-page.php:100
94
+ msgid "Only the checked tables will be updated."
95
msgstr ""
96
97
+ #: views/admin-tools-page.php:104
98
+ msgid "Make It Happen"
99
msgstr ""
100
101
#. Plugin Name of the plugin/theme
108
109
#. Description of the plugin/theme
110
msgid ""
111
+ "Updates all the URLs in the database to point to the new URL when making "
112
+ "your site live or changing domains."
113
msgstr ""
114
115
#. Author of the plugin/theme
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: Mat Lipe
3
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=paypal%40lipeimagination%2einfo&lc=US&item_name=Go%20Live%20Update%20Urls&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHostedGuest
4
Tags: Go Live, Urls, Domain Changes
5
Requires at least: 3.1
6
- Tested up to: 4.5.0
7
- Stable tag: 3.1.2
8
9
== Description ==
10
@@ -73,6 +73,13 @@ Most tables will be just fine to update. You may make a backup of your database,
73
1. Screenshot of a typical settings page. The verbiage will change slightly depending on your database structure
74
75
== Changelog ==
76
= 3.1 =
77
* Add support for serialized term meta
78
3
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=paypal%40lipeimagination%2einfo&lc=US&item_name=Go%20Live%20Update%20Urls&no_note=0&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHostedGuest
4
Tags: Go Live, Urls, Domain Changes
5
Requires at least: 3.1
6
+ Tested up to: 4.5.2
7
+ Stable tag: 4.0.0
8
9
== Description ==
10
73
1. Screenshot of a typical settings page. The verbiage will change slightly depending on your database structure
74
75
== Changelog ==
76
+ = 4.0.0 =
77
+ * Restructure admin page to separate WP Core from custom tables
78
+ * Remove custom styles in admin
79
+ * Improved js structure
80
+ * Improved actions and filters
81
+ * Improved verbiage with admin
82
+
83
= 3.1 =
84
* Add support for serialized term meta
85
resources/js/admin-page.js ADDED
@@ -0,0 +1,26 @@
1
+ (function( $ ){
2
+ var go_live_update_urls = {
3
+ init : function(){
4
+ $( '.gluu-tables-button' ).click( this._un_check_tables );
5
+ },
6
+
7
+ _un_check_tables : function(){
8
+ var el = $( this );
9
+ if( el.hasClass( 'checked' ) ){
10
+ el.removeClass( 'checked' );
11
+ el.val( el.data( 'un-checked' ) );
12
+ $( '[data-list="' + el.data( 'list' ) +'"] .gluu-wp-core-table' ).attr( 'checked', false );
13
+ } else {
14
+ el.addClass( 'checked' );
15
+ el.val( el.data( 'checked' ) );
16
+ $( '[data-list="' + el.data( 'list' ) +'"] .gluu-wp-core-table' ).attr( 'checked', true );
17
+ }
18
+ }
19
+ };
20
+
21
+ $( function(){
22
+ go_live_update_urls.init();
23
+ } );
24
+
25
+
26
+ })( jQuery );
{lib → src}/GoLiveUpdateUrls.php RENAMED
@@ -5,16 +5,16 @@
5
* @author Mat Lipe
6
* @since 2.2
7
*
8
- * @TODO split into multiple classes and cleanup
9
- * Once get some funding
10
*/
11
class GoLiveUpdateUrls {
12
13
- var $oldurl = false;
14
15
- var $newurl = false;
16
17
- var $double_subdomain = false; //keep track if going to a subdomain
18
19
/*
20
* serialized_tables
@@ -42,23 +42,19 @@ class GoLiveUpdateUrls {
42
add_action( 'init', array( $this, 'maybe_run_updates' ) );
43
}
44
45
- add_action( 'admin_notices', array( $this, 'pro_notice' ) );
46
add_action( 'admin_menu', array( $this, 'gluu_add_url_options' ) );
47
- add_action( 'admin_head', array( $this, 'css' ) );
48
}
49
50
51
public function maybe_run_updates(){
52
- check_admin_referer( plugin_basename( __FILE__ ), 'gluu-manage-options' );
53
-
54
- if( !wp_verify_nonce( $_POST[ 'gluu-manage-options' ], plugin_basename( __FILE__ ) ) ){
55
wp_die( __('Ouch! That hurt! You should not be here!', 'go-live-update-urls' ) );
56
}
57
58
$this->oldurl = trim( strip_tags( $_POST[ 'oldurl' ] ) );
59
$this->newurl = trim( strip_tags( $_POST[ 'newurl' ] ) );
60
61
- $this->tables = $_POST;
62
63
do_action( 'gluu-before-make-update', $this );
64
@@ -75,7 +71,7 @@ class GoLiveUpdateUrls {
75
?>
76
<div id="message" class="updated fade">
77
<p>
78
- <strong><?php _e( 'URLs have been updated.', 'go-live-update-urls' ); ?></strong>
79
</p>
80
</div>
81
<?php
@@ -94,29 +90,6 @@ class GoLiveUpdateUrls {
94
}
95
96
97
- public function pro_notice(){
98
- if( class_exists( 'Gluu_Pro' ) ){
99
- return;
100
- }
101
-
102
- $screen = get_current_screen();
103
- if( "tools_page_GoLiveUpdateUrls" != $screen->id ){
104
- return;
105
- }
106
- ?>
107
- <div id="message" class="notice updated">
108
- <p>
109
- <?php _e( 'Want a smarter, easier to use plugin with better support?', 'go-live-update-urls' ); ?>
110
- <br>
111
- <a target="blank" href="http://matlipe.com/product/go-live-update-urls-pro/">
112
- <?php _e( 'Go Pro!', 'go-live-update-urls' ); ?>
113
- </a>
114
- </p>
115
- </div>
116
- <?php
117
- }
118
-
119
-
120
/**
121
* Retrieve filtered list of serialized safe database tables
122
*
@@ -159,21 +132,7 @@ class GoLiveUpdateUrls {
159
return $tables;
160
}
161
162
-
163
- /**
164
- * For adding Css to the admin
165
- *
166
- * @since 2.0
167
- */
168
- function css(){
169
- ?>
170
- <style type="text/css"><?php
171
- include( $this->fileHyercy( 'go-live-update-urls.css' ) );
172
- ?></style><?php
173
-
174
- }
175
-
176
-
177
/**
178
* Menu Under Tools Menu
179
*
@@ -194,9 +153,8 @@ class GoLiveUpdateUrls {
194
*
195
*/
196
function adminToolsPage(){
197
- global $table_prefix;
198
199
- $nonce = wp_nonce_field( plugin_basename( __FILE__ ), 'gluu-manage-options', true, false );
200
201
require( $this->fileHyercy( 'admin-tools-page.php' ) );
202
}
@@ -226,35 +184,95 @@ class GoLiveUpdateUrls {
226
*
227
* @since 2.2
228
*
229
- * @since 10.23.13
230
- * @uses by the view admin-tools-page.php
231
*
232
- * @filter 'gluu_table_checkboxes' with 2 param
233
- * * $output - the html formatted checkboxes
234
- * * $tables - the complete tables object
235
*
236
*/
237
- function makeCheckBoxes(){
238
-
239
- $tables = self::get_all_tables();
240
241
- $output = '<ul id="gluu-checkboxes">';
242
243
- $seralized_tables = $this->getSerializedTables();
244
245
- foreach( $tables as $v ){
246
- if( in_array( $v->TABLE_NAME, array_keys( $seralized_tables ) ) ){
247
- $output .= sprintf( '<li><input name="%s" type="checkbox" value="%s" checked /> %s - <strong><em>Seralized Safe</strong></em></li>', $v->TABLE_NAME, $v->TABLE_NAME, $v->TABLE_NAME );
248
- } else {
249
- $output .= sprintf( '<li><input name="%s" type="checkbox" value="%s" checked /> %s</li>', $v->TABLE_NAME, $v->TABLE_NAME, $v->TABLE_NAME );
250
}
251
}
252
253
$output .= '</ul>';
254
255
- return apply_filters( 'gluu_table_checkboxes', $output, $tables );
256
257
258
}
259
260
@@ -298,14 +316,14 @@ class GoLiveUpdateUrls {
298
function makeTheUpdates(){
299
global $wpdb;
300
301
@set_time_limit( 0 );
302
@ini_set( 'memory_limit', '256M' );
303
@ini_set( 'max_input_time', '-1' );
304
305
- if( empty( $this->oldurl ) || empty( $this->newurl ) ){
306
- return false;
307
- }
308
-
309
// If the new domain is the old one with a new sub-domain like www
310
if( strpos( $this->newurl, $this->oldurl ) !== false ){
311
list( $subdomain ) = explode( '.', $this->newurl );
@@ -326,29 +344,27 @@ class GoLiveUpdateUrls {
326
}
327
}
328
329
- if( $table != 'submit' && $table != 'oldurl' && $table != 'newurl' ){
330
-
331
- $column_query = "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='" . $wpdb->dbname . "' AND TABLE_NAME='" . $table . "'";
332
- $columns = $wpdb->get_col( $column_query );
333
-
334
- foreach( $columns as $_column ){
335
- $update_query = "UPDATE " . $table . " SET " . $_column . " = replace(" . $_column . ", %s, %s)";
336
- $wpdb->query( $wpdb->prepare( $update_query, array( $this->oldurl, $this->newurl ) ) );
337
-
338
- //Fix the dub dubs if this was the old domain with a new sub
339
- if( $this->double_subdomain ){
340
- $wpdb->query( $wpdb->prepare( $update_query, array(
341
- $this->double_subdomain,
342
- $this->newurl
343
- ) ) );
344
- //Fix the emails breaking by being appended the new subdomain
345
- $wpdb->query( $wpdb->prepare( $update_query, array(
346
- "@" . $this->newurl,
347
- "@" . $this->oldurl
348
- ) ) );
349
- }
350
- }
351
- }
352
}
353
354
wp_cache_flush();
@@ -449,6 +465,56 @@ class GoLiveUpdateUrls {
449
return $data;
450
}
451
452
453
454
//********** SINGLETON FUNCTIONS **********/
5
* @author Mat Lipe
6
* @since 2.2
7
*
8
*/
9
class GoLiveUpdateUrls {
10
+ const NONCE = 'gluu-update-tables';
11
+ const TABLE_INPUT_NAME = 'gluu_table';
12
13
+ public $oldurl = false;
14
15
+ public $newurl = false;
16
17
+ public $double_subdomain = false; //keep track if going to a subdomain
18
19
/*
20
* serialized_tables
42
add_action( 'init', array( $this, 'maybe_run_updates' ) );
43
}
44
45
add_action( 'admin_menu', array( $this, 'gluu_add_url_options' ) );
46
}
47
48
49
public function maybe_run_updates(){
50
+ if( !wp_verify_nonce( $_POST[ self::NONCE ], self::NONCE ) ){
51
wp_die( __('Ouch! That hurt! You should not be here!', 'go-live-update-urls' ) );
52
}
53
54
$this->oldurl = trim( strip_tags( $_POST[ 'oldurl' ] ) );
55
$this->newurl = trim( strip_tags( $_POST[ 'newurl' ] ) );
56
57
+ $this->tables = $_POST[ self::TABLE_INPUT_NAME ];
58
59
do_action( 'gluu-before-make-update', $this );
60
71
?>
72
<div id="message" class="updated fade">
73
<p>
74
+ <strong><?php _e( 'The URLS in the checked tables have been updated.', 'go-live-update-urls' ); ?></strong>
75
</p>
76
</div>
77
<?php
90
}
91
92
93
/**
94
* Retrieve filtered list of serialized safe database tables
95
*
132
return $tables;
133
}
134
135
+
136
/**
137
* Menu Under Tools Menu
138
*
153
*
154
*/
155
function adminToolsPage(){
156
157
+ wp_enqueue_script( 'gluu-admin-page', self::plugin_url( 'resources/js/admin-page.js'), array( 'jquery'), GLUU_VERSION );
158
159
require( $this->fileHyercy( 'admin-tools-page.php' ) );
160
}
184
*
185
* @since 2.2
186
*
187
+ * @param array $tables
188
+ * @param string $list - uses by js to separate lists
189
+ * @param bool $checked
190
*
191
+ * @return string;
192
*
193
*/
194
+ function makeCheckBoxes( $tables, $list, $checked = true ){
195
196
+ $output = '<ul id="gluu-checkboxes" data-list="' . $list . '">';
197
198
+ $serialized_tables = $this->getSerializedTables();
199
200
+ foreach( $tables as $_table ){
201
+ $output .= sprintf( '<li><input name="%s[%s]" type="checkbox" value="%s" class="gluu-wp-core-table" %s/> %s', self::TABLE_INPUT_NAME, $_table, $_table, checked( $checked, true, false), $_table );
202
+ if( in_array( $_table, array_keys( $serialized_tables ) ) ){
203
+ $output .= sprintf( ' - <strong><em>%s</strong></em>', __( 'Serialized Safe', 'go-live-update-urls' ) );
204
}
205
+ $output .= '</li>';
206
}
207
208
$output .= '</ul>';
209
210
+ return $output;
211
+
212
+ }
213
+
214
215
+ /**
216
+ * Get the list of tables that were not create by WP core
217
+ *
218
+ * @return array
219
+ */
220
+ public function get_custom_plugin_tables(){
221
+ $core_tables = $this->get_core_tables();
222
+ $all_tables = wp_list_pluck( self::get_all_tables(), 'TABLE_NAME' );
223
+ $all_tables = array_flip( $all_tables );
224
+ foreach( $core_tables as $_table ){
225
+ unset( $all_tables[ $_table ] );
226
+ }
227
228
+ return apply_filters( 'go_live_update_urls_plugin_tables' , array_keys( $all_tables ) );
229
+ }
230
+
231
+
232
+ /**
233
+ * Get the list of WP core tables
234
+ *
235
+ * @since 4.0.0
236
+ *
237
+ * @return array
238
+ */
239
+ public function get_core_tables(){
240
+ global $wpdb;
241
+
242
+ //Pre WP 4.4
243
+ if( !isset( $wpdb->termmeta ) ){
244
+ $wpdb->termmeta = false;
245
+ }
246
+
247
+ $tables = array(
248
+ $wpdb->posts,
249
+ $wpdb->comments,
250
+ $wpdb->links,
251
+ $wpdb->options,
252
+ $wpdb->postmeta,
253
+ $wpdb->terms,
254
+ $wpdb->term_taxonomy,
255
+ $wpdb->term_relationships,
256
+ $wpdb->termmeta,
257
+ $wpdb->commentmeta,
258
+ $wpdb->users,
259
+ $wpdb->usermeta,
260
+ );
261
+
262
+ if( isset( $wpdb->termmeta ) ){
263
+ $tables[] = $wpdb->termmeta;
264
+ }
265
+ if( is_multisite() ){
266
+ $tables[] = $wpdb->blogs;
267
+ $tables[] = $wpdb->signups;
268
+ $tables[] = $wpdb->site;
269
+ $tables[] = $wpdb->sitemeta;
270
+ $tables[] = $wpdb->sitecategories;
271
+ $tables[] = $wpdb->registration_log;
272
+ $tables[] = $wpdb->blog_versions;
273
+ }
274
+
275
+ return apply_filters( 'go_live_update_urls_core_tables', $tables );
276
}
277
278
316
function makeTheUpdates(){
317
global $wpdb;
318
319
+ if( empty( $this->oldurl ) || empty( $this->newurl ) ){
320
+ return false;
321
+ }
322
+
323
@set_time_limit( 0 );
324
@ini_set( 'memory_limit', '256M' );
325
@ini_set( 'max_input_time', '-1' );
326
327
// If the new domain is the old one with a new sub-domain like www
328
if( strpos( $this->newurl, $this->oldurl ) !== false ){
329
list( $subdomain ) = explode( '.', $this->newurl );
344
}
345
}
346
347
+ $column_query = "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='" . $wpdb->dbname . "' AND TABLE_NAME='" . $table . "'";
348
+ $columns = $wpdb->get_col( $column_query );
349
+
350
+ foreach( $columns as $_column ){
351
+ $update_query = "UPDATE " . $table . " SET " . $_column . " = replace(" . $_column . ", %s, %s)";
352
+ $wpdb->query( $wpdb->prepare( $update_query, array( $this->oldurl, $this->newurl ) ) );
353
+
354
+ //Fix the dub dubs if this was the old domain with a new sub
355
+ if( $this->double_subdomain ){
356
+ $wpdb->query( $wpdb->prepare( $update_query, array(
357
+ $this->double_subdomain,
358
+ $this->newurl,
359
+ ) ) );
360
+ //Fix the emails breaking by being appended the new subdomain
361
+ $wpdb->query( $wpdb->prepare( $update_query, array(
362
+ "@" . $this->newurl,
363
+ "@" . $this->oldurl,
364
+ ) ) );
365
+ }
366
+ }
367
+
368
}
369
370
wp_cache_flush();
465
return $data;
466
}
467
468
+ /**************** static ****************************/
469
+
470
+ /**
471
+ * Used along with self::plugin_path() to return path to this plugins files
472
+ *
473
+ * @var string
474
+ */
475
+ private static $plugin_path = false;
476
+
477
+ /**
478
+ * To keep track of this plugins root dir
479
+ * Used along with self::plugin_url() to return url to plugin files
480
+ *
481
+ * @var string
482
+ */
483
+ private static $plugin_url;
484
+
485
+
486
+ /**
487
+ * Retrieve the path this plugins dir
488
+ *
489
+ * @param string [$append] - optional path file or name to add
490
+ *
491
+ * @return string
492
+ */
493
+ public static function plugin_path( $append = '' ){
494
+
495
+ if( !self::$plugin_path ){
496
+ self::$plugin_path = trailingslashit( dirname( dirname( __FILE__ ) ) );
497
+ }
498
+
499
+ return self::$plugin_path . $append;
500
+ }
501
+
502
+
503
+ /**
504
+ * Retrieve the url this plugins dir
505
+ *
506
+ * @param string [$append] - optional path file or name to add
507
+ *
508
+ * @return string
509
+ */
510
+ public static function plugin_url( $append = '' ){
511
+
512
+ if( !self::$plugin_url ){
513
+ self::$plugin_url = trailingslashit( plugins_url( basename( self::plugin_path() ), dirname( dirname( __FILE__ ) ) ) );
514
+ }
515
+
516
+ return self::$plugin_url . $append;
517
+ }
518
519
520
//********** SINGLETON FUNCTIONS **********/
views/admin-tools-page.php CHANGED
@@ -1,5 +1,4 @@
1
<?php
2
-
3
/**
4
* Main Admin screen view
5
*
@@ -7,77 +6,101 @@
7
*
8
* @uses may be overridden in your theme by putting a copy of this file inside a go-live-update-urls folder
9
*/
10
- ?>
11
12
<div id="gluu" class="wrap">
13
<h2>Go Live Update Urls</h2>
14
15
- <h4><?php _e( 'This will replace all occurrences "in the entire database" of the old URL with the New URL.', 'go-live-update-urls' ); ?></h4>
16
-
17
- <div class="error fade">
18
- <p>
19
- <?php
20
- $message = sprintf( __( "Please un-check any tables which may contain serialized data. The only tables which are currently serialized data safe when using this plugin are %s", 'go-live-update-urls' ), "(" . implode( ', ', array_keys( $this->getSerializedTables() ) ) . ")" );
21
-
22
- echo apply_filters( 'gluu-top-message', $message, $this->getSerializedTables() );
23
- ?>
24
- </p>
25
- </div>
26
27
<strong>
28
<em style="color:red">
29
<?php _e( "Like any other database updating tool, you should always perform a backup before running.", 'go-live-update-urls' ); ?>
30
</em>
31
</strong>
32
33
-
34
- <h4>
35
<?php
36
- echo apply_filters( 'gluu-uncheck-message', __( 'Un-check any tables that you would not like to update.', 'go-live-update-urls' ) );
37
- ?>
38
- </h4>
39
40
41
- <p>
42
- <input type="button" class="button secondary" value="uncheck all" id="uncheck-button"/>
43
- </p>
44
- <form method="post" id="gluu-checkbox-form">
45
- <?php //Make the boxes to select tables
46
if( apply_filters( 'gluu-use-default_checkboxes', true ) ){
47
- echo $this->makeCheckBoxes();
48
}
49
?>
50
<table class="form-table">
51
<tr>
52
- <th scope="row" style="width:150px;"><b>Old URL</b></th>
53
<td>
54
- <input name="oldurl" type="text" id="oldurl" value="" style="width:300px;"/>
55
</td>
56
</tr>
57
<tr>
58
- <th scope="row" style="width:150px;"><b>New URL</b></th>
59
<td>
60
- <input name="newurl" type="text" id="newurl" value="" style="width:300px;"/>
61
</td>
62
</tr>
63
</table>
64
- <p class="submit">
65
- <?php submit_button( 'Make it Happen', 'primary', 'gluu-submit' ); ?>
66
</p>
67
- <?php
68
- echo $nonce;
69
- ?>
70
-
71
</form>
72
- </div>
73
- <script type="text/javascript">
74
- jQuery( '#uncheck-button' ).click( function(){
75
- if( jQuery( this ).val() == 'uncheck all' ){
76
- jQuery( '#gluu-checkbox-form input[type="checkbox"]' ).attr( 'checked', false );
77
- jQuery( this ).val( 'check all' );
78
- } else {
79
- jQuery( '#gluu-checkbox-form input[type="checkbox"]' ).attr( 'checked', true );
80
- jQuery( this ).val( 'uncheck all' );
81
- }
82
- } );
83
- </script>
1
<?php
2
/**
3
* Main Admin screen view
4
*
6
*
7
* @uses may be overridden in your theme by putting a copy of this file inside a go-live-update-urls folder
8
*/
9
10
+ $gluu = GoLiveUpdateUrls::get_instance();
11
+
12
+ ?>
13
<div id="gluu" class="wrap">
14
<h2>Go Live Update Urls</h2>
15
16
+ <p class="description">
17
+ <?php printf( _x( 'This will replace all occurrences %sin the entire database%s of the Old URL with the New URL.', '{<strong>}', '{/strong}', 'go-live-update-urls' ), '<strong>', '</strong>' ); ?>
18
+ </p>
19
20
<strong>
21
<em style="color:red">
22
<?php _e( "Like any other database updating tool, you should always perform a backup before running.", 'go-live-update-urls' ); ?>
23
</em>
24
</strong>
25
+ <hr />
26
27
+ <form method="post" id="gluu-checkbox-form">
28
<?php
29
+ wp_nonce_field( GoLiveUpdateUrls::NONCE, GoLiveUpdateUrls::NONCE );
30
31
+ do_action( 'gluu_before_checkboxes', $gluu );
32
33
if( apply_filters( 'gluu-use-default_checkboxes', true ) ){
34
+ ?>
35
+ <h2>
36
+ <?php _e( 'WordPress Core Tables', 'go-live-update-urls' ); ?>
37
+ </h2>
38
+ <p class="description">
39
+ <?php _e( 'These tables are safe to update with the basic version of this plugin (the version you are currently using).', 'go-live-update-urls' ); ?>
40
+ </p>
41
+ <p>
42
+ <input
43
+ type="button"
44
+ class="button-secondary checked gluu-tables-button"
45
+ data-list="wp-core"
46
+ value="<?php _e( 'un-check all', 'go-live-update-urls' ); ?>"
47
+ data-checked="<?php _e( 'un-check all', 'go-live-update-urls' ); ?>"
48
+ data-un-checked="<?php _e( 'check all', 'go-live-update-urls' ); ?>" />
49
+ </p>
50
+ <?php
51
+ echo $gluu->makeCheckBoxes( $gluu->get_core_tables(), "wp-core" );
52
+ ?>
53
+
54
+ <hr />
55
+
56
+ <h2>
57
+ <?php _e( 'Tables Created By Plugins', 'go-live-update-urls' ); ?>
58
+ </h2>
59
+ <p class="description" style="color:red">
60
+ <strong><?php printf( _x( 'These tables are probably NOT SAFE to update with the basic version of this plugin. %sTo support tables created by plugins use the %sPro Version%s.', '{<br />}{<a>}{</a>}', 'go-live-update-urls' ), '<br />', '<a href="https://matlipe.com/product/go-live-update-urls-pro/" target="_blank">', '</a>' ); ?></strong>
61
+ </p>
62
+ <p>
63
+ <input
64
+ type="button"
65
+ class="button-secondary gluu-tables-button"
66
+ data-list="custom-plugins"
67
+ value="<?php _e( 'check all', 'go-live-update-urls' ); ?>"
68
+ data-checked="<?php _e( 'un-check all', 'go-live-update-urls' ); ?>"
69
+ data-un-checked="<?php _e( 'check all', 'go-live-update-urls' ); ?>" />
70
+ </p>
71
+ <?php
72
+ echo $gluu->makeCheckBoxes( $gluu->get_custom_plugin_tables(), "custom-plugins", false );
73
}
74
+
75
+ do_action( 'gluu_after_checkboxes', $gluu );
76
+
77
?>
78
+ <hr />
79
<table class="form-table">
80
<tr>
81
+ <th scope="row" style="width:150px;">
82
+ <b><?php _e( 'Old URL', 'go-live-update-urls' ); ?></b>
83
+ </th>
84
<td>
85
+ <input name="oldurl" type="text" id="oldurl" value="" style="width:300px;" title="<?php _e( 'Old URL', 'go-live-update-urls' ); ?>"/>
86
</td>
87
</tr>
88
<tr>
89
+ <th scope="row" style="width:150px;">
90
+ <b><?php _e( 'New URL', 'go-live-update-urls' ); ?></b>
91
+ </th>
92
<td>
93
+ <input name="newurl" type="text" id="newurl" value="" style="width:300px;" title="<?php _e( 'New URL', 'go-live-update-urls' ); ?>"/>
94
</td>
95
</tr>
96
</table>
97
+ <p class="description">
98
+ <strong>
99
+ <?php
100
+ echo apply_filters( 'gluu-uncheck-message', __( 'Only the checked tables will be updated.', 'go-live-update-urls' ) );
101
+ ?>
102
+ </strong>
103
</p>
104
+ <?php submit_button( __( 'Make It Happen', 'go-live-update-urls' ), 'primary', 'gluu-submit' ); ?>
105
</form>
106
+ </div>
views/go-live-update-urls.css DELETED
@@ -1,46 +0,0 @@
1
- /**
2
- * Main Admin screen css
3
- *
4
- * @author Mat Lipe
5
- *
6
- * @uses may be overridden in your theme by putting a copy of this file inside a go-live-update-urls folder
7
- */
8
-
9
-
10
-
11
- #gluu{
12
- background: black;
13
- padding: 25px;
14
- width: 520px;
15
- border-radius: 20px;
16
- color: white;
17
- -moz-box-shadow: 0 0 5px 5px #888;
18
- -webkit-box-shadow: 0 0 5px 5px#888;
19
- box-shadow: 0 0 5px 5px #888;
20
- margin: 40px 0 0 40px;
21
- }
22
-
23
- #gluu .error{
24
- color: #000000;
25
- }
26
-
27
- #gluu h2{
28
- color: white;
29
- text-shadow: blue 0 1px 0;
30
- }
31
-
32
- #gluu .form-table b{
33
- font-size: 16px;
34
- color: white;
35
- text-shadow: blue 0 1px 0;
36
- }
37
-
38
- #gluu input[type="text"]{
39
- font-weight: bold;
40
- padding: 6px;
41
- }
42
-
43
- #gluu .updated{
44
- color: black;
45
- }
46
-