Changeset 3443538
- Timestamp:
- 01/20/2026 07:45:49 PM (4 weeks ago)
- Location:
- wp-backitup/trunk
- Files:
-
- 9 edited
-
js/wp-backitup-admin.min.js (modified) (1 diff)
-
lib/includes/admin-actions.php (modified) (1 diff)
-
lib/includes/class-logger.php (modified) (6 diffs)
-
lib/includes/class-wpbackitup-admin.php (modified) (7 diffs)
-
lib/includes/update_database.php (modified) (1 diff)
-
readme.txt (modified) (2 diffs)
-
uninstall.php (modified) (1 diff)
-
views/settings.php (modified) (1 diff)
-
wp-backitup.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wp-backitup/trunk/js/wp-backitup-admin.min.js
r3345748 r3443538 1 var WPBNewBackupData={},ajaxSafeNamespace="wp-backitup",ENUM={GDRIVE:"GDRIVE",AMAZONS3:"AMAZONS3",DROPBOX:"DROPBOX"},CLOUDSTATUS={READY:"ready",UPLOADING:"uploading",UPLOADED:"uploaded",ERROR:"error"},debugFlag=!1;if(void 0===WPBackItUpSafeLocals)var WPBackItUpSafeLocals=[];var wpbackitup_get_action_name=function(a){return ajaxSafeNamespace+"_"+a},AjaxGetSafe=function(a){return jQuery.ajax({url:ajaxurl,type:"GET",data:{action:wpbackitup_get_action_name(a),security:WPBackItUpSafeLocals[a]},dataType:"json"})},AjaxGetCore=function(a){var e=wpbackitup_local[a];return jQuery.ajax({url:ajaxurl,type:"GET",data:{action:"wp-backitup_"+a,security:e},dataType:"json"})},AjaxPostSafe=function(a,e){return(e=e||{}).action=wpbackitup_get_action_name(a),e.security=WPBackItUpSafeLocals[a],jQuery.ajax({url:ajaxurl,type:"POST",data:e,dataType:"json"})};!function(){"use strict";if(document.querySelector("#wpbackitup-core-backup"))var i=new Vue({el:"#wpbackitup-core-backup",data:{cloudStatus:{},isNewRowAvailable:!1,backupNewRow:{}},methods:{getAvailableBackups:function(){AjaxGetCore("get_available_backups").then(function(a){if(a.success)for(var e=0;e<a.data.length;e++){var t=a.data[e].backup_job_id,s=a.data[e].backup_job_cloud_status;i.$set(i.cloudStatus,t,s)}})},getBackupStatus:function(){var a=WPBNewBackupData;if("success"===a.backupStatus){var e=a.backupName,t=e.lastIndexOf("_"),s=e.substring(t+1);this.isNewRowAvailable=!0,this.backupNewRow={name:a.backupName,type:a.backupRuntype,date:a.backupDate,duration:a.backupDuration,status:a.backupStatus,row:99999,jobId:s,zipExist:!0},WPBNewBackupData={}}}},mounted:function(){this.getAvailableBackups(),this.getBackupStatusInterval=setInterval(function(){0!==Object.keys(WPBNewBackupData).length&&this.getBackupStatus()}.bind(this),1e3),this.getAvailableBackupsInterval=setInterval(function(){this.getAvailableBackups()}.bind(this),3e3)},beforeDestroy:function(){clearInterval(this.getAvailableBackupsInterval),clearInterval(this.getBackupStatusInterval)}})}(jQuery),function(u){var a,e,t="wp-backitup",s=0;r(),p();try{"undefined"!=typeof wpbackitup_plupload_config&&(a=wpbackitup_plupload_config,(e=new plupload.Uploader(a)).init(),e.bind("FilesAdded",function(a,e){plupload.each(e,function(a){u("#filelist").append('<div id="media-item-'+a.id+'" class="media-item child-of-0"><img class="pinkynail" alt="" src="'+site_url+'/wp-includes/images/media/archive.png"><div class="filename new" id="'+a.id+'">'+a.name+" (<span>"+plupload.formatSize(0)+"</span> of "+plupload.formatSize(a.size)+') <div class="progress" style="width: 0%;"></div></div></div>')}),a.refresh(),a.start()}),e.bind("UploadProgress",function(a,e){u("#"+e.id+" .progress").width(.15*e.percent+"%"),u("#"+e.id+" span").html(plupload.formatSize(parseInt(e.size*e.percent/100)))}),e.bind(" ChunkUploaded",function(a,e,t){console.log("Chunk Uploaded:"),console.log(t),_(t,a,e)&&console.log("chunk error")}),e.bind("Error",function(a,e){console.log("PlUpload Error:"),console.log(e);var t="error-item-"+e.file.id;u("#"+t).length||u("#filelist").append('<div class="error-div error" id="'+t+'" ><strong>'+e.file.name+" has failed to upload due to error: </strong> <span>"+e.message+"</span> </div>")}),e.bind("FileUploaded",function(a,e,t){console.log("File Uploaded"),console.log(t),_(t,a,e)?console.log("uploaded error"):(console.log("uploaded success"),u("#"+e.id+" .progress").css("background-color","green"),u("#import-uploads").show())}))}catch(a){console.log(a)}function r(){u(".viewloglink").on("click",function(){var a=u(this).attr("href");return u("#backup_name").val(a),u("#viewlog").trigger("submit"),!1})}function p(){u(".downloadbackuplink").on("click",function(){var a=u(this).attr("href");return u("#backup_file").val(a),u(this).append('<span class="dashicons dashicons-yes"></span>'),u(this).css({color:"green"}),u("#download_backup").trigger("submit"),!1})}function c(a,e,t){var s="Error-Invalid response from server: ";e&&(s+=e+"\n"),t&&(s+=t+"\n"),s+="\nResponse: \n\n"+JSON.stringify(a),alert(s)}function i(){var a={action:k("restore_status_reader"),job_id:s,security:wpbackitup_local.backup_nonce};u.post(ajaxurl,a,function(a){u(a).each(function(){var a="."+u(this).attr("class"),e="."+u(this).attr("class")+"-icon";0==u(this).html()&&(u(a).find(".status").hide(),u(a).find(".status-icon").hide()),1==u(this).html()&&(u(e).css("visibility","visible"),u(a).find(".status").fadeOut(200),u(a).find(".status-icon").fadeIn(1500)),2==u(this).html()&&(u(a).find(".status-icon").fadeOut(200),u(a).find(".status").fadeIn(1500)),-1==u(this).html()&&(u(a).find(".status-icon").fadeOut(200),u(a).find(".fail").fadeIn(1500),u(a).find(".isa_error").fadeIn(1500),clearInterval(window.intervalDefine)),-2==u(this).html()&&u(a).find(".isa_warning").fadeIn(1500),99==u(this).html()&&(u(a).find(".isa_success").fadeIn(1500),clearInterval(window.intervalDefine))})})}function o(){var a={action:k("backup_status_reader"),job_id:s};u.post(ajaxurl,a,function(a){if(b)return clearInterval(window.intervalDefine),u(".status-icon").fadeOut(200),u("#backup-button").prop("disabled",!1),u("#cancel-button").addClass("button-hidden").fadeOut(200),u("#backup-button").removeClass("button-hidden").fadeIn(200),u(".backup-cancelled").fadeIn(200),!1;u(a).each(function(){var a="."+u(this).attr("class"),e="."+u(this).attr("class")+"-icon";0==u(this).html()&&(u(a).find(".status").hide(),u(a).find(".status-icon").hide()),1==u(this).html()&&(u(e).css("visibility","visible"),u(a).find(".status").fadeOut(200),u(a).find(".status-icon").fadeIn(1500)),2==u(this).html()&&(u(a).find(".status-icon").fadeOut(200),u(a).find(".status").fadeIn(1500)),-1==u(this).html()&&(u(a).find(".status-icon").fadeOut(200),u(a).find(".fail").fadeIn(1500),clearInterval(window.intervalDefine),n()),-2==u(this).html()&&(u(a).find(".status-icon").fadeOut(200),u(a).find(".wpbackitup-warning").fadeIn(1500)),99==u(this).html()&&(u(a).find(".status-icon").fadeOut(200),u(a).find(".status").fadeIn(1500),clearInterval(window.intervalDefine),n())})})}u(".logs_backup").on("click",function(){var a=u(this).attr("href");return u("#backup_file").val(a),u("#download_logs").val(),u("#download_backup").trigger("submit"),!1}),u("#scheduled-backups-accordian").on("click",function(){scheduled_backups=u("#scheduled-backups"),scheduled_backups_button=u("#scheduled-backups-accordian"),u(this).is(".dashicons-arrow-down")?(scheduled_backups.fadeIn("slow"),scheduled_backups_button.toggleClass("dashicons-arrow-down",!1),scheduled_backups_button.toggleClass("dashicons-arrow-up",!0)):(scheduled_backups_button.toggleClass("dashicons-arrow-down",!0),scheduled_backups_button.toggleClass("dashicons-arrow-up",!1),scheduled_backups.fadeOut("slow"))}),u("#upload-backups-accordian").on("click",function(){upload_backups=u("#wpbackitup-plupload-modal"),upload_backups_button=u("#upload-backups-accordian"),u(this).is(".dashicons-arrow-down")?(upload_backups.fadeIn("slow"),upload_backups_button.toggleClass("dashicons-arrow-down",!1),upload_backups_button.toggleClass("dashicons-arrow-up",!0)):(upload_backups_button.toggleClass("dashicons-arrow-down",!0),upload_backups_button.toggleClass("dashicons-arrow-up",!1),upload_backups.fadeOut("slow"))}),u("#wpbackitup-zip").on("change",function(){var a=this.files[0].size,e=u("#maxfilesize").val();"undefined"!=a&&"undefined"!=e&&""!=a&&""!=e&&e<a&&(alert(wpbackitup_local.upload_file_size_exceed),u("#wpbackitup-zip").val(""))}),u("#import-uploads").on("click",function(){setTimeout(function(){window.location.reload()},100)}),u(document.body).on("click",".thickbox",function(){if(!u(this).parents(".wpbiu-restore-item").length){var a=u(this).data("jobid");console.log(a),function(e,a){k("backup_zip_filelist");var t=a.replace(/[^A-Za-z0-9\-]/g,""),i=0,o="",n='<div id="'+t+'"> <h2>'+wpbackitup_local.bl_backup_set+" <em>"+a+'</em></h2> <div class="wpbiu-notes"> <textarea class="backupnotes" id="wpbiu-note-box" placeholder="'+wpbackitup_local.bl_note_placeholder+'"></textarea> <button id="wpbiu-note-btn" class="button-primary">'+wpbackitup_local.bl_note_save+'</button><span id="wpbiu-note-response">'+wpbackitup_local.bl_note_saved_success+"</span></div> <p>"+wpbackitup_local.bl_backup_download+'</p> <table class="widefat" id="datatable"> <tbody>';u.ajax({url:ajaxurl,type:"POST",data:{action:k("backup_zip_filelist"),job_id:e,security:wpbackitup_local.backup_nonce},dataType:"json"}).done(function(a){a.data?(u.each(a.data,function(){var a=u(this)[0].name.split(/[\/]+/).pop(),e=u(this)[0].size,t=u(this)[0].file_exists;if(console.log(a,e),-1<a.indexOf("-backupset-"))o='<p><a class="downloadbackuplink" href="'+a+'"><span class="dashicons dashicons-download wpb-download-large"></span> <strong>'+wpbackitup_local.bl_backup_download_single+"</strong></a> <br><em>"+wpbackitup_local.bl_please_note+e+wpbackitup_local.bl_may_timeout+"</em></p>";else{var s="";++i%2!=0&&(s="alternate"),n+='<tr class="'+s+'" id="row'+i+'">',n+=t?'<td><a class="downloadbackuplink" href="'+a+'">'+a+"</a></td>":"<td>"+a+"</td>",n+="<td>"+e+"</td> </tr>"}}),n+=o+"</tbody></table></div>",u("#TB_ajaxContent").html(n),p(),u.ajax({url:ajaxurl,type:"post",data:{action:k("backup_get_note"),job_id:e,security:wpbackitup_local.backup_nonce},success:function(a){u("#wpbiu-note-box").val(a.data)}}),u("#wpbiu-note-btn").on("click",function(){var a=u("#wpbiu-note-box").val();u.ajax({url:ajaxurl,type:"POST",data:{action:k("backup_add_note"),job_id:e,note:a,security:wpbackitup_local.backup_nonce},dataType:"json"}).done(function(a){u("#wpbiu-note-response").fadeIn()})}),u("#wpbiu-note-box").on("focus",function(){u("#wpbiu-note-response").hide()})):c(a,null,null)}).fail(function(a,e,t){c(a,e,t)})}(a,this.name)}}),u(document.body).on("click",".thickbox",function(){var e=u(this).data("jobid"),a=u(this).attr("name");if(u(this).parents(".wpbiu-restore-item").length){var t="<h2>"+wpbackitup_local.bl_backup_set+" <em>"+a+'</em></h2> <div class="wpbiu-notes"> <textarea class="backupnotes" id="wpbiu-restore-note-box" placeholder="'+wpbackitup_local.bl_note_placeholder+'"></textarea> <button id="wpbiu-restore-note-btn" class="button-primary">'+wpbackitup_local.bl_note_save+'</button> <span id="wpbiu-restore-note-response">'+wpbackitup_local.bl_note_saved_success+"</span> </div>";u("#wpbiu-restore-note").html(t),u("#wpbiu-restore-note-response").hide(),u.ajax({url:ajaxurl,type:"post",data:{action:k("backup_get_note"),job_id:e,security:wpbackitup_local.backup_nonce},success:function(a){u("#wpbiu-restore-note-box").val(a.data)}}),u("#wpbiu-restore-note-btn").on("click",function(){var a=u("#wpbiu-restore-note-box").val();u.ajax({url:ajaxurl,type:"POST",data:{action:k("backup_add_note"),job_id:e,note:a,security:wpbackitup_local.backup_nonce},dataType:"json"}).done(function(a){u("#wpbiu-restore-note-response").fadeIn()})})}u("#wpbiu-restore-note-box").on("focus",function(){u("#wpbiu-restore-note-response").hide()})});var d=!1;function n(){u.ajax({url:ajaxurl,type:"POST",data:{action:k("backup_response_reader"),job_id:s},dataType:"json"}).always(function(a,e,t){if(console.log("Backup Response:"+JSON.stringify(a)),void 0!==a.backupStatus&&void 0!==a.backupMessage){if(console.log("JSON Backup Status:"+a.backupStatus),console.log("JSON Backup Message:"+a.backupMessage),d)return;switch(d=!0,a.backupStatus){case"success":if(console.log("JSON success response received."),u(".status-icon").fadeOut(200),u("#backup-button").prop("disabled",!1),u("#cancel-button").addClass("button-hidden").fadeOut(200),u("#backup-button").removeClass("button-hidden").fadeIn(200),u(".isa_success").show,u(".backup-success").fadeIn(1500),void 0!==(l=a)&&(WPBNewBackupData=l,u("#nofiles")&&u("#nofiles").remove(),r(),p()),void 0!==a.backupWarnings){var s=u(".backup-warning");a.backupWarnings.forEach(function(a){var e=a.warningMessage;s.append('<li class="isa_warning">'+wpbackitup_local.warning+": "+e+"</li>")}),s.fadeIn(1500)}break;case"error":console.log("JSON error response received.");var i=wpbackitup_local.unexpected_err;void 0!==a.backupMessage&&(i=a.backupMessage);var o=wpbackitup_local.error+": "+i,n=u(".backup-error");n.html(o),n.addClass("isa_error"),n.fadeIn(1500),u(".status-icon").fadeOut(200),u("#backup-button").prop("disabled",!1),u("#cancel-button").addClass("button-hidden").fadeOut(200),u("#backup-button").removeClass("button-hidden").fadeIn(200);break;default:console.log("Unexpected JSON response status received.");i=wpbackitup_local.unexpected_err2;void 0!==a.backupMessage&&(i=a.backupMessage);o=wpbackitup_local.error+"(JS998) : "+i;(c=u(".backup-error")).html(o),c.addClass("isa_error"),c.fadeIn(1500),u(".status-icon").fadeOut(200),u("#backup-button").prop("disabled",!1),u("#cancel-button").addClass("button-hidden").fadeOut(200),u("#backup-button").removeClass("button-hidden").fadeIn(200)}}else{var c;console.log("NON JSON response received."),console.log("Backup Response:"+t),o=wpbackitup_local.unexpected_err3+": ",o+="</br>"+wpbackitup_local.response+": "+JSON.stringify(a),o+="</br>"+wpbackitup_local.status+": "+e,o+="</br>"+wpbackitup_local.error+": "+JSON.stringify(t),u(".backup-status").hide(),(c=u(".backup-error")).html(o),c.addClass("isa_error"),c.show(),u(".status-icon").fadeOut(200)}var l})}u("#wp-backitup-notification-widget-close").on("click",function(){notification_bar=u("#wp-backitup-notification-widget"),notification_bar.fadeOut("slow"),u.ajax({url:ajaxurl,type:"POST",data:{action:k("delete_transient")},dataType:"json"}).always(function(a,e,t){!1!==a&&(notification_bar.removeClass(),notification_bar.addClass("notice"),notification_bar.addClass("notice-"+a.message_type),u("#wp-backitup-notification-widget-message p").html(a.message),notification_bar.hide().fadeIn("slow"))})}),u("#wp-backitup-notification-close").on("click",function(){notification_bar=u("#wp-backitup-notification-parent"),notification_bar.fadeOut("slow")}),u("#wp-backitup-save_schedule_form").on("submit",function(){var a=new FormData;a.append("action",k("update-schedule")),a.append("_wpnonce",u("#wp-backitup_nonce-update-schedule").val()),a.append("_wp_http_referer",u("[name='_wp_http_referer']").val());var e=[];return u.each(u("input[name='dow']:checked"),function(){e.push(u(this).val())}),a.append("days_selected",e),jQuery.ajax({url:ajaxurl,type:"POST",cache:!1,contentType:!1,processData:!1,dataType:"json",data:a,success:function(a,e,t){switch(response=a.message,console.log("Success:"+response),response){case"success":i=wpbackitup_local.scheduled_saved,notification_bar_message=u("#wp-backitup-notification-message"),notification_bar_message.html("<p>"+i+"</p>"),notification_bar=u("#wp-backitup-notification-parent"),notification_bar.toggleClass("error",!1),notification_bar.toggleClass("updated",!0),notification_bar.show(),u("html, body").animate({scrollTop:0},"slow");break;case"error":s=wpbackitup_local.scheduled_not_saved,notification_bar_message=u("#wp-backitup-notification-message"),notification_bar_message.html("<p>"+s+"</p>"),notification_bar=u("#wp-backitup-notification-parent"),notification_bar.toggleClass("updated",!1),notification_bar.toggleClass("error",!0),notification_bar.show(),u("html, body").animate({scrollTop:0},"slow")}var s,i},error:function(a,e,t){console.log("Error."+e+":"+t)},complete:function(a,e){console.log("Complete")}}),!1});var l=null;u(".backup-button").on("click",function(a){a.preventDefault(),b=!1,u("#backup-button").attr("disabled","disabled"),u("#backup-button").addClass("button-hidden"),u("#cancel-button").removeClass("button-hidden"),u("#cancel-button").prop("disabled",!1),u("#cancel-button").fadeIn(200),(l=u.ajax({url:ajaxurl,type:"POST",data:{action:k("backup"),security:wpbackitup_local.backup_nonce},cache:!1,dataType:"json",beforeSend:function(a,e){console.log("BeforeSend:Nothing to report."),u(".backup-icon").css("visibility","visible"),u(".backup-icon").show(),u(".backup-success").hide(),u(".default-status").hide(),u(".backup-error").hide(),u(".backup-cancelled").hide(),u("ul.backup-status").children().children().hide(),u(".backup-errors").children().children().hide(),u(".backup-success").children().children().hide(),u(".backup-status").show(),d=!1,window.intervalDefine=setInterval(o,5e3)}})).always(function(a,e,t){console.log("Backup Button Click - Always"),console.log(a.message),void 0!==a.job_id?(s=a.job_id,console.log("Job_Id:"+a.job_id)):console.log("No Job Id found:"+a)})}),u(".get-backup-schedule-button").on("click",function(a){a.preventDefault();var e="get_backup_schedule",t=wpbackitup_local[e];l=u.ajax({url:ajaxurl,type:"POST",data:{action:"wp-backitup_"+e,security:t},cache:!1,dataType:"json",beforeSend:function(a,e){console.log("BeforeSend:Nothing to report.")}})}),u(".set-backup-schedule-button").on("click",function(a){a.preventDefault();var e="set_backup_schedule",t=wpbackitup_local[e];l=u.ajax({url:ajaxurl,type:"POST",data:{action:"wp-backitup_"+e,security:t,frequency:"daily",start_time:"16:30",days:"M",enabled:!0},cache:!1,dataType:"json",beforeSend:function(a,e){console.log("BeforeSend:Nothing to report.")}})});var b=!1;function _(e,t,s){if("200"!=e.status)return alert("Unknown server response status: "+e.code),console.log(e),f(t,s,999,e.response),!0;try{return response_json=jQuery.parseJSON(e.response),!!response_json.error&&(f(t,s,100,response_json.error),!0)}catch(a){return console.log("Unexpected JSON Error"+a),f(t,s,998,e.response),!0}}function f(a,e,t,s){e.status=plupload.FAILED,a.trigger("Error",{code:t,message:s,file:e}),u("#media-item-"+e.id).hide()}function k(a){return t+"_"+a}u(".cancel-button").on("click",function(a){a.preventDefault(),u("#cancel-button").attr("disabled","disabled"),null!=l&&(l.abort(),l=null),(l=u.ajax({url:ajaxurl,type:"POST",data:{action:k("cancel_backup"),job_id:s,security:wpbackitup_local.backup_nonce},cache:!1,dataType:"json",beforeSend:function(a,e){console.log("BeforeSend:Nothing to report."),u(".backup-icon").css("visibility","visible"),u(".backup-icon").show(),u(".backup-status").show(),d=!1,clearInterval(window.intervalDefine),window.intervalDefine=setInterval(o,5e3)}})).always(function(a,e,t){console.log("Cancel Button Click - Always"),console.log(a),void 0!==a.success&&1==a.success?console.log("Job Cancelled successfully"):console.log("Job was not cancelled successfully"),b=!0})}),u("#datatable").on("click","a.restoreRow",function(a){if(a.preventDefault(),confirm(wpbackitup_local.confirm_restore)){var e=this.title;this.id.replace("restoreRow","row");userid=u("input[name=user_id]").val(),u.ajax({url:ajaxurl,type:"post",data:{action:k("restore"),selected_file:e,user_id:userid,security:wpbackitup_local.backup_nonce},cache:!1,dataType:"json",beforeSend:function(){console.log("BeforeSend:Nothing to report."),u(".restore-icon").css("visibility","visible"),u(".default-status, .upload-status").hide(),u("ul.restore-status").children().children().hide(),u(".restore-errors").children().children().hide(),u(".restore-success").children().children().hide(),u(".restore-status, .restore-errors, .restore-success").show(),u(".preparing-icon").css("visibility","visible"),u(".preparing").find(".status-icon").fadeIn(1500),window.intervalDefine=setInterval(i,5e3)}}).always(function(a,e,t){void 0!==a.job_id?(s=a.job_id,console.log("Job_Id:"+a.job_id)):console.log("No Job Id found:"+a)})}}),u("#datatable").on("click","a.deleteRow",function(a){if(a.preventDefault(),confirm(wpbackitup_local.sure)){var e=this.title,t=u(this).data("id"),s=this.id.replace("deleteRow","row");console.log("=== WP BackItUp Delete Debug ==="),console.log("ajaxSafeNamespace:",ajaxSafeNamespace),console.log("Action name:",k("delete_file")),console.log("Security nonce:",wpbackitup_local.backup_nonce),console.log("Full data object:",{action:k("delete_file"),filed:e,post_id:t,security:wpbackitup_local.backup_nonce}),console.log("=================================="),u.ajax({url:ajaxurl,type:"post",data:{action:k("delete_file"),filed:e,post_id:t,security:wpbackitup_local.backup_nonce},success:function(a){0==a.search("deleted")?u("#"+s).remove():alert(wpbackitup_local.file_not_del)}})}})}(jQuery),function(t){"use strict";function i(a){return"wp-backitup_"+a}t(window).on("load",function(){if(document.querySelector("#wpbackitup-core-settings")){Vue.use(VueTabs);var s=new Vue({el:"#wpbackitup-core-settings",data:{loading:!1,updated:!1,emailsArray:[],errorMessages:{},backup_retained_number:3,logging:!1,single_file_db:!1,single_file_backupset:!1,rversion_compare:!1,remove_supporting_zip_files:!1,backup_plugins_filter:[],backup_themes_filter:[],backup_uploads_filter:[],backup_others_filter:[],dbFilterOptions:[],db_filters:[],allow_usage_tracking:!1,backup_dbtables_batch_size:1e4,backup_sql_merge_batch_size:1e4,backup_sql_batch_size:1e4,backup_plugins_batch_size:5e3,backup_themes_batch_size:5e3,backup_uploads_batch_size:500,backup_others_batch_size:500,backup_zip_max_size:524288e3,backup_max_timeout:120,delete_all:!1,safe_sync:!1,beta_updates:!1 },computed:{dbFilterHasSearch:function(){return 0==this.dbFilterOptions.length},dbFilterPlaceholder:function(){return 0<this.dbFilterOptions.length?wpbackitup_local.settings_select_database_table_to_filter:wpbackitup_local.settings_no_database_table_to_filter}},methods:{handleEmailInput:function(a){},handleTagsInput:function(a){},setSettings:function(){var a,e={data:{notification_email:this.emailsArray.join(","),backup_retained_number:this.backup_retained_number,logging:this.logging,single_file_db:this.single_file_db,single_file_backupset:this.single_file_backupset,rversion_compare:this.rversion_compare,remove_supporting_zip_files:this.remove_supporting_zip_files,backup_plugins_filter:this.backup_plugins_filter.join(","),backup_themes_filter:this.backup_themes_filter.join(","),backup_uploads_filter:this.backup_uploads_filter.join(","),backup_others_filter:this.backup_others_filter.join(","),backup_dbtables_filter_list:this.db_filters.map(function(a){return a.value}).join(","),backup_dbtables_batch_size:this.backup_dbtables_batch_size,backup_sql_merge_batch_size:this.backup_sql_merge_batch_size,backup_sql_batch_size:this.backup_sql_batch_size,backup_plugins_batch_size:this.backup_plugins_batch_size,backup_themes_batch_size:this.backup_themes_batch_size,backup_uploads_batch_size:this.backup_uploads_batch_size,backup_others_batch_size:this.backup_others_batch_size,backup_zip_max_size:this.backup_zip_max_size,backup_max_timeout:this.backup_max_timeout,delete_all:this.delete_all,safe_sync:this.safe_sync,beta_updates:this.beta_updates,allow_usage_tracking:this.allow_usage_tracking}};console.log(e),((a=(a=e)||{}).action=i("set_settings"),a.security=t("#wpbackitup-core-ajax-nonce").val(),t.ajax({url:ajaxurl,type:"POST",data:a,dataType:"json"})).then(function(a){a.success?(s.updated=!0,s.errorMessages={},swal(wpbackitup_local.settings_save_awesome,wpbackitup_local.settings_save_success_message,"success")):(s.errorMessages=a.data,swal(wpbackitup_local.settings_save_oops,wpbackitup_local.settings_save_error_message,"error"))})},getSettings:function(){var a;this.loading=!0,(a="get_settings",t.ajax({url:ajaxurl,type:"GET",data:{action:i(a)},dataType:"json"})).then(function(t){s.loading=!1,t.success&&(console.log(t),s.emailsArray=t.data.notification_email.split(",").filter(Boolean),s.backup_retained_number=t.data.backup_retained_number,s.logging="1"===t.data.logging,s.single_file_db="1"===t.data.single_file_db,s.rversion_compare="1"===t.data.rversion_compare,s.single_file_backupset="1"===t.data.single_file_backupset,s.remove_supporting_zip_files="1"===t.data.remove_supporting_zip_files,s.backup_plugins_filter=t.data.backup_plugins_filter.split(",").filter(Boolean),s.backup_themes_filter=t.data.backup_themes_filter.split(",").filter(Boolean),s.backup_uploads_filter=t.data.backup_uploads_filter.split(",").filter(Boolean),s.backup_others_filter=t.data.backup_others_filter.split(",").filter(Boolean),s.db_filters=t.data.backup_dbtables_filter_list.split(",").filter(Boolean).map(function(a){return{label:a,value:a}}),s.dbFilterOptions=Object.keys(t.data.backup_dbtables_filterable).map(function(a){var e=t.data.backup_dbtables_filterable[a];return{label:e,value:e}}),s.allow_usage_tracking=t.data.allow_usage_tracking,s.backup_dbtables_batch_size=t.data.backup_dbtables_batch_size,s.backup_sql_merge_batch_size=t.data.backup_sql_merge_batch_size,s.backup_sql_batch_size=t.data.backup_sql_batch_size,s.backup_plugins_batch_size=t.data.backup_plugins_batch_size,s.backup_themes_batch_size=t.data.backup_themes_batch_size,s.backup_uploads_batch_size=t.data.backup_uploads_batch_size,s.backup_others_batch_size=t.data.backup_others_batch_size,s.backup_zip_max_size=t.data.backup_zip_max_size,s.backup_max_timeout=t.data.backup_max_timeout,s.delete_all="1"===t.data.delete_all,s.safe_sync="1"===t.data.safe_sync,s.beta_updates="1"===t.data.beta_updates)})}},created:function(){this.getSettings()}})}})}(jQuery);1 var WPBNewBackupData={},ajaxSafeNamespace="wp-backitup",ENUM={GDRIVE:"GDRIVE",AMAZONS3:"AMAZONS3",DROPBOX:"DROPBOX"},CLOUDSTATUS={READY:"ready",UPLOADING:"uploading",UPLOADED:"uploaded",ERROR:"error"},debugFlag=!1;if(void 0===WPBackItUpSafeLocals)var WPBackItUpSafeLocals=[];var wpbackitup_get_action_name=function(a){return ajaxSafeNamespace+"_"+a},AjaxGetSafe=function(a){return jQuery.ajax({url:ajaxurl,type:"GET",data:{action:wpbackitup_get_action_name(a),security:WPBackItUpSafeLocals[a]},dataType:"json"})},AjaxGetCore=function(a){var e=wpbackitup_local[a];return jQuery.ajax({url:ajaxurl,type:"GET",data:{action:"wp-backitup_"+a,security:e},dataType:"json"})},AjaxPostSafe=function(a,e){return(e=e||{}).action=wpbackitup_get_action_name(a),e.security=WPBackItUpSafeLocals[a],jQuery.ajax({url:ajaxurl,type:"POST",data:e,dataType:"json"})};!function(){"use strict";if(document.querySelector("#wpbackitup-core-backup"))var i=new Vue({el:"#wpbackitup-core-backup",data:{cloudStatus:{},isNewRowAvailable:!1,backupNewRow:{}},methods:{getAvailableBackups:function(){AjaxGetCore("get_available_backups").then(function(a){if(a.success)for(var e=0;e<a.data.length;e++){var t=a.data[e].backup_job_id,s=a.data[e].backup_job_cloud_status;i.$set(i.cloudStatus,t,s)}})},getBackupStatus:function(){var a=WPBNewBackupData;if("success"===a.backupStatus){var e=a.backupName,t=e.lastIndexOf("_"),s=e.substring(t+1);this.isNewRowAvailable=!0,this.backupNewRow={name:a.backupName,type:a.backupRuntype,date:a.backupDate,duration:a.backupDuration,status:a.backupStatus,row:99999,jobId:s,zipExist:!0},WPBNewBackupData={}}}},mounted:function(){this.getAvailableBackups(),this.getBackupStatusInterval=setInterval(function(){0!==Object.keys(WPBNewBackupData).length&&this.getBackupStatus()}.bind(this),1e3),this.getAvailableBackupsInterval=setInterval(function(){this.getAvailableBackups()}.bind(this),3e3)},beforeDestroy:function(){clearInterval(this.getAvailableBackupsInterval),clearInterval(this.getBackupStatusInterval)}})}(jQuery),function(u){var a,e,t="wp-backitup",s=0;r(),p();try{"undefined"!=typeof wpbackitup_plupload_config&&(a=wpbackitup_plupload_config,(e=new plupload.Uploader(a)).init(),e.bind("FilesAdded",function(a,e){plupload.each(e,function(a){u("#filelist").append('<div id="media-item-'+a.id+'" class="media-item child-of-0"><img class="pinkynail" alt="" src="'+site_url+'/wp-includes/images/media/archive.png"><div class="filename new" id="'+a.id+'">'+a.name+" (<span>"+plupload.formatSize(0)+"</span> of "+plupload.formatSize(a.size)+') <div class="progress" style="width: 0%;"></div></div></div>')}),a.refresh(),a.start()}),e.bind("UploadProgress",function(a,e){u("#"+e.id+" .progress").width(.15*e.percent+"%"),u("#"+e.id+" span").html(plupload.formatSize(parseInt(e.size*e.percent/100)))}),e.bind(" ChunkUploaded",function(a,e,t){console.log("Chunk Uploaded:"),console.log(t),_(t,a,e)&&console.log("chunk error")}),e.bind("Error",function(a,e){console.log("PlUpload Error:"),console.log(e);var t="error-item-"+e.file.id;u("#"+t).length||u("#filelist").append('<div class="error-div error" id="'+t+'" ><strong>'+e.file.name+" has failed to upload due to error: </strong> <span>"+e.message+"</span> </div>")}),e.bind("FileUploaded",function(a,e,t){console.log("File Uploaded"),console.log(t),_(t,a,e)?console.log("uploaded error"):(console.log("uploaded success"),u("#"+e.id+" .progress").css("background-color","green"),u("#import-uploads").show())}))}catch(a){console.log(a)}function r(){u(".viewloglink").on("click",function(){var a=u(this).attr("href");return u("#backup_name").val(a),u("#viewlog").trigger("submit"),!1})}function p(){u(".downloadbackuplink").on("click",function(){var a=u(this).attr("href");return u("#backup_file").val(a),u(this).append('<span class="dashicons dashicons-yes"></span>'),u(this).css({color:"green"}),u("#download_backup").trigger("submit"),!1})}function c(a,e,t){var s="Error-Invalid response from server: ";e&&(s+=e+"\n"),t&&(s+=t+"\n"),s+="\nResponse: \n\n"+JSON.stringify(a),alert(s)}function i(){var a={action:k("restore_status_reader"),job_id:s,security:wpbackitup_local.backup_nonce};u.post(ajaxurl,a,function(a){u(a).each(function(){var a="."+u(this).attr("class"),e="."+u(this).attr("class")+"-icon";0==u(this).html()&&(u(a).find(".status").hide(),u(a).find(".status-icon").hide()),1==u(this).html()&&(u(e).css("visibility","visible"),u(a).find(".status").fadeOut(200),u(a).find(".status-icon").fadeIn(1500)),2==u(this).html()&&(u(a).find(".status-icon").fadeOut(200),u(a).find(".status").fadeIn(1500)),-1==u(this).html()&&(u(a).find(".status-icon").fadeOut(200),u(a).find(".fail").fadeIn(1500),u(a).find(".isa_error").fadeIn(1500),clearInterval(window.intervalDefine)),-2==u(this).html()&&u(a).find(".isa_warning").fadeIn(1500),99==u(this).html()&&(u(a).find(".isa_success").fadeIn(1500),clearInterval(window.intervalDefine))})})}function o(){var a={action:k("backup_status_reader"),job_id:s};u.post(ajaxurl,a,function(a){if(b)return clearInterval(window.intervalDefine),u(".status-icon").fadeOut(200),u("#backup-button").prop("disabled",!1),u("#cancel-button").addClass("button-hidden").fadeOut(200),u("#backup-button").removeClass("button-hidden").fadeIn(200),u(".backup-cancelled").fadeIn(200),!1;u(a).each(function(){var a="."+u(this).attr("class"),e="."+u(this).attr("class")+"-icon";0==u(this).html()&&(u(a).find(".status").hide(),u(a).find(".status-icon").hide()),1==u(this).html()&&(u(e).css("visibility","visible"),u(a).find(".status").fadeOut(200),u(a).find(".status-icon").fadeIn(1500)),2==u(this).html()&&(u(a).find(".status-icon").fadeOut(200),u(a).find(".status").fadeIn(1500)),-1==u(this).html()&&(u(a).find(".status-icon").fadeOut(200),u(a).find(".fail").fadeIn(1500),clearInterval(window.intervalDefine),n()),-2==u(this).html()&&(u(a).find(".status-icon").fadeOut(200),u(a).find(".wpbackitup-warning").fadeIn(1500)),99==u(this).html()&&(u(a).find(".status-icon").fadeOut(200),u(a).find(".status").fadeIn(1500),clearInterval(window.intervalDefine),n())})})}u(".logs_backup").on("click",function(){var a=u(this).attr("href");return u("#backup_file").val(a),u("#download_logs").val(),u("#download_backup").trigger("submit"),!1}),u("#scheduled-backups-accordian").on("click",function(){scheduled_backups=u("#scheduled-backups"),scheduled_backups_button=u("#scheduled-backups-accordian"),u(this).is(".dashicons-arrow-down")?(scheduled_backups.fadeIn("slow"),scheduled_backups_button.toggleClass("dashicons-arrow-down",!1),scheduled_backups_button.toggleClass("dashicons-arrow-up",!0)):(scheduled_backups_button.toggleClass("dashicons-arrow-down",!0),scheduled_backups_button.toggleClass("dashicons-arrow-up",!1),scheduled_backups.fadeOut("slow"))}),u("#upload-backups-accordian").on("click",function(){upload_backups=u("#wpbackitup-plupload-modal"),upload_backups_button=u("#upload-backups-accordian"),u(this).is(".dashicons-arrow-down")?(upload_backups.fadeIn("slow"),upload_backups_button.toggleClass("dashicons-arrow-down",!1),upload_backups_button.toggleClass("dashicons-arrow-up",!0)):(upload_backups_button.toggleClass("dashicons-arrow-down",!0),upload_backups_button.toggleClass("dashicons-arrow-up",!1),upload_backups.fadeOut("slow"))}),u("#wpbackitup-zip").on("change",function(){var a=this.files[0].size,e=u("#maxfilesize").val();"undefined"!=a&&"undefined"!=e&&""!=a&&""!=e&&e<a&&(alert(wpbackitup_local.upload_file_size_exceed),u("#wpbackitup-zip").val(""))}),u("#import-uploads").on("click",function(){setTimeout(function(){window.location.reload()},100)}),u(document.body).on("click",".thickbox",function(){if(!u(this).parents(".wpbiu-restore-item").length){var a=u(this).data("jobid");console.log(a),function(e,a){k("backup_zip_filelist");var t=a.replace(/[^A-Za-z0-9\-]/g,""),i=0,o="",n='<div id="'+t+'"> <h2>'+wpbackitup_local.bl_backup_set+" <em>"+a+'</em></h2> <div class="wpbiu-notes"> <textarea class="backupnotes" id="wpbiu-note-box" placeholder="'+wpbackitup_local.bl_note_placeholder+'"></textarea> <button id="wpbiu-note-btn" class="button-primary">'+wpbackitup_local.bl_note_save+'</button><span id="wpbiu-note-response">'+wpbackitup_local.bl_note_saved_success+"</span></div> <p>"+wpbackitup_local.bl_backup_download+'</p> <table class="widefat" id="datatable"> <tbody>';u.ajax({url:ajaxurl,type:"POST",data:{action:k("backup_zip_filelist"),job_id:e,security:wpbackitup_local.backup_nonce},dataType:"json"}).done(function(a){a.data?(u.each(a.data,function(){var a=u(this)[0].name.split(/[\/]+/).pop(),e=u(this)[0].size,t=u(this)[0].file_exists;if(console.log(a,e),-1<a.indexOf("-backupset-"))o='<p><a class="downloadbackuplink" href="'+a+'"><span class="dashicons dashicons-download wpb-download-large"></span> <strong>'+wpbackitup_local.bl_backup_download_single+"</strong></a> <br><em>"+wpbackitup_local.bl_please_note+e+wpbackitup_local.bl_may_timeout+"</em></p>";else{var s="";++i%2!=0&&(s="alternate"),n+='<tr class="'+s+'" id="row'+i+'">',n+=t?'<td><a class="downloadbackuplink" href="'+a+'">'+a+"</a></td>":"<td>"+a+"</td>",n+="<td>"+e+"</td> </tr>"}}),n+=o+"</tbody></table></div>",u("#TB_ajaxContent").html(n),p(),u.ajax({url:ajaxurl,type:"post",data:{action:k("backup_get_note"),job_id:e,security:wpbackitup_local.backup_nonce},success:function(a){u("#wpbiu-note-box").val(a.data)}}),u("#wpbiu-note-btn").on("click",function(){var a=u("#wpbiu-note-box").val();u.ajax({url:ajaxurl,type:"POST",data:{action:k("backup_add_note"),job_id:e,note:a,security:wpbackitup_local.backup_nonce},dataType:"json"}).done(function(a){u("#wpbiu-note-response").fadeIn()})}),u("#wpbiu-note-box").on("focus",function(){u("#wpbiu-note-response").hide()})):c(a,null,null)}).fail(function(a,e,t){c(a,e,t)})}(a,this.name)}}),u(document.body).on("click",".thickbox",function(){var e=u(this).data("jobid"),a=u(this).attr("name");if(u(this).parents(".wpbiu-restore-item").length){var t="<h2>"+wpbackitup_local.bl_backup_set+" <em>"+a+'</em></h2> <div class="wpbiu-notes"> <textarea class="backupnotes" id="wpbiu-restore-note-box" placeholder="'+wpbackitup_local.bl_note_placeholder+'"></textarea> <button id="wpbiu-restore-note-btn" class="button-primary">'+wpbackitup_local.bl_note_save+'</button> <span id="wpbiu-restore-note-response">'+wpbackitup_local.bl_note_saved_success+"</span> </div>";u("#wpbiu-restore-note").html(t),u("#wpbiu-restore-note-response").hide(),u.ajax({url:ajaxurl,type:"post",data:{action:k("backup_get_note"),job_id:e,security:wpbackitup_local.backup_nonce},success:function(a){u("#wpbiu-restore-note-box").val(a.data)}}),u("#wpbiu-restore-note-btn").on("click",function(){var a=u("#wpbiu-restore-note-box").val();u.ajax({url:ajaxurl,type:"POST",data:{action:k("backup_add_note"),job_id:e,note:a,security:wpbackitup_local.backup_nonce},dataType:"json"}).done(function(a){u("#wpbiu-restore-note-response").fadeIn()})})}u("#wpbiu-restore-note-box").on("focus",function(){u("#wpbiu-restore-note-response").hide()})});var d=!1;function n(){u.ajax({url:ajaxurl,type:"POST",data:{action:k("backup_response_reader"),job_id:s},dataType:"json"}).always(function(a,e,t){if(console.log("Backup Response:"+JSON.stringify(a)),void 0!==a.backupStatus&&void 0!==a.backupMessage){if(console.log("JSON Backup Status:"+a.backupStatus),console.log("JSON Backup Message:"+a.backupMessage),d)return;switch(d=!0,a.backupStatus){case"success":if(console.log("JSON success response received."),u(".status-icon").fadeOut(200),u("#backup-button").prop("disabled",!1),u("#cancel-button").addClass("button-hidden").fadeOut(200),u("#backup-button").removeClass("button-hidden").fadeIn(200),u(".isa_success").show,u(".backup-success").fadeIn(1500),void 0!==(l=a)&&(WPBNewBackupData=l,u("#nofiles")&&u("#nofiles").remove(),r(),p()),void 0!==a.backupWarnings){var s=u(".backup-warning");a.backupWarnings.forEach(function(a){var e=a.warningMessage;s.append('<li class="isa_warning">'+wpbackitup_local.warning+": "+e+"</li>")}),s.fadeIn(1500)}break;case"error":console.log("JSON error response received.");var i=wpbackitup_local.unexpected_err;void 0!==a.backupMessage&&(i=a.backupMessage);var o=wpbackitup_local.error+": "+i,n=u(".backup-error");n.html(o),n.addClass("isa_error"),n.fadeIn(1500),u(".status-icon").fadeOut(200),u("#backup-button").prop("disabled",!1),u("#cancel-button").addClass("button-hidden").fadeOut(200),u("#backup-button").removeClass("button-hidden").fadeIn(200);break;default:console.log("Unexpected JSON response status received.");i=wpbackitup_local.unexpected_err2;void 0!==a.backupMessage&&(i=a.backupMessage);o=wpbackitup_local.error+"(JS998) : "+i;(c=u(".backup-error")).html(o),c.addClass("isa_error"),c.fadeIn(1500),u(".status-icon").fadeOut(200),u("#backup-button").prop("disabled",!1),u("#cancel-button").addClass("button-hidden").fadeOut(200),u("#backup-button").removeClass("button-hidden").fadeIn(200)}}else{var c;console.log("NON JSON response received."),console.log("Backup Response:"+t),o=wpbackitup_local.unexpected_err3+": ",o+="</br>"+wpbackitup_local.response+": "+JSON.stringify(a),o+="</br>"+wpbackitup_local.status+": "+e,o+="</br>"+wpbackitup_local.error+": "+JSON.stringify(t),u(".backup-status").hide(),(c=u(".backup-error")).html(o),c.addClass("isa_error"),c.show(),u(".status-icon").fadeOut(200)}var l})}u("#wp-backitup-notification-widget-close").on("click",function(){notification_bar=u("#wp-backitup-notification-widget"),notification_bar.fadeOut("slow"),u.ajax({url:ajaxurl,type:"POST",data:{action:k("delete_transient")},dataType:"json"}).always(function(a,e,t){!1!==a&&(notification_bar.removeClass(),notification_bar.addClass("notice"),notification_bar.addClass("notice-"+a.message_type),u("#wp-backitup-notification-widget-message p").html(a.message),notification_bar.hide().fadeIn("slow"))})}),u("#wp-backitup-notification-close").on("click",function(){notification_bar=u("#wp-backitup-notification-parent"),notification_bar.fadeOut("slow")}),u("#wp-backitup-save_schedule_form").on("submit",function(){var a=new FormData;a.append("action",k("update-schedule")),a.append("_wpnonce",u("#wp-backitup_nonce-update-schedule").val()),a.append("_wp_http_referer",u("[name='_wp_http_referer']").val());var e=[];return u.each(u("input[name='dow']:checked"),function(){e.push(u(this).val())}),a.append("days_selected",e),jQuery.ajax({url:ajaxurl,type:"POST",cache:!1,contentType:!1,processData:!1,dataType:"json",data:a,success:function(a,e,t){switch(response=a.message,console.log("Success:"+response),response){case"success":i=wpbackitup_local.scheduled_saved,notification_bar_message=u("#wp-backitup-notification-message"),notification_bar_message.html("<p>"+i+"</p>"),notification_bar=u("#wp-backitup-notification-parent"),notification_bar.toggleClass("error",!1),notification_bar.toggleClass("updated",!0),notification_bar.show(),u("html, body").animate({scrollTop:0},"slow");break;case"error":s=wpbackitup_local.scheduled_not_saved,notification_bar_message=u("#wp-backitup-notification-message"),notification_bar_message.html("<p>"+s+"</p>"),notification_bar=u("#wp-backitup-notification-parent"),notification_bar.toggleClass("updated",!1),notification_bar.toggleClass("error",!0),notification_bar.show(),u("html, body").animate({scrollTop:0},"slow")}var s,i},error:function(a,e,t){console.log("Error."+e+":"+t)},complete:function(a,e){console.log("Complete")}}),!1});var l=null;u(".backup-button").on("click",function(a){a.preventDefault(),b=!1,u("#backup-button").attr("disabled","disabled"),u("#backup-button").addClass("button-hidden"),u("#cancel-button").removeClass("button-hidden"),u("#cancel-button").prop("disabled",!1),u("#cancel-button").fadeIn(200),(l=u.ajax({url:ajaxurl,type:"POST",data:{action:k("backup"),security:wpbackitup_local.backup_nonce},cache:!1,dataType:"json",beforeSend:function(a,e){console.log("BeforeSend:Nothing to report."),u(".backup-icon").css("visibility","visible"),u(".backup-icon").show(),u(".backup-success").hide(),u(".default-status").hide(),u(".backup-error").hide(),u(".backup-cancelled").hide(),u("ul.backup-status").children().children().hide(),u(".backup-errors").children().children().hide(),u(".backup-success").children().children().hide(),u(".backup-status").show(),d=!1,window.intervalDefine=setInterval(o,5e3)}})).always(function(a,e,t){console.log("Backup Button Click - Always"),console.log(a.message),void 0!==a.job_id?(s=a.job_id,console.log("Job_Id:"+a.job_id)):console.log("No Job Id found:"+a)})}),u(".get-backup-schedule-button").on("click",function(a){a.preventDefault();var e="get_backup_schedule",t=wpbackitup_local[e];l=u.ajax({url:ajaxurl,type:"POST",data:{action:"wp-backitup_"+e,security:t},cache:!1,dataType:"json",beforeSend:function(a,e){console.log("BeforeSend:Nothing to report.")}})}),u(".set-backup-schedule-button").on("click",function(a){a.preventDefault();var e="set_backup_schedule",t=wpbackitup_local[e];l=u.ajax({url:ajaxurl,type:"POST",data:{action:"wp-backitup_"+e,security:t,frequency:"daily",start_time:"16:30",days:"M",enabled:!0},cache:!1,dataType:"json",beforeSend:function(a,e){console.log("BeforeSend:Nothing to report.")}})});var b=!1;function _(e,t,s){if("200"!=e.status)return alert("Unknown server response status: "+e.code),console.log(e),f(t,s,999,e.response),!0;try{return response_json=jQuery.parseJSON(e.response),!!response_json.error&&(f(t,s,100,response_json.error),!0)}catch(a){return console.log("Unexpected JSON Error"+a),f(t,s,998,e.response),!0}}function f(a,e,t,s){e.status=plupload.FAILED,a.trigger("Error",{code:t,message:s,file:e}),u("#media-item-"+e.id).hide()}function k(a){return t+"_"+a}u(".cancel-button").on("click",function(a){a.preventDefault(),u("#cancel-button").attr("disabled","disabled"),null!=l&&(l.abort(),l=null),(l=u.ajax({url:ajaxurl,type:"POST",data:{action:k("cancel_backup"),job_id:s,security:wpbackitup_local.backup_nonce},cache:!1,dataType:"json",beforeSend:function(a,e){console.log("BeforeSend:Nothing to report."),u(".backup-icon").css("visibility","visible"),u(".backup-icon").show(),u(".backup-status").show(),d=!1,clearInterval(window.intervalDefine),window.intervalDefine=setInterval(o,5e3)}})).always(function(a,e,t){console.log("Cancel Button Click - Always"),console.log(a),void 0!==a.success&&1==a.success?console.log("Job Cancelled successfully"):console.log("Job was not cancelled successfully"),b=!0})}),u("#datatable").on("click","a.restoreRow",function(a){if(a.preventDefault(),confirm(wpbackitup_local.confirm_restore)){var e=this.title;this.id.replace("restoreRow","row");userid=u("input[name=user_id]").val(),u.ajax({url:ajaxurl,type:"post",data:{action:k("restore"),selected_file:e,user_id:userid,security:wpbackitup_local.backup_nonce},cache:!1,dataType:"json",beforeSend:function(){console.log("BeforeSend:Nothing to report."),u(".restore-icon").css("visibility","visible"),u(".default-status, .upload-status").hide(),u("ul.restore-status").children().children().hide(),u(".restore-errors").children().children().hide(),u(".restore-success").children().children().hide(),u(".restore-status, .restore-errors, .restore-success").show(),u(".preparing-icon").css("visibility","visible"),u(".preparing").find(".status-icon").fadeIn(1500),window.intervalDefine=setInterval(i,5e3)}}).always(function(a,e,t){void 0!==a.job_id?(s=a.job_id,console.log("Job_Id:"+a.job_id)):console.log("No Job Id found:"+a)})}}),u("#datatable").on("click","a.deleteRow",function(a){if(a.preventDefault(),confirm(wpbackitup_local.sure)){var e=this.title,t=u(this).data("id"),s=this.id.replace("deleteRow","row");console.log("=== WP BackItUp Delete Debug ==="),console.log("ajaxSafeNamespace:",ajaxSafeNamespace),console.log("Action name:",k("delete_file")),console.log("Security nonce:",wpbackitup_local.backup_nonce),console.log("Full data object:",{action:k("delete_file"),filed:e,post_id:t,security:wpbackitup_local.backup_nonce}),console.log("=================================="),u.ajax({url:ajaxurl,type:"post",data:{action:k("delete_file"),filed:e,post_id:t,security:wpbackitup_local.backup_nonce},success:function(a){0==a.search("deleted")?u("#"+s).remove():alert(wpbackitup_local.file_not_del)}})}})}(jQuery),function(t){"use strict";function i(a){return"wp-backitup_"+a}t(window).on("load",function(){if(document.querySelector("#wpbackitup-core-settings")){Vue.use(VueTabs);var s=new Vue({el:"#wpbackitup-core-settings",data:{loading:!1,updated:!1,emailsArray:[],errorMessages:{},backup_retained_number:3,logging:!1,single_file_db:!1,single_file_backupset:!1,rversion_compare:!1,remove_supporting_zip_files:!1,backup_plugins_filter:[],backup_themes_filter:[],backup_uploads_filter:[],backup_others_filter:[],dbFilterOptions:[],db_filters:[],allow_usage_tracking:!1,backup_dbtables_batch_size:1e4,backup_sql_merge_batch_size:1e4,backup_sql_batch_size:1e4,backup_plugins_batch_size:5e3,backup_themes_batch_size:5e3,backup_uploads_batch_size:500,backup_others_batch_size:500,backup_zip_max_size:524288e3,backup_max_timeout:120,delete_all:!1,safe_sync:!1,beta_updates:!1,event_logging_enabled:!0,event_stats:{total_events:0,updates_applied:0,content_changes:0,security_events:0,settings_changes:0,pending_updates:0}},computed:{dbFilterHasSearch:function(){return 0==this.dbFilterOptions.length},dbFilterPlaceholder:function(){return 0<this.dbFilterOptions.length?wpbackitup_local.settings_select_database_table_to_filter:wpbackitup_local.settings_no_database_table_to_filter}},methods:{handleEmailInput:function(a){},handleTagsInput:function(a){},setSettings:function(){var a,e={data:{notification_email:this.emailsArray.join(","),backup_retained_number:this.backup_retained_number,logging:this.logging,single_file_db:this.single_file_db,single_file_backupset:this.single_file_backupset,rversion_compare:this.rversion_compare,remove_supporting_zip_files:this.remove_supporting_zip_files,backup_plugins_filter:this.backup_plugins_filter.join(","),backup_themes_filter:this.backup_themes_filter.join(","),backup_uploads_filter:this.backup_uploads_filter.join(","),backup_others_filter:this.backup_others_filter.join(","),backup_dbtables_filter_list:this.db_filters.map(function(a){return a.value}).join(","),backup_dbtables_batch_size:this.backup_dbtables_batch_size,backup_sql_merge_batch_size:this.backup_sql_merge_batch_size,backup_sql_batch_size:this.backup_sql_batch_size,backup_plugins_batch_size:this.backup_plugins_batch_size,backup_themes_batch_size:this.backup_themes_batch_size,backup_uploads_batch_size:this.backup_uploads_batch_size,backup_others_batch_size:this.backup_others_batch_size,backup_zip_max_size:this.backup_zip_max_size,backup_max_timeout:this.backup_max_timeout,delete_all:this.delete_all,safe_sync:this.safe_sync,beta_updates:this.beta_updates,allow_usage_tracking:this.allow_usage_tracking,event_logging_enabled:this.event_logging_enabled}};console.log(e),((a=(a=e)||{}).action=i("set_settings"),a.security=t("#wpbackitup-core-ajax-nonce").val(),t.ajax({url:ajaxurl,type:"POST",data:a,dataType:"json"})).then(function(a){a.success?(s.updated=!0,s.errorMessages={},swal(wpbackitup_local.settings_save_awesome,wpbackitup_local.settings_save_success_message,"success")):(s.errorMessages=a.data,swal(wpbackitup_local.settings_save_oops,wpbackitup_local.settings_save_error_message,"error"))})},getSettings:function(){var a;this.loading=!0,(a="get_settings",t.ajax({url:ajaxurl,type:"GET",data:{action:i(a)},dataType:"json"})).then(function(t){s.loading=!1,t.success&&(console.log(t),s.emailsArray=t.data.notification_email.split(",").filter(Boolean),s.backup_retained_number=t.data.backup_retained_number,s.logging="1"===t.data.logging,s.single_file_db="1"===t.data.single_file_db,s.rversion_compare="1"===t.data.rversion_compare,s.single_file_backupset="1"===t.data.single_file_backupset,s.remove_supporting_zip_files="1"===t.data.remove_supporting_zip_files,s.backup_plugins_filter=t.data.backup_plugins_filter.split(",").filter(Boolean),s.backup_themes_filter=t.data.backup_themes_filter.split(",").filter(Boolean),s.backup_uploads_filter=t.data.backup_uploads_filter.split(",").filter(Boolean),s.backup_others_filter=t.data.backup_others_filter.split(",").filter(Boolean),s.db_filters=t.data.backup_dbtables_filter_list.split(",").filter(Boolean).map(function(a){return{label:a,value:a}}),s.dbFilterOptions=Object.keys(t.data.backup_dbtables_filterable).map(function(a){var e=t.data.backup_dbtables_filterable[a];return{label:e,value:e}}),s.allow_usage_tracking=t.data.allow_usage_tracking,s.backup_dbtables_batch_size=t.data.backup_dbtables_batch_size,s.backup_sql_merge_batch_size=t.data.backup_sql_merge_batch_size,s.backup_sql_batch_size=t.data.backup_sql_batch_size,s.backup_plugins_batch_size=t.data.backup_plugins_batch_size,s.backup_themes_batch_size=t.data.backup_themes_batch_size,s.backup_uploads_batch_size=t.data.backup_uploads_batch_size,s.backup_others_batch_size=t.data.backup_others_batch_size,s.backup_zip_max_size=t.data.backup_zip_max_size,s.backup_max_timeout=t.data.backup_max_timeout,s.delete_all="1"===t.data.delete_all,s.safe_sync="1"===t.data.safe_sync,s.beta_updates="1"===t.data.beta_updates,s.event_logging_enabled="1"===t.data.event_logging_enabled,t.data.event_stats&&(s.event_stats=t.data.event_stats))})}},created:function(){this.getSettings()}})}})}(jQuery); -
wp-backitup/trunk/lib/includes/admin-actions.php
r1877137 r3443538 22 22 function wpbackitup_process_actions() { 23 23 24 // Security: Require logged-in user with admin capabilities 25 if ( ! is_user_logged_in() || ! current_user_can( 'manage_options' ) ) { 26 return; 27 } 28 24 29 if ( isset( $_POST['wpbackitup_action'] ) ) { 25 30 do_action( 'wpbackitup_' . $_POST['wpbackitup_action'], $_POST ); -
wp-backitup/trunk/lib/includes/class-logger.php
r3051908 r3443538 49 49 * @param $function Name of calling function(__METHOD__) 50 50 * @param $message Log Message (Array or object) 51 * @param null $additional_message (string )51 * @param null $additional_message (string or array - arrays will be JSON encoded) 52 52 */ 53 53 public static function log_info($log_name, $function, $message, $additional_message = null ) { … … 56 56 if(self::is_logging() === true) { 57 57 $logger = self::getLogger($log_name); 58 // Convert arrays to JSON string to prevent KLogger str_replace error 59 if (is_array($additional_message)) { 60 $additional_message = json_encode($additional_message); 61 } 58 62 $logger->log_info($function, $message, $additional_message); 59 63 } … … 70 74 * @param string $function Name of calling function(__METHOD__) 71 75 * @param string $message Log Message (Array or object) 72 * @param string $additional_message (string )76 * @param string $additional_message (string or array - arrays will be JSON encoded) 73 77 */ 74 78 public static function log_error($log_name, $function,$message,$additional_message=null) { … … 77 81 if(self::is_logging() === true) { 78 82 $logger = self::getLogger($log_name); 83 // Convert arrays to JSON string to prevent KLogger str_replace error 84 if (is_array($additional_message)) { 85 $additional_message = json_encode($additional_message); 86 } 79 87 $logger->log_error($function, $message, $additional_message); 80 88 } … … 90 98 * @param $function Name of calling function(__METHOD__) 91 99 * @param $message Log Message (Array or object) 92 * @param null $additional_message (string )100 * @param null $additional_message (string or array - arrays will be JSON encoded) 93 101 */ 94 102 public static function log_warning($log_name, $function,$message,$additional_message=null) { … … 97 105 if(self::is_logging() === true) { 98 106 $logger = self::getLogger($log_name); 107 // Convert arrays to JSON string to prevent KLogger str_replace error 108 if (is_array($additional_message)) { 109 $additional_message = json_encode($additional_message); 110 } 99 111 $logger->log_warning($function, $message, $additional_message); 100 112 } -
wp-backitup/trunk/lib/includes/class-wpbackitup-admin.php
r3345748 r3443538 76 76 'restore_count'=>0, 77 77 'successful_restore_count'=>0, 78 'event_logging_enabled'=>1, 78 79 ); 79 80 … … 152 153 //Load all the resources 153 154 add_action( 'admin_enqueue_scripts', array( &$this, 'load_resources' ) ); 155 156 // Add build info to admin footer 157 add_action( 'admin_footer', array( &$this, 'admin_footer_build_info' ) ); 154 158 155 159 // delete transient … … 385 389 } 386 390 391 } 392 393 /** 394 * Display build metadata in admin footer 395 * Only shows on WPBackItUp admin pages for administrators 396 * 397 * @since 2.1.0 398 */ 399 public function admin_footer_build_info() { 400 // Only show on WPBackItUp admin pages 401 if( empty($_REQUEST['page']) || substr($_REQUEST['page'], 0, 11) !== 'wp-backitup') { 402 return; 403 } 404 405 // Only show to administrators 406 if( !current_user_can( 'manage_options' ) ) { 407 return; 408 } 409 410 // Get build metadata with fallback 411 $timestamp = defined('WPBACKITUP__BUILD_TIMESTAMP') ? WPBACKITUP__BUILD_TIMESTAMP : 'not set'; 412 $commit = defined('WPBACKITUP__BUILD_COMMIT') ? WPBACKITUP__BUILD_COMMIT : 'not set'; 413 414 // Don't display if placeholders haven't been replaced 415 if ($timestamp === '%%BUILD_TIMESTAMP%%' || $commit === '%%BUILD_COMMIT%%') { 416 return; 417 } 418 419 // Get the version number 420 $version = rtrim($this->version, '.0'); 421 422 // Build the footer HTML 423 $build_info = '<div style="margin-top: 20px; padding: 10px; background: #f9f9f9; border-top: 1px solid #ddd; color: #666; font-size: 12px; text-align: center;">'; 424 $build_info .= sprintf( 425 __('WPBackItUp Version %s (Build: %s | %s)', 'wp-backitup'), 426 esc_html($version), 427 esc_html($timestamp), 428 esc_html($commit) 429 ); 430 $build_info .= '</div>'; 431 432 /** 433 * Filter the admin footer build info HTML 434 * Allows Premium Edition (or other extensions) to append their build info 435 * 436 * @since 2.1.0 437 * 438 * @param string $build_info The build info HTML 439 * @param string $version The Community Edition version 440 * @param string $timestamp The Community Edition build timestamp 441 * @param string $commit The Community Edition git commit hash 442 */ 443 $build_info = apply_filters('wpbackitup_admin_footer_build_info', $build_info, $version, $timestamp, $commit); 444 445 echo $build_info; 387 446 } 388 447 … … 1424 1483 'remove_supporting_zip_files'=> $this->get_option('remove_supporting_zip_files'), 1425 1484 'allow_usage_tracking'=> $tracking_allowed, 1485 'event_logging_enabled'=> $this->get_option('event_logging_enabled', '1'), 1486 'event_stats'=> $this->get_option('event_logging_enabled', '1') === '1' 1487 ? WPBackItUp_Event_Database::get_event_stats() 1488 : array('total_events' => 0, 'updates_applied' => 0, 'content_changes' => 0, 'security_events' => 0, 'settings_changes' => 0, 'pending_updates' => 0), 1426 1489 ); 1427 1490 … … 1607 1670 $data['beta_updates'] = $data['beta_updates'] === 'true' ? 1: 0; 1608 1671 1672 //** Event Logging ON/OFF (v2.1.0) **// 1673 $data['event_logging_enabled'] = $data['event_logging_enabled'] === 'true' ? 1: 0; 1674 1609 1675 //** Usage Tracking ON/OFF **// 1610 1676 $ut = new WPBackItUp_Usage(); … … 2449 2515 } 2450 2516 2517 // Event System WP-Cron Jobs (v2.1.0) 2518 // NOTE: Timing is approximate - WP-Cron depends on site traffic, not exact scheduling 2519 // "Daily at 2am/3am/4am" is aspirational based on typical site patterns 2520 2521 // Hourly: Aggregate content changes (post/page edits) 2522 if (!wp_next_scheduled('wpbackitup_aggregate_content_changes')) { 2523 wp_schedule_event(time(), 'hourly', 'wpbackitup_aggregate_content_changes'); 2524 } 2525 2526 // Daily: Check for available plugin/theme/core updates 2527 if (!wp_next_scheduled('wpbackitup_check_updates')) { 2528 wp_schedule_event(time(), 'daily', 'wpbackitup_check_updates'); 2529 } 2530 2531 // Daily: Clean up events older than 7 days 2532 if (!wp_next_scheduled('wpbackitup_cleanup_old_events')) { 2533 wp_schedule_event(time(), 'daily', 'wpbackitup_cleanup_old_events'); 2534 } 2535 2536 // Daily: Aggregate security events (failed logins) 2537 if (!wp_next_scheduled('wpbackitup_aggregate_security')) { 2538 wp_schedule_event(time(), 'daily', 'wpbackitup_aggregate_security'); 2539 } 2540 2451 2541 } catch (Exception $e) { 2452 2542 exit( 'WPBackItUp encountered an error during activation.<br/>' . esc_html( $e->getMessage() ) ); … … 2516 2606 2517 2607 wp_clear_scheduled_hook( 'wpbackitup_queue_scheduled_jobs'); 2608 2609 // Event System WP-Cron cleanup (v2.1.0) 2610 // Remove all scheduled event system jobs to prevent orphaned cron tasks 2611 wp_clear_scheduled_hook('wpbackitup_aggregate_content_changes'); 2612 wp_clear_scheduled_hook('wpbackitup_check_updates'); 2613 wp_clear_scheduled_hook('wpbackitup_cleanup_old_events'); 2614 wp_clear_scheduled_hook('wpbackitup_aggregate_security'); 2518 2615 } 2519 2616 -
wp-backitup/trunk/lib/includes/update_database.php
r3345748 r3443538 225 225 } 226 226 227 /** 228 * DB version 4 to 5 update 229 * - Introduce EVENTS table for event logging system (v2.1.0) 230 * 231 */ 232 function wpbackitup_update_database_routine_5($log_name) { 233 WPBackItUp_Logger::log_info($log_name, __METHOD__, 'Begin upgrade database to V5'); 234 235 require_once( WPBACKITUP__PLUGIN_PATH . '/lib/includes/class-event-database.php' ); 236 237 // Create the events table 238 $result = WPBackItUp_Event_Database::create_events_table(); 239 240 if ($result) { 241 WPBackItUp_Logger::log_info($log_name, __METHOD__, 'Events table created successfully'); 242 243 // Verify table exists 244 if (WPBackItUp_Event_Database::table_exists()) { 245 WPBackItUp_Logger::log_info($log_name, __METHOD__, 'Events table verified - table exists'); 246 247 // Get table info for logging 248 $table_info = WPBackItUp_Event_Database::get_table_info(); 249 WPBackItUp_Logger::log_info($log_name, __METHOD__, 'Events table info', var_export($table_info, true)); 250 } else { 251 WPBackItUp_Logger::log_error($log_name, __METHOD__, 'Events table verification failed - table does not exist'); 252 } 253 } else { 254 WPBackItUp_Logger::log_error($log_name, __METHOD__, 'Failed to create events table'); 255 } 256 257 // Seed event logging enabled flag if not already set (default enabled) 258 // Note: Critical plugins/options lists are now hardcoded with filter hooks (not stored in wp_options) 259 $event_logging_option = WPBACKITUP__NAMESPACE . '_event_logging_enabled'; 260 if (false === get_option($event_logging_option)) { 261 add_option($event_logging_option, true); 262 WPBackItUp_Logger::log_info($log_name, __METHOD__, 'Seeded event logging enabled flag (default: true)'); 263 } 264 265 WPBackItUp_Logger::log_info($log_name, __METHOD__, 'END upgrade database to V5'); 266 } 267 227 268 228 269 /** -
wp-backitup/trunk/readme.txt
r3345755 r3443538 4 4 Requires at least: 3.8.0 5 5 Requires PHP: 5.2.4 6 Tested up to: 6. 86 Tested up to: 6.9 7 7 Stable tag: 2.0.0 8 8 Author URI: https://www.wpbackitup.com … … 218 218 219 219 == Changelog == 220 = 2.10 = 221 *Release Date - January 20, 2026 222 223 * SECURITY: Fixed broken access control vulnerability in admin action dispatcher - Added authentication and authorization checks to prevent unauthenticated users from triggering admin actions 224 * FEATURE : Event Logging System - Tracks plugin updates, theme updates, WordPress core updates, content changes, security events, and settings changes 225 * FEATURE : New "Event Logging" settings tab with enable/disable toggle 226 * FEATURE : Event Statistics Dashboard - View event counts by type (updates applied, content changes, security events, settings changes, pending updates) 227 * FEATURE : Critical plugin detection - High priority alerts when security plugins (Wordfence, Sucuri, etc.) are updated 228 * FEATURE : Critical settings monitoring - Alerts when important WordPress options are changed 229 * FEATURE : Build Versioning System - Each build now displays version info with timestamp and git commit hash in admin footer, helping developers identify exactly which code is deployed 230 * UPDATE : Database schema updated to support event tracking (v5) 231 * UPDATE : New WP-Cron jobs for event aggregation and cleanup 232 * UPDATE : Events automatically cleaned up after 7 days for optimal performance 233 * UPDATE : Deduplication prevents redundant event logging 234 * UPDATE : Stats display optimized - queries skipped when event logging is disabled 235 * UPDATE : Added filter hook for Premium Edition integration in build versioning system 236 * FIX : Fixed logger error when passing arrays to logging methods - arrays now automatically converted to JSON 237 * FIX : Fixed Event Statistics display - Settings Changes now included so totals match sum of categories 238 220 239 = 2.00 = 221 240 *Release Date - August 16, 2025 -
wp-backitup/trunk/uninstall.php
r3345748 r3443538 72 72 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange -- Plugin manages cleanup of its own database tables during uninstall 73 73 $wpdb->query( "DROP TABLE IF EXISTS " . $wpdb->prefix . "wpbackitup_job_items" ); 74 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery -- Plugin uninstall requires direct database access to clean up plugin tables 75 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching -- Uninstall operations must execute immediately without caching 76 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.SchemaChange -- Plugin manages cleanup of its own database tables during uninstall 77 $wpdb->query( "DROP TABLE IF EXISTS " . $wpdb->prefix . "wpbackitup_events" ); 74 78 75 79 error_log('wp-backitup uninstall end'); -
wp-backitup/trunk/views/settings.php
r3345748 r3443538 292 292 293 293 </v-tab> 294 295 <v-tab title="<?php esc_attr_e( 'Event Logging', 'wp-backitup' ); ?>" icon="dashicons-chart-bar"> 296 297 <div class="widget"> 298 <h3 class="promo"> 299 <span class="dashicons dashicons-chart-bar"></span> 300 <?php esc_html_e('Backup Recommendations', 'wp-backitup') ?> 301 </h3> 302 <p><b><?php esc_html_e('Enable smart backup recommendations based on site activity.', 'wp-backitup') ?></b></p> 303 <p><?php esc_html_e('When enabled, WPBackItUp monitors your site for important changes (plugin updates, content changes, security events) and recommends when you should create a backup.', 'wp-backitup'); ?></p> 304 <p> 305 <input type="checkbox" v-model="event_logging_enabled" :true-value="true" :false-value="false"> 306 <label><?php esc_html_e('Enable Event Logging and Backup Recommendations', 'wp-backitup') ?></label> 307 </p> 308 <div class="submit"> 309 <button class="button-primary" v-on:click="setSettings()"><?php esc_html_e("Save", 'wp-backitup') ?></button> 310 </div> 311 </div> 312 313 <div class="widget" v-if="event_logging_enabled"> 314 <h3 class="promo"> 315 <span class="dashicons dashicons-info"></span> 316 <?php esc_html_e('Event Statistics', 'wp-backitup') ?> 317 </h3> 318 <p><b><?php esc_html_e('Events captured in the last 7 days:', 'wp-backitup') ?></b></p> 319 <table class="widefat" style="max-width: 400px;"> 320 <tr> 321 <td><?php esc_html_e('Total Events', 'wp-backitup') ?></td> 322 <td><strong>{{ event_stats.total_events }}</strong></td> 323 </tr> 324 <tr> 325 <td><?php esc_html_e('Updates Applied', 'wp-backitup') ?></td> 326 <td><strong>{{ event_stats.updates_applied }}</strong></td> 327 </tr> 328 <tr> 329 <td><?php esc_html_e('Content Changes', 'wp-backitup') ?></td> 330 <td><strong>{{ event_stats.content_changes }}</strong></td> 331 </tr> 332 <tr> 333 <td><?php esc_html_e('Security Events', 'wp-backitup') ?></td> 334 <td><strong>{{ event_stats.security_events }}</strong></td> 335 </tr> 336 <tr> 337 <td><?php esc_html_e('Settings Changes', 'wp-backitup') ?></td> 338 <td><strong>{{ event_stats.settings_changes }}</strong></td> 339 </tr> 340 <tr> 341 <td><?php esc_html_e('Pending Updates', 'wp-backitup') ?></td> 342 <td><strong>{{ event_stats.pending_updates }}</strong></td> 343 </tr> 344 </table> 345 <p class="description"><?php esc_html_e('Events older than 7 days are automatically deleted.', 'wp-backitup') ?></p> 346 </div> 347 348 </v-tab> 294 349 </vue-tabs> 295 350 </div> -
wp-backitup/trunk/wp-backitup.php
r3345748 r3443538 7 7 * Author: WPBackItUp 8 8 * Author URI: https://www.wpbackitup.com 9 * Version: 2. 0.09 * Version: 2.1.0 10 10 * Text Domain: wp-backitup 11 11 * … … 33 33 34 34 define( 'WPBACKITUP__MAJOR_VERSION', 2); 35 define( 'WPBACKITUP__MINOR_VERSION', 0);35 define( 'WPBACKITUP__MINOR_VERSION', 1); 36 36 define( 'WPBACKITUP__MAINTENANCE_VERSION', 0); //Dont forget to update version in header on WP release 37 37 define( 'WPBACKITUP__BUILD_VERSION', 0); //Used for hotfix releases 38 38 39 39 define( 'WPBACKITUP__VERSION',sprintf("%d.%d.%d.%d", WPBACKITUP__MAJOR_VERSION, WPBACKITUP__MINOR_VERSION,WPBACKITUP__MAINTENANCE_VERSION,WPBACKITUP__BUILD_VERSION)); 40 define( 'WPBACKITUP__DB_VERSION', 4); //DATABASE VERSION 40 define( 'WPBACKITUP__DB_VERSION', 5); //DATABASE VERSION - v5 adds events table for event logging system 41 42 // Build metadata - automatically updated by Gulp build process 43 define( 'WPBACKITUP__BUILD_TIMESTAMP', '2026-01-20 14:43' ); 44 define( 'WPBACKITUP__BUILD_COMMIT', '3e7cb81' ); 41 45 42 46 define( 'WPBACKITUP__DEBUG', false );//verbose logging + unminified script … … 286 290 $WPBackitup->initialize(); 287 291 288 292 // Initialize Event Database (v2.1.0) 293 // Required for WP-Cron cleanup job (wpbackitup_cleanup_old_events) 294 require_once( WPBACKITUP__PLUGIN_PATH .'/lib/includes/class-event-database.php' ); 295 296 // Initialize Event Logger (v2.1.0) 297 require_once( WPBACKITUP__PLUGIN_PATH .'/lib/includes/class-event-logger.php' ); 298 $WPBackitup_Event_Logger = WPBackItUp_Event_Logger::get_instance(); 299 300 // Initialize Recommendation Engine (v2.1.0) 301 // TODO (Phase 7): Move to lazy loading - only require when displaying admin notices 302 require_once( WPBACKITUP__PLUGIN_PATH .'/lib/includes/class-recommendation-engine.php' ); 303 304 // Initialize Event Batcher (v2.1.0) 305 // NOTE: Premium-only feature - provides event data for AI analysis via AWS Bedrock 306 require_once( WPBACKITUP__PLUGIN_PATH .'/lib/includes/class-event-batcher.php' ); 307 308
Note: See TracChangeset
for help on using the changeset viewer.