PluginProbe ʕ •ᴥ•ʔ
UpdraftPlus: WP Backup & Migration Plugin / 1.23.5
UpdraftPlus: WP Backup & Migration Plugin v1.23.5
1.26.4 1.26.3 1.9.19 1.9.25 1.9.26 1.9.30 1.9.31 1.9.32 1.9.4 1.9.40 1.9.41 1.9.42 1.9.43 1.9.44 1.9.45 1.9.46 1.9.5 1.9.50 1.9.51 1.9.60 1.9.62 1.9.63 1.9.64 1.11.12 1.4.8 1.11.15 1.4.9 1.11.17 1.5.16 1.11.18 1.5.20 1.11.2 1.5.21 1.11.20 1.5.22 1.11.23 1.5.5 1.11.24 1.5.6 1.11.25 1.5.7 1.11.26 1.5.8 1.11.27 1.5.9 1.11.28 1.6.1 1.11.3 1.6.17 1.11.4 1.6.2 1.11.5 1.6.46 1.11.8 1.7.0 1.11.9 1.7.1 1.12.0 1.7.18 1.12.1 1.7.20 1.12.12 1.7.3 1.12.13 1.7.34 1.12.15 1.7.35 1.12.17 1.7.39 1.12.2 1.7.40 1.12.20 1.7.41 1.12.23 1.8.1 1.12.24 1.8.11 1.12.25 1.8.12 1.12.28 1.8.13 1.12.29 1.8.2 1.12.30 1.8.5 1.12.32 1.8.8 1.12.34 1.9.0 1.12.35 1.9.13 1.12.37 1.9.15 1.12.39 1.9.17 1.12.4 1.12.40 1.12.6 1.13.1 1.13.11 1.13.12 1.13.15 1.13.16 1.13.2 1.13.3 1.13.4 1.13.5 1.13.6 1.13.7 1.13.8 1.13.9 1.14.10 1.14.11 1.14.12 1.14.13 1.14.2 1.14.3 1.14.4 1.14.5 1.14.7 1.14.9 1.15.0 1.15.2 1.15.3 1.15.5 1.15.6 1.15.7 1.16.0 1.16.10 1.16.11 1.16.12 1.16.13 1.16.14 1.16.15 1.16.16 1.16.17 1.16.20 1.16.21 1.16.22 1.16.23 1.16.24 1.16.25 1.16.26 1.16.28 1.16.29 1.16.32 1.16.34 1.16.35 1.16.36 1.16.37 1.16.4 1.16.40 1.16.41 1.16.42 1.16.43 1.16.44 1.16.45 1.16.46 1.16.47 1.16.48 1.16.49 1.16.5 1.16.50 1.16.51 1.16.53 1.16.55 1.16.56 1.16.59 1.16.6 1.16.60 1.16.61 1.16.62 1.16.63 1.16.64 1.16.65 1.16.66 1.16.67 1.16.68 1.16.69 1.16.7 1.16.8 1.16.9 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.14 1.2.15 1.2.16 1.2.17 1.2.19 1.2.2 1.2.20 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.33 1.2.35 1.2.36 1.2.38 1.2.39 1.2.4 1.2.40 1.2.41 1.2.42 1.2.43 1.2.44 1.2.45 1.2.46 1.2.5 1.2.7 1.2.8 1.2.9 1.22.1 1.22.10 1.22.11 1.22.12 1.22.14 1.22.15 1.22.16 1.22.17 1.22.18 1.22.19 1.22.20 1.22.21 1.22.22 1.22.23 1.22.24 1.22.3 1.22.4 1.22.5 1.22.6 1.22.7 1.22.8 1.22.9 1.23.1 1.23.10 1.23.11 1.23.12 1.23.13 1.23.15 1.23.16 1.23.2 1.23.3 1.23.4 1.23.5 1.23.6 1.23.7 1.23.8 1.23.9 1.24.1 1.24.10 1.24.11 1.24.12 1.24.2 trunk 1.24.3 0.7.4 1.24.4 0.7.7 1.24.5 0.8.28 1.24.6 0.8.29 1.24.7 0.8.30 1.24.8 0.8.31 1.24.9 0.8.32 1.25.1 0.8.33 1.25.2 0.8.36 1.25.3 0.8.37 1.25.5 0.8.50 1.25.6 0.8.51 1.25.7 0.9.1 1.25.8 0.9.10 1.25.9 0.9.11 1.26.1 0.9.12 1.26.2 0.9.2 1.3.10 0.9.20 1.3.12 0.9.21 1.3.14 0.9.22 1.3.15 1.0.10 1.3.17 1.0.11 1.3.18 1.0.12 1.3.19 1.0.15 1.3.2 1.0.16 1.3.20 1.0.18 1.3.22 1.0.20 1.3.23 1.0.3 1.3.24 1.0.4 1.3.25 1.0.5 1.3.3 1.0.6 1.3.4 1.0.7 1.3.6 1.0.8 1.3.7 1.0.9 1.3.8 1.1.0 1.3.9 1.1.10 1.4.0 1.1.11 1.4.10 1.1.12 1.4.11 1.1.13 1.4.12 1.1.14 1.4.13 1.1.15 1.4.14 1.1.16 1.4.15 1.1.17 1.4.2 1.1.2 1.4.27 1.1.3 1.4.28 1.1.5 1.4.29 1.1.6 1.4.30 1.1.8 1.4.4 1.1.9 1.4.48 1.10.1 1.4.5 1.10.3 1.4.6 1.11.1 1.4.7
updraftplus / options.php
updraftplus Last commit date
central 2 years ago css 2 years ago images 2 years ago includes 2 years ago js 2 years ago languages 2 years ago methods 2 years ago templates 2 years ago vendor 2 years ago admin.php 2 years ago backup.php 3 years ago changelog-old.txt 4 years ago class-updraftplus.php 3 years ago example-decrypt.php 8 years ago index.html 4 years ago options.php 3 years ago readme.txt 2 years ago restorer.php 3 years ago updraftplus.php 2 years ago
options.php
235 lines
1 <?php
2 /**
3 * Options handling
4 */
5 if (!defined('ABSPATH')) die('No direct access allowed');
6
7 class UpdraftPlus_Options {
8
9 /**
10 * Whether or not the current user has permission to manage UpdraftPlus
11 *
12 * @return Boolean
13 */
14 public static function user_can_manage() {
15 $user_can_manage = current_user_can(apply_filters('option_page_capability_updraft-options-group', 'manage_options'));
16 // false: allows the filter to know that the request is not coming from the multisite add-on
17 return apply_filters('updraft_user_can_manage', $user_can_manage, false);
18 }
19
20 public static function options_table() {
21 return 'options';
22 }
23
24 /**
25 * Get the URL to the dashboard admin page
26 *
27 * @return String
28 */
29 public static function admin_page_url() {
30 return admin_url('options-general.php');
31 }
32
33 /**
34 * Get the base-name for the dashboard admin page
35 *
36 * @return String
37 */
38 public static function admin_page() {
39 return 'options-general.php';
40 }
41
42 /**
43 * Extracts the last logged message from updraftplus last process
44 *
45 * @return Mixed - Value set for the option or the default message
46 */
47 public static function get_updraft_lastmessage() {
48 return UpdraftPlus_Options::get_updraft_option('updraft_lastmessage', __('(Nothing has been logged yet)', 'updraftplus'));
49 }
50
51 /**
52 * Get the value for a specified option
53 *
54 * @param String $option option name
55 * @param Mixed $default default value of option
56 *
57 * @return Mixed
58 */
59 public static function get_updraft_option($option, $default = null) {
60 $ret = get_option($option, $default);
61 return apply_filters('updraftplus_get_option', $ret, $option, $default);
62 }
63
64 /**
65 * The apparently unused parameter is used in the alternative class in the Multisite add-on
66 *
67 * @param String $option specify option name
68 * @param String $value specify option value
69 * @param Boolean $use_cache whether or not to use the WP options cache
70 * @param String $autoload whether to autoload (only takes effect on a change of value)
71 *
72 * @return Boolean - as from update_option()
73 */
74 public static function update_updraft_option($option, $value, $use_cache = true, $autoload = 'yes') {
75 return update_option($option, apply_filters('updraftplus_update_option', $value, $option, $use_cache), $autoload);
76 }
77
78 /**
79 * Delete an option
80 *
81 * @param String $option - the option name
82 */
83 public static function delete_updraft_option($option) {
84 delete_option($option);
85 }
86
87 /**
88 * Register the UpdraftPlus admin menu entry
89 */
90 public static function add_admin_pages() {
91 global $updraftplus_admin;
92 add_submenu_page('options-general.php', 'UpdraftPlus', __('UpdraftPlus Backups', 'updraftplus'), apply_filters('option_page_capability_updraft-options-group', 'manage_options'), 'updraftplus', array($updraftplus_admin, 'settings_output'));
93 }
94
95 public static function options_form_begin($settings_fields = 'updraft-options-group', $allow_autocomplete = true, $get_params = array(), $classes = '') {
96 global $pagenow;
97 echo '<form method="post"';
98
99 if ('' != $classes) echo ' class="'.$classes.'"';
100
101 $page = '';
102 if ('options-general.php' == $pagenow) $page = "options.php";
103
104 if (!empty($get_params)) {
105 $page .= '?';
106 $first_one = true;
107 foreach ($get_params as $k => $v) {
108 if ($first_one) {
109 $first_one = false;
110 } else {
111 $page .= '&';
112 }
113 $page .= urlencode($k).'='.urlencode($v);
114 }
115 }
116
117 if ($page) echo ' action="'.$page.'"';
118
119 if (!$allow_autocomplete) echo ' autocomplete="off"';
120 echo '>';
121 if ($settings_fields) {
122 // This is settings_fields('updraft-options-group'), but with the referer pruned
123 echo "<input type='hidden' name='option_page' value='" . esc_attr('updraft-options-group') . "' />";
124 echo '<input type="hidden" name="action" value="update" />';
125 wp_nonce_field("updraft-options-group-options", '_wpnonce', false);
126
127 $remove_query_args = array('state', 'action', 'oauth_verifier');
128
129 $referer = UpdraftPlus_Manipulation_Functions::wp_unslash(remove_query_arg($remove_query_args, $_SERVER['REQUEST_URI']));
130
131 // Add back the page parameter if it looks like we were on the settings page via an OAuth callback that has now had all parameters removed. This is likely unnecessarily conservative, but there's nothing requiring more than this at the current time.
132 if (substr($referer, -19, 19) == 'options-general.php' && false !== strpos($_SERVER['REQUEST_URI'], '?')) $referer .= '?page=updraftplus';
133
134 $referer_field = '<input type="hidden" name="_wp_http_referer" value="'. esc_attr($referer) . '" />';
135 echo $referer_field;
136 }
137 }
138
139 /**
140 * Runs upon the WordPress action admin_init
141 */
142 public static function admin_init() {
143
144 static $already_inited = false;
145 if ($already_inited) return;
146
147 $already_inited = true;
148
149 // If being called outside of the admin context, this may not be loaded yet
150 if (!function_exists('register_setting')) include_once(ABSPATH.'wp-admin/includes/plugin.php');
151
152 global $updraftplus, $updraftplus_admin;
153 register_setting('updraft-options-group', 'updraft_interval', array($updraftplus, 'schedule_backup'));
154 register_setting('updraft-options-group', 'updraft_interval_database', array($updraftplus, 'schedule_backup_database'));
155 register_setting('updraft-options-group', 'updraft_interval_increments', array($updraftplus, 'schedule_backup_increments'));
156 register_setting('updraft-options-group', 'updraft_retain', array('UpdraftPlus_Manipulation_Functions', 'retain_range'));
157 register_setting('updraft-options-group', 'updraft_retain_db', array('UpdraftPlus_Manipulation_Functions', 'retain_range'));
158 register_setting('updraft-options-group', 'updraft_retain_extrarules');
159
160 register_setting('updraft-options-group', 'updraft_encryptionphrase');
161 register_setting('updraft-options-group', 'updraft_service', array($updraftplus, 'just_one'));
162
163 $services_to_register = array_keys($updraftplus->backup_methods);
164 foreach ($services_to_register as $service) {
165 register_setting('updraft-options-group', 'updraft_'.$service);
166 // We have to add the filter manually in order to get the second parameter passed through (register_setting() only registers with one parameter)
167 add_filter('sanitize_option_updraft_'.$service, array($updraftplus, 'storage_options_filter'), 10, 2);
168 }
169
170 register_setting('updraft-options-group', 'updraft_auto_updates', 'absint');
171 register_setting('updraft-options-group', 'updraft_ssl_nossl', 'absint');
172 register_setting('updraft-options-group', 'updraft_log_syslog', 'absint');
173 register_setting('updraft-options-group', 'updraft_ssl_useservercerts', 'absint');
174 register_setting('updraft-options-group', 'updraft_ssl_disableverify', 'absint');
175
176 register_setting('updraft-options-group', 'updraft_split_every', array($updraftplus_admin, 'optionfilter_split_every'));
177
178 register_setting('updraft-options-group', 'updraft_dir', array('UpdraftPlus_Manipulation_Functions', 'prune_updraft_dir_prefix'));
179
180 register_setting('updraft-options-group', 'updraft_report_warningsonly', array($updraftplus_admin, 'return_array'));
181 register_setting('updraft-options-group', 'updraft_report_wholebackup', array($updraftplus_admin, 'return_array'));
182 register_setting('updraft-options-group', 'updraft_report_dbbackup', array($updraftplus_admin, 'return_array'));
183
184 register_setting('updraft-options-group', 'updraft_autobackup_default', 'absint');
185 register_setting('updraft-options-group', 'updraft_delete_local', 'absint');
186 register_setting('updraft-options-group', 'updraft_debug_mode', 'absint');
187 register_setting('updraft-options-group', 'updraft_extradbs');
188 register_setting('updraft-options-group', 'updraft_backupdb_nonwp', 'absint');
189
190 register_setting('updraft-options-group', 'updraft_include_plugins', 'absint');
191 register_setting('updraft-options-group', 'updraft_include_themes', 'absint');
192 register_setting('updraft-options-group', 'updraft_include_uploads', 'absint');
193 register_setting('updraft-options-group', 'updraft_include_others', 'absint');
194 register_setting('updraft-options-group', 'updraft_include_wpcore', 'absint');
195 register_setting('updraft-options-group', 'updraft_include_wpcore_exclude', array('UpdraftPlus_Manipulation_Functions', 'strip_dirslash'));
196 register_setting('updraft-options-group', 'updraft_include_more', 'absint');
197 register_setting('updraft-options-group', 'updraft_include_more_path', array('UpdraftPlus_Manipulation_Functions', 'remove_empties'));
198 register_setting('updraft-options-group', 'updraft_include_uploads_exclude', array('UpdraftPlus_Manipulation_Functions', 'strip_dirslash'));
199 register_setting('updraft-options-group', 'updraft_include_others_exclude', array('UpdraftPlus_Manipulation_Functions', 'strip_dirslash'));
200
201 register_setting('updraft-options-group', 'updraft_starttime_files', array('UpdraftPlus_Options', 'hourminute'));
202 register_setting('updraft-options-group', 'updraft_starttime_db', array('UpdraftPlus_Options', 'hourminute'));
203
204 register_setting('updraft-options-group', 'updraft_startday_files', array('UpdraftPlus_Options', 'week_or_month_day'));
205 register_setting('updraft-options-group', 'updraft_startday_db', array('UpdraftPlus_Options', 'week_or_month_day'));
206
207 global $pagenow;
208 if (is_multisite() && 'options-general.php' == $pagenow && isset($_REQUEST['page']) && 'updraftplus' == substr($_REQUEST['page'], 0, 11)) {
209 add_action('all_admin_notices', array('UpdraftPlus_Options', 'show_admin_warning_multisite'));
210 }
211 }
212
213 public static function hourminute($pot) {
214 if (preg_match("/^([0-2]?[0-9]):([0-5][0-9])$/", $pot, $matches)) return sprintf("%02d:%s", $matches[1], $matches[2]);
215 if ('' == $pot) return date('H:i', time()+300);
216 return '00:00';
217 }
218
219 public static function week_or_month_day($pot) {
220 $pot = absint($pot);
221 return ($pot>28) ? 1 : $pot;
222 }
223
224 /**
225 * Output information about the multisite add-on when relevant
226 */
227 public static function show_admin_warning_multisite() {
228 global $updraftplus_admin;
229 $updraftplus_admin->show_admin_warning('<strong>'.__('UpdraftPlus warning:', 'updraftplus').'</strong> '.__('This is a WordPress multi-site (a.k.a. network) installation.', 'updraftplus').' <a href="https://updraftplus.com/shop/" target="_blank">'.__('WordPress Multisite is supported, with extra features, by UpdraftPlus Premium.', 'updraftplus').'</a> '.__('Without upgrading, UpdraftPlus allows <strong>every</strong> blog admin who can modify plugin settings to backup (and hence access the data, including passwords, from) and restore (including with customized modifications, e.g. changed passwords) <strong>the entire network</strong>.', 'updraftplus').' '.__('(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility).', 'updraftplus'), 'error');
230 }
231 }
232
233 add_action('admin_init', array('UpdraftPlus_Options', 'admin_init'));
234 add_action('admin_menu', array('UpdraftPlus_Options', 'add_admin_pages'));
235