All-in-One WP Migration - Version 6.53

Version Description

Added

  • Warn the user when web server configuration files are not created

Changed

  • Buffered queries instead of unbuffered queries
  • Relative URLs instead of absolute URLs when loading fonts and images
Download this release

Release Info

Developer bangelov
Plugin Icon 128x128 All-in-One WP Migration
Version 6.53
Comparing to
See all releases

Code changes from version 6.52 to 6.53

all-in-one-wp-migration.php CHANGED
@@ -5,7 +5,7 @@
5
* Description: Migration tool for all your blog data. Import or Export your blog content with a single click.
6
* Author: ServMask
7
* Author URI: https://servmask.com/
8
- * Version: 6.52
9
* Text Domain: all-in-one-wp-migration
10
* Domain Path: /languages
11
* Network: True
5
* Description: Migration tool for all your blog data. Import or Export your blog content with a single click.
6
* Author: ServMask
7
* Author URI: https://servmask.com/
8
+ * Version: 6.53
9
* Text Domain: all-in-one-wp-migration
10
* Domain Path: /languages
11
* Network: True
constants.php CHANGED
@@ -31,7 +31,7 @@ define( 'AI1WM_DEBUG', false );
31
// ==================
32
// = Plugin Version =
33
// ==================
34
- define( 'AI1WM_VERSION', '6.52' );
35
36
// ===============
37
// = Plugin Name =
31
// ==================
32
// = Plugin Version =
33
// ==================
34
+ define( 'AI1WM_VERSION', '6.53' );
35
36
// ===============
37
// = Plugin Name =
lib/controller/class-ai1wm-main-controller.php CHANGED
@@ -217,30 +217,57 @@ class Ai1wm_Main_Controller {
217
}
218
219
/**
220
- * Display storage directory notice
221
*
222
* @return void
223
*/
224
- public function storage_notice() {
225
- Ai1wm_Template::render( 'main/storage-notice' );
226
}
227
228
/**
229
- * Display index file notice
230
*
231
* @return void
232
*/
233
- public function index_notice() {
234
- Ai1wm_Template::render( 'main/index-notice' );
235
}
236
237
/**
238
- * Display backups directory notice
239
*
240
* @return void
241
*/
242
- public function backups_notice() {
243
- Ai1wm_Template::render( 'main/backups-notice' );
244
}
245
246
/**
@@ -262,47 +289,71 @@ class Ai1wm_Main_Controller {
262
* @return void
263
*/
264
public function create_folders() {
265
- // Check if storage folder exist
266
if ( ! is_dir( AI1WM_STORAGE_PATH ) ) {
267
-
268
- // Folder doesn't exist, attempt to create it
269
if ( ! mkdir( AI1WM_STORAGE_PATH ) ) {
270
-
271
- // We couldn't create the folder, so let's tell the user
272
if ( is_multisite() ) {
273
- return add_action( 'network_admin_notices', array( $this, 'storage_notice' ) );
274
} else {
275
- return add_action( 'admin_notices', array( $this, 'storage_notice' ) );
276
}
277
}
278
}
279
280
- // Create index.php in storage folder
281
- Ai1wm_File_Index::create( AI1WM_STORAGE_INDEX );
282
283
- // Check if backups folder exist
284
if ( ! is_dir( AI1WM_BACKUPS_PATH ) ) {
285
-
286
- // Folder doesn't exist, attempt to create it
287
if ( ! mkdir( AI1WM_BACKUPS_PATH ) ) {
288
-
289
- // We couldn't create the folder, so let's tell the user
290
if ( is_multisite() ) {
291
- return add_action( 'network_admin_notices', array( $this, 'backups_notice' ) );
292
} else {
293
- return add_action( 'admin_notices', array( $this, 'backups_notice' ) );
294
}
295
}
296
}
297
298
- // Create index.php in backups folder
299
- Ai1wm_File_Index::create( AI1WM_BACKUPS_INDEX );
300
301
- // Create .htaccess in backups folder
302
- Ai1wm_File_Htaccess::create( AI1WM_BACKUPS_HTACCESS );
303
304
- // Create web.config in backups folder
305
- Ai1wm_File_Webconfig::create( AI1WM_BACKUPS_WEBCONFIG );
306
}
307
308
/**
@@ -567,7 +618,7 @@ class Ai1wm_Main_Controller {
567
);
568
wp_localize_script( 'ai1wm-js-updater', 'ai1wm_updater', array(
569
'ajax' => array(
570
- 'url' => admin_url( 'admin-ajax.php?action=ai1wm_updater' ),
571
),
572
) );
573
}
217
}
218
219
/**
220
+ * Display notice for storage directory
221
*
222
* @return void
223
*/
224
+ public function storage_path_notice() {
225
+ Ai1wm_Template::render( 'main/storage-path-notice' );
226
}
227
228
/**
229
+ * Display notice for index file in storage directory
230
*
231
* @return void
232
*/
233
+ public function storage_index_notice() {
234
+ Ai1wm_Template::render( 'main/storage-index-notice' );
235
}
236
237
/**
238
+ * Display notice for backups directory
239
*
240
* @return void
241
*/
242
+ public function backups_path_notice() {
243
+ Ai1wm_Template::render( 'main/backups-path-notice' );
244
+ }
245
+
246
+ /**
247
+ * Display notice for .htaccess file in backups directory
248
+ *
249
+ * @return void
250
+ */
251
+ public function backups_htaccess_notice() {
252
+ Ai1wm_Template::render( 'main/backups-htaccess-notice' );
253
+ }
254
+
255
+ /**
256
+ * Display notice for web.config file in backups directory
257
+ *
258
+ * @return void
259
+ */
260
+ public function backups_webconfig_notice() {
261
+ Ai1wm_Template::render( 'main/backups-webconfig-notice' );
262
+ }
263
+
264
+ /**
265
+ * Display notice for index file in backups directory
266
+ *
267
+ * @return void
268
+ */
269
+ public function backups_index_notice() {
270
+ Ai1wm_Template::render( 'main/backups-index-notice' );
271
}
272
273
/**
289
* @return void
290
*/
291
public function create_folders() {
292
+ // Check if storage folder is created
293
if ( ! is_dir( AI1WM_STORAGE_PATH ) ) {
294
if ( ! mkdir( AI1WM_STORAGE_PATH ) ) {
295
if ( is_multisite() ) {
296
+ return add_action( 'network_admin_notices', array( $this, 'storage_path_notice' ) );
297
} else {
298
+ return add_action( 'admin_notices', array( $this, 'storage_path_notice' ) );
299
}
300
}
301
}
302
303
+ // Check if index.php is created in storage folder
304
+ if ( ! is_file( AI1WM_STORAGE_INDEX ) ) {
305
+ if ( ! Ai1wm_File_Index::create( AI1WM_STORAGE_INDEX ) ) {
306
+ if ( is_multisite() ) {
307
+ return add_action( 'network_admin_notices', array( $this, 'storage_index_notice' ) );
308
+ } else {
309
+ return add_action( 'admin_notices', array( $this, 'storage_index_notice' ) );
310
+ }
311
+ }
312
+ }
313
314
+ // Check if ai1wm-backups folder is created
315
if ( ! is_dir( AI1WM_BACKUPS_PATH ) ) {
316
if ( ! mkdir( AI1WM_BACKUPS_PATH ) ) {
317
if ( is_multisite() ) {
318
+ return add_action( 'network_admin_notices', array( $this, 'backups_path_notice' ) );
319
} else {
320
+ return add_action( 'admin_notices', array( $this, 'backups_path_notice' ) );
321
}
322
}
323
}
324
325
+ // Check if .htaccess is created in backups folder
326
+ if ( ! is_file( AI1WM_BACKUPS_HTACCESS ) ) {
327
+ if ( ! Ai1wm_File_Htaccess::create( AI1WM_BACKUPS_HTACCESS ) ) {
328
+ if ( is_multisite() ) {
329
+ return add_action( 'network_admin_notices', array( $this, 'backups_htaccess_notice' ) );
330
+ } else {
331
+ return add_action( 'admin_notices', array( $this, 'backups_htaccess_notice' ) );
332
+ }
333
+ }
334
+ }
335
336
+ // Check if web.config is created in backups folder
337
+ if ( ! is_file( AI1WM_BACKUPS_WEBCONFIG ) ) {
338
+ if ( ! Ai1wm_File_Webconfig::create( AI1WM_BACKUPS_WEBCONFIG ) ) {
339
+ if ( is_multisite() ) {
340
+ return add_action( 'network_admin_notices', array( $this, 'backups_webconfig_notice' ) );
341
+ } else {
342
+ return add_action( 'admin_notices', array( $this, 'backups_webconfig_notice' ) );
343
+ }
344
+ }
345
+ }
346
347
+ // Check if index.php is created in backups folder
348
+ if ( ! is_file( AI1WM_BACKUPS_INDEX ) ) {
349
+ if ( ! Ai1wm_File_Index::create( AI1WM_BACKUPS_INDEX ) ) {
350
+ if ( is_multisite() ) {
351
+ return add_action( 'network_admin_notices', array( $this, 'backups_index_notice' ) );
352
+ } else {
353
+ return add_action( 'admin_notices', array( $this, 'backups_index_notice' ) );
354
+ }
355
+ }
356
+ }
357
}
358
359
/**
618
);
619
wp_localize_script( 'ai1wm-js-updater', 'ai1wm_updater', array(
620
'ajax' => array(
621
+ 'url' => wp_make_link_relative( admin_url( 'admin-ajax.php?action=ai1wm_updater' ) ),
622
),
623
) );
624
}
lib/model/class-ai1wm-extensions.php CHANGED
@@ -76,7 +76,7 @@ class Ai1wm_Extensions {
76
'about' => AI1WMME_PLUGIN_ABOUT,
77
'basename' => AI1WMME_PLUGIN_BASENAME,
78
'version' => AI1WMME_VERSION,
79
- 'requires' => '3.33',
80
'short' => AI1WMME_PLUGIN_SHORT,
81
);
82
}
76
'about' => AI1WMME_PLUGIN_ABOUT,
77
'basename' => AI1WMME_PLUGIN_BASENAME,
78
'version' => AI1WMME_VERSION,
79
+ 'requires' => '3.34',
80
'short' => AI1WMME_PLUGIN_SHORT,
81
);
82
}
lib/model/export/class-ai1wm-export-database.php CHANGED
@@ -33,6 +33,13 @@ class Ai1wm_Export_Database {
33
return $params;
34
}
35
36
// Set table offset
37
if ( isset( $params['table_offset'] ) ) {
38
$table_offset = (int) $params['table_offset'];
@@ -40,6 +47,13 @@ class Ai1wm_Export_Database {
40
$table_offset = 0;
41
}
42
43
// Set total tables count
44
if ( isset( $params['total_tables_count'] ) ) {
45
$total_tables_count = (int) $params['total_tables_count'];
@@ -48,7 +62,7 @@ class Ai1wm_Export_Database {
48
}
49
50
// What percent of tables have we processed?
51
- $progress = (int) ( ( $table_offset / $total_tables_count ) * 100 );
52
53
// Set progress
54
Ai1wm_Status::info( sprintf( __( 'Exporting database...<br />%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) );
@@ -60,18 +74,19 @@ class Ai1wm_Export_Database {
60
$mysql = new Ai1wm_Database_Mysqli( $wpdb );
61
}
62
63
// Spam comments
64
if ( isset( $params['options']['no_spam_comments'] ) ) {
65
- $mysql->set_table_query_clauses( ai1wm_table_prefix() . 'comments', " WHERE comment_approved != 'spam' " );
66
- $mysql->set_table_query_clauses( ai1wm_table_prefix() . 'commentmeta', sprintf(
67
- " WHERE comment_id IN ( SELECT comment_ID FROM `%s` WHERE comment_approved != 'spam' ) ",
68
- ai1wm_table_prefix() . 'comments'
69
- ) );
70
}
71
72
// Post revisions
73
if ( isset( $params['options']['no_revisions'] ) ) {
74
- $mysql->set_table_query_clauses( ai1wm_table_prefix() . 'posts', " WHERE post_type != 'revision' " );
75
}
76
77
$old_table_prefixes = array();
@@ -96,6 +111,7 @@ class Ai1wm_Export_Database {
96
}
97
98
$include_table_prefixes = array();
99
100
// Include table prefixes
101
if ( ai1wm_table_prefix() ) {
@@ -110,14 +126,13 @@ class Ai1wm_Export_Database {
110
$mysql->set_old_table_prefixes( $old_table_prefixes )
111
->set_new_table_prefixes( $new_table_prefixes )
112
->set_include_table_prefixes( $include_table_prefixes )
113
- ->set_table_prefix_columns( ai1wm_table_prefix() . 'options', array( 'option_name' ) )
114
- ->set_table_prefix_columns( ai1wm_table_prefix() . 'usermeta', array( 'meta_key' ) );
115
116
// Exclude active plugins and status options
117
- $mysql->set_table_query_clauses( ai1wm_table_prefix() . 'options', sprintf( " WHERE option_name NOT IN ('%s', '%s', '%s', '%s') ", AI1WM_ACTIVE_PLUGINS, AI1WM_ACTIVE_TEMPLATE, AI1WM_ACTIVE_STYLESHEET, AI1WM_STATUS ) );
118
119
// Export database
120
- if ( $mysql->export( ai1wm_database_path( $params ), $table_offset, 10 ) ) {
121
122
// Get archive file
123
$archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) );
@@ -129,9 +144,15 @@ class Ai1wm_Export_Database {
129
// Set progress
130
Ai1wm_Status::info( __( 'Done exporting database...', AI1WM_PLUGIN_NAME ) );
131
132
// Unset table offset
133
unset( $params['table_offset'] );
134
135
// Unset total tables count
136
unset( $params['total_tables_count'] );
137
@@ -144,20 +165,25 @@ class Ai1wm_Export_Database {
144
$total_tables_count = count( $mysql->get_tables() );
145
146
// What percent of tables have we processed?
147
- $progress = (int) ( ( $table_offset / $total_tables_count ) * 100 );
148
149
// Set progress
150
Ai1wm_Status::info( sprintf( __( 'Exporting database...<br />%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) );
151
152
// Set table offset
153
$params['table_offset'] = $table_offset;
154
155
// Set total tables count
156
$params['total_tables_count'] = $total_tables_count;
157
158
// Set completed flag
159
$params['completed'] = false;
160
-
161
}
162
163
return $params;
33
return $params;
34
}
35
36
+ // Set table index
37
+ if ( isset( $params['table_index'] ) ) {
38
+ $table_index = (int) $params['table_index'];
39
+ } else {
40
+ $table_index = 0;
41
+ }
42
+
43
// Set table offset
44
if ( isset( $params['table_offset'] ) ) {
45
$table_offset = (int) $params['table_offset'];
47
$table_offset = 0;
48
}
49
50
+ // Set table keys
51
+ if ( isset( $params['table_keys'] ) ) {
52
+ $table_keys = (array) $params['table_keys'];
53
+ } else {
54
+ $table_keys = array();
55
+ }
56
+
57
// Set total tables count
58
if ( isset( $params['total_tables_count'] ) ) {
59
$total_tables_count = (int) $params['total_tables_count'];
62
}
63
64
// What percent of tables have we processed?
65
+ $progress = (int) ( ( $table_index / $total_tables_count ) * 100 );
66
67
// Set progress
68
Ai1wm_Status::info( sprintf( __( 'Exporting database...<br />%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) );
74
$mysql = new Ai1wm_Database_Mysqli( $wpdb );
75
}
76
77
+ // Replace table prefix on columns
78
+ $mysql->set_table_prefix_columns( ai1wm_table_prefix() . 'options', array( 'option_name' ) )
79
+ ->set_table_prefix_columns( ai1wm_table_prefix() . 'usermeta', array( 'meta_key' ) );
80
+
81
// Spam comments
82
if ( isset( $params['options']['no_spam_comments'] ) ) {
83
+ $mysql->set_table_where_clauses( ai1wm_table_prefix() . 'comments', array( "`comment_approved` != 'spam'" ) );
84
+ $mysql->set_table_where_clauses( ai1wm_table_prefix() . 'commentmeta', array( sprintf( "`comment_ID` IN ( SELECT `comment_ID` FROM `%s` WHERE `comment_approved` != 'spam' )", ai1wm_table_prefix() . 'comments' ) ) );
85
}
86
87
// Post revisions
88
if ( isset( $params['options']['no_revisions'] ) ) {
89
+ $mysql->set_table_where_clauses( ai1wm_table_prefix() . 'posts', array( "`post_type` != 'revision'" ) );
90
}
91
92
$old_table_prefixes = array();
111
}
112
113
$include_table_prefixes = array();
114
+ $exclude_table_prefixes = array();
115
116
// Include table prefixes
117
if ( ai1wm_table_prefix() ) {
126
$mysql->set_old_table_prefixes( $old_table_prefixes )
127
->set_new_table_prefixes( $new_table_prefixes )
128
->set_include_table_prefixes( $include_table_prefixes )
129
+ ->set_exclude_table_prefixes( $exclude_table_prefixes );
130
131
// Exclude active plugins and status options
132
+ $mysql->set_table_where_clauses( ai1wm_table_prefix() . 'options', array( sprintf( "`option_name` NOT IN ('%s', '%s', '%s', '%s')", AI1WM_ACTIVE_PLUGINS, AI1WM_ACTIVE_TEMPLATE, AI1WM_ACTIVE_STYLESHEET, AI1WM_STATUS ) ) );
133
134
// Export database
135
+ if ( $mysql->export( ai1wm_database_path( $params ), $table_index, $table_offset, $table_keys, 10 ) ) {
136
137
// Get archive file
138
$archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) );
144
// Set progress
145
Ai1wm_Status::info( __( 'Done exporting database...', AI1WM_PLUGIN_NAME ) );
146
147
+ // Unset table index
148
+ unset( $params['table_index'] );
149
+
150
// Unset table offset
151
unset( $params['table_offset'] );
152
153
+ // Unset table keys
154
+ unset( $params['table_keys'] );
155
+
156
// Unset total tables count
157
unset( $params['total_tables_count'] );
158
165
$total_tables_count = count( $mysql->get_tables() );
166
167
// What percent of tables have we processed?
168
+ $progress = (int) ( ( $table_index / $total_tables_count ) * 100 );
169
170
// Set progress
171
Ai1wm_Status::info( sprintf( __( 'Exporting database...<br />%d%% complete', AI1WM_PLUGIN_NAME ), $progress ) );
172
173
+ // Set table index
174
+ $params['table_index'] = $table_index;
175
+
176
// Set table offset
177
$params['table_offset'] = $table_offset;
178
179
+ // Set table keys
180
+ $params['table_keys'] = $table_keys;
181
+
182
// Set total tables count
183
$params['total_tables_count'] = $total_tables_count;
184
185
// Set completed flag
186
$params['completed'] = false;
187
}
188
189
return $params;
lib/vendor/servmask/database/class-ai1wm-database-mysql.php CHANGED
@@ -32,7 +32,7 @@ class Ai1wm_Database_Mysql extends Ai1wm_Database {
32
* @return resource
33
*/
34
public function query( $input ) {
35
- return mysql_unbuffered_query( $input, $this->wpdb->dbh );
36
}
37
38
/**
@@ -46,7 +46,7 @@ class Ai1wm_Database_Mysql extends Ai1wm_Database {
46
}
47
48
/**
49
- * Returns the error code for the most recent function call
50
*
51
* @return int
52
*/
@@ -55,7 +55,7 @@ class Ai1wm_Database_Mysql extends Ai1wm_Database {
55
}
56
57
/**
58
- * Returns a string description of the last error
59
*
60
* @return string
61
*/
@@ -92,6 +92,16 @@ class Ai1wm_Database_Mysql extends Ai1wm_Database {
92
return mysql_fetch_row( $result );
93
}
94
95
/**
96
* Free MySQL result memory
97
*
32
* @return resource
33
*/
34
public function query( $input ) {
35
+ return mysql_query( $input, $this->wpdb->dbh );
36
}
37
38
/**
46
}
47
48
/**
49
+ * Return the error code for the most recent function call
50
*
51
* @return int
52
*/
55
}
56
57
/**
58
+ * Return a string description of the last error
59
*
60
* @return string
61
*/
92
return mysql_fetch_row( $result );
93
}
94
95
+ /**
96
+ * Return the number for rows from MySQL results
97
+ *
98
+ * @param resource $result MySQL resource
99
+ * @return int
100
+ */
101
+ public function num_rows( $result ) {
102
+ return mysql_num_rows( $result );
103
+ }
104
+
105
/**
106
* Free MySQL result memory
107
*
lib/vendor/servmask/database/class-ai1wm-database-mysqli.php CHANGED
@@ -32,7 +32,7 @@ class Ai1wm_Database_Mysqli extends Ai1wm_Database {
32
* @return resource
33
*/
34
public function query( $input ) {
35
- return mysqli_query( $this->wpdb->dbh, $input, MYSQLI_USE_RESULT );
36
}
37
38
/**
@@ -46,7 +46,7 @@ class Ai1wm_Database_Mysqli extends Ai1wm_Database {
46
}
47
48
/**
49
- * Returns the error code for the most recent function call
50
*
51
* @return int
52
*/
@@ -55,7 +55,7 @@ class Ai1wm_Database_Mysqli extends Ai1wm_Database {
55
}
56
57
/**
58
- * Returns a string description of the last error
59
*
60
* @return string
61
*/
@@ -92,6 +92,16 @@ class Ai1wm_Database_Mysqli extends Ai1wm_Database {
92
return mysqli_fetch_row( $result );
93
}
94
95
/**
96
* Free MySQL result memory
97
*
32
* @return resource
33
*/
34
public function query( $input ) {
35
+ return mysqli_query( $this->wpdb->dbh, $input, MYSQLI_STORE_RESULT );
36
}
37
38
/**
46
}
47
48
/**
49
+ * Return the error code for the most recent function call
50
*
51
* @return int
52
*/
55
}
56
57
/**
58
+ * Return a string description of the last error
59
*
60
* @return string
61
*/
92
return mysqli_fetch_row( $result );
93
}
94
95
+ /**
96
+ * Return the number for rows from MySQL results
97
+ *
98
+ * @param resource $result MySQL resource
99
+ * @return int
100
+ */
101
+ public function num_rows( $result ) {
102
+ return mysqli_num_rows( $result );
103
+ }
104
+
105
/**
106
* Free MySQL result memory
107
*
lib/vendor/servmask/database/class-ai1wm-database.php CHANGED
@@ -73,12 +73,12 @@ abstract class Ai1wm_Database {
73
protected $new_replace_values = array();
74
75
/**
76
- * Table query clauses
77
*
78
* @access protected
79
* @var array
80
*/
81
- protected $table_query_clauses = array();
82
83
/**
84
* Table prefix columns
@@ -271,28 +271,30 @@ abstract class Ai1wm_Database {
271
}
272
273
/**
274
- * Set table query clauses
275
*
276
* @param string $table Table name
277
* @param array $clauses Table clauses
278
* @return Ai1wm_Database
279
*/
280
- public function set_table_query_clauses( $table, $clauses ) {
281
- $this->table_query_clauses[ strtolower( $table ) ] = $clauses;
282
283
return $this;
284
}
285
286
/**
287
- * Get table query clauses
288
*
289
* @param string $table Table name
290
- * @return mixed
291
*/
292
- public function get_table_query_clauses( $table ) {
293
- if ( isset( $this->table_query_clauses[ strtolower( $table ) ] ) ) {
294
- return $this->table_query_clauses[ strtolower( $table ) ];
295
}
296
}
297
298
/**
@@ -314,12 +316,14 @@ abstract class Ai1wm_Database {
314
* Get table prefix columns
315
*
316
* @param string $table Table name
317
- * @return mixed
318
*/
319
public function get_table_prefix_columns( $table ) {
320
if ( isset( $this->table_prefix_columns[ strtolower( $table ) ] ) ) {
321
return $this->table_prefix_columns[ strtolower( $table ) ];
322
}
323
}
324
325
/**
@@ -469,16 +473,18 @@ abstract class Ai1wm_Database {
469
* Export database into a file
470
*
471
* @param string $file_name Name of file
472
- * @param string $table_offset Table offset
473
* @param int $timeout Process timeout
474
* @return bool
475
*/
476
- public function export( $file_name, &$table_offset = 0, $timeout = 0 ) {
477
// Set file handler
478
$file_handler = ai1wm_open( $file_name, 'ab' );
479
480
// Write headers
481
- if ( $table_offset === 0 ) {
482
ai1wm_write( $file_handler, $this->get_header() );
483
}
484
@@ -492,23 +498,16 @@ abstract class Ai1wm_Database {
492
$tables = $this->get_tables();
493
494
// Export tables
495
- for ( ; $table_offset < count( $tables ); ) {
496
497
// Get table name
498
- $table_name = $tables[ $table_offset ];
499
500
// Replace table name prefixes
501
$new_table_name = $this->replace_table_prefixes( $table_name, 0 );
502
503
- // Get table structure
504
- $structure = $this->query( "SHOW CREATE TABLE `{$table_name}`" );
505
- $table = $this->fetch_assoc( $structure );
506
-
507
- // Close structure cursor
508
- $this->free_result( $structure );
509
-
510
- // Get create table
511
- if ( isset( $table['Create Table'] ) ) {
512
513
// Write table drop statement
514
$drop_table = "\nDROP TABLE IF EXISTS `{$new_table_name}`;\n";
@@ -516,8 +515,11 @@ abstract class Ai1wm_Database {
516
// Write table statement
517
ai1wm_write( $file_handler, $drop_table );
518
519
// Replace create table prefixes
520
- $create_table = $this->replace_table_prefixes( $table['Create Table'], 14 );
521
522
// Replace table constraints
523
$create_table = $this->replace_table_constraints( $create_table );
@@ -525,76 +527,137 @@ abstract class Ai1wm_Database {
525
// Replace create table options
526
$create_table = $this->replace_table_options( $create_table );
527
528
- // Write table structure
529
ai1wm_write( $file_handler, $create_table );
530
531
// Write end of statement
532
ai1wm_write( $file_handler, ";\n\n" );
533
}
534
535
- $count = 0;
536
537
- // Set query
538
- $query = sprintf( 'SELECT * FROM `%s` %s', $table_name, $this->get_table_query_clauses( $table_name ) );
539
540
- // Apply additional table prefix columns
541
- $columns = $this->get_table_prefix_columns( $table_name );
542
543
- // Get results
544
- $result = $this->query( $query );
545
546
- // Generate insert statements
547
- while ( $row = $this->fetch_assoc( $result ) ) {
548
- if ( $count % Ai1wm_Database::QUERIES_PER_TRANSACTION === 0 ) {
549
- // Write start transaction
550
- ai1wm_write( $file_handler, "START TRANSACTION;\n" );
551
- }
552
553
- $items = array();
554
- foreach ( $row as $key => $value ) {
555
- // Replace table prefix columns
556
- if ( isset( $columns[ strtolower( $key ) ] ) ) {
557
- $value = $this->replace_table_prefixes( $value, 0 );
558
}
559
560
- // Replace table values
561
- $items[] = is_null( $value ) ? 'NULL' : "'" . $this->escape( $value ) . "'";
562
- }
563
564
- // Set table values
565
- $table_values = implode( ',', $items );
566
567
- // Set insert statement
568
- $table_insert = "INSERT INTO `{$new_table_name}` VALUES ({$table_values});\n";
569
570
- // Write insert statement
571
- ai1wm_write( $file_handler, $table_insert );
572
573
- $count++;
574
575
- // Write end of transaction
576
- if ( $count % Ai1wm_Database::QUERIES_PER_TRANSACTION === 0 ) {
577
- ai1wm_write( $file_handler, "COMMIT;\n" );
578
}
579
- }
580
581
- // Write end of transaction
582
- if ( $count % Ai1wm_Database::QUERIES_PER_TRANSACTION !== 0 ) {
583
- ai1wm_write( $file_handler, "COMMIT;\n" );
584
- }
585
586
- $table_offset++;
587
588
- // Close result cursor
589
- $this->free_result( $result );
590
591
- // Time elapsed
592
- if ( $timeout ) {
593
- if ( ( microtime( true ) - $start ) > $timeout ) {
594
- $completed = false;
595
- break;
596
}
597
- }
598
}
599
600
// Close file handler
@@ -704,20 +767,16 @@ abstract class Ai1wm_Database {
704
* @return string
705
*/
706
protected function get_version() {
707
- $version = null;
708
-
709
$result = $this->query( "SHOW VARIABLES LIKE 'version'" );
710
- while ( $row = $this->fetch_row( $result ) ) {
711
- if ( isset( $row[1] ) ) {
712
- $version = $row[1];
713
- break;
714
- }
715
- }
716
717
// Close result cursor
718
$this->free_result( $result );
719
720
- return $version;
721
}
722
723
/**
@@ -726,20 +785,16 @@ abstract class Ai1wm_Database {
726
* @return int
727
*/
728
protected function get_max_allowed_packet() {
729
- $max_allowed_packet = null;
730
-
731
$result = $this->query( "SHOW VARIABLES LIKE 'max_allowed_packet'" );
732
- while ( $row = $this->fetch_row( $result ) ) {
733
- if ( isset( $row[1] ) ) {
734
- $max_allowed_packet = $row[1];
735
- break;
736
- }
737
- }
738
739
// Close result cursor
740
$this->free_result( $result );
741
742
- return $max_allowed_packet;
743
}
744
745
/**
@@ -749,20 +804,81 @@ abstract class Ai1wm_Database {
749
* @return string
750
*/
751
protected function get_collation( $collation_name ) {
752
- $collation_result = null;
753
-
754
$result = $this->query( "SHOW COLLATION LIKE '{$collation_name}'" );
755
- while ( $row = $this->fetch_row( $result ) ) {
756
- if ( isset( $row[0] ) ) {
757
- $collation_result = $row[0];
758
- break;
759
}
760
}
761
762
// Close result cursor
763
$this->free_result( $result );
764
765
- return $collation_result;
766
}
767
768
/**
@@ -1100,6 +1216,14 @@ abstract class Ai1wm_Database {
1100
*/
1101
abstract public function fetch_row( $result );
1102
1103
/**
1104
* Free MySQL result memory
1105
*
73
protected $new_replace_values = array();
74
75
/**
76
+ * Table where clauses
77
*
78
* @access protected
79
* @var array
80
*/
81
+ protected $table_where_clauses = array();
82
83
/**
84
* Table prefix columns
271
}
272
273
/**
274
+ * Set table where clauses
275
*
276
* @param string $table Table name
277
* @param array $clauses Table clauses
278
* @return Ai1wm_Database
279
*/
280
+ public function set_table_where_clauses( $table, $clauses ) {
281
+ $this->table_where_clauses[ strtolower( $table ) ] = $clauses;
282
283
return $this;
284
}
285
286
/**
287
+ * Get table where clauses
288
*
289
* @param string $table Table name
290
+ * @return array
291
*/
292
+ public function get_table_where_clauses( $table ) {
293
+ if ( isset( $this->table_where_clauses[ strtolower( $table ) ] ) ) {
294
+ return $this->table_where_clauses[ strtolower( $table ) ];
295
}
296
+
297
+ return array();
298
}
299
300
/**
316
* Get table prefix columns
317
*
318
* @param string $table Table name
319
+ * @return array
320
*/
321
public function get_table_prefix_columns( $table ) {
322
if ( isset( $this->table_prefix_columns[ strtolower( $table ) ] ) ) {
323
return $this->table_prefix_columns[ strtolower( $table ) ];
324
}
325
+
326
+ return array();
327
}
328
329
/**
473
* Export database into a file
474
*
475
* @param string $file_name Name of file
476
+ * @param int $table_index Table index
477
+ * @param int $table_offset Table offset
478
+ * @param array $table_keys Table keys
479
* @param int $timeout Process timeout
480
* @return bool
481
*/
482
+ public function export( $file_name, &$table_index = 0, &$table_offset = 0, &$table_keys = array(), $timeout = 0 ) {
483
// Set file handler
484
$file_handler = ai1wm_open( $file_name, 'ab' );
485
486
// Write headers
487
+ if ( $table_index === 0 ) {
488
ai1wm_write( $file_handler, $this->get_header() );
489
}
490
498
$tables = $this->get_tables();
499
500
// Export tables
501
+ for ( ; $table_index < count( $tables ); $table_index++ ) {
502
503
// Get table name
504
+ $table_name = $tables[ $table_index ];
505
506
// Replace table name prefixes
507
$new_table_name = $this->replace_table_prefixes( $table_name, 0 );
508
509
+ // Get create table statement
510
+ if ( $table_offset === 0 ) {
511
512
// Write table drop statement
513
$drop_table = "\nDROP TABLE IF EXISTS `{$new_table_name}`;\n";
515
// Write table statement
516
ai1wm_write( $file_handler, $drop_table );
517
518
+ // Get create table statement
519
+ $create_table = $this->get_create_table( $table_name );
520
+
521
// Replace create table prefixes
522
+ $create_table = $this->replace_table_prefixes( $create_table, 14 );
523
524
// Replace table constraints
525
$create_table = $this->replace_table_constraints( $create_table );
527
// Replace create table options
528
$create_table = $this->replace_table_options( $create_table );
529
530
+ // Write table statement
531
ai1wm_write( $file_handler, $create_table );
532
533
// Write end of statement
534
ai1wm_write( $file_handler, ";\n\n" );
535
}
536
537
+ // Get primary or unique keys
538
+ $primary_keys = ( $primary_keys = $this->get_primary_keys( $table_name ) ) ? $primary_keys : $this->get_unique_keys( $table_name );
539
540
+ do {
541
542
+ // Set query
543
+ if ( $primary_keys ) {
544
545
+ // Set table where by keys
546
+ $table_where = array( 1 );
547
+ foreach ( $table_keys as $key => $value ) {
548
+ $table_where[] = sprintf( "`%s` > '%s'", $key, $value );
549
+ }
550
551
+ // Set table where by clauses
552
+ foreach ( $this->get_table_where_clauses( $table_name ) as $clause ) {
553
+ $table_where[] = $clause;
554
+ }
555
+
556
+ $table_where = implode( ' AND ', $table_where );
557
558
+ // Set table order (by primary or unique keys)
559
+ $table_order = array();
560
+ foreach ( $primary_keys as $key ) {
561
+ $table_order[] = sprintf( '`%s`', $key );
562
}
563
564
+ $table_order = implode( ', ', $table_order );
565
566
+ // Set query with rows count
567
+ $query = sprintf( 'SELECT * FROM `%s` WHERE %s ORDER BY %s LIMIT %d', $table_name, $table_where, $table_order, 1000 );
568
569
+ } else {
570
+
571
+ // Set table where by clauses
572
+ $table_where = array( 1 );
573
+ foreach ( $this->get_table_where_clauses( $table_name ) as $clause ) {
574
+ $table_where[] = $clause;
575
+ }
576
577
+ $table_where = implode( ' AND ', $table_where );
578
579
+ // Set table order (by first column)
580
+ $table_order = 1;
581
582
+ // Set query with offset and rows count
583
+ $query = sprintf( 'SELECT * FROM `%s` WHERE %s ORDER BY %s LIMIT %d, %d', $table_name, $table_where, $table_order, $table_offset, 1000 );
584
}
585
586
+ // Apply additional table prefix columns
587
+ $columns = $this->get_table_prefix_columns( $table_name );
588
+
589
+ // Get results
590
+ $result = $this->query( $query );
591
+
592
+ // Generate insert statements
593
+ if ( $num_rows = $this->num_rows( $result ) ) {
594
+
595
+ // Loop over table rows
596
+ while ( $row = $this->fetch_assoc( $result ) ) {
597
+
598
+ // Write start transaction
599
+ if ( $table_offset % Ai1wm_Database::QUERIES_PER_TRANSACTION === 0 ) {
600
+ ai1wm_write( $file_handler, "START TRANSACTION;\n" );
601
+ }
602
+
603
+ $items = array();
604
+ foreach ( $row as $key => $value ) {
605
+ // Replace table prefix columns
606
+ if ( isset( $columns[ strtolower( $key ) ] ) ) {
607
+ $value = $this->replace_table_prefixes( $value, 0 );
608
+ }
609
610
+ // Replace table values
611
+ $items[] = is_null( $value ) ? 'NULL' : "'" . $this->escape( $value ) . "'";
612
+ }
613
+
614
+ // Set table values
615
+ $table_values = implode( ',', $items );
616
+
617
+ // Set insert statement
618
+ $table_insert = "INSERT INTO `{$new_table_name}` VALUES ({$table_values});\n";
619
+
620
+ // Write insert statement
621
+ ai1wm_write( $file_handler, $table_insert );
622
+
623
+ // Set current table keys
624
+ foreach ( $primary_keys as $key ) {
625
+ $table_keys[ $key ] = $row[ $key ];
626
+ }
627
+
628
+ // Set current table rows
629
+ $table_offset++;
630
+
631
+ // Write end of transaction
632
+ if ( $table_offset % Ai1wm_Database::QUERIES_PER_TRANSACTION === 0 ) {
633
+ ai1wm_write( $file_handler, "COMMIT;\n" );
634
+ }
635
+ }
636
+
637
+ // Write end of transaction
638
+ if ( $table_offset % Ai1wm_Database::QUERIES_PER_TRANSACTION !== 0 ) {
639
+ ai1wm_write( $file_handler, "COMMIT;\n" );
640
+ }
641
+ } else {
642
643
+ // Set current table keys
644
+ $table_keys = array();
645
646
+ // Set current table offset
647
+ $table_offset = 0;
648
}
649
+
650
+ // Close result cursor
651
+ $this->free_result( $result );
652
+
653
+ // Time elapsed
654
+ if ( $timeout ) {
655
+ if ( ( microtime( true ) - $start ) > $timeout ) {
656
+ $completed = false;
657
+ break 2;
658
+ }
659
+ }
660
+ } while ( $num_rows > 0 );
661
}
662
663
// Close file handler
767
* @return string
768
*/
769
protected function get_version() {
770
$result = $this->query( "SHOW VARIABLES LIKE 'version'" );
771
+ $row = $this->fetch_assoc( $result );
772
773
// Close result cursor
774
$this->free_result( $result );
775
776
+ // Get version
777
+ if ( isset( $row['Value'] ) ) {
778
+ return $row['Value'];
779
+ }
780
}
781
782
/**
785
* @return int
786
*/
787
protected function get_max_allowed_packet() {
788
$result = $this->query( "SHOW VARIABLES LIKE 'max_allowed_packet'" );
789
+ $row = $this->fetch_assoc( $result );
790
791
// Close result cursor
792
$this->free_result( $result );
793
794
+ // Get max allowed packet
795
+ if ( isset( $row['Value'] ) ) {
796
+ return $row['Value'];
797
+ }
798
}
799
800
/**
804
* @return string
805
*/
806
protected function get_collation( $collation_name ) {
807
$result = $this->query( "SHOW COLLATION LIKE '{$collation_name}'" );
808
+ $row = $this->fetch_assoc( $result );
809
+
810
+ // Close result cursor
811
+ $this->free_result( $result );
812
+
813
+ // Get collation name
814
+ if ( isset( $row['Collation'] ) ) {
815
+ return $row['Collation'];
816
+ }
817
+ }
818
+
819
+ /**
820
+ * Get MySQL create table
821
+ *
822
+ * @param string $table_name Table name
823
+ * @return string
824
+ */
825
+ protected function get_create_table( $table_name ) {
826
+ $result = $this->query( "SHOW CREATE TABLE `{$table_name}`" );
827
+ $row = $this->fetch_assoc( $result );
828
+
829
+ // Close result cursor
830
+ $this->free_result( $result );
831
+
832
+ // Get create table
833
+ if ( isset( $row['Create Table'] ) ) {
834
+ return $row['Create Table'];
835
+ }
836
+ }
837
+
838
+ /**
839
+ * Get MySQL primary keys
840
+ *
841
+ * @param string $table_name Table name
842
+ * @return array
843
+ */
844
+ protected function get_primary_keys( $table_name ) {
845
+ $primary_keys = array();
846
+
847
+ // Get primary keys
848
+ $result = $this->query( "SHOW KEYS FROM `{$table_name}` WHERE Key_name = 'PRIMARY'" );
849
+ while ( $row = $this->fetch_assoc( $result ) ) {
850
+ if ( isset( $row['Column_name'] ) ) {
851
+ $primary_keys[] = $row['Column_name'];
852
}
853
}
854
855
// Close result cursor
856
$this->free_result( $result );
857
858
+ return $primary_keys;
859
+ }
860
+
861
+ /**
862
+ * Get MySQL unique keys
863
+ *
864
+ * @param string $table_name Table name
865
+ * @return array
866
+ */
867
+ protected function get_unique_keys( $table_name ) {
868
+ $unique_keys = array();
869
+
870
+ // Get primary keys
871
+ $result = $this->query( "SHOW KEYS FROM `{$table_name}` WHERE Non_unique = 0" );
872
+ while ( $row = $this->fetch_assoc( $result ) ) {
873
+ if ( isset( $row['Column_name'] ) ) {
874
+ $unique_keys[] = $row['Column_name'];
875
+ }
876
+ }
877
+
878
+ // Close result cursor
879
+ $this->free_result( $result );
880
+
881
+ return $unique_keys;
882
}
883
884
/**
1216
*/
1217
abstract public function fetch_row( $result );
1218
1219
+ /**
1220
+ * Return the number for rows from MySQL results
1221
+ *
1222
+ * @param resource $result MySQL resource
1223
+ * @return int
1224
+ */
1225
+ abstract public function num_rows( $result );
1226
+
1227
/**
1228
* Free MySQL result memory
1229
*
lib/vendor/servmask/filesystem/class-ai1wm-file-htaccess.php CHANGED
@@ -24,14 +24,13 @@
24
*/
25
26
class Ai1wm_File_Htaccess {
27
-
28
/**
29
* Create .htaccess file
30
*
31
* The method will create .htaccess file with contents 'AddType application/octet-stream .wpress'
32
*
33
- * @param string $path Path to the .htaccess file
34
- * @return boolean|null
35
*/
36
public static function create( $path ) {
37
$contents = "<IfModule mod_mime.c>\n" .
24
*/
25
26
class Ai1wm_File_Htaccess {
27
/**
28
* Create .htaccess file
29
*
30
* The method will create .htaccess file with contents 'AddType application/octet-stream .wpress'
31
*
32
+ * @param string $path Path to the backups directory
33
+ * @return boolean
34
*/
35
public static function create( $path ) {
36
$contents = "<IfModule mod_mime.c>\n" .
lib/vendor/servmask/filesystem/class-ai1wm-file-index.php CHANGED
@@ -32,10 +32,11 @@ class Ai1wm_File_Index {
32
* at the path specified by the argument.
33
*
34
* @param string $path Path to the index.php file
35
- * @return boolean|null
36
*/
37
public static function create( $path ) {
38
$contents = '<?php // silence is golden';
39
return Ai1wm_File::create( $path, $contents );
40
}
41
}
32
* at the path specified by the argument.
33
*
34
* @param string $path Path to the index.php file
35
+ * @return boolean
36
*/
37
public static function create( $path ) {
38
$contents = '<?php // silence is golden';
39
+
40
return Ai1wm_File::create( $path, $contents );
41
}
42
}
lib/vendor/servmask/filesystem/class-ai1wm-file-webconfig.php CHANGED
@@ -31,7 +31,7 @@ class Ai1wm_File_Webconfig {
31
* The method will create web.config file with contents '<mimeMap fileExtension=".wpress" mimeType="application/octet-stream" />'
32
*
33
* @param string $path Path to the web.config file
34
- * @return boolean|null
35
*/
36
public static function create( $path ) {
37
$contents = "<configuration>\n" .
31
* The method will create web.config file with contents '<mimeMap fileExtension=".wpress" mimeType="application/octet-stream" />'
32
*
33
* @param string $path Path to the web.config file
34
+ * @return boolean
35
*/
36
public static function create( $path ) {
37
$contents = "<configuration>\n" .
lib/vendor/servmask/filesystem/class-ai1wm-file.php CHANGED
@@ -28,21 +28,21 @@ class Ai1wm_File {
28
/**
29
* Create a file with contents
30
*
31
- * The method will only create the file if it doesn't already exist.
32
- *
33
* @param string $path Path to the file
34
* @param string $contents Contents of the file
35
*
36
- * @return boolean|null
37
*/
38
public static function create( $path, $contents ) {
39
- if ( ! is_file( $path ) ) {
40
- $handle = ai1wm_open( $path, 'w' );
41
- if ( false === $handle ) {
42
- return false;
43
}
44
- ai1wm_write( $handle, $contents );
45
- ai1wm_close( $handle );
46
}
47
}
48
}
28
/**
29
* Create a file with contents
30
*
31
* @param string $path Path to the file
32
* @param string $contents Contents of the file
33
*
34
+ * @return boolean
35
*/
36
public static function create( $path, $contents ) {
37
+ $is_written = false;
38
+ if ( ( $handle = @fopen( $path, 'w' ) ) !== false ) {
39
+ if ( @fwrite( $handle, $contents ) !== false ) {
40
+ $is_written = true;
41
}
42
+
43
+ @fclose( $handle );
44
}
45
+
46
+ return $is_written;
47
}
48
}
lib/view/main/admin-head.php CHANGED
@@ -1,11 +1,11 @@
1
<style type="text/css" media="all">
2
@font-face {
3
font-family: 'servmask';
4
- src: url('<?php echo esc_url( AI1WM_URL ); ?>/lib/view/assets/font/servmask.eot?v=<?php echo AI1WM_VERSION; ?>');
5
- src: url('<?php echo esc_url( AI1WM_URL ); ?>/lib/view/assets/font/servmask.eot?v=<?php echo AI1WM_VERSION; ?>#iefix') format('embedded-opentype'),
6
- url('<?php echo esc_url( AI1WM_URL ); ?>/lib/view/assets/font/servmask.woff?v=<?php echo AI1WM_VERSION; ?>') format('woff'),
7
- url('<?php echo esc_url( AI1WM_URL ); ?>/lib/view/assets/font/servmask.ttf?v=<?php echo AI1WM_VERSION; ?>') format('truetype'),
8
- url('<?php echo esc_url( AI1WM_URL ); ?>/lib/view/assets/font/servmask.svg?v=<?php echo AI1WM_VERSION; ?>#servmask') format('svg');
9
font-weight: normal;
10
font-style: normal;
11
}
@@ -56,7 +56,7 @@
56
.toplevel_page_site-migration-export > div.wp-menu-image:before {
57
line-height: 27px !important;
58
content: '';
59
- background: url('<?php echo esc_url( AI1WM_URL ); ?>/lib/view/assets/img/logo-20x20.png') no-repeat center center;
60
speak: none !important;
61
font-style: normal !important;
62
font-weight: normal !important;
@@ -73,7 +73,7 @@
73
position: relative;
74
display: inline-block;
75
content: '';
76
- background: url('<?php echo esc_url( AI1WM_URL ); ?>/lib/view/assets/img/logo-20x20.png') no-repeat center center;
77
speak: none !important;
78
font-style: normal !important;
79
font-weight: normal !important;
1
<style type="text/css" media="all">
2
@font-face {
3
font-family: 'servmask';
4
+ src: url('<?php echo wp_make_link_relative( AI1WM_URL ); ?>/lib/view/assets/font/servmask.eot?v=<?php echo AI1WM_VERSION; ?>');
5
+ src: url('<?php echo wp_make_link_relative( AI1WM_URL ); ?>/lib/view/assets/font/servmask.eot?v=<?php echo AI1WM_VERSION; ?>#iefix') format('embedded-opentype'),
6
+ url('<?php echo wp_make_link_relative( AI1WM_URL ); ?>/lib/view/assets/font/servmask.woff?v=<?php echo AI1WM_VERSION; ?>') format('woff'),
7
+ url('<?php echo wp_make_link_relative( AI1WM_URL ); ?>/lib/view/assets/font/servmask.ttf?v=<?php echo AI1WM_VERSION; ?>') format('truetype'),
8
+ url('<?php echo wp_make_link_relative( AI1WM_URL ); ?>/lib/view/assets/font/servmask.svg?v=<?php echo AI1WM_VERSION; ?>#servmask') format('svg');
9
font-weight: normal;
10
font-style: normal;
11
}
56
.toplevel_page_site-migration-export > div.wp-menu-image:before {
57
line-height: 27px !important;
58
content: '';
59
+ background: url('<?php echo wp_make_link_relative( AI1WM_URL ); ?>/lib/view/assets/img/logo-20x20.png') no-repeat center center;
60
speak: none !important;
61
font-style: normal !important;
62
font-weight: normal !important;
73
position: relative;
74
display: inline-block;
75
content: '';
76
+ background: url('<?php echo wp_make_link_relative( AI1WM_URL ); ?>/lib/view/assets/img/logo-20x20.png') no-repeat center center;
77
speak: none !important;
78
font-style: normal !important;
79
font-weight: normal !important;
lib/view/main/backups-htaccess-notice.php ADDED
@@ -0,0 +1,15 @@
1
+ <div class="error">
2
+ <p>
3
+ <?php
4
+ printf(
5
+ __(
6
+ 'All in One WP Migration is not able to create <strong>%s</strong> file. ' .
7
+ 'Try to change permissions of the parent folder or send us an email at ' .
8
+ '<a href="mailto:support@servmask.com">support@servmask.com</a> for assistance.',
9
+ AI1WM_PLUGIN_NAME
10
+ ),
11
+ AI1WM_BACKUPS_HTACCESS
12
+ )
13
+ ?>
14
+ </p>
15
+ </div>
lib/view/main/{index-notice.php → backups-index-notice.php} RENAMED
@@ -8,7 +8,7 @@
8
'<a href="mailto:support@servmask.com">support@servmask.com</a> for assistance.',
9
AI1WM_PLUGIN_NAME
10
),
11
- AI1WM_DIRECTORY_INDEX
12
)
13
?>
14
</p>
8
'<a href="mailto:support@servmask.com">support@servmask.com</a> for assistance.',
9
AI1WM_PLUGIN_NAME
10
),
11
+ AI1WM_BACKUPS_INDEX
12
)
13
?>
14
</p>
lib/view/main/{backups-notice.php → backups-path-notice.php} RENAMED
File without changes
lib/view/main/backups-webconfig-notice.php ADDED
@@ -0,0 +1,15 @@
1
+ <div class="error">
2
+ <p>
3
+ <?php
4
+ printf(
5
+ __(
6
+ 'All in One WP Migration is not able to create <strong>%s</strong> file. ' .
7
+ 'Try to change permissions of the parent folder or send us an email at ' .
8
+ '<a href="mailto:support@servmask.com">support@servmask.com</a> for assistance.',
9
+ AI1WM_PLUGIN_NAME
10
+ ),
11
+ AI1WM_BACKUPS_WEBCONFIG
12
+ )
13
+ ?>
14
+ </p>
15
+ </div>
lib/view/main/storage-index-notice.php ADDED
@@ -0,0 +1,15 @@
1
+ <div class="error">
2
+ <p>
3
+ <?php
4
+ printf(
5
+ __(
6
+ 'All in One WP Migration is not able to create <strong>%s</strong> file. ' .
7
+ 'Try to change permissions of the parent folder or send us an email at ' .
8
+ '<a href="mailto:support@servmask.com">support@servmask.com</a> for assistance.',
9
+ AI1WM_PLUGIN_NAME
10
+ ),
11
+ AI1WM_STORAGE_INDEX
12
+ )
13
+ ?>
14
+ </p>
15
+ </div>
lib/view/main/{storage-notice.php → storage-path-notice.php} RENAMED
File without changes
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: yani.iliev, bangelov, pimjitsawang
3
Tags: move, transfer, copy, migrate, backup, clone, restore, db migration, wordpress migration, website migration, database export, database import, apoyo, sauvegarde, di riserva, バックアップ
4
Requires at least: 3.3
5
Tested up to: 4.8
6
- Stable tag: 6.52
7
License: GPLv2 or later
8
9
Move, transfer, copy, migrate, and backup a site with 1-click. Quick, easy, and reliable.
@@ -90,6 +90,16 @@ Alternatively you can download the plugin using the download button on this page
90
3. Plugin Menu
91
92
== Changelog ==
93
= 6.52 =
94
**Changed**
95
3
Tags: move, transfer, copy, migrate, backup, clone, restore, db migration, wordpress migration, website migration, database export, database import, apoyo, sauvegarde, di riserva, バックアップ
4
Requires at least: 3.3
5
Tested up to: 4.8
6
+ Stable tag: 6.53
7
License: GPLv2 or later
8
9
Move, transfer, copy, migrate, and backup a site with 1-click. Quick, easy, and reliable.
90
3. Plugin Menu
91
92
== Changelog ==
93
+ = 6.53 =
94
+ **Added**
95
+
96
+ * Warn the user when web server configuration files are not created
97
+
98
+ **Changed**
99
+
100
+ * Buffered queries instead of unbuffered queries
101
+ * Relative URLs instead of absolute URLs when loading fonts and images
102
+
103
= 6.52 =
104
**Changed**
105