PluginProbe
WP Database Backup – Unlimited Database & Files Backup by Backup for WP / 7.0
WP Database Backup – Unlimited Database & Files Backup by Backup for WP v7.0
7.13 7.12 trunk 1.1 2.1.1 5.9 6.0 6.1 6.10 6.11 6.12 6.12.1 6.2 6.3 6.4 6.5 6.5.1 6.6 6.7 6.8 6.9 7.0 7.0.1 7.1 7.10 All 34 releases
wp-database-backup / includes / features.php

features.php in WP Database Backup – Unlimited Database & Files Backup by Backup for WP 7.0, at includes/features.php

272 lines 15.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 }