Version Description
Download this release
Release Info
Developer | bangelov |
Plugin | All-in-One WP Migration |
Version | 6.75 |
Comparing to | |
See all releases |
Code changes from version 6.74 to 6.75
- all-in-one-wp-migration.php +1 -1
- constants.php +1 -1
- lib/controller/class-ai1wm-main-controller.php +1 -1
- lib/model/class-ai1wm-extensions.php +1 -1
- lib/model/class-ai1wm-feedback.php +1 -1
- lib/model/export/class-ai1wm-export-config-file.php +1 -1
- lib/model/export/class-ai1wm-export-content.php +6 -4
- lib/model/export/class-ai1wm-export-database-file.php +1 -1
- lib/model/export/class-ai1wm-export-database.php +1 -1
- lib/model/import/class-ai1wm-import-content.php +6 -4
- lib/model/import/class-ai1wm-import-database.php +1 -1
- lib/model/import/class-ai1wm-import-validate.php +1 -1
- lib/vendor/servmask/archiver/class-ai1wm-compressor.php +2 -3
- lib/vendor/servmask/archiver/class-ai1wm-extractor.php +7 -10
- lib/vendor/servmask/command/class-ai1wm-wp-cli-command.php +6 -0
- lib/vendor/servmask/database/class-ai1wm-database-utility.php +9 -8
- lib/vendor/servmask/database/class-ai1wm-database.php +4 -6
- lib/vendor/servmask/filesystem/class-ai1wm-file-webconfig.php +1 -0
- lib/view/assets/javascript/backups.min.js +9 -14
- lib/view/assets/javascript/export.min.js +9 -14
- lib/view/assets/javascript/feedback.min.js +9 -14
- lib/view/assets/javascript/import.min.js +9 -14
- lib/view/common/leave-feedback.php +2 -2
- readme.txt +9 -2
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.
|
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.75
|
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.
|
35 |
|
36 |
// ===============
|
37 |
// = Plugin Name =
|
31 |
// ==================
|
32 |
// = Plugin Version =
|
33 |
// ==================
|
34 |
+
define( 'AI1WM_VERSION', '6.75' );
|
35 |
|
36 |
// ===============
|
37 |
// = Plugin Name =
|
lib/controller/class-ai1wm-main-controller.php
CHANGED
@@ -840,7 +840,7 @@ class Ai1wm_Main_Controller {
|
|
840 |
),
|
841 |
) );
|
842 |
|
843 |
-
wp_localize_script( '
|
844 |
'check_for_updates' => __( 'Check for updates', AI1WM_PLUGIN_NAME ),
|
845 |
'invalid_purchase_id' => __( 'Your purchase ID is invalid, please <a href="mailto:support@servmask.com">contact us</a>', AI1WM_PLUGIN_NAME ),
|
846 |
) );
|
840 |
),
|
841 |
) );
|
842 |
|
843 |
+
wp_localize_script( 'ai1wm_updater', 'ai1wm_locale', array(
|
844 |
'check_for_updates' => __( 'Check for updates', AI1WM_PLUGIN_NAME ),
|
845 |
'invalid_purchase_id' => __( 'Your purchase ID is invalid, please <a href="mailto:support@servmask.com">contact us</a>', AI1WM_PLUGIN_NAME ),
|
846 |
) );
|
lib/model/class-ai1wm-extensions.php
CHANGED
@@ -148,7 +148,7 @@ class Ai1wm_Extensions {
|
|
148 |
'about' => AI1WMME_PLUGIN_ABOUT,
|
149 |
'basename' => AI1WMME_PLUGIN_BASENAME,
|
150 |
'version' => AI1WMME_VERSION,
|
151 |
-
'requires' => '3.
|
152 |
'short' => AI1WMME_PLUGIN_SHORT,
|
153 |
);
|
154 |
}
|
148 |
'about' => AI1WMME_PLUGIN_ABOUT,
|
149 |
'basename' => AI1WMME_PLUGIN_BASENAME,
|
150 |
'version' => AI1WMME_VERSION,
|
151 |
+
'requires' => '3.57',
|
152 |
'short' => AI1WMME_PLUGIN_SHORT,
|
153 |
);
|
154 |
}
|
lib/model/class-ai1wm-feedback.php
CHANGED
@@ -40,7 +40,7 @@ class Ai1wm_Feedback {
|
|
40 |
|
41 |
// Submit feedback to ServMask
|
42 |
if ( empty( $type ) ) {
|
43 |
-
$errors[] = __( 'Feedback type is
|
44 |
} elseif ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
|
45 |
$errors[] = __( 'Your email is not valid.', AI1WM_PLUGIN_NAME );
|
46 |
} elseif ( empty( $message ) ) {
|
40 |
|
41 |
// Submit feedback to ServMask
|
42 |
if ( empty( $type ) ) {
|
43 |
+
$errors[] = __( 'Feedback type is not valid.', AI1WM_PLUGIN_NAME );
|
44 |
} elseif ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
|
45 |
$errors[] = __( 'Your email is not valid.', AI1WM_PLUGIN_NAME );
|
46 |
} elseif ( empty( $message ) ) {
|
lib/model/export/class-ai1wm-export-config-file.php
CHANGED
@@ -63,7 +63,7 @@ class Ai1wm_Export_Config_File {
|
|
63 |
$archive->set_file_pointer( $archive_bytes_offset );
|
64 |
|
65 |
// Add package.json to archive
|
66 |
-
if ( $archive->add_file( ai1wm_package_path( $params ), AI1WM_PACKAGE_NAME, $package_bytes_written, $package_bytes_offset
|
67 |
|
68 |
// Set progress
|
69 |
Ai1wm_Status::info( __( 'Done archiving configuration file.', AI1WM_PLUGIN_NAME ) );
|
63 |
$archive->set_file_pointer( $archive_bytes_offset );
|
64 |
|
65 |
// Add package.json to archive
|
66 |
+
if ( $archive->add_file( ai1wm_package_path( $params ), AI1WM_PACKAGE_NAME, $package_bytes_written, $package_bytes_offset ) ) {
|
67 |
|
68 |
// Set progress
|
69 |
Ai1wm_Status::info( __( 'Done archiving configuration file.', AI1WM_PLUGIN_NAME ) );
|
lib/model/export/class-ai1wm-export-content.php
CHANGED
@@ -98,7 +98,7 @@ class Ai1wm_Export_Content {
|
|
98 |
$file_bytes_written = 0;
|
99 |
|
100 |
// Add file to archive
|
101 |
-
if ( ( $completed = $archive->add_file( WP_CONTENT_DIR . DIRECTORY_SEPARATOR . $path, $path, $file_bytes_written, $file_bytes_offset
|
102 |
$file_bytes_offset = 0;
|
103 |
|
104 |
// Get filemap bytes offset
|
@@ -115,9 +115,11 @@ class Ai1wm_Export_Content {
|
|
115 |
Ai1wm_Status::info( sprintf( __( 'Archiving %d files...<br />%d%% complete', AI1WM_PLUGIN_NAME ), $total_files_count, $progress ) );
|
116 |
|
117 |
// More than 10 seconds have passed, break and do another request
|
118 |
-
if ( (
|
119 |
-
$
|
120 |
-
|
|
|
|
|
121 |
}
|
122 |
}
|
123 |
|
98 |
$file_bytes_written = 0;
|
99 |
|
100 |
// Add file to archive
|
101 |
+
if ( ( $completed = $archive->add_file( WP_CONTENT_DIR . DIRECTORY_SEPARATOR . $path, $path, $file_bytes_written, $file_bytes_offset ) ) ) {
|
102 |
$file_bytes_offset = 0;
|
103 |
|
104 |
// Get filemap bytes offset
|
115 |
Ai1wm_Status::info( sprintf( __( 'Archiving %d files...<br />%d%% complete', AI1WM_PLUGIN_NAME ), $total_files_count, $progress ) );
|
116 |
|
117 |
// More than 10 seconds have passed, break and do another request
|
118 |
+
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
|
119 |
+
if ( ( microtime( true ) - $start ) > $timeout ) {
|
120 |
+
$completed = false;
|
121 |
+
break;
|
122 |
+
}
|
123 |
}
|
124 |
}
|
125 |
|
lib/model/export/class-ai1wm-export-database-file.php
CHANGED
@@ -68,7 +68,7 @@ class Ai1wm_Export_Database_File {
|
|
68 |
$archive->set_file_pointer( $archive_bytes_offset );
|
69 |
|
70 |
// Add database.sql to archive
|
71 |
-
if ( $archive->add_file( ai1wm_database_path( $params ), AI1WM_DATABASE_NAME, $database_bytes_written, $database_bytes_offset
|
72 |
|
73 |
// Set progress
|
74 |
Ai1wm_Status::info( __( 'Done archiving database.', AI1WM_PLUGIN_NAME ) );
|
68 |
$archive->set_file_pointer( $archive_bytes_offset );
|
69 |
|
70 |
// Add database.sql to archive
|
71 |
+
if ( $archive->add_file( ai1wm_database_path( $params ), AI1WM_DATABASE_NAME, $database_bytes_written, $database_bytes_offset ) ) {
|
72 |
|
73 |
// Set progress
|
74 |
Ai1wm_Status::info( __( 'Done archiving database.', AI1WM_PLUGIN_NAME ) );
|
lib/model/export/class-ai1wm-export-database.php
CHANGED
@@ -133,7 +133,7 @@ class Ai1wm_Export_Database {
|
|
133 |
->set_table_prefix_columns( ai1wm_table_prefix() . 'usermeta', array( 'meta_key' ) );
|
134 |
|
135 |
// Export database
|
136 |
-
if ( $mysql->export( ai1wm_database_path( $params ), $table_index, $table_offset
|
137 |
|
138 |
// Set progress
|
139 |
Ai1wm_Status::info( __( 'Done exporting database.', AI1WM_PLUGIN_NAME ) );
|
133 |
->set_table_prefix_columns( ai1wm_table_prefix() . 'usermeta', array( 'meta_key' ) );
|
134 |
|
135 |
// Export database
|
136 |
+
if ( $mysql->export( ai1wm_database_path( $params ), $table_index, $table_offset ) ) {
|
137 |
|
138 |
// Set progress
|
139 |
Ai1wm_Status::info( __( 'Done exporting database.', AI1WM_PLUGIN_NAME ) );
|
lib/model/import/class-ai1wm-import-content.php
CHANGED
@@ -154,7 +154,7 @@ class Ai1wm_Import_Content {
|
|
154 |
) );
|
155 |
|
156 |
// Extract a file from archive to WP_CONTENT_DIR
|
157 |
-
if ( ( $completed = $archive->extract_one_file_to( WP_CONTENT_DIR, $exclude_files, $old_paths, $new_paths, $file_bytes_written, $file_bytes_offset
|
158 |
$file_bytes_offset = 0;
|
159 |
}
|
160 |
|
@@ -171,9 +171,11 @@ class Ai1wm_Import_Content {
|
|
171 |
Ai1wm_Status::info( sprintf( __( 'Restoring %d files...<br />%d%% complete', AI1WM_PLUGIN_NAME ), $total_files_count, $progress ) );
|
172 |
|
173 |
// More than 10 seconds have passed, break and do another request
|
174 |
-
if ( (
|
175 |
-
$
|
176 |
-
|
|
|
|
|
177 |
}
|
178 |
}
|
179 |
|
154 |
) );
|
155 |
|
156 |
// Extract a file from archive to WP_CONTENT_DIR
|
157 |
+
if ( ( $completed = $archive->extract_one_file_to( WP_CONTENT_DIR, $exclude_files, $old_paths, $new_paths, $file_bytes_written, $file_bytes_offset ) ) ) {
|
158 |
$file_bytes_offset = 0;
|
159 |
}
|
160 |
|
171 |
Ai1wm_Status::info( sprintf( __( 'Restoring %d files...<br />%d%% complete', AI1WM_PLUGIN_NAME ), $total_files_count, $progress ) );
|
172 |
|
173 |
// More than 10 seconds have passed, break and do another request
|
174 |
+
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
|
175 |
+
if ( ( microtime( true ) - $start ) > $timeout ) {
|
176 |
+
$completed = false;
|
177 |
+
break;
|
178 |
+
}
|
179 |
}
|
180 |
}
|
181 |
|
lib/model/import/class-ai1wm-import-database.php
CHANGED
@@ -709,7 +709,7 @@ class Ai1wm_Import_Database {
|
|
709 |
$mysql->set_visual_composer( ! is_wp_error( validate_plugin( 'js_composer/js_composer.php' ) ) );
|
710 |
|
711 |
// Import database
|
712 |
-
if ( $mysql->import( ai1wm_database_path( $params ), $query_offset
|
713 |
|
714 |
// Set progress
|
715 |
Ai1wm_Status::info( __( 'Done restoring database.', AI1WM_PLUGIN_NAME ) );
|
709 |
$mysql->set_visual_composer( ! is_wp_error( validate_plugin( 'js_composer/js_composer.php' ) ) );
|
710 |
|
711 |
// Import database
|
712 |
+
if ( $mysql->import( ai1wm_database_path( $params ), $query_offset ) ) {
|
713 |
|
714 |
// Set progress
|
715 |
Ai1wm_Status::info( __( 'Done restoring database.', AI1WM_PLUGIN_NAME ) );
|
lib/model/import/class-ai1wm-import-validate.php
CHANGED
@@ -106,7 +106,7 @@ class Ai1wm_Import_Validate {
|
|
106 |
$file_bytes_written = 0;
|
107 |
|
108 |
// Unpack package.json, multisite.json and database.sql files
|
109 |
-
if ( ( $completed = $archive->extract_by_files_array( ai1wm_storage_path( $params ), array( AI1WM_PACKAGE_NAME, AI1WM_MULTISITE_NAME, AI1WM_DATABASE_NAME ), array(), $file_bytes_written, $file_bytes_offset
|
110 |
$file_bytes_offset = 0;
|
111 |
}
|
112 |
|
106 |
$file_bytes_written = 0;
|
107 |
|
108 |
// Unpack package.json, multisite.json and database.sql files
|
109 |
+
if ( ( $completed = $archive->extract_by_files_array( ai1wm_storage_path( $params ), array( AI1WM_PACKAGE_NAME, AI1WM_MULTISITE_NAME, AI1WM_DATABASE_NAME ), array(), $file_bytes_written, $file_bytes_offset ) ) ) {
|
110 |
$file_bytes_offset = 0;
|
111 |
}
|
112 |
|
lib/vendor/servmask/archiver/class-ai1wm-compressor.php
CHANGED
@@ -42,7 +42,6 @@ class Ai1wm_Compressor extends Ai1wm_Archiver {
|
|
42 |
* @param string $new_file_name Write the file with a different name
|
43 |
* @param int $file_written File written (in bytes)
|
44 |
* @param int $file_offset File offset (in bytes)
|
45 |
-
* @param int $timeout Process timeout (in seconds)
|
46 |
*
|
47 |
* @throws \Ai1wm_Not_Seekable_Exception
|
48 |
* @throws \Ai1wm_Not_Writable_Exception
|
@@ -50,7 +49,7 @@ class Ai1wm_Compressor extends Ai1wm_Archiver {
|
|
50 |
*
|
51 |
* @return bool
|
52 |
*/
|
53 |
-
public function add_file( $file_name, $new_file_name = '', &$file_written = 0, &$file_offset = 0
|
54 |
$file_written = 0;
|
55 |
|
56 |
// Replace forward slash with current directory separator in file name
|
@@ -104,7 +103,7 @@ class Ai1wm_Compressor extends Ai1wm_Archiver {
|
|
104 |
}
|
105 |
|
106 |
// Time elapsed
|
107 |
-
if ( $timeout ) {
|
108 |
if ( ( microtime( true ) - $start ) > $timeout ) {
|
109 |
$completed = false;
|
110 |
break;
|
42 |
* @param string $new_file_name Write the file with a different name
|
43 |
* @param int $file_written File written (in bytes)
|
44 |
* @param int $file_offset File offset (in bytes)
|
|
|
45 |
*
|
46 |
* @throws \Ai1wm_Not_Seekable_Exception
|
47 |
* @throws \Ai1wm_Not_Writable_Exception
|
49 |
*
|
50 |
* @return bool
|
51 |
*/
|
52 |
+
public function add_file( $file_name, $new_file_name = '', &$file_written = 0, &$file_offset = 0 ) {
|
53 |
$file_written = 0;
|
54 |
|
55 |
// Replace forward slash with current directory separator in file name
|
103 |
}
|
104 |
|
105 |
// Time elapsed
|
106 |
+
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
|
107 |
if ( ( microtime( true ) - $start ) > $timeout ) {
|
108 |
$completed = false;
|
109 |
break;
|
lib/vendor/servmask/archiver/class-ai1wm-extractor.php
CHANGED
@@ -152,14 +152,13 @@ class Ai1wm_Extractor extends Ai1wm_Archiver {
|
|
152 |
* @param array $new_paths New replace paths
|
153 |
* @param int $file_written File written (in bytes)
|
154 |
* @param int $file_offset File offset (in bytes)
|
155 |
-
* @param int $timeout Process timeout (in seconds)
|
156 |
*
|
157 |
* @throws \Ai1wm_Not_Directory_Exception
|
158 |
* @throws \Ai1wm_Not_Seekable_Exception
|
159 |
*
|
160 |
* @return bool
|
161 |
*/
|
162 |
-
public function extract_one_file_to( $location, $exclude = array(), $old_paths = array(), $new_paths = array(), &$file_written = 0, &$file_offset = 0
|
163 |
if ( false === is_dir( $location ) ) {
|
164 |
throw new Ai1wm_Not_Directory_Exception( sprintf( 'Location is not a directory: %s', $location ) );
|
165 |
}
|
@@ -243,7 +242,7 @@ class Ai1wm_Extractor extends Ai1wm_Archiver {
|
|
243 |
$file_written = 0;
|
244 |
|
245 |
// We have a match, let's extract the file
|
246 |
-
if ( ( $completed = $this->extract_to( $file_name, $file_size, $file_mtime, $file_written, $file_offset
|
247 |
$file_offset = 0;
|
248 |
}
|
249 |
} else {
|
@@ -268,14 +267,13 @@ class Ai1wm_Extractor extends Ai1wm_Archiver {
|
|
268 |
* @param array $exclude Files to exclude
|
269 |
* @param int $file_written File written (in bytes)
|
270 |
* @param int $file_offset File offset (in bytes)
|
271 |
-
* @param int $timeout Process timeout (in seconds)
|
272 |
*
|
273 |
* @throws \Ai1wm_Not_Directory_Exception
|
274 |
* @throws \Ai1wm_Not_Seekable_Exception
|
275 |
*
|
276 |
* @return bool
|
277 |
*/
|
278 |
-
public function extract_by_files_array( $location, $files = array(), $exclude = array(), &$file_written = 0, &$file_offset = 0
|
279 |
if ( false === is_dir( $location ) ) {
|
280 |
throw new Ai1wm_Not_Directory_Exception( sprintf( 'Location is not a directory: %s', $location ) );
|
281 |
}
|
@@ -361,7 +359,7 @@ class Ai1wm_Extractor extends Ai1wm_Archiver {
|
|
361 |
$file_written = 0;
|
362 |
|
363 |
// We have a match, let's extract the file and remove it from the array
|
364 |
-
if ( ( $completed = $this->extract_to( $file_name, $file_size, $file_mtime, $file_written, $file_offset
|
365 |
$file_offset = 0;
|
366 |
}
|
367 |
} else {
|
@@ -373,7 +371,7 @@ class Ai1wm_Extractor extends Ai1wm_Archiver {
|
|
373 |
}
|
374 |
|
375 |
// Time elapsed
|
376 |
-
if ( $timeout ) {
|
377 |
if ( ( microtime( true ) - $start ) > $timeout ) {
|
378 |
$completed = false;
|
379 |
break;
|
@@ -394,7 +392,6 @@ class Ai1wm_Extractor extends Ai1wm_Archiver {
|
|
394 |
* @param array $file_mtime File modified time (in seconds)
|
395 |
* @param int $file_written File written (in bytes)
|
396 |
* @param int $file_offset File offset (in bytes)
|
397 |
-
* @param int $timeout Process timeout (in seconds)
|
398 |
*
|
399 |
* @throws \Ai1wm_Not_Seekable_Exception
|
400 |
* @throws \Ai1wm_Not_Readable_Exception
|
@@ -402,7 +399,7 @@ class Ai1wm_Extractor extends Ai1wm_Archiver {
|
|
402 |
*
|
403 |
* @return bool
|
404 |
*/
|
405 |
-
private function extract_to( $file_name, $file_size, $file_mtime, &$file_written = 0, &$file_offset = 0
|
406 |
$file_written = 0;
|
407 |
|
408 |
// Flag to hold if file data has been processed
|
@@ -455,7 +452,7 @@ class Ai1wm_Extractor extends Ai1wm_Archiver {
|
|
455 |
}
|
456 |
|
457 |
// Time elapsed
|
458 |
-
if ( $timeout ) {
|
459 |
if ( ( microtime( true ) - $start ) > $timeout ) {
|
460 |
$completed = false;
|
461 |
break;
|
152 |
* @param array $new_paths New replace paths
|
153 |
* @param int $file_written File written (in bytes)
|
154 |
* @param int $file_offset File offset (in bytes)
|
|
|
155 |
*
|
156 |
* @throws \Ai1wm_Not_Directory_Exception
|
157 |
* @throws \Ai1wm_Not_Seekable_Exception
|
158 |
*
|
159 |
* @return bool
|
160 |
*/
|
161 |
+
public function extract_one_file_to( $location, $exclude = array(), $old_paths = array(), $new_paths = array(), &$file_written = 0, &$file_offset = 0 ) {
|
162 |
if ( false === is_dir( $location ) ) {
|
163 |
throw new Ai1wm_Not_Directory_Exception( sprintf( 'Location is not a directory: %s', $location ) );
|
164 |
}
|
242 |
$file_written = 0;
|
243 |
|
244 |
// We have a match, let's extract the file
|
245 |
+
if ( ( $completed = $this->extract_to( $file_name, $file_size, $file_mtime, $file_written, $file_offset ) ) ) {
|
246 |
$file_offset = 0;
|
247 |
}
|
248 |
} else {
|
267 |
* @param array $exclude Files to exclude
|
268 |
* @param int $file_written File written (in bytes)
|
269 |
* @param int $file_offset File offset (in bytes)
|
|
|
270 |
*
|
271 |
* @throws \Ai1wm_Not_Directory_Exception
|
272 |
* @throws \Ai1wm_Not_Seekable_Exception
|
273 |
*
|
274 |
* @return bool
|
275 |
*/
|
276 |
+
public function extract_by_files_array( $location, $files = array(), $exclude = array(), &$file_written = 0, &$file_offset = 0 ) {
|
277 |
if ( false === is_dir( $location ) ) {
|
278 |
throw new Ai1wm_Not_Directory_Exception( sprintf( 'Location is not a directory: %s', $location ) );
|
279 |
}
|
359 |
$file_written = 0;
|
360 |
|
361 |
// We have a match, let's extract the file and remove it from the array
|
362 |
+
if ( ( $completed = $this->extract_to( $file_name, $file_size, $file_mtime, $file_written, $file_offset ) ) ) {
|
363 |
$file_offset = 0;
|
364 |
}
|
365 |
} else {
|
371 |
}
|
372 |
|
373 |
// Time elapsed
|
374 |
+
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
|
375 |
if ( ( microtime( true ) - $start ) > $timeout ) {
|
376 |
$completed = false;
|
377 |
break;
|
392 |
* @param array $file_mtime File modified time (in seconds)
|
393 |
* @param int $file_written File written (in bytes)
|
394 |
* @param int $file_offset File offset (in bytes)
|
|
|
395 |
*
|
396 |
* @throws \Ai1wm_Not_Seekable_Exception
|
397 |
* @throws \Ai1wm_Not_Readable_Exception
|
399 |
*
|
400 |
* @return bool
|
401 |
*/
|
402 |
+
private function extract_to( $file_name, $file_size, $file_mtime, &$file_written = 0, &$file_offset = 0 ) {
|
403 |
$file_written = 0;
|
404 |
|
405 |
// Flag to hold if file data has been processed
|
452 |
}
|
453 |
|
454 |
// Time elapsed
|
455 |
+
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
|
456 |
if ( ( microtime( true ) - $start ) > $timeout ) {
|
457 |
$completed = false;
|
458 |
break;
|
lib/vendor/servmask/command/class-ai1wm-wp-cli-command.php
CHANGED
@@ -187,6 +187,9 @@ if ( class_exists( 'WP_CLI_Command' ) ) {
|
|
187 |
|
188 |
try {
|
189 |
|
|
|
|
|
|
|
190 |
// Remove filters
|
191 |
remove_filter( 'ai1wm_export', 'Ai1wm_Export_Clean::execute', 300 );
|
192 |
|
@@ -248,6 +251,9 @@ if ( class_exists( 'WP_CLI_Command' ) ) {
|
|
248 |
|
249 |
try {
|
250 |
|
|
|
|
|
|
|
251 |
// Remove filters
|
252 |
remove_filter( 'ai1wm_import', 'Ai1wm_Import_Upload::execute', 5 );
|
253 |
remove_filter( 'ai1wm_import', 'Ai1wm_Import_Confirm::execute', 100 );
|
187 |
|
188 |
try {
|
189 |
|
190 |
+
// Disable completed timeout
|
191 |
+
add_filter( 'ai1wm_completed_timeout', '__return_zero' );
|
192 |
+
|
193 |
// Remove filters
|
194 |
remove_filter( 'ai1wm_export', 'Ai1wm_Export_Clean::execute', 300 );
|
195 |
|
251 |
|
252 |
try {
|
253 |
|
254 |
+
// Disable completed timeout
|
255 |
+
add_filter( 'ai1wm_completed_timeout', '__return_zero' );
|
256 |
+
|
257 |
// Remove filters
|
258 |
remove_filter( 'ai1wm_import', 'Ai1wm_Import_Upload::execute', 5 );
|
259 |
remove_filter( 'ai1wm_import', 'Ai1wm_Import_Confirm::execute', 100 );
|
lib/vendor/servmask/database/class-ai1wm-database-utility.php
CHANGED
@@ -68,14 +68,16 @@ class Ai1wm_Database_Utility {
|
|
68 |
$data = $tmp;
|
69 |
unset( $tmp );
|
70 |
} elseif ( is_object( $data ) ) {
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
|
|
76 |
|
77 |
-
|
78 |
-
|
|
|
79 |
} else {
|
80 |
if ( is_string( $data ) ) {
|
81 |
if ( ! empty( $from ) && ! empty( $to ) ) {
|
@@ -88,7 +90,6 @@ class Ai1wm_Database_Utility {
|
|
88 |
return serialize( $data );
|
89 |
}
|
90 |
} catch ( Exception $e ) {
|
91 |
-
// pass
|
92 |
}
|
93 |
|
94 |
return $data;
|
68 |
$data = $tmp;
|
69 |
unset( $tmp );
|
70 |
} elseif ( is_object( $data ) ) {
|
71 |
+
if ( ! ( $data instanceof __PHP_Incomplete_Class ) ) {
|
72 |
+
$tmp = $data;
|
73 |
+
$props = get_object_vars( $data );
|
74 |
+
foreach ( $props as $key => $value ) {
|
75 |
+
$tmp->$key = self::replace_serialized_values( $from, $to, $value, false );
|
76 |
+
}
|
77 |
|
78 |
+
$data = $tmp;
|
79 |
+
unset( $tmp );
|
80 |
+
}
|
81 |
} else {
|
82 |
if ( is_string( $data ) ) {
|
83 |
if ( ! empty( $from ) && ! empty( $to ) ) {
|
90 |
return serialize( $data );
|
91 |
}
|
92 |
} catch ( Exception $e ) {
|
|
|
93 |
}
|
94 |
|
95 |
return $data;
|
lib/vendor/servmask/database/class-ai1wm-database.php
CHANGED
@@ -530,10 +530,9 @@ abstract class Ai1wm_Database {
|
|
530 |
* @param string $file_name Name of file
|
531 |
* @param int $table_index Table index
|
532 |
* @param int $table_offset Table offset
|
533 |
-
* @param int $timeout Process timeout
|
534 |
* @return bool
|
535 |
*/
|
536 |
-
public function export( $file_name, &$table_index = 0, &$table_offset = 0
|
537 |
// Set file handler
|
538 |
$file_handler = ai1wm_open( $file_name, 'ab' );
|
539 |
|
@@ -708,7 +707,7 @@ abstract class Ai1wm_Database {
|
|
708 |
$this->free_result( $result );
|
709 |
|
710 |
// Time elapsed
|
711 |
-
if ( $timeout ) {
|
712 |
if ( ( microtime( true ) - $start ) > $timeout ) {
|
713 |
$completed = false;
|
714 |
break 2;
|
@@ -728,10 +727,9 @@ abstract class Ai1wm_Database {
|
|
728 |
*
|
729 |
* @param string $file_name Name of file
|
730 |
* @param int $query_offset Query offset
|
731 |
-
* @param int $timeout Process timeout
|
732 |
* @return bool
|
733 |
*/
|
734 |
-
public function import( $file_name, &$query_offset = 0
|
735 |
// Set max allowed packet
|
736 |
$max_allowed_packet = $this->get_max_allowed_packet();
|
737 |
|
@@ -794,7 +792,7 @@ abstract class Ai1wm_Database {
|
|
794 |
$query_offset = ftell( $file_handler );
|
795 |
|
796 |
// Time elapsed
|
797 |
-
if ( $timeout ) {
|
798 |
if ( ! $this->is_atomic_query( $query ) ) {
|
799 |
if ( ( microtime( true ) - $start ) > $timeout ) {
|
800 |
$completed = false;
|
530 |
* @param string $file_name Name of file
|
531 |
* @param int $table_index Table index
|
532 |
* @param int $table_offset Table offset
|
|
|
533 |
* @return bool
|
534 |
*/
|
535 |
+
public function export( $file_name, &$table_index = 0, &$table_offset = 0 ) {
|
536 |
// Set file handler
|
537 |
$file_handler = ai1wm_open( $file_name, 'ab' );
|
538 |
|
707 |
$this->free_result( $result );
|
708 |
|
709 |
// Time elapsed
|
710 |
+
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
|
711 |
if ( ( microtime( true ) - $start ) > $timeout ) {
|
712 |
$completed = false;
|
713 |
break 2;
|
727 |
*
|
728 |
* @param string $file_name Name of file
|
729 |
* @param int $query_offset Query offset
|
|
|
730 |
* @return bool
|
731 |
*/
|
732 |
+
public function import( $file_name, &$query_offset = 0 ) {
|
733 |
// Set max allowed packet
|
734 |
$max_allowed_packet = $this->get_max_allowed_packet();
|
735 |
|
792 |
$query_offset = ftell( $file_handler );
|
793 |
|
794 |
// Time elapsed
|
795 |
+
if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) {
|
796 |
if ( ! $this->is_atomic_query( $query ) ) {
|
797 |
if ( ( microtime( true ) - $start ) > $timeout ) {
|
798 |
$completed = false;
|
lib/vendor/servmask/filesystem/class-ai1wm-file-webconfig.php
CHANGED
@@ -35,6 +35,7 @@ class Ai1wm_File_Webconfig {
|
|
35 |
return Ai1wm_File::create( $path, implode( PHP_EOL, array(
|
36 |
'<configuration>',
|
37 |
'<system.webServer>',
|
|
|
38 |
'<mimeMap fileExtension=".wpress" mimeType="application/octet-stream" />',
|
39 |
'</staticContent>',
|
40 |
'<defaultDocument>',
|
35 |
return Ai1wm_File::create( $path, implode( PHP_EOL, array(
|
36 |
'<configuration>',
|
37 |
'<system.webServer>',
|
38 |
+
'<staticContent>',
|
39 |
'<mimeMap fileExtension=".wpress" mimeType="application/octet-stream" />',
|
40 |
'</staticContent>',
|
41 |
'<defaultDocument>',
|
lib/view/assets/javascript/backups.min.js
CHANGED
@@ -887,11 +887,8 @@ module.exports = Modal;
|
|
887 |
jQuery(document).ready(function ($) {
|
888 |
'use strict';
|
889 |
|
890 |
-
// Reset feedback form
|
891 |
-
|
892 |
-
$('.ai1wm-feedback-type').attr('checked', false);
|
893 |
-
|
894 |
// Review
|
|
|
895 |
$('#ai1wm-feedback-type-link-1').click(function (e) {
|
896 |
var radio = $('#ai1wm-feedback-type-1');
|
897 |
if (radio.is(':checked')) {
|
@@ -901,16 +898,14 @@ jQuery(document).ready(function ($) {
|
|
901 |
}
|
902 |
});
|
903 |
|
904 |
-
//
|
905 |
-
$('#ai1wm-feedback-type-2').click(function () {
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
// Show feedback form
|
913 |
-
$('.ai1wm-feedback-form').fadeIn();
|
914 |
});
|
915 |
|
916 |
// Help
|
887 |
jQuery(document).ready(function ($) {
|
888 |
'use strict';
|
889 |
|
|
|
|
|
|
|
|
|
890 |
// Review
|
891 |
+
|
892 |
$('#ai1wm-feedback-type-link-1').click(function (e) {
|
893 |
var radio = $('#ai1wm-feedback-type-1');
|
894 |
if (radio.is(':checked')) {
|
898 |
}
|
899 |
});
|
900 |
|
901 |
+
// Idea
|
902 |
+
$('#ai1wm-feedback-type-link-2').click(function (e) {
|
903 |
+
var radio = $('#ai1wm-feedback-type-2');
|
904 |
+
if (radio.is(':checked')) {
|
905 |
+
radio.attr('checked', false);
|
906 |
+
} else {
|
907 |
+
radio.attr('checked', true);
|
908 |
+
}
|
|
|
|
|
909 |
});
|
910 |
|
911 |
// Help
|
lib/view/assets/javascript/export.min.js
CHANGED
@@ -126,11 +126,8 @@ module.exports = g;
|
|
126 |
jQuery(document).ready(function ($) {
|
127 |
'use strict';
|
128 |
|
129 |
-
// Reset feedback form
|
130 |
-
|
131 |
-
$('.ai1wm-feedback-type').attr('checked', false);
|
132 |
-
|
133 |
// Review
|
|
|
134 |
$('#ai1wm-feedback-type-link-1').click(function (e) {
|
135 |
var radio = $('#ai1wm-feedback-type-1');
|
136 |
if (radio.is(':checked')) {
|
@@ -140,16 +137,14 @@ jQuery(document).ready(function ($) {
|
|
140 |
}
|
141 |
});
|
142 |
|
143 |
-
//
|
144 |
-
$('#ai1wm-feedback-type-2').click(function () {
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
// Show feedback form
|
152 |
-
$('.ai1wm-feedback-form').fadeIn();
|
153 |
});
|
154 |
|
155 |
// Help
|
126 |
jQuery(document).ready(function ($) {
|
127 |
'use strict';
|
128 |
|
|
|
|
|
|
|
|
|
129 |
// Review
|
130 |
+
|
131 |
$('#ai1wm-feedback-type-link-1').click(function (e) {
|
132 |
var radio = $('#ai1wm-feedback-type-1');
|
133 |
if (radio.is(':checked')) {
|
137 |
}
|
138 |
});
|
139 |
|
140 |
+
// Idea
|
141 |
+
$('#ai1wm-feedback-type-link-2').click(function (e) {
|
142 |
+
var radio = $('#ai1wm-feedback-type-2');
|
143 |
+
if (radio.is(':checked')) {
|
144 |
+
radio.attr('checked', false);
|
145 |
+
} else {
|
146 |
+
radio.attr('checked', true);
|
147 |
+
}
|
|
|
|
|
148 |
});
|
149 |
|
150 |
// Help
|
lib/view/assets/javascript/feedback.min.js
CHANGED
@@ -126,11 +126,8 @@ module.exports = g;
|
|
126 |
jQuery(document).ready(function ($) {
|
127 |
'use strict';
|
128 |
|
129 |
-
// Reset feedback form
|
130 |
-
|
131 |
-
$('.ai1wm-feedback-type').attr('checked', false);
|
132 |
-
|
133 |
// Review
|
|
|
134 |
$('#ai1wm-feedback-type-link-1').click(function (e) {
|
135 |
var radio = $('#ai1wm-feedback-type-1');
|
136 |
if (radio.is(':checked')) {
|
@@ -140,16 +137,14 @@ jQuery(document).ready(function ($) {
|
|
140 |
}
|
141 |
});
|
142 |
|
143 |
-
//
|
144 |
-
$('#ai1wm-feedback-type-2').click(function () {
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
// Show feedback form
|
152 |
-
$('.ai1wm-feedback-form').fadeIn();
|
153 |
});
|
154 |
|
155 |
// Help
|
126 |
jQuery(document).ready(function ($) {
|
127 |
'use strict';
|
128 |
|
|
|
|
|
|
|
|
|
129 |
// Review
|
130 |
+
|
131 |
$('#ai1wm-feedback-type-link-1').click(function (e) {
|
132 |
var radio = $('#ai1wm-feedback-type-1');
|
133 |
if (radio.is(':checked')) {
|
137 |
}
|
138 |
});
|
139 |
|
140 |
+
// Idea
|
141 |
+
$('#ai1wm-feedback-type-link-2').click(function (e) {
|
142 |
+
var radio = $('#ai1wm-feedback-type-2');
|
143 |
+
if (radio.is(':checked')) {
|
144 |
+
radio.attr('checked', false);
|
145 |
+
} else {
|
146 |
+
radio.attr('checked', true);
|
147 |
+
}
|
|
|
|
|
148 |
});
|
149 |
|
150 |
// Help
|
lib/view/assets/javascript/import.min.js
CHANGED
@@ -153,11 +153,8 @@ if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
|
|
153 |
jQuery(document).ready(function ($) {
|
154 |
'use strict';
|
155 |
|
156 |
-
// Reset feedback form
|
157 |
-
|
158 |
-
$('.ai1wm-feedback-type').attr('checked', false);
|
159 |
-
|
160 |
// Review
|
|
|
161 |
$('#ai1wm-feedback-type-link-1').click(function (e) {
|
162 |
var radio = $('#ai1wm-feedback-type-1');
|
163 |
if (radio.is(':checked')) {
|
@@ -167,16 +164,14 @@ jQuery(document).ready(function ($) {
|
|
167 |
}
|
168 |
});
|
169 |
|
170 |
-
//
|
171 |
-
$('#ai1wm-feedback-type-2').click(function () {
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
// Show feedback form
|
179 |
-
$('.ai1wm-feedback-form').fadeIn();
|
180 |
});
|
181 |
|
182 |
// Help
|
153 |
jQuery(document).ready(function ($) {
|
154 |
'use strict';
|
155 |
|
|
|
|
|
|
|
|
|
156 |
// Review
|
157 |
+
|
158 |
$('#ai1wm-feedback-type-link-1').click(function (e) {
|
159 |
var radio = $('#ai1wm-feedback-type-1');
|
160 |
if (radio.is(':checked')) {
|
164 |
}
|
165 |
});
|
166 |
|
167 |
+
// Idea
|
168 |
+
$('#ai1wm-feedback-type-link-2').click(function (e) {
|
169 |
+
var radio = $('#ai1wm-feedback-type-2');
|
170 |
+
if (radio.is(':checked')) {
|
171 |
+
radio.attr('checked', false);
|
172 |
+
} else {
|
173 |
+
radio.attr('checked', true);
|
174 |
+
}
|
|
|
|
|
175 |
});
|
176 |
|
177 |
// Help
|
lib/view/common/leave-feedback.php
CHANGED
@@ -35,10 +35,10 @@
|
|
35 |
</li>
|
36 |
<li>
|
37 |
<input type="radio" class="ai1wm-flat-radio-button ai1wm-feedback-type" id="ai1wm-feedback-type-2" name="ai1wm_feedback_type" value="suggestions" />
|
38 |
-
<
|
39 |
<i></i>
|
40 |
<span><?php _e( 'I have ideas to improve this plugin', AI1WM_PLUGIN_NAME ); ?></span>
|
41 |
-
</
|
42 |
</li>
|
43 |
<li>
|
44 |
<input type="radio" class="ai1wm-flat-radio-button ai1wm-feedback-type" id="ai1wm-feedback-type-3" name="ai1wm_feedback_type" value="help-needed" />
|
35 |
</li>
|
36 |
<li>
|
37 |
<input type="radio" class="ai1wm-flat-radio-button ai1wm-feedback-type" id="ai1wm-feedback-type-2" name="ai1wm_feedback_type" value="suggestions" />
|
38 |
+
<a id="ai1wm-feedback-type-link-2" href="https://feedback.wp-migration.com" target="_blank">
|
39 |
<i></i>
|
40 |
<span><?php _e( 'I have ideas to improve this plugin', AI1WM_PLUGIN_NAME ); ?></span>
|
41 |
+
</a>
|
42 |
</li>
|
43 |
<li>
|
44 |
<input type="radio" class="ai1wm-flat-radio-button ai1wm-feedback-type" id="ai1wm-feedback-type-3" name="ai1wm_feedback_type" value="help-needed" />
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: move, transfer, copy, migrate, backup, clone, restore, db migration, wordp
|
|
4 |
Requires at least: 3.3
|
5 |
Tested up to: 4.9
|
6 |
Requires PHP: 5.2.17
|
7 |
-
Stable tag: 6.
|
8 |
License: GPLv2 or later
|
9 |
|
10 |
Move, transfer, copy, migrate, and backup a site with 1-click. Quick, easy, and reliable.
|
@@ -60,7 +60,7 @@ Mobile device compatible: All in One WP Plugin is the first plugin to offer true
|
|
60 |
* [Microsoft Azure Storage](https://servmask.com/products/microsoft-azure-storage-extension)
|
61 |
|
62 |
= Supported hosting providers =
|
63 |
-
**The plugin does not have any
|
64 |
|
65 |
* DigitalOcean
|
66 |
* Bluehost
|
@@ -103,6 +103,13 @@ Alternatively you can download the plugin using the download button on this page
|
|
103 |
All-in-One WP Migration **asks for your consent** to collect **requester's email address** when filling plugin's contact form. [GDPR Compliant Privacy Policy](https://www.iubenda.com/privacy-policy/946881)
|
104 |
|
105 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
= 6.74 =
|
107 |
**Added**
|
108 |
|
4 |
Requires at least: 3.3
|
5 |
Tested up to: 4.9
|
6 |
Requires PHP: 5.2.17
|
7 |
+
Stable tag: 6.75
|
8 |
License: GPLv2 or later
|
9 |
|
10 |
Move, transfer, copy, migrate, and backup a site with 1-click. Quick, easy, and reliable.
|
60 |
* [Microsoft Azure Storage](https://servmask.com/products/microsoft-azure-storage-extension)
|
61 |
|
62 |
= Supported hosting providers =
|
63 |
+
**The plugin does not have any dependencies, making it compatible with all PHP hosting providers. We support a vast range of hosting providers. Some of the most popular include:**
|
64 |
|
65 |
* DigitalOcean
|
66 |
* Bluehost
|
103 |
All-in-One WP Migration **asks for your consent** to collect **requester's email address** when filling plugin's contact form. [GDPR Compliant Privacy Policy](https://www.iubenda.com/privacy-policy/946881)
|
104 |
|
105 |
== Changelog ==
|
106 |
+
= 6.74 =
|
107 |
+
**Fixed**
|
108 |
+
|
109 |
+
* WP-CLI export/import missing data
|
110 |
+
* Serialization in PHP 7.2
|
111 |
+
* Missing <staticContent> entry in the web.config file
|
112 |
+
|
113 |
= 6.74 =
|
114 |
**Added**
|
115 |
|