Version Description
- Fix an issue when archiving dynamic files on export
- Support custom upload path for multisites
- Add support for various cache plugins
Download this release
Release Info
Developer | bangelov |
Plugin | All-in-One WP Migration |
Version | 5.43 |
Comparing to | |
See all releases |
Code changes from version 5.42 to 5.43
- all-in-one-wp-migration.php +1 -1
- constants.php +6 -1
- functions.php +64 -0
- lib/model/class-ai1wm-http.php +2 -2
- lib/model/export/class-ai1wm-export-config.php +2 -2
- lib/model/export/class-ai1wm-export-enumerate.php +5 -0
- lib/model/import/class-ai1wm-import-content.php +29 -3
- lib/model/import/class-ai1wm-import-database.php +64 -10
- lib/model/import/class-ai1wm-import-done.php +8 -7
- lib/vendor/servmask/archiver/class-ai1wm-compressor.php +12 -2
- lib/vendor/servmask/archiver/class-ai1wm-extractor.php +6 -1
- lib/view/export/advanced-settings.php +9 -0
- readme.txt +6 -1
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: 5.
|
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: 5.43
|
9 |
* Text Domain: all-in-one-wp-migration
|
10 |
* Domain Path: /languages
|
11 |
* Network: True
|
constants.php
CHANGED
@@ -39,7 +39,7 @@ if ( function_exists( 'gethostname' ) && in_array( gethostname(), $local ) ) {
|
|
39 |
// ==================
|
40 |
// = Plugin Version =
|
41 |
// ==================
|
42 |
-
define( 'AI1WM_VERSION', '5.
|
43 |
|
44 |
// ===============
|
45 |
// = Plugin Name =
|
@@ -258,6 +258,11 @@ if ( ! defined( 'WP_CONTENT_DIR' ) ) {
|
|
258 |
// ================
|
259 |
define( 'AI1WM_UPLOADS_PATH', 'uploads' );
|
260 |
|
|
|
|
|
|
|
|
|
|
|
261 |
// ==============
|
262 |
// = Sites Path =
|
263 |
// ==============
|
39 |
// ==================
|
40 |
// = Plugin Version =
|
41 |
// ==================
|
42 |
+
define( 'AI1WM_VERSION', '5.43' );
|
43 |
|
44 |
// ===============
|
45 |
// = Plugin Name =
|
258 |
// ================
|
259 |
define( 'AI1WM_UPLOADS_PATH', 'uploads' );
|
260 |
|
261 |
+
// ==============
|
262 |
+
// = Blogs Path =
|
263 |
+
// ==============
|
264 |
+
define( 'AI1WM_BLOGSDIR_PATH', 'blogs.dir' );
|
265 |
+
|
266 |
// ==============
|
267 |
// = Sites Path =
|
268 |
// ==============
|
functions.php
CHANGED
@@ -366,6 +366,48 @@ function ai1wm_sites_path( $blog_id = null ) {
|
|
366 |
return AI1WM_SITES_PATH . DIRECTORY_SEPARATOR . $blog_id;
|
367 |
}
|
368 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
369 |
/**
|
370 |
* Get uploads absolute path by blog ID
|
371 |
*
|
@@ -587,6 +629,28 @@ function ai1wm_active_plugins() {
|
|
587 |
return array_values( get_option( AI1WM_ACTIVE_PLUGINS, array() ) );
|
588 |
}
|
589 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
590 |
/**
|
591 |
* URL encode
|
592 |
*
|
366 |
return AI1WM_SITES_PATH . DIRECTORY_SEPARATOR . $blog_id;
|
367 |
}
|
368 |
|
369 |
+
/**
|
370 |
+
* Get files absolute path by blog ID
|
371 |
+
*
|
372 |
+
* @param integer $blog_id Blog ID
|
373 |
+
* @return string
|
374 |
+
*/
|
375 |
+
function ai1wm_files_path( $blog_id = null ) {
|
376 |
+
if ( ai1wm_main_site( $blog_id ) ) {
|
377 |
+
return AI1WM_UPLOADS_PATH;
|
378 |
+
}
|
379 |
+
|
380 |
+
return AI1WM_BLOGSDIR_PATH . DIRECTORY_SEPARATOR . $blog_id . DIRECTORY_SEPARATOR . 'files';
|
381 |
+
}
|
382 |
+
|
383 |
+
/**
|
384 |
+
* Get blogs.dir absolute path by blog ID
|
385 |
+
*
|
386 |
+
* @param integer $blog_id Blog ID
|
387 |
+
* @return string
|
388 |
+
*/
|
389 |
+
function ai1wm_blogsdir_path( $blog_id = null ) {
|
390 |
+
if ( ai1wm_main_site( $blog_id ) ) {
|
391 |
+
return "/wp-content/blogs.dir/";
|
392 |
+
}
|
393 |
+
|
394 |
+
return "/wp-content/blogs.dir/{$blog_id}/files/";
|
395 |
+
}
|
396 |
+
|
397 |
+
/**
|
398 |
+
* Get blogs.dir URL by blog ID
|
399 |
+
*
|
400 |
+
* @param integer $blog_id Blog ID
|
401 |
+
* @return string
|
402 |
+
*/
|
403 |
+
function ai1wm_blogsdir_url( $blog_id = null ) {
|
404 |
+
if ( ai1wm_main_site( $blog_id ) ) {
|
405 |
+
return get_site_url( $blog_id, "/wp-content/blogs.dir/" );
|
406 |
+
}
|
407 |
+
|
408 |
+
return get_site_url( $blog_id, "/wp-content/blogs.dir/{$blog_id}/files/" );
|
409 |
+
}
|
410 |
+
|
411 |
/**
|
412 |
* Get uploads absolute path by blog ID
|
413 |
*
|
629 |
return array_values( get_option( AI1WM_ACTIVE_PLUGINS, array() ) );
|
630 |
}
|
631 |
|
632 |
+
/**
|
633 |
+
* Flush WP options cache
|
634 |
+
*
|
635 |
+
* @return void
|
636 |
+
*/
|
637 |
+
function ai1wm_cache_flush() {
|
638 |
+
// Initialize WP cache
|
639 |
+
wp_cache_init();
|
640 |
+
|
641 |
+
// Flush WP cache
|
642 |
+
wp_cache_flush();
|
643 |
+
|
644 |
+
// Set WP cache
|
645 |
+
wp_cache_set( 'alloptions', array(), 'options' );
|
646 |
+
wp_cache_set( 'notoptions', array(), 'options' );
|
647 |
+
|
648 |
+
// Delete WP cache
|
649 |
+
wp_cache_delete( 'alloptions', 'options' );
|
650 |
+
wp_cache_delete( 'notoptions', 'options' );
|
651 |
+
}
|
652 |
+
|
653 |
+
|
654 |
/**
|
655 |
* URL encode
|
656 |
*
|
lib/model/class-ai1wm-http.php
CHANGED
@@ -85,8 +85,8 @@ class Ai1wm_Http {
|
|
85 |
// HTTP response
|
86 |
for ( $i = 0; $i < 5; $i++, sleep( 1 ) ) {
|
87 |
|
88 |
-
//
|
89 |
-
|
90 |
|
91 |
// Is valid transport layer?
|
92 |
if ( get_option( AI1WM_URL_IP ) && get_option( AI1WM_URL_TRANSPORT ) ) {
|
85 |
// HTTP response
|
86 |
for ( $i = 0; $i < 5; $i++, sleep( 1 ) ) {
|
87 |
|
88 |
+
// Flush WP cache
|
89 |
+
ai1wm_cache_flush();
|
90 |
|
91 |
// Is valid transport layer?
|
92 |
if ( get_option( AI1WM_URL_IP ) && get_option( AI1WM_URL_TRANSPORT ) ) {
|
lib/model/export/class-ai1wm-export-config.php
CHANGED
@@ -31,8 +31,8 @@ class Ai1wm_Export_Config {
|
|
31 |
// Set progress
|
32 |
Ai1wm_Status::info( __( 'Adding configuration to archive...', AI1WM_PLUGIN_NAME ) );
|
33 |
|
34 |
-
//
|
35 |
-
|
36 |
|
37 |
// Get options
|
38 |
$options = wp_load_alloptions();
|
31 |
// Set progress
|
32 |
Ai1wm_Status::info( __( 'Adding configuration to archive...', AI1WM_PLUGIN_NAME ) );
|
33 |
|
34 |
+
// Flush WP cache
|
35 |
+
ai1wm_cache_flush();
|
36 |
|
37 |
// Get options
|
38 |
$options = wp_load_alloptions();
|
lib/model/export/class-ai1wm-export-enumerate.php
CHANGED
@@ -33,6 +33,11 @@ class Ai1wm_Export_Enumerate {
|
|
33 |
// Set exclude filters
|
34 |
$exclude_filters = ai1wm_content_filters();
|
35 |
|
|
|
|
|
|
|
|
|
|
|
36 |
// Exclude themes
|
37 |
if ( isset( $params['options']['no_themes'] ) ) {
|
38 |
$exclude_filters[] = 'themes';
|
33 |
// Set exclude filters
|
34 |
$exclude_filters = ai1wm_content_filters();
|
35 |
|
36 |
+
// Exclude cache
|
37 |
+
if ( isset( $params['options']['no_cache'] ) ) {
|
38 |
+
$exclude_filters[] = 'cache';
|
39 |
+
}
|
40 |
+
|
41 |
// Exclude themes
|
42 |
if ( isset( $params['options']['no_themes'] ) ) {
|
43 |
$exclude_filters[] = 'themes';
|
lib/model/import/class-ai1wm-import-content.php
CHANGED
@@ -100,15 +100,41 @@ class Ai1wm_Import_Content {
|
|
100 |
|
101 |
// Set extract paths
|
102 |
foreach ( $blogs as $blog ) {
|
103 |
-
|
104 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
}
|
106 |
|
107 |
while ( $archive->has_not_reached_eof() ) {
|
108 |
try {
|
109 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
// Extract a file from archive to WP_CONTENT_DIR
|
111 |
-
if ( ( $content_offset = $archive->extract_one_file_to( WP_CONTENT_DIR,
|
112 |
|
113 |
// Set progress
|
114 |
if ( ( $processed += $content_offset ) ) {
|
100 |
|
101 |
// Set extract paths
|
102 |
foreach ( $blogs as $blog ) {
|
103 |
+
if ( defined( 'UPLOADBLOGSDIR' ) ) {
|
104 |
+
// Old sites dir style
|
105 |
+
$old_paths[] = ai1wm_files_path( $blog->Old->Id );
|
106 |
+
$new_paths[] = ai1wm_files_path( $blogs->New->Id );
|
107 |
+
|
108 |
+
// New sites dir style
|
109 |
+
$old_paths[] = ai1wm_sites_path( $blog->Old->Id );
|
110 |
+
$new_paths[] = ai1wm_files_path( $blog->New->Id );
|
111 |
+
} else {
|
112 |
+
// Old sites dir style
|
113 |
+
$old_paths[] = ai1wm_files_path( $blog->Old->Id );
|
114 |
+
$new_paths[] = ai1wm_sites_path( $blog->New->Id );
|
115 |
+
|
116 |
+
// New sites dir style
|
117 |
+
$old_paths[] = ai1wm_sites_path( $blog->Old->Id );
|
118 |
+
$new_paths[] = ai1wm_sites_path( $blog->New->Id );
|
119 |
+
}
|
120 |
}
|
121 |
|
122 |
while ( $archive->has_not_reached_eof() ) {
|
123 |
try {
|
124 |
|
125 |
+
// Exclude WordPress files
|
126 |
+
$exclude_files = array_keys( _get_dropins() );
|
127 |
+
|
128 |
+
// Exclude plugin files
|
129 |
+
$exclude_files = array_merge( $exclude_files, array(
|
130 |
+
AI1WM_PACKAGE_NAME,
|
131 |
+
AI1WM_MULTISITE_NAME,
|
132 |
+
AI1WM_DATABASE_NAME,
|
133 |
+
AI1WM_MUPLUGINS_NAME,
|
134 |
+
) );
|
135 |
+
|
136 |
// Extract a file from archive to WP_CONTENT_DIR
|
137 |
+
if ( ( $content_offset = $archive->extract_one_file_to( WP_CONTENT_DIR, $exclude_files, $old_paths, $new_paths, $content_offset, 10 ) ) ) {
|
138 |
|
139 |
// Set progress
|
140 |
if ( ( $processed += $content_offset ) ) {
|
lib/model/import/class-ai1wm-import-database.php
CHANGED
@@ -68,16 +68,70 @@ class Ai1wm_Import_Database {
|
|
68 |
// Get Blog URLs
|
69 |
foreach ( $blogs as $blog ) {
|
70 |
|
71 |
-
// Get Upload Path
|
72 |
-
if ( ! in_array(
|
73 |
-
$old_values[] =
|
74 |
-
$new_values[] =
|
75 |
}
|
76 |
|
77 |
-
// Get
|
78 |
-
if ( ! in_array(
|
79 |
-
$old_values[] =
|
80 |
-
$new_values[] =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
}
|
82 |
|
83 |
// Get Site URL
|
@@ -378,8 +432,8 @@ class Ai1wm_Import_Database {
|
|
378 |
// Import database
|
379 |
$client->import( ai1wm_database_path( $params ) );
|
380 |
|
381 |
-
//
|
382 |
-
|
383 |
|
384 |
// Activate plugins
|
385 |
activate_plugins( $active_servmask_plugins, null, is_multisite() );
|
68 |
// Get Blog URLs
|
69 |
foreach ( $blogs as $blog ) {
|
70 |
|
71 |
+
// Get blogs dir Upload Path
|
72 |
+
if ( ! in_array( sprintf( "'%s'", trim( ai1wm_blogsdir_path( $blog->Old->Id ), '/' ) ), $old_values ) ) {
|
73 |
+
$old_values[] = sprintf( "'%s'", trim( ai1wm_blogsdir_path( $blog->Old->Id ), '/' ) );
|
74 |
+
$new_values[] = sprintf( "'%s'", get_blog_option( $blog->New->Id, 'upload_path' ) );
|
75 |
}
|
76 |
|
77 |
+
// Get sites Upload Path
|
78 |
+
if ( ! in_array( sprintf( "'%s'", trim( ai1wm_uploads_path( $blog->Old->Id ), '/' ) ), $old_values ) ) {
|
79 |
+
$old_values[] = sprintf( "'%s'", trim( ai1wm_uploads_path( $blog->Old->Id ), '/' ) );
|
80 |
+
$new_values[] = sprintf( "'%s'", get_blog_option( $blog->New->Id, 'upload_path' ) );
|
81 |
+
}
|
82 |
+
|
83 |
+
// Handle old and new sites dir style
|
84 |
+
if ( defined( 'UPLOADBLOGSDIR' ) ) {
|
85 |
+
|
86 |
+
// Get Upload Path
|
87 |
+
if ( ! in_array( ai1wm_blogsdir_path( $blog->Old->Id ), $old_values ) ) {
|
88 |
+
$old_values[] = ai1wm_blogsdir_path( $blog->Old->Id );
|
89 |
+
$new_values[] = ai1wm_blogsdir_path( $blog->New->Id );
|
90 |
+
}
|
91 |
+
|
92 |
+
// Get escaped Upload Path
|
93 |
+
if ( ! in_array( addslashes( addcslashes( ai1wm_blogsdir_path( $blog->Old->Id ), '\/' ) ), $old_values ) ) {
|
94 |
+
$old_values[] = addslashes( addcslashes( ai1wm_blogsdir_path( $blog->Old->Id ), '\/' ) );
|
95 |
+
$new_values[] = addslashes( addcslashes( ai1wm_blogsdir_path( $blog->New->Id ), '\/' ) );
|
96 |
+
}
|
97 |
+
|
98 |
+
// Get Upload Path
|
99 |
+
if ( ! in_array( ai1wm_uploads_path( $blog->Old->Id ), $old_values ) ) {
|
100 |
+
$old_values[] = ai1wm_uploads_path( $blog->Old->Id );
|
101 |
+
$new_values[] = ai1wm_blogsdir_path( $blog->New->Id );
|
102 |
+
}
|
103 |
+
|
104 |
+
// Get escaped Upload Path
|
105 |
+
if ( ! in_array( addslashes( addcslashes( ai1wm_uploads_path( $blog->Old->Id ), '\/' ) ), $old_values ) ) {
|
106 |
+
$old_values[] = addslashes( addcslashes( ai1wm_uploads_path( $blog->Old->Id ), '\/' ) );
|
107 |
+
$new_values[] = addslashes( addcslashes( ai1wm_blogsdir_path( $blog->New->Id ), '\/' ) );
|
108 |
+
}
|
109 |
+
|
110 |
+
} else {
|
111 |
+
|
112 |
+
// Get Upload Path
|
113 |
+
if ( ! in_array( ai1wm_blogsdir_path( $blog->Old->Id ), $old_values ) ) {
|
114 |
+
$old_values[] = ai1wm_blogsdir_path( $blog->Old->Id );
|
115 |
+
$new_values[] = ai1wm_uploads_path( $blog->New->Id );
|
116 |
+
}
|
117 |
+
|
118 |
+
// Get escaped Upload Path
|
119 |
+
if ( ! in_array( addslashes( addcslashes( ai1wm_blogsdir_path( $blog->Old->Id ), '\/' ) ), $old_values ) ) {
|
120 |
+
$old_values[] = addslashes( addcslashes( ai1wm_blogsdir_path( $blog->Old->Id ), '\/' ) );
|
121 |
+
$new_values[] = addslashes( addcslashes( ai1wm_uploads_path( $blog->New->Id ), '\/' ) );
|
122 |
+
}
|
123 |
+
|
124 |
+
// Get Upload Path
|
125 |
+
if ( ! in_array( ai1wm_uploads_path( $blog->Old->Id ), $old_values ) ) {
|
126 |
+
$old_values[] = ai1wm_uploads_path( $blog->Old->Id );
|
127 |
+
$new_values[] = ai1wm_uploads_path( $blog->New->Id );
|
128 |
+
}
|
129 |
+
|
130 |
+
// Get escaped Upload Path
|
131 |
+
if ( ! in_array( addslashes( addcslashes( ai1wm_uploads_path( $blog->Old->Id ), '\/' ) ), $old_values ) ) {
|
132 |
+
$old_values[] = addslashes( addcslashes( ai1wm_uploads_path( $blog->Old->Id ), '\/' ) );
|
133 |
+
$new_values[] = addslashes( addcslashes( ai1wm_uploads_path( $blog->New->Id ), '\/' ) );
|
134 |
+
}
|
135 |
}
|
136 |
|
137 |
// Get Site URL
|
432 |
// Import database
|
433 |
$client->import( ai1wm_database_path( $params ) );
|
434 |
|
435 |
+
// Flush WP cache
|
436 |
+
ai1wm_cache_flush();
|
437 |
|
438 |
// Activate plugins
|
439 |
activate_plugins( $active_servmask_plugins, null, is_multisite() );
|
lib/model/import/class-ai1wm-import-done.php
CHANGED
@@ -52,16 +52,17 @@ class Ai1wm_Import_Done {
|
|
52 |
}
|
53 |
}
|
54 |
|
55 |
-
// Set the new MS files rewriting
|
56 |
-
if ( get_site_option( AI1WM_MS_FILES_REWRITING ) ) {
|
57 |
-
update_site_option( AI1WM_MS_FILES_REWRITING, 0 );
|
58 |
-
}
|
59 |
-
|
60 |
// Open the archive file for reading
|
61 |
$archive = new Ai1wm_Extractor( ai1wm_archive_path( $params ) );
|
62 |
|
63 |
-
//
|
64 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
|
66 |
// Close the archive file
|
67 |
$archive->close();
|
52 |
}
|
53 |
}
|
54 |
|
|
|
|
|
|
|
|
|
|
|
55 |
// Open the archive file for reading
|
56 |
$archive = new Ai1wm_Extractor( ai1wm_archive_path( $params ) );
|
57 |
|
58 |
+
// Include WordPress files
|
59 |
+
$include_files = array_keys( _get_dropins() );
|
60 |
+
|
61 |
+
// Include mu-plugins files
|
62 |
+
$include_files = array_merge( $include_files, array( AI1WM_MUPLUGINS_NAME ) );
|
63 |
+
|
64 |
+
// Unpack WordPress files and mu-plugins files
|
65 |
+
$archive->extract_by_files_array( WP_CONTENT_DIR, $include_files );
|
66 |
|
67 |
// Close the archive file
|
68 |
$archive->close();
|
lib/vendor/servmask/archiver/class-ai1wm-compressor.php
CHANGED
@@ -63,12 +63,22 @@ class Ai1wm_Compressor extends Ai1wm_Archiver {
|
|
63 |
$this->write_to_handle( $this->file_handle, $block, $this->filename );
|
64 |
}
|
65 |
|
|
|
|
|
|
|
66 |
// start time
|
67 |
$start = microtime( true );
|
68 |
|
69 |
// read the file in 512KB chunks
|
70 |
-
while (
|
71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
|
73 |
// write file contents
|
74 |
$this->write_to_handle( $this->file_handle, $content, $this->filename );
|
63 |
$this->write_to_handle( $this->file_handle, $block, $this->filename );
|
64 |
}
|
65 |
|
66 |
+
// set file size
|
67 |
+
$current_filesize = $this->get_current_filesize() - $offset;
|
68 |
+
|
69 |
// start time
|
70 |
$start = microtime( true );
|
71 |
|
72 |
// read the file in 512KB chunks
|
73 |
+
while ( $current_filesize > 0 ) {
|
74 |
+
// read the file in chunks of 512KB
|
75 |
+
$chunk_size = $current_filesize > 512000 ? 512000 : $current_filesize;
|
76 |
+
|
77 |
+
// read the file in chunks of 512KB
|
78 |
+
$content = $this->read_from_handle( $handle, $chunk_size, $file );
|
79 |
+
|
80 |
+
// remove the amount of bytes we read
|
81 |
+
$current_filesize -= $chunk_size;
|
82 |
|
83 |
// write file contents
|
84 |
$this->write_to_handle( $this->file_handle, $content, $this->filename );
|
lib/vendor/servmask/archiver/class-ai1wm-extractor.php
CHANGED
@@ -300,7 +300,7 @@ class Ai1wm_Extractor extends Ai1wm_Archiver {
|
|
300 |
// read the file in chunks of 512KB from archiver
|
301 |
$content = $this->read_from_handle( $this->file_handle, $chunk_size, $this->filename );
|
302 |
|
303 |
-
//
|
304 |
$data['size'] -= $chunk_size;
|
305 |
|
306 |
// write file contents
|
@@ -372,6 +372,11 @@ class Ai1wm_Extractor extends Ai1wm_Archiver {
|
|
372 |
return ! feof( $this->file_handle );
|
373 |
}
|
374 |
|
|
|
|
|
|
|
|
|
|
|
375 |
public function get_file_pointer() {
|
376 |
$result = ftell( $this->file_handle );
|
377 |
|
300 |
// read the file in chunks of 512KB from archiver
|
301 |
$content = $this->read_from_handle( $this->file_handle, $chunk_size, $this->filename );
|
302 |
|
303 |
+
// remove the amount of bytes we read
|
304 |
$data['size'] -= $chunk_size;
|
305 |
|
306 |
// write file contents
|
372 |
return ! feof( $this->file_handle );
|
373 |
}
|
374 |
|
375 |
+
/**
|
376 |
+
* Get current file pointer
|
377 |
+
*
|
378 |
+
* return int
|
379 |
+
*/
|
380 |
public function get_file_pointer() {
|
381 |
$result = ftell( $this->file_handle );
|
382 |
|
lib/view/export/advanced-settings.php
CHANGED
@@ -26,6 +26,15 @@
|
|
26 |
<input type="checkbox" id="ai1wm-no-plugins" name="options[no_plugins]" />
|
27 |
<label for="ai1wm-no-plugins"><?php _e( 'Do <strong>not</strong> export plugins (files)', AI1WM_PLUGIN_NAME ); ?></label>
|
28 |
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
<li>
|
30 |
<input type="checkbox" id="ai1wm-no-database" name="options[no_database]" />
|
31 |
<label for="ai1wm-no-database"><?php _e( 'Do <strong>not</strong> export database (sql)', AI1WM_PLUGIN_NAME ); ?></label>
|
26 |
<input type="checkbox" id="ai1wm-no-plugins" name="options[no_plugins]" />
|
27 |
<label for="ai1wm-no-plugins"><?php _e( 'Do <strong>not</strong> export plugins (files)', AI1WM_PLUGIN_NAME ); ?></label>
|
28 |
</li>
|
29 |
+
|
30 |
+
<?php if ( apply_filters( 'ai1wm_max_file_size', AI1WM_MAX_FILE_SIZE ) === 0 ): ?>
|
31 |
+
<li>
|
32 |
+
<input type="checkbox" id="ai1wm-no-cache" name="options[no_cache]" />
|
33 |
+
<label for="ai1wm-no-cache"><?php _e( 'Do <strong>not</strong> export cache (files)', AI1WM_PLUGIN_NAME ); ?></label>
|
34 |
+
<small style="color:red"><?php _e( 'new', AI1WM_PLUGIN_NAME ); ?></small>
|
35 |
+
</li>
|
36 |
+
<?php endif; ?>
|
37 |
+
|
38 |
<li>
|
39 |
<input type="checkbox" id="ai1wm-no-database" name="options[no_database]" />
|
40 |
<label for="ai1wm-no-database"><?php _e( 'Do <strong>not</strong> export database (sql)', AI1WM_PLUGIN_NAME ); ?></label>
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: yani.iliev, bangelov, pimjitsawang
|
|
3 |
Tags: db migration, migration, wordpress migration, db backup, db restore, website backup, website restore, website migration, website deploy, wordpress deploy, db backup, database export, database serialization, database find replace
|
4 |
Requires at least: 3.3
|
5 |
Tested up to: 4.5
|
6 |
-
Stable tag: 5.
|
7 |
License: GPLv2 or later
|
8 |
|
9 |
All-in-One WP Migration is the only tool that you will ever need to migrate a WordPress site.
|
@@ -75,6 +75,11 @@ All in One WP Plugin is the first plugin to offer true mobile experience on Word
|
|
75 |
3. Plugin Menu
|
76 |
|
77 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
78 |
= 5.42 =
|
79 |
* Catch E_PARSE error on mu-plugins import
|
80 |
* Fix an issue with stop export that doesn't clean up the storage directory
|
3 |
Tags: db migration, migration, wordpress migration, db backup, db restore, website backup, website restore, website migration, website deploy, wordpress deploy, db backup, database export, database serialization, database find replace
|
4 |
Requires at least: 3.3
|
5 |
Tested up to: 4.5
|
6 |
+
Stable tag: 5.43
|
7 |
License: GPLv2 or later
|
8 |
|
9 |
All-in-One WP Migration is the only tool that you will ever need to migrate a WordPress site.
|
75 |
3. Plugin Menu
|
76 |
|
77 |
== Changelog ==
|
78 |
+
= 5.43 =
|
79 |
+
* Fix an issue when archiving dynamic files on export
|
80 |
+
* Support custom upload path for multisites
|
81 |
+
* Add support for various cache plugins
|
82 |
+
|
83 |
= 5.42 =
|
84 |
* Catch E_PARSE error on mu-plugins import
|
85 |
* Fix an issue with stop export that doesn't clean up the storage directory
|