All-in-One WP Migration - Version 6.82

Version Description

Added

  • Support for PHP 7.3

Fixed

  • Feedback form on settings page
Download this release

Release Info

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

Code changes from version 6.81 to 6.82

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.81
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.82
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.81' );
35
36
// ===============
37
// = Plugin Name =
31
// ==================
32
// = Plugin Version =
33
// ==================
34
+ define( 'AI1WM_VERSION', '6.82' );
35
36
// ===============
37
// = Plugin Name =
lib/controller/class-ai1wm-export-controller.php CHANGED
@@ -40,9 +40,8 @@ class Ai1wm_Export_Controller {
40
}
41
42
// Set priority
43
- $priority = 5;
44
- if ( isset( $params['priority'] ) ) {
45
- $priority = (int) $params['priority'];
46
}
47
48
// Set secret key
@@ -70,7 +69,7 @@ class Ai1wm_Export_Controller {
70
71
// Loop over filters
72
while ( $hooks = current( $filters ) ) {
73
- if ( $priority === key( $filters ) ) {
74
foreach ( $hooks as $hook ) {
75
try {
76
@@ -81,8 +80,12 @@ class Ai1wm_Export_Controller {
81
Ai1wm_Log::export( $params );
82
83
} catch ( Exception $e ) {
84
- Ai1wm_Status::error( __( 'Unable to export', AI1WM_PLUGIN_NAME ), $e->getMessage() );
85
- Ai1wm_Notification::error( __( 'Unable to export', AI1WM_PLUGIN_NAME ), $e->getMessage() );
86
Ai1wm_Directory::delete( ai1wm_storage_path( $params ) );
87
exit;
88
}
@@ -96,6 +99,10 @@ class Ai1wm_Export_Controller {
96
97
// Do request
98
if ( $completed === false || ( $next = next( $filters ) ) && ( $params['priority'] = key( $filters ) ) ) {
99
if ( isset( $params['ai1wm_manual_export'] ) ) {
100
echo json_encode( $params );
101
exit;
@@ -115,6 +122,7 @@ class Ai1wm_Export_Controller {
115
next( $filters );
116
}
117
}
118
}
119
120
public static function buttons() {
40
}
41
42
// Set priority
43
+ if ( ! isset( $params['priority'] ) ) {
44
+ $params['priority'] = 5;
45
}
46
47
// Set secret key
69
70
// Loop over filters
71
while ( $hooks = current( $filters ) ) {
72
+ if ( intval( $params['priority'] ) === key( $filters ) ) {
73
foreach ( $hooks as $hook ) {
74
try {
75
80
Ai1wm_Log::export( $params );
81
82
} catch ( Exception $e ) {
83
+ if ( defined( 'WP_CLI' ) ) {
84
+ WP_CLI::error( sprintf( __( 'Unable to export: %s', AI1WM_PLUGIN_NAME ), $e->getMessage() ) );
85
+ } else {
86
+ Ai1wm_Status::error( __( 'Unable to export', AI1WM_PLUGIN_NAME ), $e->getMessage() );
87
+ Ai1wm_Notification::error( __( 'Unable to export', AI1WM_PLUGIN_NAME ), $e->getMessage() );
88
+ }
89
Ai1wm_Directory::delete( ai1wm_storage_path( $params ) );
90
exit;
91
}
99
100
// Do request
101
if ( $completed === false || ( $next = next( $filters ) ) && ( $params['priority'] = key( $filters ) ) ) {
102
+ if ( defined( 'WP_CLI' ) ) {
103
+ continue;
104
+ }
105
+
106
if ( isset( $params['ai1wm_manual_export'] ) ) {
107
echo json_encode( $params );
108
exit;
122
next( $filters );
123
}
124
}
125
+ return $params;
126
}
127
128
public static function buttons() {
lib/controller/class-ai1wm-import-controller.php CHANGED
@@ -40,9 +40,8 @@ class Ai1wm_Import_Controller {
40
}
41
42
// Set priority
43
- $priority = 10;
44
- if ( isset( $params['priority'] ) ) {
45
- $priority = (int) $params['priority'];
46
}
47
48
// Set secret key
@@ -70,7 +69,7 @@ class Ai1wm_Import_Controller {
70
71
// Loop over filters
72
while ( $hooks = current( $filters ) ) {
73
- if ( $priority === key( $filters ) ) {
74
foreach ( $hooks as $hook ) {
75
try {
76
@@ -81,12 +80,20 @@ class Ai1wm_Import_Controller {
81
Ai1wm_Log::import( $params );
82
83
} catch ( Ai1wm_Import_Retry_Exception $e ) {
84
- status_header( $e->getCode() );
85
- echo json_encode( array( 'errors' => array( array( 'code' => $e->getCode(), 'message' => $e->getMessage() ) ) ) );
86
exit;
87
} catch ( Exception $e ) {
88
- Ai1wm_Status::error( __( 'Unable to import', AI1WM_PLUGIN_NAME ), $e->getMessage() );
89
- Ai1wm_Notification::error( __( 'Unable to import', AI1WM_PLUGIN_NAME ), $e->getMessage() );
90
Ai1wm_Directory::delete( ai1wm_storage_path( $params ) );
91
exit;
92
}
@@ -100,6 +107,10 @@ class Ai1wm_Import_Controller {
100
101
// Do request
102
if ( $completed === false || ( $next = next( $filters ) ) && ( $params['priority'] = key( $filters ) ) ) {
103
if ( isset( $params['ai1wm_manual_import'] ) || isset( $params['ai1wm_manual_restore'] ) ) {
104
echo json_encode( $params );
105
exit;
@@ -119,6 +130,7 @@ class Ai1wm_Import_Controller {
119
next( $filters );
120
}
121
}
122
}
123
124
public static function buttons() {
40
}
41
42
// Set priority
43
+ if ( ! isset( $params['priority'] ) ) {
44
+ $params['priority'] = 10;
45
}
46
47
// Set secret key
69
70
// Loop over filters
71
while ( $hooks = current( $filters ) ) {
72
+ if ( intval( $params['priority'] ) === key( $filters ) ) {
73
foreach ( $hooks as $hook ) {
74
try {
75
80
Ai1wm_Log::import( $params );
81
82
} catch ( Ai1wm_Import_Retry_Exception $e ) {
83
+ if ( defined( 'WP_CLI' ) ) {
84
+ WP_CLI::error( sprintf( __( 'Unable to import. Error code: %s. %s', AI1WM_PLUGIN_NAME ), $e->getCode(), $e->getMessage() ) );
85
+ } else {
86
+ status_header( $e->getCode() );
87
+ echo json_encode( array( 'errors' => array( array( 'code' => $e->getCode(), 'message' => $e->getMessage() ) ) ) );
88
+ }
89
exit;
90
} catch ( Exception $e ) {
91
+ if ( defined( 'WP_CLI' ) ) {
92
+ WP_CLI::error( sprintf( __( 'Unable to import: %s', AI1WM_PLUGIN_NAME ), $e->getMessage() ) );
93
+ } else {
94
+ Ai1wm_Status::error( __( 'Unable to import', AI1WM_PLUGIN_NAME ), $e->getMessage() );
95
+ Ai1wm_Notification::error( __( 'Unable to import', AI1WM_PLUGIN_NAME ), $e->getMessage() );
96
+ }
97
Ai1wm_Directory::delete( ai1wm_storage_path( $params ) );
98
exit;
99
}
107
108
// Do request
109
if ( $completed === false || ( $next = next( $filters ) ) && ( $params['priority'] = key( $filters ) ) ) {
110
+ if ( defined( 'WP_CLI' ) ) {
111
+ continue;
112
+ }
113
+
114
if ( isset( $params['ai1wm_manual_import'] ) || isset( $params['ai1wm_manual_restore'] ) ) {
115
echo json_encode( $params );
116
exit;
130
next( $filters );
131
}
132
}
133
+ return $params;
134
}
135
136
public static function buttons() {
lib/controller/class-ai1wm-main-controller.php CHANGED
@@ -555,16 +555,17 @@ class Ai1wm_Main_Controller {
555
);
556
557
wp_register_script(
558
- 'ai1wm_feedback',
559
- Ai1wm_Template::asset_link( 'javascript/feedback.min.js' ),
560
array( 'ai1wm_util' )
561
);
562
563
- wp_register_script(
564
- 'ai1wm_report',
565
- Ai1wm_Template::asset_link( 'javascript/report.min.js' ),
566
- array( 'ai1wm_util' )
567
- );
568
}
569
570
/**
@@ -719,7 +720,7 @@ class Ai1wm_Main_Controller {
719
'unable_to_confirm_the_import' => __( 'Unable to confirm the import. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
720
'unable_to_prepare_blogs_on_import' => __( 'Unable to prepare blogs on import. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
721
'unable_to_stop_the_import' => __( 'Unable to stop the import. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
722
- 'please_wait_stopping_the_export' => __( 'Please wait, stopping the import...', AI1WM_PLUGIN_NAME ),
723
'close_import' => __( 'Close', AI1WM_PLUGIN_NAME ),
724
'stop_import' => __( 'Stop import', AI1WM_PLUGIN_NAME ),
725
'confirm_import' => __( 'Proceed', AI1WM_PLUGIN_NAME ),
@@ -836,7 +837,7 @@ class Ai1wm_Main_Controller {
836
'unable_to_confirm_the_import' => __( 'Unable to confirm the import. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
837
'unable_to_prepare_blogs_on_import' => __( 'Unable to prepare blogs on import. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
838
'unable_to_stop_the_import' => __( 'Unable to stop the import. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
839
- 'please_wait_stopping_the_export' => __( 'Please wait, stopping the import...', AI1WM_PLUGIN_NAME ),
840
'close_import' => __( 'Close', AI1WM_PLUGIN_NAME ),
841
'stop_import' => __( 'Stop import', AI1WM_PLUGIN_NAME ),
842
'confirm_import' => __( 'Proceed', AI1WM_PLUGIN_NAME ),
555
);
556
557
wp_register_script(
558
+ 'ai1wm_settings',
559
+ Ai1wm_Template::asset_link( 'javascript/settings.min.js' ),
560
array( 'ai1wm_util' )
561
);
562
563
+ wp_localize_script( 'ai1wm_settings', 'ai1wm_locale', array(
564
+ 'leave_feedback' => __( 'Leave plugin developers any feedback here', AI1WM_PLUGIN_NAME ),
565
+ 'how_may_we_help_you' => __( 'How may we help you?', AI1WM_PLUGIN_NAME ),
566
+ 'thanks_for_submitting_your_feedback' => __( 'Thanks for submitting your feedback!', AI1WM_PLUGIN_NAME ),
567
+ 'thanks_for_submitting_your_request' => __( 'Thanks for submitting your request!', AI1WM_PLUGIN_NAME ),
568
+ ) );
569
}
570
571
/**
720
'unable_to_confirm_the_import' => __( 'Unable to confirm the import. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
721
'unable_to_prepare_blogs_on_import' => __( 'Unable to prepare blogs on import. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
722
'unable_to_stop_the_import' => __( 'Unable to stop the import. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
723
+ 'please_wait_stopping_the_import' => __( 'Please wait, stopping the import...', AI1WM_PLUGIN_NAME ),
724
'close_import' => __( 'Close', AI1WM_PLUGIN_NAME ),
725
'stop_import' => __( 'Stop import', AI1WM_PLUGIN_NAME ),
726
'confirm_import' => __( 'Proceed', AI1WM_PLUGIN_NAME ),
837
'unable_to_confirm_the_import' => __( 'Unable to confirm the import. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
838
'unable_to_prepare_blogs_on_import' => __( 'Unable to prepare blogs on import. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
839
'unable_to_stop_the_import' => __( 'Unable to stop the import. Refresh the page and try again', AI1WM_PLUGIN_NAME ),
840
+ 'please_wait_stopping_the_import' => __( 'Please wait, stopping the import...', AI1WM_PLUGIN_NAME ),
841
'close_import' => __( 'Close', AI1WM_PLUGIN_NAME ),
842
'stop_import' => __( 'Stop import', AI1WM_PLUGIN_NAME ),
843
'confirm_import' => __( 'Proceed', AI1WM_PLUGIN_NAME ),
lib/model/class-ai1wm-extensions.php CHANGED
@@ -41,7 +41,7 @@ class Ai1wm_Extensions {
41
'about' => AI1WMZE_PLUGIN_ABOUT,
42
'basename' => AI1WMZE_PLUGIN_BASENAME,
43
'version' => AI1WMZE_VERSION,
44
- 'requires' => '1.1',
45
'short' => AI1WMZE_PLUGIN_SHORT,
46
);
47
}
@@ -54,7 +54,7 @@ class Ai1wm_Extensions {
54
'about' => AI1WMAE_PLUGIN_ABOUT,
55
'basename' => AI1WMAE_PLUGIN_BASENAME,
56
'version' => AI1WMAE_VERSION,
57
- 'requires' => '1.3',
58
'short' => AI1WMAE_PLUGIN_SHORT,
59
);
60
}
@@ -67,7 +67,7 @@ class Ai1wm_Extensions {
67
'about' => AI1WMBE_PLUGIN_ABOUT,
68
'basename' => AI1WMBE_PLUGIN_BASENAME,
69
'version' => AI1WMBE_VERSION,
70
- 'requires' => '1.13',
71
'short' => AI1WMBE_PLUGIN_SHORT,
72
);
73
}
@@ -80,7 +80,7 @@ class Ai1wm_Extensions {
80
'about' => AI1WMIE_PLUGIN_ABOUT,
81
'basename' => AI1WMIE_PLUGIN_BASENAME,
82
'version' => AI1WMIE_VERSION,
83
- 'requires' => '1.6',
84
'short' => AI1WMIE_PLUGIN_SHORT,
85
);
86
}
@@ -93,7 +93,7 @@ class Ai1wm_Extensions {
93
'about' => AI1WMDE_PLUGIN_ABOUT,
94
'basename' => AI1WMDE_PLUGIN_BASENAME,
95
'version' => AI1WMDE_VERSION,
96
- 'requires' => '3.33',
97
'short' => AI1WMDE_PLUGIN_SHORT,
98
);
99
}
@@ -119,7 +119,7 @@ class Ai1wm_Extensions {
119
'about' => AI1WMFE_PLUGIN_ABOUT,
120
'basename' => AI1WMFE_PLUGIN_BASENAME,
121
'version' => AI1WMFE_VERSION,
122
- 'requires' => '2.40',
123
'short' => AI1WMFE_PLUGIN_SHORT,
124
);
125
}
@@ -132,7 +132,7 @@ class Ai1wm_Extensions {
132
'about' => AI1WMCE_PLUGIN_ABOUT,
133
'basename' => AI1WMCE_PLUGIN_BASENAME,
134
'version' => AI1WMCE_VERSION,
135
- 'requires' => '1.0',
136
'short' => AI1WMCE_PLUGIN_SHORT,
137
);
138
}
@@ -145,7 +145,7 @@ class Ai1wm_Extensions {
145
'about' => AI1WMGE_PLUGIN_ABOUT,
146
'basename' => AI1WMGE_PLUGIN_BASENAME,
147
'version' => AI1WMGE_VERSION,
148
- 'requires' => '2.38',
149
'short' => AI1WMGE_PLUGIN_SHORT,
150
);
151
}
@@ -158,7 +158,7 @@ class Ai1wm_Extensions {
158
'about' => AI1WMRE_PLUGIN_ABOUT,
159
'basename' => AI1WMRE_PLUGIN_BASENAME,
160
'version' => AI1WMRE_VERSION,
161
- 'requires' => '1.0',
162
'short' => AI1WMRE_PLUGIN_SHORT,
163
);
164
}
@@ -171,7 +171,7 @@ class Ai1wm_Extensions {
171
'about' => AI1WMEE_PLUGIN_ABOUT,
172
'basename' => AI1WMEE_PLUGIN_BASENAME,
173
'version' => AI1WMEE_VERSION,
174
- 'requires' => '1.10',
175
'short' => AI1WMEE_PLUGIN_SHORT,
176
);
177
}
@@ -184,7 +184,7 @@ class Ai1wm_Extensions {
184
'about' => AI1WMME_PLUGIN_ABOUT,
185
'basename' => AI1WMME_PLUGIN_BASENAME,
186
'version' => AI1WMME_VERSION,
187
- 'requires' => '3.61',
188
'short' => AI1WMME_PLUGIN_SHORT,
189
);
190
}
@@ -197,7 +197,7 @@ class Ai1wm_Extensions {
197
'about' => AI1WMOE_PLUGIN_ABOUT,
198
'basename' => AI1WMOE_PLUGIN_BASENAME,
199
'version' => AI1WMOE_VERSION,
200
- 'requires' => '1.23',
201
'short' => AI1WMOE_PLUGIN_SHORT,
202
);
203
}
@@ -210,7 +210,7 @@ class Ai1wm_Extensions {
210
'about' => AI1WMPE_PLUGIN_ABOUT,
211
'basename' => AI1WMPE_PLUGIN_BASENAME,
212
'version' => AI1WMPE_VERSION,
213
- 'requires' => '1.0',
214
'short' => AI1WMPE_PLUGIN_SHORT,
215
);
216
}
@@ -223,7 +223,7 @@ class Ai1wm_Extensions {
223
'about' => AI1WMNE_PLUGIN_ABOUT,
224
'basename' => AI1WMNE_PLUGIN_BASENAME,
225
'version' => AI1WMNE_VERSION,
226
- 'requires' => '1.0',
227
'short' => AI1WMNE_PLUGIN_SHORT,
228
);
229
}
@@ -236,7 +236,7 @@ class Ai1wm_Extensions {
236
'about' => AI1WMSE_PLUGIN_ABOUT,
237
'basename' => AI1WMSE_PLUGIN_BASENAME,
238
'version' => AI1WMSE_VERSION,
239
- 'requires' => '3.27',
240
'short' => AI1WMSE_PLUGIN_SHORT,
241
);
242
}
@@ -249,7 +249,7 @@ class Ai1wm_Extensions {
249
'about' => AI1WMUE_PLUGIN_ABOUT,
250
'basename' => AI1WMUE_PLUGIN_BASENAME,
251
'version' => AI1WMUE_VERSION,
252
- 'requires' => '2.20',
253
'short' => AI1WMUE_PLUGIN_SHORT,
254
);
255
}
@@ -262,7 +262,7 @@ class Ai1wm_Extensions {
262
'about' => AI1WMLE_PLUGIN_ABOUT,
263
'basename' => AI1WMLE_PLUGIN_BASENAME,
264
'version' => AI1WMLE_VERSION,
265
- 'requires' => '2.29',
266
'short' => AI1WMLE_PLUGIN_SHORT,
267
);
268
}
@@ -275,7 +275,7 @@ class Ai1wm_Extensions {
275
'about' => AI1WMWE_PLUGIN_ABOUT,
276
'basename' => AI1WMWE_PLUGIN_BASENAME,
277
'version' => AI1WMWE_VERSION,
278
- 'requires' => '1.0',
279
'short' => AI1WMWE_PLUGIN_SHORT,
280
);
281
}
41
'about' => AI1WMZE_PLUGIN_ABOUT,
42
'basename' => AI1WMZE_PLUGIN_BASENAME,
43
'version' => AI1WMZE_VERSION,
44
+ 'requires' => '1.5',
45
'short' => AI1WMZE_PLUGIN_SHORT,
46
);
47
}
54
'about' => AI1WMAE_PLUGIN_ABOUT,
55
'basename' => AI1WMAE_PLUGIN_BASENAME,
56
'version' => AI1WMAE_VERSION,
57
+ 'requires' => '1.9',
58
'short' => AI1WMAE_PLUGIN_SHORT,
59
);
60
}
67
'about' => AI1WMBE_PLUGIN_ABOUT,
68
'basename' => AI1WMBE_PLUGIN_BASENAME,
69
'version' => AI1WMBE_VERSION,
70
+ 'requires' => '1.17',
71
'short' => AI1WMBE_PLUGIN_SHORT,
72
);
73
}
80
'about' => AI1WMIE_PLUGIN_ABOUT,
81
'basename' => AI1WMIE_PLUGIN_BASENAME,
82
'version' => AI1WMIE_VERSION,
83
+ 'requires' => '1.16',
84
'short' => AI1WMIE_PLUGIN_SHORT,
85
);
86
}
93
'about' => AI1WMDE_PLUGIN_ABOUT,
94
'basename' => AI1WMDE_PLUGIN_BASENAME,
95
'version' => AI1WMDE_VERSION,
96
+ 'requires' => '3.37',
97
'short' => AI1WMDE_PLUGIN_SHORT,
98
);
99
}
119
'about' => AI1WMFE_PLUGIN_ABOUT,
120
'basename' => AI1WMFE_PLUGIN_BASENAME,
121
'version' => AI1WMFE_VERSION,
122
+ 'requires' => '2.43',
123
'short' => AI1WMFE_PLUGIN_SHORT,
124
);
125
}
132
'about' => AI1WMCE_PLUGIN_ABOUT,
133
'basename' => AI1WMCE_PLUGIN_BASENAME,
134
'version' => AI1WMCE_VERSION,
135
+ 'requires' => '1.6',
136
'short' => AI1WMCE_PLUGIN_SHORT,
137
);
138
}
145
'about' => AI1WMGE_PLUGIN_ABOUT,
146
'basename' => AI1WMGE_PLUGIN_BASENAME,
147
'version' => AI1WMGE_VERSION,
148
+ 'requires' => '2.42',
149
'short' => AI1WMGE_PLUGIN_SHORT,
150
);
151
}
158
'about' => AI1WMRE_PLUGIN_ABOUT,
159
'basename' => AI1WMRE_PLUGIN_BASENAME,
160
'version' => AI1WMRE_VERSION,
161
+ 'requires' => '1.7',
162
'short' => AI1WMRE_PLUGIN_SHORT,
163
);
164
}
171
'about' => AI1WMEE_PLUGIN_ABOUT,
172
'basename' => AI1WMEE_PLUGIN_BASENAME,
173
'version' => AI1WMEE_VERSION,
174
+ 'requires' => '1.14',
175
'short' => AI1WMEE_PLUGIN_SHORT,
176
);
177
}
184
'about' => AI1WMME_PLUGIN_ABOUT,
185
'basename' => AI1WMME_PLUGIN_BASENAME,
186
'version' => AI1WMME_VERSION,
187
+ 'requires' => '3.64',
188
'short' => AI1WMME_PLUGIN_SHORT,
189
);
190
}
197
'about' => AI1WMOE_PLUGIN_ABOUT,
198
'basename' => AI1WMOE_PLUGIN_BASENAME,
199
'version' => AI1WMOE_VERSION,
200
+ 'requires' => '1.28',
201
'short' => AI1WMOE_PLUGIN_SHORT,
202
);
203
}
210
'about' => AI1WMPE_PLUGIN_ABOUT,
211
'basename' => AI1WMPE_PLUGIN_BASENAME,
212
'version' => AI1WMPE_VERSION,
213
+ 'requires' => '1.3',
214
'short' => AI1WMPE_PLUGIN_SHORT,
215
);
216
}
223
'about' => AI1WMNE_PLUGIN_ABOUT,
224
'basename' => AI1WMNE_PLUGIN_BASENAME,
225
'version' => AI1WMNE_VERSION,
226
+ 'requires' => '1.1',
227
'short' => AI1WMNE_PLUGIN_SHORT,
228
);
229
}
236
'about' => AI1WMSE_PLUGIN_ABOUT,
237
'basename' => AI1WMSE_PLUGIN_BASENAME,
238
'version' => AI1WMSE_VERSION,
239
+ 'requires' => '3.35',
240
'short' => AI1WMSE_PLUGIN_SHORT,
241
);
242
}
249
'about' => AI1WMUE_PLUGIN_ABOUT,
250
'basename' => AI1WMUE_PLUGIN_BASENAME,
251
'version' => AI1WMUE_VERSION,
252
+ 'requires' => '2.23',
253
'short' => AI1WMUE_PLUGIN_SHORT,
254
);
255
}
262
'about' => AI1WMLE_PLUGIN_ABOUT,
263
'basename' => AI1WMLE_PLUGIN_BASENAME,
264
'version' => AI1WMLE_VERSION,
265
+ 'requires' => '2.32',
266
'short' => AI1WMLE_PLUGIN_SHORT,
267
);
268
}
275
'about' => AI1WMWE_PLUGIN_ABOUT,
276
'basename' => AI1WMWE_PLUGIN_BASENAME,
277
'version' => AI1WMWE_VERSION,
278
+ 'requires' => '1.3',
279
'short' => AI1WMWE_PLUGIN_SHORT,
280
);
281
}
lib/model/export/class-ai1wm-export-clean.php CHANGED
@@ -27,6 +27,9 @@ class Ai1wm_Export_Clean {
27
28
public static function execute( $params ) {
29
Ai1wm_Directory::delete( ai1wm_storage_path( $params ) );
30
exit;
31
}
32
}
27
28
public static function execute( $params ) {
29
Ai1wm_Directory::delete( ai1wm_storage_path( $params ) );
30
+ if ( defined( 'WP_CLI' ) ) {
31
+ return $params;
32
+ }
33
exit;
34
}
35
}
lib/model/export/class-ai1wm-export-enumerate.php CHANGED
@@ -108,9 +108,6 @@ class Ai1wm_Export_Enumerate {
108
// Iterate over content directory
109
$iterator = new Ai1wm_Recursive_Directory_Iterator( WP_CONTENT_DIR );
110
111
- // Exclude new line file names
112
- $iterator = new Ai1wm_Recursive_Newline_Filter( $iterator );
113
-
114
// Exclude uploads, plugins or themes
115
$iterator = new Ai1wm_Recursive_Exclude_Filter( $iterator, apply_filters( 'ai1wm_exclude_content_from_export', $exclude_filters ) );
116
108
// Iterate over content directory
109
$iterator = new Ai1wm_Recursive_Directory_Iterator( WP_CONTENT_DIR );
110
111
// Exclude uploads, plugins or themes
112
$iterator = new Ai1wm_Recursive_Exclude_Filter( $iterator, apply_filters( 'ai1wm_exclude_content_from_export', $exclude_filters ) );
113
lib/model/import/class-ai1wm-import-clean.php CHANGED
@@ -27,6 +27,9 @@ class Ai1wm_Import_Clean {
27
28
public static function execute( $params ) {
29
Ai1wm_Directory::delete( ai1wm_storage_path( $params ) );
30
exit;
31
}
32
}
27
28
public static function execute( $params ) {
29
Ai1wm_Directory::delete( ai1wm_storage_path( $params ) );
30
+ if ( defined( 'WP_CLI' ) ) {
31
+ return $params;
32
+ }
33
exit;
34
}
35
}
lib/model/import/class-ai1wm-import-confirm.php CHANGED
@@ -49,12 +49,34 @@ class Ai1wm_Import_Confirm {
49
// Check compatibility of PHP versions
50
if ( isset( $package['PHP']['Version'] ) ) {
51
if ( version_compare( $package['PHP']['Version'], '7.0.0', '<' ) && version_compare( PHP_VERSION, '7.0.0', '>=' ) ) {
52
- $messages[] = __(
53
- '<i class="ai1wm-import-info">Your backup is from a PHP 5 but the site that you are importing to is PHP 7. ' .
54
- 'This could cause the import to fail. <a href="https://help.servmask.com/knowledgebase/migrate-wordpress-from-php-5-to-php-7/" target="_blank">Technical details</a></i>',
55
- AI1WM_PLUGIN_NAME
56
- );
57
}
58
}
59
60
// Set progress
49
// Check compatibility of PHP versions
50
if ( isset( $package['PHP']['Version'] ) ) {
51
if ( version_compare( $package['PHP']['Version'], '7.0.0', '<' ) && version_compare( PHP_VERSION, '7.0.0', '>=' ) ) {
52
+
53
+ if ( defined( 'WP_CLI' ) ) {
54
+ WP_CLI::log(
55
+ __( 'Your backup is from a PHP 5 but the site that you are importing to is PHP 7.', AI1WM_PLUGIN_NAME ) .
56
+ __( 'This could cause the import to fail. Technical details: https://help.servmask.com/knowledgebase/migrate-wordpress-from-php-5-to-php-7', AI1WM_PLUGIN_NAME )
57
+ );
58
+ } else {
59
+ $messages[] = __(
60
+ '<i class="ai1wm-import-info">Your backup is from a PHP 5 but the site that you are importing to is PHP 7. ' .
61
+ 'This could cause the import to fail. <a href="https://help.servmask.com/knowledgebase/migrate-wordpress-from-php-5-to-php-7/" target="_blank">Technical details</a></i>',
62
+ AI1WM_PLUGIN_NAME
63
+ );
64
+ }
65
+ }
66
+ }
67
+
68
+ if ( defined( 'WP_CLI' ) ) {
69
+ $message = __(
70
+ 'The import process will overwrite your website including the database, media, plugins, and themes. Are you sure to proceed?',
71
+ AI1WM_PLUGIN_NAME
72
+ );
73
+
74
+ $assoc_args = array();
75
+ if ( isset( $params['cli_args'] ) ) {
76
+ $assoc_args = $params['cli_args'];
77
}
78
+ WP_CLI::confirm( $message, $assoc_args );
79
+ return $params;
80
}
81
82
// Set progress
lib/vendor/servmask/archiver/class-ai1wm-archiver.php CHANGED
@@ -191,17 +191,27 @@ abstract class Ai1wm_Archiver {
191
* @return bool
192
*/
193
public function is_valid() {
194
- if ( ( $offset = @ftell( $this->file_handle ) ) !== false ) {
195
- if ( @fseek( $this->file_handle, -4377, SEEK_END ) !== -1 ) {
196
- if ( @fread( $this->file_handle, 4377 ) === $this->eof ) {
197
- if ( @fseek( $this->file_handle, $offset, SEEK_SET ) !== -1 ) {
198
- return true;
199
- }
200
- }
201
- }
202
}
203
204
- return false;
205
}
206
207
/**
191
* @return bool
192
*/
193
public function is_valid() {
194
+ // Failed detecting the current file pointer offset
195
+ if ( ( $offset = @ftell( $this->file_handle ) ) === false ) {
196
+ return false;
197
+ }
198
+
199
+ // Failed seeking the beginning of EOL block
200
+ if ( @fseek( $this->file_handle, -4377, SEEK_END ) === -1 ) {
201
+ return false;
202
+ }
203
+
204
+ // Trailing block does not match EOL: file is incomplete
205
+ if ( @fread( $this->file_handle, 4377 ) !== $this->eof ) {
206
+ return false;
207
+ }
208
+
209
+ // Failed returning to original offset
210
+ if ( @fseek( $this->file_handle, $offset, SEEK_SET ) === -1 ) {
211
+ return false;
212
}
213
214
+ return true;
215
}
216
217
/**
lib/vendor/servmask/filter/class-ai1wm-recursive-exclude-filter.php CHANGED
@@ -35,7 +35,19 @@ class Ai1wm_Recursive_Exclude_Filter extends RecursiveFilterIterator {
35
}
36
37
public function accept() {
38
- return ! in_array( $this->getInnerIterator()->getSubPathname(), $this->exclude );
39
}
40
41
public function getChildren() {
35
}
36
37
public function accept() {
38
+ if ( in_array( $this->getInnerIterator()->getSubPathname(), $this->exclude ) ) {
39
+ return false;
40
+ }
41
+
42
+ if ( strpos( $this->getInnerIterator()->getSubPathname(), "\n" ) !== false ) {
43
+ return false;
44
+ }
45
+
46
+ if ( strpos( $this->getInnerIterator()->getSubPathname(), "\r" ) !== false ) {
47
+ return false;
48
+ }
49
+
50
+ return true;
51
}
52
53
public function getChildren() {
lib/vendor/servmask/filter/class-ai1wm-recursive-newline-filter.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
- /**
3
- * Copyright (C) 2014-2018 ServMask Inc.
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
- *
18
- * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
19
- * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
20
- * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
21
- * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
22
- * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
23
- * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
24
- */
25
-
26
- class Ai1wm_Recursive_Newline_Filter extends RecursiveFilterIterator {
27
-
28
- public function accept() {
29
- return strpos( $this->getInnerIterator()->getSubPathname(), "\n" ) === false &&
30
- strpos( $this->getInnerIterator()->getSubPathname(), "\r" ) === false;
31
- }
32
- }
lib/view/assets/javascript/backups.min.js CHANGED
@@ -582,7 +582,7 @@ Import.prototype.clean = function (options, retries) {
582
this.stopImport = true;
583
584
// Set initial status
585
- this.setStatus({ type: 'info', message: ai1wm_locale.please_wait_stopping_the_export });
586
587
// Set params
588
var params = this.params.concat({ name: 'secret_key', value: ai1wm_import.secret_key }).concat({ name: 'priority', value: 400 });
582
this.stopImport = true;
583
584
// Set initial status
585
+ this.setStatus({ type: 'info', message: ai1wm_locale.please_wait_stopping_the_import });
586
587
// Set params
588
var params = this.params.concat({ name: 'secret_key', value: ai1wm_import.secret_key }).concat({ name: 'priority', value: 400 });
lib/view/assets/javascript/import.min.js CHANGED
@@ -60,7 +60,7 @@
60
/******/ __webpack_require__.p = "";
61
/******/
62
/******/ // Load entry module and return exports
63
- /******/ return __webpack_require__(__webpack_require__.s = 13);
64
/******/ })
65
/************************************************************************/
66
/******/ ([
@@ -582,7 +582,7 @@ Import.prototype.clean = function (options, retries) {
582
this.stopImport = true;
583
584
// Set initial status
585
- this.setStatus({ type: 'info', message: ai1wm_locale.please_wait_stopping_the_export });
586
587
// Set params
588
var params = this.params.concat({ name: 'secret_key', value: ai1wm_import.secret_key }).concat({ name: 'priority', value: 400 });
@@ -1137,8 +1137,7 @@ module.exports = Modal;
1137
/* 9 */,
1138
/* 10 */,
1139
/* 11 */,
1140
- /* 12 */,
1141
- /* 13 */
1142
/***/ (function(module, exports, __webpack_require__) {
1143
1144
"use strict";
@@ -1168,7 +1167,7 @@ module.exports = Modal;
1168
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
1169
*/
1170
1171
- var FileUploader = __webpack_require__(14),
1172
Feedback = __webpack_require__(1),
1173
Report = __webpack_require__(2),
1174
Import = __webpack_require__(3);
@@ -1198,7 +1197,7 @@ global.Ai1wm = jQuery.extend({}, global.Ai1wm, { FileUploader: FileUploader, Fee
1198
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
1199
1200
/***/ }),
1201
- /* 14 */
1202
/***/ (function(module, exports, __webpack_require__) {
1203
1204
"use strict";
60
/******/ __webpack_require__.p = "";
61
/******/
62
/******/ // Load entry module and return exports
63
+ /******/ return __webpack_require__(__webpack_require__.s = 12);
64
/******/ })
65
/************************************************************************/
66
/******/ ([
582
this.stopImport = true;
583
584
// Set initial status
585
+ this.setStatus({ type: 'info', message: ai1wm_locale.please_wait_stopping_the_import });
586
587
// Set params
588
var params = this.params.concat({ name: 'secret_key', value: ai1wm_import.secret_key }).concat({ name: 'priority', value: 400 });
1137
/* 9 */,
1138
/* 10 */,
1139
/* 11 */,
1140
+ /* 12 */
1141
/***/ (function(module, exports, __webpack_require__) {
1142
1143
"use strict";
1167
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
1168
*/
1169
1170
+ var FileUploader = __webpack_require__(13),
1171
Feedback = __webpack_require__(1),
1172
Report = __webpack_require__(2),
1173
Import = __webpack_require__(3);
1197
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
1198
1199
/***/ }),
1200
+ /* 13 */
1201
/***/ (function(module, exports, __webpack_require__) {
1202
1203
"use strict";
lib/view/assets/javascript/settings.min.js ADDED
@@ -0,0 +1,370 @@
1
+ /******/ (function(modules) { // webpackBootstrap
2
+ /******/ // The module cache
3
+ /******/ var installedModules = {};
4
+ /******/
5
+ /******/ // The require function
6
+ /******/ function __webpack_require__(moduleId) {
7
+ /******/
8
+ /******/ // Check if module is in cache
9
+ /******/ if(installedModules[moduleId]) {
10
+ /******/ return installedModules[moduleId].exports;
11
+ /******/ }
12
+ /******/ // Create a new module (and put it into the cache)
13
+ /******/ var module = installedModules[moduleId] = {
14
+ /******/ i: moduleId,
15
+ /******/ l: false,
16
+ /******/ exports: {}
17
+ /******/ };
18
+ /******/
19
+ /******/ // Execute the module function
20
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
+ /******/
22
+ /******/ // Flag the module as loaded
23
+ /******/ module.l = true;
24
+ /******/
25
+ /******/ // Return the exports of the module
26
+ /******/ return module.exports;
27
+ /******/ }
28
+ /******/
29
+ /******/
30
+ /******/ // expose the modules object (__webpack_modules__)
31
+ /******/ __webpack_require__.m = modules;
32
+ /******/
33
+ /******/ // expose the module cache
34
+ /******/ __webpack_require__.c = installedModules;
35
+ /******/
36
+ /******/ // define getter function for harmony exports
37
+ /******/ __webpack_require__.d = function(exports, name, getter) {
38
+ /******/ if(!__webpack_require__.o(exports, name)) {
39
+ /******/ Object.defineProperty(exports, name, {
40
+ /******/ configurable: false,
41
+ /******/ enumerable: true,
42
+ /******/ get: getter
43
+ /******/ });
44
+ /******/ }
45
+ /******/ };
46
+ /******/
47
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
48
+ /******/ __webpack_require__.n = function(module) {
49
+ /******/ var getter = module && module.__esModule ?
50
+ /******/ function getDefault() { return module['default']; } :
51
+ /******/ function getModuleExports() { return module; };
52
+ /******/ __webpack_require__.d(getter, 'a', getter);
53
+ /******/ return getter;
54
+ /******/ };
55
+ /******/
56
+ /******/ // Object.prototype.hasOwnProperty.call
57
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
58
+ /******/
59
+ /******/ // __webpack_public_path__
60
+ /******/ __webpack_require__.p = "";
61
+ /******/
62
+ /******/ // Load entry module and return exports
63
+ /******/ return __webpack_require__(__webpack_require__.s = 14);
64
+ /******/ })
65
+ /************************************************************************/
66
+ /******/ ({
67
+
68
+ /***/ 0:
69
+ /***/ (function(module, exports) {
70
+
71
+ var g;
72
+
73
+ // This works in non-strict mode
74
+ g = (function() {
75
+ return this;
76
+ })();
77
+
78
+ try {
79
+ // This works if eval is allowed (see CSP)
80
+ g = g || Function("return this")() || (1,eval)("this");
81
+ } catch(e) {
82
+ // This works if the window reference is available
83
+ if(typeof window === "object")
84
+ g = window;
85
+ }
86
+
87
+ // g can still be undefined, but nothing to do about it...
88
+ // We return undefined, instead of nothing here, so it's
89
+ // easier to handle this case. if(!global) { ...}
90
+
91
+ module.exports = g;
92
+
93
+
94
+ /***/ }),
95
+
96
+ /***/ 1:
97
+ /***/ (function(module, exports, __webpack_require__) {
98
+
99
+ "use strict";
100
+
101
+
102
+ /**
103
+ * Copyright (C) 2014-2018 ServMask Inc.
104
+ *
105
+ * This program is free software: you can redistribute it and/or modify
106
+ * it under the terms of the GNU General Public License as published by
107
+ * the Free Software Foundation, either version 3 of the License, or
108
+ * (at your option) any later version.
109
+ *
110
+ * This program is distributed in the hope that it will be useful,
111
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
112
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
113
+ * GNU General Public License for more details.
114
+ *
115
+ * You should have received a copy of the GNU General Public License
116
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
117
+ *
118
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
119
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
120
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
121
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
122
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
123
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
124
+ */
125
+
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')) {
134
+ radio.attr('checked', false);
135
+ } else {
136
+ radio.attr('checked', true);
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
151
+ $('#ai1wm-feedback-type-3').click(function () {
152
+ // Hide other options
153
+ $('#ai1wm-feedback-type-1, #ai1wm-feedback-type-2').closest('li').hide();
154
+
155
+ // Change placeholder message
156
+ $('.ai1wm-feedback-form').find('.ai1wm-feedback-message').attr('placeholder', ai1wm_locale.how_may_we_help_you);
157
+
158
+ // Show feedback form
159
+ $('.ai1wm-feedback-form').fadeIn();
160
+ });
161
+
162
+ // Cancel feedback form
163
+ $('#ai1wm-feedback-cancel').click(function (e) {
164
+ $('.ai1wm-feedback-form').fadeOut(function () {
165
+ $('.ai1wm-feedback-type').attr('checked', false).closest('li').show();
166
+ });
167
+
168
+ e.preventDefault();
169
+ });
170
+
171
+ // Send feedback form
172
+ $('#ai1wm-feedback-submit').click(function (e) {
173
+ var self = $(this);
174
+
175
+ var spinner = self.next();
176
+ var type = $('.ai1wm-feedback-type:checked').val();
177
+ var email = $('.ai1wm-feedback-email').val();
178
+ var message = $('.ai1wm-feedback-message').val();
179
+ var terms = $('.ai1wm-feedback-terms').is(':checked');
180
+
181
+ self.attr('disabled', true);
182
+ spinner.css('visibility', 'visible');
183
+
184
+ $.ajax({
185
+ url: ai1wm_feedback.ajax.url,
186
+ type: 'POST',
187
+ dataType: 'json',
188
+ async: true,
189
+ data: {
190
+ 'secret_key': ai1wm_feedback.secret_key,
191
+ 'ai1wm_type': type,
192
+ 'ai1wm_email': email,
193
+ 'ai1wm_message': message,
194
+ 'ai1wm_terms': +terms
195
+ },
196
+ dataFilter: function dataFilter(data, type) {
197
+ return Ai1wm.Util.json(data);
198
+ }
199
+ }).done(function (data) {
200
+ self.attr('disabled', false);
201
+ spinner.css('visibility', 'hidden');
202
+
203
+ if (data.errors.length > 0) {
204
+ $('.ai1wm-feedback .ai1wm-message').remove();
205
+
206
+ var errorMessage = $('<div />').addClass('ai1wm-message ai1wm-error-message');
207
+ $.each(data.errors, function (key, value) {
208
+ errorMessage.append($('<p />').text(value));
209
+ });
210
+
211
+ $('.ai1wm-feedback').prepend(errorMessage);
212
+ } else {
213
+ var successMessage = $('<div />').addClass('ai1wm-message ai1wm-success-message');
214
+ successMessage.append($('<p />').text(ai1wm_locale.thanks_for_submitting_your_feedback));
215
+
216
+ $('.ai1wm-feedback').html(successMessage);
217
+ }
218
+ });
219
+
220
+ e.preventDefault();
221
+ });
222
+ });
223
+
224
+ /***/ }),
225
+
226
+ /***/ 14:
227
+ /***/ (function(module, exports, __webpack_require__) {
228
+
229
+ "use strict";
230
+ /* WEBPACK VAR INJECTION */(function(global) {
231
+
232
+ /**
233
+ * Copyright (C) 2014-2018 ServMask Inc.
234
+ *
235
+ * This program is free software: you can redistribute it and/or modify
236
+ * it under the terms of the GNU General Public License as published by
237
+ * the Free Software Foundation, either version 3 of the License, or
238
+ * (at your option) any later version.
239
+ *
240
+ * This program is distributed in the hope that it will be useful,
241
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
242
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
243
+ * GNU General Public License for more details.
244
+ *
245
+ * You should have received a copy of the GNU General Public License
246
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
247
+ *
248
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
249
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
250
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
251
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
252
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
253
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
254
+ */
255
+
256
+ var Feedback = __webpack_require__(1),
257
+ Report = __webpack_require__(2);
258
+
259
+ jQuery(document).ready(function ($) {
260
+ 'use strict';
261
+ });
262
+
263
+ global.Ai1wm = jQuery.extend({}, global.Ai1wm, { Feedback: Feedback, Report: Report });
264
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
265
+
266
+ /***/ }),
267
+
268
+ /***/ 2:
269
+ /***/ (function(module, exports, __webpack_require__) {
270
+
271
+ "use strict";
272
+
273
+
274
+ /**
275
+ * Copyright (C) 2014-2018 ServMask Inc.
276
+ *
277
+ * This program is free software: you can redistribute it and/or modify
278
+ * it under the terms of the GNU General Public License as published by
279
+ * the Free Software Foundation, either version 3 of the License, or
280
+ * (at your option) any later version.
281
+ *
282
+ * This program is distributed in the hope that it will be useful,
283
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
284
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
285
+ * GNU General Public License for more details.
286
+ *
287
+ * You should have received a copy of the GNU General Public License
288
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
289
+ *
290
+ * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗
291
+ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝
292
+ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝
293
+ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗
294
+ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗
295
+ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
296
+ */
297
+
298
+ jQuery(document).ready(function ($) {
299
+ 'use strict';
300
+
301
+ $('#ai1wm-report-problem-button').click(function (e) {
302
+ $(this).next('.ai1wm-report-problem-dialog').toggleClass('ai1wm-report-active');
303
+
304
+ e.preventDefault();
305
+ });
306
+
307
+ $('#ai1wm-report-cancel').click(function (e) {
308
+ $(this).closest('.ai1wm-report-problem-dialog').removeClass('ai1wm-report-active');
309
+
310
+ e.preventDefault();
311
+ });
312
+
313
+ $('#ai1wm-report-submit').click(function (r) {
314
+ var self = $(this);
315
+
316
+ var spinner = self.next();
317
+ var email = $('.ai1wm-report-email').val();
318
+ var message = $('.ai1wm-report-message').val();
319
+ var terms = $('.ai1wm-report-terms').is(':checked');
320
+
321
+ self.attr('disabled', true);
322
+ spinner.css('visibility', 'visible');
323
+
324
+ $.ajax({
325
+ url: ai1wm_report.ajax.url,
326
+ type: 'POST',
327
+ dataType: 'json',
328
+ async: true,
329
+ data: {
330
+ 'secret_key': ai1wm_report.secret_key,
331
+ 'ai1wm_email': email,
332
+ 'ai1wm_message': message,
333
+ 'ai1wm_terms': +terms
334
+ },
335
+ dataFilter: function dataFilter(data, type) {
336
+ return Ai1wm.Util.json(data);
337
+ }
338
+ }).done(function (data) {
339
+ self.attr('disabled', false);
340
+ spinner.css('visibility', 'hidden');
341
+
342
+ if (data.errors.length > 0) {
343
+ $('.ai1wm-report-problem-dialog .ai1wm-message').remove();
344
+
345
+ var errorMessage = $('<div />').addClass('ai1wm-message ai1wm-error-message');
346
+ $.each(data.errors, function (key, value) {
347
+ errorMessage.append($('<p />').text(value));
348
+ });
349
+
350
+ $('.ai1wm-report-problem-dialog').prepend(errorMessage);
351
+ } else {
352
+ var successMessage = $('<div />').addClass('ai1wm-message ai1wm-success-message');
353
+ successMessage.append($('<p />').text(ai1wm_locale.thanks_for_submitting_your_request));
354
+
355
+ $('.ai1wm-report-problem-dialog').html(successMessage);
356
+
357
+ // Hide message
358
+ setTimeout(function () {
359
+ $('.ai1wm-report-problem-dialog').removeClass('ai1wm-report-active');
360
+ }, 2000);
361
+ }
362
+ });
363
+
364
+ e.preventDefault();
365
+ });
366
+ });
367
+
368
+ /***/ })
369
+
370
+ /******/ });
lib/view/assets/javascript/updater.min.js CHANGED
@@ -60,12 +60,12 @@
60
/******/ __webpack_require__.p = "";
61
/******/
62
/******/ // Load entry module and return exports
63
- /******/ return __webpack_require__(__webpack_require__.s = 16);
64
/******/ })
65
/************************************************************************/
66
/******/ ({
67
68
- /***/ 16:
69
/***/ (function(module, exports, __webpack_require__) {
70
71
"use strict";
60
/******/ __webpack_require__.p = "";
61
/******/
62
/******/ // Load entry module and return exports
63
+ /******/ return __webpack_require__(__webpack_require__.s = 15);
64
/******/ })
65
/************************************************************************/
66
/******/ ({
67
68
+ /***/ 15:
69
/***/ (function(module, exports, __webpack_require__) {
70
71
"use strict";
lib/view/assets/javascript/util.min.js CHANGED
@@ -60,7 +60,7 @@
60
/******/ __webpack_require__.p = "";
61
/******/
62
/******/ // Load entry module and return exports
63
- /******/ return __webpack_require__(__webpack_require__.s = 17);
64
/******/ })
65
/************************************************************************/
66
/******/ ({
@@ -93,7 +93,7 @@ module.exports = g;
93
94
/***/ }),
95
96
- /***/ 17:
97
/***/ (function(module, exports, __webpack_require__) {
98
99
"use strict";
@@ -123,14 +123,14 @@ module.exports = g;
123
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
124
*/
125
126
- var Util = __webpack_require__(18);
127
128
global.Ai1wm = jQuery.extend({}, global.Ai1wm, { Util: Util });
129
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
130
131
/***/ }),
132
133
- /***/ 18:
134
/***/ (function(module, exports, __webpack_require__) {
135
136
"use strict";
60
/******/ __webpack_require__.p = "";
61
/******/
62
/******/ // Load entry module and return exports
63
+ /******/ return __webpack_require__(__webpack_require__.s = 16);
64
/******/ })
65
/************************************************************************/
66
/******/ ({
93
94
/***/ }),
95
96
+ /***/ 16:
97
/***/ (function(module, exports, __webpack_require__) {
98
99
"use strict";
123
* ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
124
*/
125
126
+ var Util = __webpack_require__(17);
127
128
global.Ai1wm = jQuery.extend({}, global.Ai1wm, { Util: Util });
129
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))
130
131
/***/ }),
132
133
+ /***/ 17:
134
/***/ (function(module, exports, __webpack_require__) {
135
136
"use strict";
loader.php CHANGED
@@ -125,14 +125,6 @@ require_once AI1WM_VENDOR_PATH .
125
DIRECTORY_SEPARATOR .
126
'class-ai1wm-recursive-exclude-filter.php';
127
128
- require_once AI1WM_VENDOR_PATH .
129
- DIRECTORY_SEPARATOR .
130
- 'servmask' .
131
- DIRECTORY_SEPARATOR .
132
- 'filter' .
133
- DIRECTORY_SEPARATOR .
134
- 'class-ai1wm-recursive-newline-filter.php';
135
-
136
require_once AI1WM_VENDOR_PATH .
137
DIRECTORY_SEPARATOR .
138
'servmask' .
125
DIRECTORY_SEPARATOR .
126
'class-ai1wm-recursive-exclude-filter.php';
127
128
require_once AI1WM_VENDOR_PATH .
129
DIRECTORY_SEPARATOR .
130
'servmask' .
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: 5.0
6
Requires PHP: 5.2.17
7
- Stable tag: 6.81
8
License: GPLv2 or later
9
10
Move, transfer, copy, migrate, and backup a site with 1-click. Quick, easy, and reliable.
@@ -108,6 +108,15 @@ Alternatively you can download the plugin using the download button on this page
108
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)
109
110
== Changelog ==
111
= 6.81 =
112
**Added**
113
4
Requires at least: 3.3
5
Tested up to: 5.0
6
Requires PHP: 5.2.17
7
+ Stable tag: 6.82
8
License: GPLv2 or later
9
10
Move, transfer, copy, migrate, and backup a site with 1-click. Quick, easy, and reliable.
108
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)
109
110
== Changelog ==
111
+ = 6.82 =
112
+ **Added**
113
+
114
+ * Support for PHP 7.3
115
+
116
+ **Fixed**
117
+
118
+ * Feedback form on settings page
119
+
120
= 6.81 =
121
**Added**
122