| 1 |
<?php |
| 2 |
|
| 3 |
// Anonimization code |
| 4 |
add_filter( 'wpdbbkp_process_db_fields','bkpforwp_anonimize_database',10,3); |
| 5 |
|
| 6 |
function bkpforwp_anonimize_database($value,$table,$column){ |
| 7 |
$enable_anonymization = get_option('bkpforwp_enable_anonymization',false); |
| 8 |
$anonymization_type = get_option('bkpforwp_anonymization_type',false); |
| 9 |
$enable_backup_encryption = get_option('bkpforwp_enable_backup_encryption',false); |
| 10 |
$anonymization_pass = get_option('bkpforwp_anonymization_pass',''); |
| 11 |
|
| 12 |
|
| 13 |
if(isset($enable_anonymization) && $enable_anonymization==1){ |
| 14 |
global $wpdb; |
| 15 |
$bkpforwp_process_table = array($wpdb->prefix.'options',$wpdb->prefix.'users',$wpdb->prefix.'usermeta',$wpdb->prefix.'wc_customer_lookup',$wpdb->prefix.'edd_customers',$wpdb->prefix.'edd_customermeta'); |
| 16 |
$bkpforwp_process_cols = array('mailserver_pass','mailserver_login','user_email','email','user_url','nickname','name','twitter','facebook','instagram','phone','mobile','address','city','zip','pincode','user_login','postcode','state','user_ip','ip_address'); |
| 17 |
|
| 18 |
//Masking Logic |
| 19 |
if(isset($anonymization_type) && $anonymization_type =='masked_data'){ |
| 20 |
if(in_array($table,$bkpforwp_process_table)){ |
| 21 |
$check_str= implode(',',$bkpforwp_process_cols); |
| 22 |
if(stripos($check_str,$column)!==false){ |
| 23 |
return str_replace($value,str_repeat('*',strlen($value)),$value); |
| 24 |
} |
| 25 |
} |
| 26 |
} |
| 27 |
//FakeData Logic |
| 28 |
|
| 29 |
if(isset($anonymization_type) && $anonymization_type=='fake_data'){ |
| 30 |
if(function_exists('wp_privacy_anonymize_data')){ |
| 31 |
$bkpforwp_process_email = implode(',',array('email','user_email')); |
| 32 |
$bkpforwp_process_url = implode(',',array('url','user_url','twitter','facebook','instagram')); |
| 33 |
$bkpforwp_process_ip = implode(',',array('user_ip','ip_address')); |
| 34 |
$bkpforwp_process_text = implode(',',array('nickname','name','address','phone','mobile','city','zip','pincode','user_login','postcode','state')); |
| 35 |
|
| 36 |
if(in_array($table,$bkpforwp_process_table)){ |
| 37 |
|
| 38 |
//For email |
| 39 |
if(stripos($bkpforwp_process_email,$column)!==false){ |
| 40 |
return str_replace($value,wp_privacy_anonymize_data('email',$value),$value); |
| 41 |
} |
| 42 |
|
| 43 |
if(stripos($bkpforwp_process_url,$column)!==false){ |
| 44 |
return str_replace($value,wp_privacy_anonymize_data('url',$value),$value); |
| 45 |
} |
| 46 |
|
| 47 |
if(stripos($bkpforwp_process_ip,$column)!==false){ |
| 48 |
return str_replace($value,wp_privacy_anonymize_data('ip',$value),$value); |
| 49 |
} |
| 50 |
|
| 51 |
if(stripos($bkpforwp_process_text,$column)!==false){ |
| 52 |
return str_replace($value,wp_privacy_anonymize_data('text',$value),$value); |
| 53 |
} |
| 54 |
|
| 55 |
} |
| 56 |
|
| 57 |
return $value; |
| 58 |
|
| 59 |
} |
| 60 |
else{ |
| 61 |
if(in_array($table,$bkpforwp_process_table)){ |
| 62 |
$check_str= implode(',',$bkpforwp_process_cols); |
| 63 |
if(stripos($check_str,$column)!==false){ |
| 64 |
return str_replace($value,str_repeat('*',strlen($value)),$value); |
| 65 |
} |
| 66 |
} |
| 67 |
} |
| 68 |
|
| 69 |
} |
| 70 |
|
| 71 |
if(isset($anonymization_type) && $anonymization_type=='encrypted_data' && !empty($anonymization_pass)){ |
| 72 |
require_once 'class-symmetric-encryption.php'; |
| 73 |
|
| 74 |
if(in_array($table,$bkpforwp_process_table)){ |
| 75 |
$check_str= implode(',',$bkpforwp_process_cols); |
| 76 |
if(stripos($check_str,$column)!==false){ |
| 77 |
$enc_pass = $anonymization_pass; |
| 78 |
$encryption = new SymmetricEncryption(); |
| 79 |
return str_replace($value,'<==>'.$encryption->encrypt($value,$enc_pass,$enc_pass).'<==>',$value); |
| 80 |
} |
| 81 |
|
| 82 |
} |
| 83 |
|
| 84 |
} |
| 85 |
|
| 86 |
} |
| 87 |
return $value; |
| 88 |
} |
| 89 |
|
| 90 |
add_filter('wpdbbkp_sql_query_restore','bkpforwp_sql_query_restore',1); |
| 91 |
function bkpforwp_sql_query_restore($sql_query){ |
| 92 |
$anonymization_type = get_option('bkpforwp_anonymization_type',false); |
| 93 |
$anonymization_pass = get_option('bkpforwp_anonymization_pass',''); |
| 94 |
if(isset($anonymization_type) && $anonymization_type=='encrypted_data' && !empty($anonymization_pass)){ |
| 95 |
|
| 96 |
$pattern = '/<==>(.*?)<==>/i'; |
| 97 |
return preg_replace_callback($pattern, 'bkpforwp_sql_restore_replace', $sql_query); |
| 98 |
} |
| 99 |
return $sql_query; |
| 100 |
} |
| 101 |
|
| 102 |
function bkpforwp_sql_restore_replace($matches){ |
| 103 |
$anonymization_pass = get_option('bkpforwp_anonymization_pass',''); |
| 104 |
$enc_pass = isset($anonymization_pass)?$anonymization_pass:false; |
| 105 |
if($enc_pass){ |
| 106 |
require_once 'class-symmetric-encryption.php'; |
| 107 |
$encryption = new SymmetricEncryption(); |
| 108 |
return $encryption->decrypt($matches[0], $enc_pass, $enc_pass); |
| 109 |
} |
| 110 |
return $matches[0]; |
| 111 |
} |
| 112 |
|
| 113 |
add_action('wpdbbkp_database_backup_options','bkpforwp_database_backup_options'); |
| 114 |
function bkpforwp_database_backup_options(){ |
| 115 |
$settings = get_option( 'wp_db_backup_options' ); |
| 116 |
$autobackup_days = isset($settings['autobackup_days'])?implode(',',$settings['autobackup_days']):','; |
| 117 |
$autobackup_time = isset($settings['autobackup_time'])?$settings['autobackup_time']:''; |
| 118 |
$autobackup_date = isset($settings['autobackup_date'])?$settings['autobackup_date']:''; |
| 119 |
?> |
| 120 |
|
| 121 |
|
| 122 |
<div class="row form-group autobackup_frequency_pro" style="display:none"><label class="col-sm-12 autobackup_daily_pro" >We will automatically backup at 00:00 AM daily. <b><a href="javascript:modify_backup_frequency();">Change Back Frequency Timings</a></b></label></div> |
| 123 |
<div class="row form-group autobackup_frequency_pro" style="display:none"><label class="col-sm-12 autobackup_weekly_pro" >We will automatically backup every Sunday on weekly basis. <b><a href="javascript:modify_backup_frequency();">Change Back Frequency Timings</a></b></label></div> |
| 124 |
<div class="row form-group autobackup_frequency_pro" style="display:none"><label class="col-sm-12 autobackup_monthly_pro" >We will automatically backup on 1st on Monday on monthly basis. <b><a href="javascript:modify_backup_frequency();">Change Back Frequency Timings</a></b></label></div> |
| 125 |
|
| 126 |
|
| 127 |
<div class="row form-group autobackup_days database_autobackup" style="display:none"> |
| 128 |
<label class="col-sm-3" for="autobackup_days"><?php esc_html_e('Database Backup Days','backupforwp-pro');?></label> |
| 129 |
<div class="col-sm-9"> |
| 130 |
<select id="autobackup_days" class="form-control bkpforwp_multiselect" name="wp_db_backup_options[autobackup_days][]" multiple> |
| 131 |
<option value="Mon" <?php if(strpos($autobackup_days,'Mon')!==false){ echo 'selected';} ?> ><?php esc_html_e('Monday','backupforwp-pro');?></option> |
| 132 |
<option value="Tue" <?php if(strpos($autobackup_days,'Tue')!==false){ echo 'selected';} ?>><?php esc_html_e('Tuesday','backupforwp-pro');?></option> |
| 133 |
<option value="Wed" <?php if(strpos($autobackup_days,'Wed')!==false){ echo 'selected';} ?>><?php esc_html_e('Wednesday','backupforwp-pro');?></option> |
| 134 |
<option value="Thu" <?php if(strpos($autobackup_days,'Thu')!==false){ echo 'selected';} ?>><?php esc_html_e('Thursday','backupforwp-pro');?></option> |
| 135 |
<option value="Fri" <?php if(strpos($autobackup_days,'Fri')!==false){ echo 'selected';} ?>><?php esc_html_e('Friday','backupforwp-pro');?></option> |
| 136 |
<option value="Sat" <?php if(strpos($autobackup_days,'Sat')!==false){ echo 'selected';} ?>><?php esc_html_e('Saturday','backupforwp-pro');?></option> |
| 137 |
<option value="Sun" <?php if(strpos($autobackup_days,'Sun')!==false){ echo 'selected';} ?>><?php esc_html_e('Sunday','backupforwp-pro');?></option> |
| 138 |
</select> |
| 139 |
</div> |
| 140 |
</div> |
| 141 |
<div class="row form-group autobackup_date database_autobackup" style="display:none"> |
| 142 |
<label class="col-sm-3" for="autobackup_date"><?php esc_html_e('Database Backup Date','backupforwp-pro');?></label> |
| 143 |
<div class="col-sm-9"> |
| 144 |
<input type="date" id="autobackup_date" value="<?php echo esc_attr($autobackup_date);?>" class="form-control bkpforwp_multiselect" name="wp_db_backup_options[autobackup_date]"> |
| 145 |
</div> |
| 146 |
</div> |
| 147 |
<div class="row form-group autobackup_time database_autobackup" style="display:none"> |
| 148 |
<label class="col-sm-3" for="autobackup_time"><?php esc_html_e('Database Backup Time','backupforwp-pro');?></label> |
| 149 |
<div class="col-sm-9"> |
| 150 |
<input type="time" id="autobackup_time" value="<?php echo esc_attr($autobackup_time);?>" class="form-control bkpforwp_multiselect" name="wp_db_backup_options[autobackup_time]"> |
| 151 |
</div> |
| 152 |
</div> |
| 153 |
|
| 154 |
<?php |
| 155 |
} |
| 156 |
|
| 157 |
add_action('wpdbbkp_full_backup_options','bkpforwp_full_backup_options'); |
| 158 |
function bkpforwp_full_backup_options(){ |
| 159 |
|
| 160 |
$settings = get_option( 'wp_db_backup_options' ); |
| 161 |
$autobackup_days = isset($settings['autobackup_full_days'])?implode(',',$settings['autobackup_full_days']):','; |
| 162 |
$autobackup_time = isset($settings['autobackup_full_time'])?$settings['autobackup_full_time']:''; |
| 163 |
$autobackup_date = isset($settings['autobackup_full_date'])?$settings['autobackup_full_date']:''; |
| 164 |
$autobackup_date = isset($settings['autobackup_full_date'])?$settings['autobackup_full_date']:''; |
| 165 |
$senable_exact_backup_time = get_option( 'bkpforwp_enable_exact_backup_time',false); |
| 166 |
if($senable_exact_backup_time){ |
| 167 |
?> |
| 168 |
<div class="row form-group autobackup_full_days full_autobackup" style="display:none"> |
| 169 |
<label class="col-sm-3" for="autobackup_full_days"><?php esc_html_e('Full Backup Days','backupforwp-pro');?></label> |
| 170 |
<div class="col-sm-9"> |
| 171 |
<select id="autobackup_full_days" class="form-control bkpforwp_multiselect" name="wp_db_backup_options[autobackup_full_days][]" multiple> |
| 172 |
<option value="Mon" <?php if(strpos($autobackup_days,'Mon')!==false){ echo 'selected';} ?> ><?php esc_html_e('Monday','backupforwp-pro');?></option> |
| 173 |
<option value="Tue" <?php if(strpos($autobackup_days,'Tue')!==false){ echo 'selected';} ?>><?php esc_html_e('Tuesday','backupforwp-pro');?></option> |
| 174 |
<option value="Wed" <?php if(strpos($autobackup_days,'Wed')!==false){ echo 'selected';} ?>><?php esc_html_e('Wednesday','backupforwp-pro');?></option> |
| 175 |
<option value="Thu" <?php if(strpos($autobackup_days,'Thu')!==false){ echo 'selected';} ?>><?php esc_html_e('Thursday','backupforwp-pro');?></option> |
| 176 |
<option value="Fri" <?php if(strpos($autobackup_days,'Fri')!==false){ echo 'selected';} ?>><?php esc_html_e('Friday','backupforwp-pro');?></option> |
| 177 |
<option value="Sat" <?php if(strpos($autobackup_days,'Sat')!==false){ echo 'selected';} ?>><?php esc_html_e('Saturday','backupforwp-pro');?></option> |
| 178 |
<option value="Sun" <?php if(strpos($autobackup_days,'Sun')!==false){ echo 'selected';} ?>><?php esc_html_e('Sunday','backupforwp-pro');?></option> |
| 179 |
</select> |
| 180 |
</div> |
| 181 |
</div> |
| 182 |
<div class="row form-group autobackup_full_date full_autobackup" style="display:none"> |
| 183 |
<label class="col-sm-3" for="autobackup_full_date"><?php esc_html_e('Full Backup Date','backupforwp-pro');?></label> |
| 184 |
<div class="col-sm-9"> |
| 185 |
<input type="date" id="autobackup_full_date" value="<?php echo esc_attr($autobackup_date);?>" class="form-control" name="wp_db_backup_options[autobackup_full_date]"> |
| 186 |
</div> |
| 187 |
</div> |
| 188 |
<div class="row form-group autobackup_full_time full_autobackup" style="display:none"> |
| 189 |
<label class="col-sm-3" for="autobackup_full_time"><?php esc_html_e('Full Backup Time','backupforwp-pro');?></label> |
| 190 |
<div class="col-sm-9"> |
| 191 |
<input type="time" id="autobackup_full_time" value="<?php echo esc_attr($autobackup_time);?>" class="form-control" name="wp_db_backup_options[autobackup_full_time]"> |
| 192 |
</div> |
| 193 |
</div> |
| 194 |
<?php |
| 195 |
} |
| 196 |
} |
| 197 |
|
| 198 |
add_filter( 'wpdbbkp_fullback_cron_condition', 'bkpforwp_fullback_cron_condition'); |
| 199 |
function bkpforwp_fullback_cron_condition($value){ |
| 200 |
$options_settings = get_option('wp_db_backup_options',false); |
| 201 |
|
| 202 |
$senable_exact_backup_time = get_option( 'bkpforwp_enable_exact_backup_time',false); |
| 203 |
if(!$senable_exact_backup_time){ |
| 204 |
return $value; |
| 205 |
} |
| 206 |
if(wp_doing_cron() && $options_settings && isset($options_settings['enable_autobackups']) && $options_settings['enable_autobackups']==1 && isset($options_settings['full_autobackup_frequency'])){ |
| 207 |
if($options_settings['full_autobackup_frequency']=='daily' && isset($options_settings['autobackup_full_time']) && $options_settings['autobackup_full_time']){ |
| 208 |
if($options_settings['autobackup_full_time'] < gmdate("H:i") || $options_settings['autobackup_full_time'] > gmdate("H:i",strtotime('+30 minutes', gmdate("H:i")))){ |
| 209 |
$value= false; |
| 210 |
} |
| 211 |
} |
| 212 |
if($options_settings['full_autobackup_frequency']=='weekly' && isset($options_settings['autobackup_full_time']) && $options_settings['autobackup_full_time'] && isset($options_settings['autobackup_full_days'])){ |
| 213 |
$current_day=gmdate('M'); |
| 214 |
$current_time=gmdate('H:i'); |
| 215 |
$allowed_days= $options_settings['autobackup_full_days']; |
| 216 |
if(!in_array($current_day,$allowed_days) || ($options_settings['autobackup_full_time'] < $current_time) || $options_settings['autobackup_full_time'] > gmdate("H:i",strtotime('+30 minutes', $current_time))){ |
| 217 |
$value= false; |
| 218 |
} |
| 219 |
} |
| 220 |
if($options_settings['full_autobackup_frequency']=='monthly' && isset($options_settings['autobackup_full_time']) && $options_settings['autobackup_full_time'] && isset($options_settings['autobackup_full_date'])){ |
| 221 |
$current_date=gmdate('d'); |
| 222 |
$current_time=gmdate('H:i'); |
| 223 |
$allowed_date=gmdate('d',strtotime($options_settings['autobackup_full_date'])); |
| 224 |
if(($allowed_date!=$current_date) || ($options_settings['autobackup_full_time'] < $current_time || $options_settings['autobackup_full_time'] > gmdate("H:i",strtotime('+30 minutes', $current_time)))){ |
| 225 |
$value= false; |
| 226 |
} |
| 227 |
} |
| 228 |
} |
| 229 |
return $value; |
| 230 |
} |
| 231 |
|
| 232 |
add_filter( 'wpdbbkp_dbback_cron_condition', 'bkpforwp_dbback_cron_condition'); |
| 233 |
function bkpforwp_dbback_cron_condition($value){ |
| 234 |
$options_settings = get_option('wp_db_backup_options',false); |
| 235 |
if(wp_doing_cron() && $options_settings && isset($options_settings['enable_autobackups']) && $options_settings['enable_autobackups']==1 && isset($options_settings['autobackup_frequency'])){ |
| 236 |
if($options_settings['autobackup_frequency']=='daily' && isset($options_settings['autobackup_time'])){ |
| 237 |
if($options_settings['autobackup_time'] < gmdate("H:i") || $options_settings['autobackup_time'] > gmdate("H:i",strtotime('+30 minutes', gmdate("H:i")))){ |
| 238 |
$value= false; |
| 239 |
} |
| 240 |
} |
| 241 |
if($options_settings['autobackup_frequency']=='weekly' && isset($options_settings['autobackup_time']) && isset($options_settings['autobackup_days'])){ |
| 242 |
$current_day=gmdate('M'); |
| 243 |
$current_time=gmdate('H:i'); |
| 244 |
$allowed_days=$options_settings['autobackup_days']; |
| 245 |
if(!in_array($current_day,$allowed_days) || ($options_settings['autobackup_time'] < $current_time || $options_settings['autobackup_time'] > gmdate("H:i",strtotime('+30 minutes', $current_time)))){ |
| 246 |
$value= false; |
| 247 |
} |
| 248 |
} |
| 249 |
if($options_settings['autobackup_frequency']=='monthly' && isset($options_settings['autobackup_time']) && isset($options_settings['autobackup_date'])){ |
| 250 |
$current_date=gmdate('d'); |
| 251 |
$current_time=gmdate('H:i'); |
| 252 |
$allowed_date=gmdate('d',strtotime($options_settings['autobackup_date'])); |
| 253 |
if(($allowed_date!=$current_date) || ($options_settings['autobackup_time'] < $current_time || $options_settings['autobackup_time'] > gmdate("H:i",strtotime('+30 minutes', $current_time)))){ |
| 254 |
$value= false; |
| 255 |
} |
| 256 |
} |
| 257 |
} |
| 258 |
return $value; |
| 259 |
} |
| 260 |
|
| 261 |
add_filter( 'wpdbbkp_dbback_cron_frequency', 'bkpforwp_dbback_cron_frequency'); |
| 262 |
|
| 263 |
function bkpforwp_dbback_cron_frequency($value){ |
| 264 |
if(wp_doing_cron()) |
| 265 |
{ |
| 266 |
$options = get_option( 'wp_db_backup_options' ); |
| 267 |
if(isset($options['autobackup_full_time']) && !empty($options['autobackup_full_time'])){ |
| 268 |
$value = 'thirty_minutes'; |
| 269 |
} |
| 270 |
} |
| 271 |
return $value; |
| 272 |
} |