Version Description
- Fixed: Scheduled backups failed to run as configured after the last update.
- Improved the Restore UI.
- Refined some descriptions in the UI.
Download this release
Release Info
Developer | wpvivid |
Plugin | Migration, Backup, Staging – WPvivid |
Version | 0.9.15 |
Comparing to | |
See all releases |
Code changes from version 0.9.14 to 0.9.15
- admin/js/wpvivid-admin.js +50 -4
- admin/partials/wpvivid-backup-restore-page-display.php +7 -9
- includes/class-wpvivid-backup-uploader.php +3 -2
- includes/class-wpvivid-migrate.php +85 -79
- includes/class-wpvivid-restore-data.php +2 -1
- includes/class-wpvivid-restore-database.php +2 -2
- includes/class-wpvivid-setting.php +19 -14
- includes/class-wpvivid.php +8 -1
- includes/customclass/class-wpvivid-google-drive.php +14 -3
- readme.txt +11 -5
- wpvivid-backuprestore.php +2 -2
admin/js/wpvivid-admin.js
CHANGED
@@ -20,6 +20,7 @@ var wpvivid_get_download_restore_progress_retry = 0;
|
|
20 |
var wpvivid_restore_timeout = false;
|
21 |
var wpvivid_restore_need_download = false;
|
22 |
var wpvivid_restore_backup_old_site = false;
|
|
|
23 |
|
24 |
(function ($) {
|
25 |
'use strict';
|
@@ -177,6 +178,26 @@ var wpvivid_restore_backup_old_site = false;
|
|
177 |
|
178 |
})(jQuery);
|
179 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
window.onbeforeunload = function(e) {
|
181 |
if (wpvivid_settings_changed) {
|
182 |
if (wpvivid_location_href){
|
@@ -565,6 +586,25 @@ function wpvivid_start_backup(){
|
|
565 |
}
|
566 |
if(bcheck) {
|
567 |
var backup_data = wpvivid_ajax_data_transfer('backup');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
568 |
var ajax_data = {
|
569 |
'action': 'wpvivid_prepare_backup',
|
570 |
'backup': backup_data
|
@@ -1701,13 +1741,17 @@ function wpvivid_init_restore_data(restore_type){
|
|
1701 |
else if(restore_type == 'transfer'){
|
1702 |
restore_method = 'transfer_';
|
1703 |
}
|
|
|
|
|
1704 |
jQuery('#wpvivid_restore_'+restore_method+'btn').css({'pointer-events': 'none', 'opacity': '0.4'});
|
1705 |
jQuery('#wpvivid_clean_'+restore_method+'restore').css({'pointer-events': 'none', 'opacity': '0.4'});
|
1706 |
jQuery('#wpvivid_rollback_'+restore_method+'btn').css({'pointer-events': 'none', 'opacity': '0.4'});
|
1707 |
-
jQuery('#wpvivid_restore_'+restore_method+'part').
|
1708 |
jQuery('#wpvivid_clean_'+restore_method+'part').hide();
|
1709 |
jQuery('#wpvivid_rollback_'+restore_method+'part').hide();
|
1710 |
-
jQuery('#wpvivid_restore_is_migrate').
|
|
|
|
|
1711 |
jQuery('#wpvivid_restore_backup_old_site').hide();
|
1712 |
var ajax_data = {
|
1713 |
'action':'wpvivid_init_restore_page',
|
@@ -1759,6 +1803,8 @@ function wpvivid_init_restore_data(restore_type){
|
|
1759 |
});
|
1760 |
jQuery('#wpvivid_restore_' + restore_method + 'part').show();
|
1761 |
jQuery('#wpvivid_restore_backup_old_site').show();
|
|
|
|
|
1762 |
if (jsonarray.is_migrate === 1) {
|
1763 |
jQuery('#wpvivid_restore_is_migrate').show();
|
1764 |
jQuery('#wpvivid_restore_' + restore_method + 'btn').css({'pointer-events': 'none', 'opacity': '0.4'});
|
@@ -1793,7 +1839,7 @@ function wpvivid_init_restore_data(restore_type){
|
|
1793 |
jQuery('#wpvivid_clean_' + restore_method + 'part').show();
|
1794 |
jQuery('#wpvivid_restore_is_migrate').hide();
|
1795 |
jQuery('#wpvivid_restore_backup_old_site').hide();
|
1796 |
-
wpvivid_display_restore_msg("An uncompleted restore task exists, please
|
1797 |
}
|
1798 |
}
|
1799 |
}
|
@@ -2315,7 +2361,7 @@ function wpvivid_delete_incompleted_restore(restore_type = 'backup'){
|
|
2315 |
try {
|
2316 |
var jsonarray = jQuery.parseJSON(data);
|
2317 |
if (jsonarray.result === "success") {
|
2318 |
-
wpvivid_display_restore_msg("
|
2319 |
wpvivid_init_restore_data(restore_type);
|
2320 |
}
|
2321 |
}
|
20 |
var wpvivid_restore_timeout = false;
|
21 |
var wpvivid_restore_need_download = false;
|
22 |
var wpvivid_restore_backup_old_site = false;
|
23 |
+
var wpvivid_display_restore_backup = false;
|
24 |
|
25 |
(function ($) {
|
26 |
'use strict';
|
178 |
|
179 |
})(jQuery);
|
180 |
|
181 |
+
function click_dismiss_restore_notice(obj){
|
182 |
+
wpvivid_display_restore_backup = false;
|
183 |
+
jQuery(obj).parent().remove();
|
184 |
+
}
|
185 |
+
|
186 |
+
function wpvivid_click_how_to_restore_backup(){
|
187 |
+
if(!wpvivid_display_restore_backup){
|
188 |
+
wpvivid_display_restore_backup = true;
|
189 |
+
var div = "<div class='notice notice-info is-dismissible inline'>" +
|
190 |
+
"<p>Step One: Click the button called 'Restore' which is next to 'Log' button, then a new Tab (Restore Tab) is going to be created</p>" +
|
191 |
+
"<p>Step Two: Choose an option to complete restore, if any</p>" +
|
192 |
+
"<p>Step Three: Click 'Restore' button</p>" +
|
193 |
+
"<button type='button' class='notice-dismiss' onclick='click_dismiss_restore_notice(this);'>" +
|
194 |
+
"<span class='screen-reader-text'>Dismiss this notice.</span>" +
|
195 |
+
"</button>" +
|
196 |
+
"</div>";
|
197 |
+
jQuery('#wpvivid_how_to_restore_backup').append(div);
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
window.onbeforeunload = function(e) {
|
202 |
if (wpvivid_settings_changed) {
|
203 |
if (wpvivid_location_href){
|
586 |
}
|
587 |
if(bcheck) {
|
588 |
var backup_data = wpvivid_ajax_data_transfer('backup');
|
589 |
+
backup_data = JSON.parse(backup_data);
|
590 |
+
jQuery('input:radio[option=backup_ex]').each(function() {
|
591 |
+
if(jQuery(this).prop('checked'))
|
592 |
+
{
|
593 |
+
var key = jQuery(this).prop('name');
|
594 |
+
var value = jQuery(this).prop('value');
|
595 |
+
var json = new Array();
|
596 |
+
if(value == 'local'){
|
597 |
+
json['local']='1';
|
598 |
+
json['remote']='0';
|
599 |
+
}
|
600 |
+
else if(value == 'remote'){
|
601 |
+
json['local']='0';
|
602 |
+
json['remote']='1';
|
603 |
+
}
|
604 |
+
}
|
605 |
+
jQuery.extend(backup_data, json);
|
606 |
+
});
|
607 |
+
backup_data = JSON.stringify(backup_data);
|
608 |
var ajax_data = {
|
609 |
'action': 'wpvivid_prepare_backup',
|
610 |
'backup': backup_data
|
1741 |
else if(restore_type == 'transfer'){
|
1742 |
restore_method = 'transfer_';
|
1743 |
}
|
1744 |
+
jQuery('#wpvivid_replace_domain').prop('checked', false);
|
1745 |
+
jQuery('#wpvivid_keep_domain').prop('checked', false);
|
1746 |
jQuery('#wpvivid_restore_'+restore_method+'btn').css({'pointer-events': 'none', 'opacity': '0.4'});
|
1747 |
jQuery('#wpvivid_clean_'+restore_method+'restore').css({'pointer-events': 'none', 'opacity': '0.4'});
|
1748 |
jQuery('#wpvivid_rollback_'+restore_method+'btn').css({'pointer-events': 'none', 'opacity': '0.4'});
|
1749 |
+
jQuery('#wpvivid_restore_'+restore_method+'part').show();
|
1750 |
jQuery('#wpvivid_clean_'+restore_method+'part').hide();
|
1751 |
jQuery('#wpvivid_rollback_'+restore_method+'part').hide();
|
1752 |
+
jQuery('#wpvivid_restore_is_migrate').show();
|
1753 |
+
jQuery('#wpvivid_restore_is_migrate').css({'pointer-events': 'none', 'opacity': '0.4'});
|
1754 |
+
jQuery('#wpvivid_init_restore_data').addClass('is-active');
|
1755 |
jQuery('#wpvivid_restore_backup_old_site').hide();
|
1756 |
var ajax_data = {
|
1757 |
'action':'wpvivid_init_restore_page',
|
1803 |
});
|
1804 |
jQuery('#wpvivid_restore_' + restore_method + 'part').show();
|
1805 |
jQuery('#wpvivid_restore_backup_old_site').show();
|
1806 |
+
jQuery('#wpvivid_restore_is_migrate').css({'pointer-events': 'auto', 'opacity': '1'});
|
1807 |
+
jQuery('#wpvivid_init_restore_data').removeClass('is-active');
|
1808 |
if (jsonarray.is_migrate === 1) {
|
1809 |
jQuery('#wpvivid_restore_is_migrate').show();
|
1810 |
jQuery('#wpvivid_restore_' + restore_method + 'btn').css({'pointer-events': 'none', 'opacity': '0.4'});
|
1839 |
jQuery('#wpvivid_clean_' + restore_method + 'part').show();
|
1840 |
jQuery('#wpvivid_restore_is_migrate').hide();
|
1841 |
jQuery('#wpvivid_restore_backup_old_site').hide();
|
1842 |
+
wpvivid_display_restore_msg("An uncompleted restore task exists, please terminate it first.", restore_type);
|
1843 |
}
|
1844 |
}
|
1845 |
}
|
2361 |
try {
|
2362 |
var jsonarray = jQuery.parseJSON(data);
|
2363 |
if (jsonarray.result === "success") {
|
2364 |
+
wpvivid_display_restore_msg("The restore task is terminated.", restore_type);
|
2365 |
wpvivid_init_restore_data(restore_type);
|
2366 |
}
|
2367 |
}
|
admin/partials/wpvivid-backup-restore-page-display.php
CHANGED
@@ -66,13 +66,13 @@ function wpvivid_backup_manual(){
|
|
66 |
<fieldset>
|
67 |
<legend class="screen-reader-text"><span>input type="checkbox"</span></legend>
|
68 |
<label>
|
69 |
-
<input type="
|
70 |
<span><?php _e( 'Save Backups to Local', 'wpvivid' ); ?></span>
|
71 |
</label>
|
72 |
|
73 |
<div style="clear:both;"></div>
|
74 |
<label>
|
75 |
-
<input type="
|
76 |
<span><?php _e( 'Send Backup to Remote Storage:', 'wpvivid' ); ?></span>
|
77 |
</label><br>
|
78 |
<div id="upload_storage" style="cursor:pointer;" title="Highlighted icon illuminates that you have choosed a remote storage to store backups">
|
@@ -346,8 +346,9 @@ function wpvivid_add_page_restore(){
|
|
346 |
</label><br>-->
|
347 |
</div>
|
348 |
<div class="restore-button-position" id="wpvivid_restore_part"><input class="button-primary" id="wpvivid_restore_btn" type="submit" name="restore" value="<?php esc_attr_e( 'Restore', 'wpvivid' ); ?>" onclick="wpvivid_start_restore();" /></div>
|
349 |
-
<div class="restore-button-position" id="wpvivid_clean_part"><input class="button-primary" id="wpvivid_clean_restore" type="submit" name="clear_restore" value="<?php esc_attr_e( '
|
350 |
<div class="restore-button-position" id="wpvivid_rollback_part"><input class="button-primary" id="wpvivid_rollback_btn" type="submit" name="rollback" value="<?php esc_attr_e( 'Rollback', 'wpvivid' ); ?>" /></div>
|
|
|
351 |
</div>
|
352 |
<div class="postbox restore_log" id="wpvivid_restore_log">
|
353 |
<!--<div id="wpvivid_restore_log" style="overflow-y: scroll;"></div>-->
|
@@ -417,7 +418,7 @@ function wpvivid_backup_do_js(){
|
|
417 |
}
|
418 |
|
419 |
function wpvivid_download_backup_descript($html){
|
420 |
-
$html = '<p><strong>'.__('
|
421 |
$html .= '<ul>';
|
422 |
$html .= '<li>'.__('->If backups are stored in remote storage, our plugin will retrieve the backup to your web server first. This may take a little time depending on the size of backup files. Please be patient. Then you can download them to your PC.', 'wpvivid').'</li>';
|
423 |
$html .= '<li>'.__('->If backups are stored in web server, the plugin will list all relevant files immediately.', 'wpvivid').'</li>';
|
@@ -426,11 +427,8 @@ function wpvivid_download_backup_descript($html){
|
|
426 |
}
|
427 |
|
428 |
function wpvivid_restore_website_dexcript($html){
|
429 |
-
$html = '<p><
|
430 |
-
$html .= '<
|
431 |
-
$html .= '<li>'.__('Step One: Click the button called \'Restore\' which is next to \'Log\' button, then a new Tab (Restore Tab) is going to be created', 'wpvivid').'</li>';
|
432 |
-
$html .= '<li>'.__('Step Two: Click \'Restore\' button', 'wpvivid').'</li>';
|
433 |
-
$html .= '</ul>';
|
434 |
return $html;
|
435 |
}
|
436 |
|
66 |
<fieldset>
|
67 |
<legend class="screen-reader-text"><span>input type="checkbox"</span></legend>
|
68 |
<label>
|
69 |
+
<input type="radio" id="wpvivid_backup_local" option="backup_ex" name="local_remote" value="local" checked />
|
70 |
<span><?php _e( 'Save Backups to Local', 'wpvivid' ); ?></span>
|
71 |
</label>
|
72 |
|
73 |
<div style="clear:both;"></div>
|
74 |
<label>
|
75 |
+
<input type="radio" id="wpvivid_backup_remote" option="backup_ex" name="local_remote" value="remote" />
|
76 |
<span><?php _e( 'Send Backup to Remote Storage:', 'wpvivid' ); ?></span>
|
77 |
</label><br>
|
78 |
<div id="upload_storage" style="cursor:pointer;" title="Highlighted icon illuminates that you have choosed a remote storage to store backups">
|
346 |
</label><br>-->
|
347 |
</div>
|
348 |
<div class="restore-button-position" id="wpvivid_restore_part"><input class="button-primary" id="wpvivid_restore_btn" type="submit" name="restore" value="<?php esc_attr_e( 'Restore', 'wpvivid' ); ?>" onclick="wpvivid_start_restore();" /></div>
|
349 |
+
<div class="restore-button-position" id="wpvivid_clean_part"><input class="button-primary" id="wpvivid_clean_restore" type="submit" name="clear_restore" value="<?php esc_attr_e( 'Terminate', 'wpvivid' ); ?>" /></div>
|
350 |
<div class="restore-button-position" id="wpvivid_rollback_part"><input class="button-primary" id="wpvivid_rollback_btn" type="submit" name="rollback" value="<?php esc_attr_e( 'Rollback', 'wpvivid' ); ?>" /></div>
|
351 |
+
<div class="spinner" id="wpvivid_init_restore_data" style="float:left;width:auto;height:auto;padding:10px 20px 20px 0;background-position:0 10px;"></div>
|
352 |
</div>
|
353 |
<div class="postbox restore_log" id="wpvivid_restore_log">
|
354 |
<!--<div id="wpvivid_restore_log" style="overflow-y: scroll;"></div>-->
|
418 |
}
|
419 |
|
420 |
function wpvivid_download_backup_descript($html){
|
421 |
+
$html = '<p><strong>'.__('About backup download', 'wpvivid').'</strong></p>';
|
422 |
$html .= '<ul>';
|
423 |
$html .= '<li>'.__('->If backups are stored in remote storage, our plugin will retrieve the backup to your web server first. This may take a little time depending on the size of backup files. Please be patient. Then you can download them to your PC.', 'wpvivid').'</li>';
|
424 |
$html .= '<li>'.__('->If backups are stored in web server, the plugin will list all relevant files immediately.', 'wpvivid').'</li>';
|
427 |
}
|
428 |
|
429 |
function wpvivid_restore_website_dexcript($html){
|
430 |
+
$html = '<p><a href="#" onclick="wpvivid_click_how_to_restore_backup();">'.__('How to restore your website from a backup(scheduled, manual, uploaded and received backup)', 'wpvivid').'</a></p>';
|
431 |
+
$html .= '<div id="wpvivid_how_to_restore_backup"></div>';
|
|
|
|
|
|
|
432 |
return $html;
|
433 |
}
|
434 |
|
includes/class-wpvivid-backup-uploader.php
CHANGED
@@ -255,12 +255,13 @@ class Wpvivid_BackupUploader
|
|
255 |
|
256 |
static function rescan_local_folder()
|
257 |
{
|
|
|
258 |
?>
|
259 |
<div style="padding-top: 10px;">
|
260 |
-
<span>
|
261 |
</div>
|
262 |
<div style="padding-top: 10px;">
|
263 |
-
<input type="submit" class="button-primary" value="
|
264 |
</div>
|
265 |
<script type="text/javascript">
|
266 |
function wpvivid_rescan_local_folder()
|
255 |
|
256 |
static function rescan_local_folder()
|
257 |
{
|
258 |
+
$backupdir=WPvivid_Setting::get_backupdir();
|
259 |
?>
|
260 |
<div style="padding-top: 10px;">
|
261 |
+
<span>Tips: Click the button below to scan all uploaded or received backups in directory <?php echo WP_CONTENT_DIR.'/'.$backupdir; ?></span>
|
262 |
</div>
|
263 |
<div style="padding-top: 10px;">
|
264 |
+
<input type="submit" class="button-primary" value="Scan localhost" onclick="wpvivid_rescan_local_folder();" />
|
265 |
</div>
|
266 |
<script type="text/javascript">
|
267 |
function wpvivid_rescan_local_folder()
|
includes/class-wpvivid-migrate.php
CHANGED
@@ -275,73 +275,72 @@ class WPvivid_Migrate
|
|
275 |
|
276 |
public function send_backup_to_site()
|
277 |
{
|
278 |
-
|
279 |
-
|
280 |
-
$options=WPvivid_Setting::get_option('wpvivid_saved_api_token');
|
281 |
-
|
282 |
-
if(empty($options))
|
283 |
-
{
|
284 |
-
$ret['result'] = 'failed';
|
285 |
-
$ret['error'] = 'A key is required.';
|
286 |
-
echo json_encode($ret);
|
287 |
-
die();
|
288 |
-
}
|
289 |
-
//$options[$url]['url']=$url;
|
290 |
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
|
|
|
|
295 |
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
echo json_encode($ret);
|
301 |
-
die();
|
302 |
-
}
|
303 |
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
}
|
311 |
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
|
|
|
|
323 |
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
$backup['remote']=1;
|
329 |
-
$backup['ismerge']=1;
|
330 |
-
$backup['lock']=0;
|
331 |
-
$backup['remote_options']=$remote_options;
|
332 |
|
333 |
-
|
334 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
335 |
|
336 |
-
|
|
|
337 |
|
338 |
-
|
339 |
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
345 |
}
|
346 |
|
347 |
public function migrate_now()
|
@@ -518,7 +517,7 @@ class WPvivid_Migrate
|
|
518 |
<input type="text" id="wpvivid_send_remote_site_url_text" value="'.$token.'" readonly="readonly" />
|
519 |
<input class="button-primary" id="wpvivid_delete_key_button" type="submit" value="'.esc_attr( 'Delete', 'wpvivid' ).'" onclick="wpvivid_click_delete_transfer_key();" />
|
520 |
</div>
|
521 |
-
<p>'.__('
|
522 |
<p>The connection is ok. Now you can transfer the site <strong>'.$source_dir.'</strong> to the site <strong>'.$target_dir.'</strong></p>';
|
523 |
}
|
524 |
return $html;
|
@@ -531,7 +530,7 @@ class WPvivid_Migrate
|
|
531 |
<div id="migrate-page" class="wrap-tab-content wpvivid_tab_migrate" name="tab-migrate" style="display: none;">
|
532 |
<div style="padding: 0 0 10px 0;">
|
533 |
<?php
|
534 |
-
_e('The feature can help you transfer a Wordpress site to a new domain. It would be
|
535 |
?>
|
536 |
</div>
|
537 |
|
@@ -561,15 +560,15 @@ class WPvivid_Migrate
|
|
561 |
<fieldset>
|
562 |
<legend class="screen-reader-text"><span>input type="radio"</span></legend>
|
563 |
<label>
|
564 |
-
<input type="radio" option="migrate" name="
|
565 |
<span><?php _e( 'Database + Files (Entire website)', 'wpvivid' ); ?></span>
|
566 |
</label><br>
|
567 |
<label>
|
568 |
-
<input type="radio" option="migrate" name="
|
569 |
<span><?php _e( 'All Files (Exclude Database)', 'wpvivid' ); ?></span>
|
570 |
</label><br>
|
571 |
<label>
|
572 |
-
<input type="radio" option="migrate" name="
|
573 |
<span><?php _e( 'Only Database', 'wpvivid' ); ?></span>
|
574 |
</label><br>
|
575 |
</fieldset>
|
@@ -583,13 +582,13 @@ class WPvivid_Migrate
|
|
583 |
</div>
|
584 |
<div style="clear: both;"></div>
|
585 |
<div style="padding: 10px 0 10px 0;">
|
586 |
-
<p><strong>Tips: </strong>
|
587 |
-
<p><strong>How to migrate Wordpress site manually to a new domain with WPvivid backup plugin?</strong></p>
|
588 |
-
<p>1. Download
|
589 |
-
<p>2. Upload backup to destination site. There are two ways available to use:</p>
|
590 |
-
<p style="margin-left: 20px;">2.1 Upload backup to the upload section of WPvivid backup plugin in destination site.</p>
|
591 |
-
<p style="margin-left: 20px;">2.2 Upload backup with FTP client to backup directory <?php echo WP_CONTENT_DIR.'/'.$backupdir; ?> in destination site
|
592 |
-
<p>3. Once done, the backup
|
593 |
</div>
|
594 |
</div>
|
595 |
</div>
|
@@ -754,7 +753,7 @@ class WPvivid_Migrate
|
|
754 |
}
|
755 |
}, function (XMLHttpRequest, textStatus, errorThrown)
|
756 |
{
|
757 |
-
var error_message = wpvivid_output_ajaxerror('
|
758 |
wpvivid_delete_transfer_ready_task(error_message);
|
759 |
});
|
760 |
}
|
@@ -817,20 +816,26 @@ class WPvivid_Migrate
|
|
817 |
});
|
818 |
}
|
819 |
|
|
|
|
|
820 |
function click_dismiss_key_notice(obj){
|
|
|
821 |
jQuery(obj).parent().remove();
|
822 |
}
|
823 |
|
824 |
function wpvivid_click_how_to_get_key(){
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
|
|
|
|
|
|
834 |
}
|
835 |
|
836 |
var migrate_task_need_update=true;
|
@@ -1031,6 +1036,7 @@ class WPvivid_Migrate
|
|
1031 |
<option value="24 hour">24 hours</option>
|
1032 |
<!--<option value="Never">Never</option>-->
|
1033 |
</select>
|
|
|
1034 |
<div>
|
1035 |
<input class="button-primary" id="wpvivid_generate_url" type="submit" value="<?php esc_attr_e( 'Generate', 'wpvivid' ); ?>" onclick="wpvivid_click_generate_url();" />
|
1036 |
</div>
|
275 |
|
276 |
public function send_backup_to_site()
|
277 |
{
|
278 |
+
try {
|
279 |
+
$options = WPvivid_Setting::get_option('wpvivid_saved_api_token');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
280 |
|
281 |
+
if (empty($options)) {
|
282 |
+
$ret['result'] = 'failed';
|
283 |
+
$ret['error'] = 'A key is required.';
|
284 |
+
echo json_encode($ret);
|
285 |
+
die();
|
286 |
+
}
|
287 |
|
288 |
+
$url = '';
|
289 |
+
foreach ($options as $key => $value) {
|
290 |
+
$url = $value['url'];
|
291 |
+
}
|
|
|
|
|
|
|
292 |
|
293 |
+
if ($url === '') {
|
294 |
+
$ret['result'] = 'failed';
|
295 |
+
$ret['error'] = 'The key is invalid.';
|
296 |
+
echo json_encode($ret);
|
297 |
+
die();
|
298 |
+
}
|
|
|
299 |
|
300 |
+
if ($options[$url]['expires'] != 0 && $options[$url]['expires'] < time()) {
|
301 |
+
$ret['result'] = 'failed';
|
302 |
+
$ret['error'] = 'The key has expired.';
|
303 |
+
echo json_encode($ret);
|
304 |
+
die();
|
305 |
+
}
|
306 |
|
307 |
+
if (WPvivid_taskmanager::is_tasks_backup_running()) {
|
308 |
+
$ret['result'] = 'failed';
|
309 |
+
$ret['error'] = __('A task is already running. Please wait until the running task is complete, and try again.', 'wpvivid');
|
310 |
+
echo json_encode($ret);
|
311 |
+
die();
|
312 |
+
}
|
313 |
|
314 |
+
$remote_option['url'] = $options[$url]['url'];
|
315 |
+
$remote_option['token'] = $options[$url]['token'];
|
316 |
+
$remote_option['type'] = WPVIVID_REMOTE_SEND_TO_SITE;
|
317 |
+
$remote_options['temp'] = $remote_option;
|
|
|
|
|
|
|
|
|
318 |
|
319 |
+
$backup_options = stripslashes($_POST['backup_options']);
|
320 |
+
$backup_options = json_decode($backup_options, true);
|
321 |
+
$backup['backup_files'] = $backup_options['backup_type'];
|
322 |
+
$backup['local'] = 0;
|
323 |
+
$backup['remote'] = 1;
|
324 |
+
$backup['ismerge'] = 1;
|
325 |
+
$backup['lock'] = 0;
|
326 |
+
$backup['remote_options'] = $remote_options;
|
327 |
|
328 |
+
$backup_task = new WPvivid_Backup_Task();
|
329 |
+
$ret = $backup_task->new_backup_task($backup, 'Manual', 'transfer');
|
330 |
|
331 |
+
$task_id = $ret['task_id'];
|
332 |
|
333 |
+
global $wpvivid_pulgin;
|
334 |
+
$wpvivid_pulgin->check_backup($task_id, $backup['backup_files']);
|
335 |
+
echo json_encode($ret);
|
336 |
+
die();
|
337 |
+
}
|
338 |
+
catch (Exception $e){
|
339 |
+
$ret['result'] = 'failed';
|
340 |
+
$ret['error'] = $e->getMessage();
|
341 |
+
echo json_encode($ret);
|
342 |
+
die();
|
343 |
+
}
|
344 |
}
|
345 |
|
346 |
public function migrate_now()
|
517 |
<input type="text" id="wpvivid_send_remote_site_url_text" value="'.$token.'" readonly="readonly" />
|
518 |
<input class="button-primary" id="wpvivid_delete_key_button" type="submit" value="'.esc_attr( 'Delete', 'wpvivid' ).'" onclick="wpvivid_click_delete_transfer_key();" />
|
519 |
</div>
|
520 |
+
<p>'.__('The key will expire in: ', 'wpvivid').$key_status.__('. Once the key expires, you need to generate a new key.', 'wpvivid').'</p>
|
521 |
<p>The connection is ok. Now you can transfer the site <strong>'.$source_dir.'</strong> to the site <strong>'.$target_dir.'</strong></p>';
|
522 |
}
|
523 |
return $html;
|
530 |
<div id="migrate-page" class="wrap-tab-content wpvivid_tab_migrate" name="tab-migrate" style="display: none;">
|
531 |
<div style="padding: 0 0 10px 0;">
|
532 |
<?php
|
533 |
+
_e('The feature can help you transfer a Wordpress site to a new domain(site). It would be a convenient way to migrate your WP site from dev environment to live server or from old server to the new.', 'wpvivid');
|
534 |
?>
|
535 |
</div>
|
536 |
|
560 |
<fieldset>
|
561 |
<legend class="screen-reader-text"><span>input type="radio"</span></legend>
|
562 |
<label>
|
563 |
+
<input type="radio" option="migrate" name="transfer_type" value="files+db" checked />
|
564 |
<span><?php _e( 'Database + Files (Entire website)', 'wpvivid' ); ?></span>
|
565 |
</label><br>
|
566 |
<label>
|
567 |
+
<input type="radio" option="migrate" name="transfer_type" value="files" />
|
568 |
<span><?php _e( 'All Files (Exclude Database)', 'wpvivid' ); ?></span>
|
569 |
</label><br>
|
570 |
<label>
|
571 |
+
<input type="radio" option="migrate" name="transfer_type" value="db" />
|
572 |
<span><?php _e( 'Only Database', 'wpvivid' ); ?></span>
|
573 |
</label><br>
|
574 |
</fieldset>
|
582 |
</div>
|
583 |
<div style="clear: both;"></div>
|
584 |
<div style="padding: 10px 0 10px 0;">
|
585 |
+
<p><strong>Tips: </strong>The unstable connection between sites could cause a failure of files transfer. In this case, uploading backups to destination site is a good alternative to the automatic website migration.</p>
|
586 |
+
<p><strong>How to migrate Wordpress site manually to a new domain(site) with WPvivid backup plugin?</strong></p>
|
587 |
+
<p>1. Download a backup in backups list to your computer.</p>
|
588 |
+
<p>2. Upload the backup to destination site. There are two ways available to use:</p>
|
589 |
+
<p style="margin-left: 20px;">2.1 Upload the backup to the upload section of WPvivid backup plugin in destination site.</p>
|
590 |
+
<p style="margin-left: 20px;">2.2 Upload the backup with FTP client to backup directory <?php echo WP_CONTENT_DIR.'/'.$backupdir; ?> in destination site, then click <strong>Scan localhost</strong> button.</p>
|
591 |
+
<p>3. Once done, the backup appears in backups list. Then, restore the backup.</p>
|
592 |
</div>
|
593 |
</div>
|
594 |
</div>
|
753 |
}
|
754 |
}, function (XMLHttpRequest, textStatus, errorThrown)
|
755 |
{
|
756 |
+
var error_message = wpvivid_output_ajaxerror('prepare to export website', textStatus, errorThrown);
|
757 |
wpvivid_delete_transfer_ready_task(error_message);
|
758 |
});
|
759 |
}
|
816 |
});
|
817 |
}
|
818 |
|
819 |
+
var wpvivid_display_get_key = false;
|
820 |
+
|
821 |
function click_dismiss_key_notice(obj){
|
822 |
+
wpvivid_display_get_key = false;
|
823 |
jQuery(obj).parent().remove();
|
824 |
}
|
825 |
|
826 |
function wpvivid_click_how_to_get_key(){
|
827 |
+
if(!wpvivid_display_get_key) {
|
828 |
+
wpvivid_display_get_key = true;
|
829 |
+
var div = "<div class='notice notice-info is-dismissible inline'>" +
|
830 |
+
"<p>1. Visit Generate Key tab page of WPvivid backup plugin of destination site.</p>" +
|
831 |
+
"<p>2. Generate a key by clicking Generate button and copy it.</p>" +
|
832 |
+
"<p>3. Go back to this page and paste the key in key box below. Lastly, click Save button.</p>" +
|
833 |
+
"<button type='button' class='notice-dismiss' onclick='click_dismiss_key_notice(this);'>" +
|
834 |
+
"<span class='screen-reader-text'>Dismiss this notice.</span>" +
|
835 |
+
"</button>" +
|
836 |
+
"</div>";
|
837 |
+
jQuery('#wpvivid_how_to_get_key').append(div);
|
838 |
+
}
|
839 |
}
|
840 |
|
841 |
var migrate_task_need_update=true;
|
1036 |
<option value="24 hour">24 hours</option>
|
1037 |
<!--<option value="Never">Never</option>-->
|
1038 |
</select>
|
1039 |
+
<p>Tips: For security reason, please choose an appropriate expiration time for the key.</p>
|
1040 |
<div>
|
1041 |
<input class="button-primary" id="wpvivid_generate_url" type="submit" value="<?php esc_attr_e( 'Generate', 'wpvivid' ); ?>" onclick="wpvivid_click_generate_url();" />
|
1042 |
</div>
|
includes/class-wpvivid-restore-data.php
CHANGED
@@ -148,7 +148,8 @@ class WPvivid_restore_data
|
|
148 |
$rollback_data = require_once plugin_dir_path( dirname( __FILE__ ) ) .'includes/class-wpvivid-rollback-template.php';
|
149 |
$rollback_data['task_id'] = $backup_id;
|
150 |
WPvivid_tools::deldir(dirname($this -> rollback_file));
|
151 |
-
|
|
|
152 |
WPvivid_tools::file_put_array($rollback_data,$this->rollback_file);
|
153 |
}
|
154 |
|
148 |
$rollback_data = require_once plugin_dir_path( dirname( __FILE__ ) ) .'includes/class-wpvivid-rollback-template.php';
|
149 |
$rollback_data['task_id'] = $backup_id;
|
150 |
WPvivid_tools::deldir(dirname($this -> rollback_file));
|
151 |
+
if(!file_exists(dirname($this -> rollback_file)))
|
152 |
+
mkdir(dirname($this -> rollback_file));
|
153 |
WPvivid_tools::file_put_array($rollback_data,$this->rollback_file);
|
154 |
}
|
155 |
|
includes/class-wpvivid-restore-database.php
CHANGED
@@ -892,7 +892,7 @@ class WPvivid_RestoreDB
|
|
892 |
return $old_string;
|
893 |
}
|
894 |
|
895 |
-
|
896 |
{
|
897 |
$skip_tables[]='adrotate_stats';
|
898 |
$skip_tables[]='login_security_solution_fail';
|
@@ -944,7 +944,7 @@ class WPvivid_RestoreDB
|
|
944 |
return $skip_table;
|
945 |
}
|
946 |
|
947 |
-
|
948 |
{
|
949 |
$row['table_name']='posts';
|
950 |
$row['column_name']='guid';
|
892 |
return $old_string;
|
893 |
}
|
894 |
|
895 |
+
public function skip_tables($skip_table,$table_name)
|
896 |
{
|
897 |
$skip_tables[]='adrotate_stats';
|
898 |
$skip_tables[]='login_security_solution_fail';
|
944 |
return $skip_table;
|
945 |
}
|
946 |
|
947 |
+
public function skip_rows($skip_rows,$table_name,$column_name)
|
948 |
{
|
949 |
$row['table_name']='posts';
|
950 |
$row['column_name']='guid';
|
includes/class-wpvivid-setting.php
CHANGED
@@ -455,20 +455,27 @@ class WPvivid_Setting
|
|
455 |
if($setting)
|
456 |
{
|
457 |
$json['data']['wpvivid_schedule_setting']=self::get_option('wpvivid_schedule_setting');
|
458 |
-
$json['data']['wpvivid_schedule_setting']
|
459 |
-
|
460 |
-
$json['data']['wpvivid_schedule_setting']['
|
461 |
-
|
462 |
-
|
463 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
464 |
}
|
465 |
-
|
466 |
-
if(wp_get_schedule(WPVIVID_MAIN_SCHEDULE_EVENT))
|
467 |
{
|
468 |
-
$
|
469 |
-
$timestamp = wp_next_scheduled(WPVIVID_MAIN_SCHEDULE_EVENT);
|
470 |
-
$json['data']['wpvivid_schedule_setting']['recurrence']=$recurrence;
|
471 |
-
$json['data']['wpvivid_schedule_setting']['next_start']=$timestamp;
|
472 |
}
|
473 |
$json['data']['wpvivid_compress_setting']=self::get_option('wpvivid_compress_setting');
|
474 |
$json['data']['wpvivid_local_setting']=self::get_option('wpvivid_local_setting');
|
@@ -502,8 +509,6 @@ class WPvivid_Setting
|
|
502 |
{
|
503 |
self::update_option($option_name,$option);
|
504 |
}
|
505 |
-
|
506 |
-
|
507 |
}
|
508 |
|
509 |
public static function set_max_backup_count($count)
|
455 |
if($setting)
|
456 |
{
|
457 |
$json['data']['wpvivid_schedule_setting']=self::get_option('wpvivid_schedule_setting');
|
458 |
+
if(!empty( $json['data']['wpvivid_schedule_setting']))
|
459 |
+
{
|
460 |
+
$json['data']['wpvivid_schedule_setting']['backup_type']=$json['data']['wpvivid_schedule_setting']['backup']['backup_files'];
|
461 |
+
if($json['data']['wpvivid_schedule_setting']['backup']['local'] == 1){
|
462 |
+
$json['data']['wpvivid_schedule_setting']['save_local_remote']='local';
|
463 |
+
}
|
464 |
+
else{
|
465 |
+
$json['data']['wpvivid_schedule_setting']['save_local_remote']='remote';
|
466 |
+
}
|
467 |
+
$json['data']['wpvivid_schedule_setting']['lock']=0;
|
468 |
+
if(wp_get_schedule(WPVIVID_MAIN_SCHEDULE_EVENT))
|
469 |
+
{
|
470 |
+
$recurrence = wp_get_schedule(WPVIVID_MAIN_SCHEDULE_EVENT);
|
471 |
+
$timestamp = wp_next_scheduled(WPVIVID_MAIN_SCHEDULE_EVENT);
|
472 |
+
$json['data']['wpvivid_schedule_setting']['recurrence']=$recurrence;
|
473 |
+
$json['data']['wpvivid_schedule_setting']['next_start']=$timestamp;
|
474 |
+
}
|
475 |
}
|
476 |
+
else
|
|
|
477 |
{
|
478 |
+
$json['data']['wpvivid_schedule_setting']=array();
|
|
|
|
|
|
|
479 |
}
|
480 |
$json['data']['wpvivid_compress_setting']=self::get_option('wpvivid_compress_setting');
|
481 |
$json['data']['wpvivid_local_setting']=self::get_option('wpvivid_local_setting');
|
509 |
{
|
510 |
self::update_option($option_name,$option);
|
511 |
}
|
|
|
|
|
512 |
}
|
513 |
|
514 |
public static function set_max_backup_count($count)
|
includes/class-wpvivid.php
CHANGED
@@ -4860,10 +4860,17 @@ class WPvivid {
|
|
4860 |
foreach ($backuplist as $key=>$value) {
|
4861 |
$row_style = '';
|
4862 |
if($value['type'] == 'Migration' || $value['type'] == 'Upload'){
|
|
|
|
|
|
|
|
|
|
|
|
|
4863 |
$row_style = 'border: 2px solid #006799; box-sizing:border-box; -moz-box-sizing:border-box; -webkit-box-sizing:border-box;';
|
4864 |
}
|
4865 |
else if($value['type'] == 'Manual' || $value['type'] == 'Cron'){
|
4866 |
$row_style = '';
|
|
|
4867 |
}
|
4868 |
|
4869 |
if(empty($value['lock'])){
|
@@ -4914,7 +4921,7 @@ class WPvivid {
|
|
4914 |
<th class="check-column"><input name="check_backup" type="checkbox" id="'.esc_attr($key, 'wpvivid').'" value="'.esc_attr($key, 'wpvivid').'" onclick="wpvivid_click_check_backup(\''.__($key, 'wpvivid').'\');" /></th>
|
4915 |
<td class="tablelistcolumn">
|
4916 |
<div style="float:left;padding:0 10px 10px 0;">
|
4917 |
-
<div class="backuptime"><strong>'.__(date('M d, Y H:i',$value['create_time']), 'wpvivid').'</
|
4918 |
<div class="common-table">
|
4919 |
<span title="To lock the backup, the backup can only be deleted manually" id="wpvivid_lock_'.$key.'">
|
4920 |
<img src="'.esc_url(WPVIVID_PLUGIN_URL.$backup_lock).'" name="'.esc_attr($lock_status, 'wpvivid').'" onclick="wpvivid_set_backup_lock(\''.__($key, 'wpvivid').'\', \''.__($lock_status, 'wpvivid').'\');" style="vertical-align:middle; cursor:pointer;"/>
|
4860 |
foreach ($backuplist as $key=>$value) {
|
4861 |
$row_style = '';
|
4862 |
if($value['type'] == 'Migration' || $value['type'] == 'Upload'){
|
4863 |
+
if($value['type'] == 'Migration'){
|
4864 |
+
$upload_title = 'Received Backup: ';
|
4865 |
+
}
|
4866 |
+
else if($value['type'] == 'Upload') {
|
4867 |
+
$upload_title = 'Uploaded Backup: ';
|
4868 |
+
}
|
4869 |
$row_style = 'border: 2px solid #006799; box-sizing:border-box; -moz-box-sizing:border-box; -webkit-box-sizing:border-box;';
|
4870 |
}
|
4871 |
else if($value['type'] == 'Manual' || $value['type'] == 'Cron'){
|
4872 |
$row_style = '';
|
4873 |
+
$upload_title = '';
|
4874 |
}
|
4875 |
|
4876 |
if(empty($value['lock'])){
|
4921 |
<th class="check-column"><input name="check_backup" type="checkbox" id="'.esc_attr($key, 'wpvivid').'" value="'.esc_attr($key, 'wpvivid').'" onclick="wpvivid_click_check_backup(\''.__($key, 'wpvivid').'\');" /></th>
|
4922 |
<td class="tablelistcolumn">
|
4923 |
<div style="float:left;padding:0 10px 10px 0;">
|
4924 |
+
<div class="backuptime"><strong>'.$upload_title.'</strong>'.__(date('M d, Y H:i',$value['create_time']), 'wpvivid').'</div>
|
4925 |
<div class="common-table">
|
4926 |
<span title="To lock the backup, the backup can only be deleted manually" id="wpvivid_lock_'.$key.'">
|
4927 |
<img src="'.esc_url(WPVIVID_PLUGIN_URL.$backup_lock).'" name="'.esc_attr($lock_status, 'wpvivid').'" onclick="wpvivid_set_backup_lock(\''.__($key, 'wpvivid').'\', \''.__($lock_status, 'wpvivid').'\');" style="vertical-align:middle; cursor:pointer;"/>
|
includes/customclass/class-wpvivid-google-drive.php
CHANGED
@@ -15,6 +15,8 @@ class Wpvivid_Google_drive extends WPvivid_Remote
|
|
15 |
{
|
16 |
public $options;
|
17 |
|
|
|
|
|
18 |
public function __construct($options=array())
|
19 |
{
|
20 |
if(empty($options))
|
@@ -38,6 +40,15 @@ class Wpvivid_Google_drive extends WPvivid_Remote
|
|
38 |
{
|
39 |
$this->options=$options;
|
40 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
}
|
42 |
|
43 |
public function pre_add_remote($remote,$id)
|
@@ -81,7 +92,7 @@ class Wpvivid_Google_drive extends WPvivid_Remote
|
|
81 |
try {
|
82 |
include_once WPVIVID_PLUGIN_DIR . '/vendor/autoload.php';
|
83 |
$client = new Google_Client();
|
84 |
-
$client->setAuthConfig(
|
85 |
$client->setApprovalPrompt('force');
|
86 |
$client->addScope(Google_Service_Drive::DRIVE_FILE);
|
87 |
$client->setAccessType('offline');
|
@@ -174,7 +185,7 @@ class Wpvivid_Google_drive extends WPvivid_Remote
|
|
174 |
try {
|
175 |
include_once WPVIVID_PLUGIN_DIR . '/vendor/autoload.php';
|
176 |
$client = new Google_Client();
|
177 |
-
$client->setAuthConfig(
|
178 |
$client->setApprovalPrompt('force');
|
179 |
$client->addScope(Google_Service_Drive::DRIVE_FILE);
|
180 |
$client->setAccessType('offline');
|
@@ -573,7 +584,7 @@ class Wpvivid_Google_drive extends WPvivid_Remote
|
|
573 |
include_once WPVIVID_PLUGIN_DIR.'/vendor/autoload.php';
|
574 |
$client = new Google_Client();
|
575 |
$client->setConfig('access_type','offline');
|
576 |
-
$client->setAuthConfig(
|
577 |
$client->addScope(Google_Service_Drive::DRIVE_FILE);//
|
578 |
$client->setAccessToken($this->options['token']);
|
579 |
|
15 |
{
|
16 |
public $options;
|
17 |
|
18 |
+
public $google_drive_secrets;
|
19 |
+
|
20 |
public function __construct($options=array())
|
21 |
{
|
22 |
if(empty($options))
|
40 |
{
|
41 |
$this->options=$options;
|
42 |
}
|
43 |
+
$this->google_drive_secrets = array("web"=>array(
|
44 |
+
"client_id"=>"134809148507-32crusepgace4h6g47ota99jjrvf4j1u.apps.googleusercontent.com",
|
45 |
+
"project_id"=>"wpvivid-auth",
|
46 |
+
"auth_uri"=>"https://accounts.google.com/o/oauth2/auth",
|
47 |
+
"token_uri"=>"https://oauth2.googleapis.com/token",
|
48 |
+
"auth_provider_x509_cert_url"=>"https://www.googleapis.com/oauth2/v1/certs",
|
49 |
+
"client_secret"=>"GmD5Kmg_1fTcf0ciNEomposy",
|
50 |
+
"redirect_uris"=>array("https://auth.wpvivid.com/google_drive")
|
51 |
+
));
|
52 |
}
|
53 |
|
54 |
public function pre_add_remote($remote,$id)
|
92 |
try {
|
93 |
include_once WPVIVID_PLUGIN_DIR . '/vendor/autoload.php';
|
94 |
$client = new Google_Client();
|
95 |
+
$client->setAuthConfig($this->google_drive_secrets);
|
96 |
$client->setApprovalPrompt('force');
|
97 |
$client->addScope(Google_Service_Drive::DRIVE_FILE);
|
98 |
$client->setAccessType('offline');
|
185 |
try {
|
186 |
include_once WPVIVID_PLUGIN_DIR . '/vendor/autoload.php';
|
187 |
$client = new Google_Client();
|
188 |
+
$client->setAuthConfig($this->google_drive_secrets);
|
189 |
$client->setApprovalPrompt('force');
|
190 |
$client->addScope(Google_Service_Drive::DRIVE_FILE);
|
191 |
$client->setAccessType('offline');
|
584 |
include_once WPVIVID_PLUGIN_DIR.'/vendor/autoload.php';
|
585 |
$client = new Google_Client();
|
586 |
$client->setConfig('access_type','offline');
|
587 |
+
$client->setAuthConfig($this->google_drive_secrets);
|
588 |
$client->addScope(Google_Service_Drive::DRIVE_FILE);//
|
589 |
$client->setAccessToken($this->options['token']);
|
590 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: transfer, move, duplicate, clone, backup, migrate, restore, auto backup, c
|
|
4 |
Requires at least: 4.5
|
5 |
Tested up to: 5.1
|
6 |
Requires PHP: 5.3
|
7 |
-
Stable tag: 0.9.
|
8 |
License: GPLv3 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.en.html
|
10 |
|
@@ -23,7 +23,7 @@ You can also transfer a site to a subdirectory, from a.com to b.com, from a.com
|
|
23 |
You are free to choose what to transfer: the entire site, files or just the database only.
|
24 |
= 2. Upload Backups (New Feature) =
|
25 |
Upload a backup to restore or transfer.
|
26 |
-
You can transfer or restore backups created with 0.9.14 or higher version
|
27 |
= 3. Automatic Backup =
|
28 |
Setup and forget, the plugin will do the rest automatically backing up your website.
|
29 |
= 4. One-Click Restore =
|
@@ -41,16 +41,18 @@ Dropbox, Google Drive, Microsoft OneDrive, Amazon S3, DigitalOcean Spaces, SFTP,
|
|
41 |
|
42 |
== Features Spotlight ==
|
43 |
* One-Click Site Transfer
|
|
|
|
|
|
|
44 |
* Manual Backup
|
45 |
* Filter Large Files
|
46 |
* Large Database Support
|
47 |
-
* Optimized for
|
48 |
-
* Backup Retention
|
49 |
* Backup Splitting
|
50 |
* No Limit of Backup Size
|
51 |
* Backup to Localhost
|
52 |
* Clean Temp Files
|
53 |
-
* Schedule Automated Backups
|
54 |
* Customize Backup Content
|
55 |
* Download Backup
|
56 |
* Instant Email Report
|
@@ -140,6 +142,10 @@ Please try to contact your web hosting provider for changing PHP memory limit, o
|
|
140 |
Feel free to let us know how we can help using the [support forum](https://wordpress.org/support/plugin/wpvivid-backuprestore) for the plugin on WordPress.org or our [contact form](https://wpvivid.com/contact-us). You can also reach us with a direct message on [Twitter](https://twitter.com/WPvividcom).
|
141 |
|
142 |
== Changelog ==
|
|
|
|
|
|
|
|
|
143 |
= 0.9.14 =
|
144 |
- Added free website transfer feature. We highly recommend all our users to update.
|
145 |
- Added backup upload feature. Now you can upload a backup to restore or transfer.
|
4 |
Requires at least: 4.5
|
5 |
Tested up to: 5.1
|
6 |
Requires PHP: 5.3
|
7 |
+
Stable tag: 0.9.15
|
8 |
License: GPLv3 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.en.html
|
10 |
|
23 |
You are free to choose what to transfer: the entire site, files or just the database only.
|
24 |
= 2. Upload Backups (New Feature) =
|
25 |
Upload a backup to restore or transfer.
|
26 |
+
You can transfer or restore backups created with 0.9.14 or a higher version.
|
27 |
= 3. Automatic Backup =
|
28 |
Setup and forget, the plugin will do the rest automatically backing up your website.
|
29 |
= 4. One-Click Restore =
|
41 |
|
42 |
== Features Spotlight ==
|
43 |
* One-Click Site Transfer
|
44 |
+
* Upload Backups to Restore or Transfer
|
45 |
+
* Schedule Automated Backups
|
46 |
+
* One-Click Restore
|
47 |
* Manual Backup
|
48 |
* Filter Large Files
|
49 |
* Large Database Support
|
50 |
+
* Optimized for Any Host
|
51 |
+
* Set Backup Retention
|
52 |
* Backup Splitting
|
53 |
* No Limit of Backup Size
|
54 |
* Backup to Localhost
|
55 |
* Clean Temp Files
|
|
|
56 |
* Customize Backup Content
|
57 |
* Download Backup
|
58 |
* Instant Email Report
|
142 |
Feel free to let us know how we can help using the [support forum](https://wordpress.org/support/plugin/wpvivid-backuprestore) for the plugin on WordPress.org or our [contact form](https://wpvivid.com/contact-us). You can also reach us with a direct message on [Twitter](https://twitter.com/WPvividcom).
|
143 |
|
144 |
== Changelog ==
|
145 |
+
= 0.9.15 =
|
146 |
+
- Fixed: Scheduled backups failed to run as configured after the last update.
|
147 |
+
- Improved the Restore UI.
|
148 |
+
- Refined some descriptions in the UI.
|
149 |
= 0.9.14 =
|
150 |
- Added free website transfer feature. We highly recommend all our users to update.
|
151 |
- Added backup upload feature. Now you can upload a backup to restore or transfer.
|
wpvivid-backuprestore.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* @wordpress-plugin
|
8 |
* Plugin Name: WPvivid Backup Plugin
|
9 |
* Description: Transfer site to a new domain. Off-site backup schedule, transfer backups to leading remote storage (dropbox, onedrive, google drive etc). All in one.
|
10 |
-
* Version: 0.9.
|
11 |
* Author: wpvivid.com
|
12 |
* Author URI: https://wpvivid.com
|
13 |
* License: GPL-3.0+
|
@@ -21,7 +21,7 @@ if ( ! defined( 'WPINC' ) ) {
|
|
21 |
die;
|
22 |
}
|
23 |
|
24 |
-
define( 'WPVIVID_PLUGIN_VERSION', '0.9.
|
25 |
//
|
26 |
define('WPVIVID_RESTORE_INIT','init');
|
27 |
define('WPVIVID_RESTORE_READY','ready');
|
7 |
* @wordpress-plugin
|
8 |
* Plugin Name: WPvivid Backup Plugin
|
9 |
* Description: Transfer site to a new domain. Off-site backup schedule, transfer backups to leading remote storage (dropbox, onedrive, google drive etc). All in one.
|
10 |
+
* Version: 0.9.15
|
11 |
* Author: wpvivid.com
|
12 |
* Author URI: https://wpvivid.com
|
13 |
* License: GPL-3.0+
|
21 |
die;
|
22 |
}
|
23 |
|
24 |
+
define( 'WPVIVID_PLUGIN_VERSION', '0.9.15' );
|
25 |
//
|
26 |
define('WPVIVID_RESTORE_INIT','init');
|
27 |
define('WPVIVID_RESTORE_READY','ready');
|