PluginProbe ʕ •ᴥ•ʔ
UpdraftPlus: WP Backup & Migration Plugin / 1.16.22
UpdraftPlus: WP Backup & Migration Plugin v1.16.22
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 6 years ago css 6 years ago images 7 years ago includes 6 years ago js 6 years ago languages 6 years ago methods 6 years ago templates 6 years ago vendor 6 years ago admin.php 6 years ago backup.php 6 years ago changelog.txt 7 years ago class-updraftplus.php 6 years ago example-decrypt.php 8 years ago index.html 6 years ago options.php 7 years ago readme.txt 6 years ago restorer.php 6 years ago updraftplus.php 6 years ago
options.php
214 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 public static function admin_page_url() {
25 return admin_url('options-general.php');
26 }
27
28 public static function admin_page() {
29 return 'options-general.php';
30 }
31
32 /**
33 * Extracts the last logged message from updraftplus last process
34 *
35 * @return Mixed - Value set for the option or the default message
36 */
37 public static function get_updraft_lastmessage() {
38 return UpdraftPlus_Options::get_updraft_option('updraft_lastmessage', __('(Nothing has been logged yet)', 'updraftplus'));
39 }
40
41 public static function get_updraft_option($option, $default = null) {
42 $ret = get_option($option, $default);
43 return apply_filters('updraftplus_get_option', $ret, $option, $default);
44 }
45
46 /**
47 * The apparently unused parameter is used in the alternative class in the Multisite add-on
48 *
49 * @param String $option specify option name
50 * @param String $value specify option value
51 * @param Boolean $use_cache whether or not to use the WP options cache
52 * @param String $autoload whether to autoload (only takes effect on a change of value)
53 *
54 * @return Boolean - as from update_option()
55 */
56 public static function update_updraft_option($option, $value, $use_cache = true, $autoload = 'yes') {
57 return update_option($option, apply_filters('updraftplus_update_option', $value, $option, $use_cache), $autoload);
58 }
59
60 /**
61 * Delete an option
62 *
63 * @param String $option - the option name
64 */
65 public static function delete_updraft_option($option) {
66 delete_option($option);
67 }
68
69 /**
70 * Register the UpdraftPlus admin menu entry
71 */
72 public static function add_admin_pages() {
73 global $updraftplus_admin;
74 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'));
75 }
76
77 public static function options_form_begin($settings_fields = 'updraft-options-group', $allow_autocomplete = true, $get_params = array(), $classes = '') {
78 global $pagenow;
79 echo '<form method="post"';
80
81 if ('' != $classes) echo ' class="'.$classes.'"';
82
83 $page = '';
84 if ('options-general.php' == $pagenow) $page = "options.php";
85
86 if (!empty($get_params)) {
87 $page .= '?';
88 $first_one = true;
89 foreach ($get_params as $k => $v) {
90 if ($first_one) {
91 $first_one = false;
92 } else {
93 $page .= '&';
94 }
95 $page .= urlencode($k).'='.urlencode($v);
96 }
97 }
98
99 if ($page) echo ' action="'.$page.'"';
100
101 if (!$allow_autocomplete) echo ' autocomplete="off"';
102 echo '>';
103 if ($settings_fields) {
104 // This is settings_fields('updraft-options-group'), but with the referer pruned
105 echo "<input type='hidden' name='option_page' value='" . esc_attr('updraft-options-group') . "' />";
106 echo '<input type="hidden" name="action" value="update" />';
107 wp_nonce_field("updraft-options-group-options", '_wpnonce', false);
108
109 $remove_query_args = array('state', 'action', 'oauth_verifier');
110
111 $referer = UpdraftPlus_Manipulation_Functions::wp_unslash(remove_query_arg($remove_query_args, $_SERVER['REQUEST_URI']));
112
113 // 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.
114 if (substr($referer, -19, 19) == 'options-general.php' && false !== strpos($_SERVER['REQUEST_URI'], '?')) $referer .= '?page=updraftplus';
115
116 $referer_field = '<input type="hidden" name="_wp_http_referer" value="'. esc_attr($referer) . '" />';
117 echo $referer_field;
118 }
119 }
120
121 /**
122 * Runs upon the WordPress action admin_init
123 */
124 public static function admin_init() {
125
126 static $already_inited = false;
127 if ($already_inited) return;
128
129 $already_inited = true;
130
131 // If being called outside of the admin context, this may not be loaded yet
132 if (!function_exists('register_setting')) include_once(ABSPATH.'wp-admin/includes/plugin.php');
133
134 global $updraftplus, $updraftplus_admin;
135 register_setting('updraft-options-group', 'updraft_interval', array($updraftplus, 'schedule_backup'));
136 register_setting('updraft-options-group', 'updraft_interval_database', array($updraftplus, 'schedule_backup_database'));
137 register_setting('updraft-options-group', 'updraft_interval_increments', array($updraftplus, 'schedule_backup_increments'));
138 register_setting('updraft-options-group', 'updraft_retain', array('UpdraftPlus_Manipulation_Functions', 'retain_range'));
139 register_setting('updraft-options-group', 'updraft_retain_db', array('UpdraftPlus_Manipulation_Functions', 'retain_range'));
140 register_setting('updraft-options-group', 'updraft_retain_extrarules');
141
142 register_setting('updraft-options-group', 'updraft_encryptionphrase');
143 register_setting('updraft-options-group', 'updraft_service', array($updraftplus, 'just_one'));
144
145 $services_to_register = array_keys($updraftplus->backup_methods);
146 foreach ($services_to_register as $service) {
147 register_setting('updraft-options-group', 'updraft_'.$service);
148 // We have to add the filter manually in order to get the second parameter passed through (register_setting() only registers with one parameter)
149 add_filter('sanitize_option_updraft_'.$service, array($updraftplus, 'storage_options_filter'), 10, 2);
150 }
151
152 register_setting('updraft-options-group', 'updraft_auto_updates', 'absint');
153 register_setting('updraft-options-group', 'updraft_ssl_nossl', 'absint');
154 register_setting('updraft-options-group', 'updraft_log_syslog', 'absint');
155 register_setting('updraft-options-group', 'updraft_ssl_useservercerts', 'absint');
156 register_setting('updraft-options-group', 'updraft_ssl_disableverify', 'absint');
157
158 register_setting('updraft-options-group', 'updraft_split_every', array($updraftplus_admin, 'optionfilter_split_every'));
159
160 register_setting('updraft-options-group', 'updraft_dir', array('UpdraftPlus_Manipulation_Functions', 'prune_updraft_dir_prefix'));
161
162 register_setting('updraft-options-group', 'updraft_report_warningsonly', array($updraftplus_admin, 'return_array'));
163 register_setting('updraft-options-group', 'updraft_report_wholebackup', array($updraftplus_admin, 'return_array'));
164 register_setting('updraft-options-group', 'updraft_report_dbbackup', array($updraftplus_admin, 'return_array'));
165
166 register_setting('updraft-options-group', 'updraft_autobackup_default', 'absint');
167 register_setting('updraft-options-group', 'updraft_delete_local', 'absint');
168 register_setting('updraft-options-group', 'updraft_debug_mode', 'absint');
169 register_setting('updraft-options-group', 'updraft_extradbs');
170 register_setting('updraft-options-group', 'updraft_backupdb_nonwp', 'absint');
171
172 register_setting('updraft-options-group', 'updraft_include_plugins', 'absint');
173 register_setting('updraft-options-group', 'updraft_include_themes', 'absint');
174 register_setting('updraft-options-group', 'updraft_include_uploads', 'absint');
175 register_setting('updraft-options-group', 'updraft_include_others', 'absint');
176 register_setting('updraft-options-group', 'updraft_include_wpcore', 'absint');
177 register_setting('updraft-options-group', 'updraft_include_wpcore_exclude', array('UpdraftPlus_Manipulation_Functions', 'strip_dirslash'));
178 register_setting('updraft-options-group', 'updraft_include_more', 'absint');
179 register_setting('updraft-options-group', 'updraft_include_more_path', array('UpdraftPlus_Manipulation_Functions', 'remove_empties'));
180 register_setting('updraft-options-group', 'updraft_include_uploads_exclude', array('UpdraftPlus_Manipulation_Functions', 'strip_dirslash'));
181 register_setting('updraft-options-group', 'updraft_include_others_exclude', array('UpdraftPlus_Manipulation_Functions', 'strip_dirslash'));
182
183 register_setting('updraft-options-group', 'updraft_starttime_files', array('UpdraftPlus_Options', 'hourminute'));
184 register_setting('updraft-options-group', 'updraft_starttime_db', array('UpdraftPlus_Options', 'hourminute'));
185
186 register_setting('updraft-options-group', 'updraft_startday_files', array('UpdraftPlus_Options', 'week_or_month_day'));
187 register_setting('updraft-options-group', 'updraft_startday_db', array('UpdraftPlus_Options', 'week_or_month_day'));
188
189 global $pagenow;
190 if (is_multisite() && 'options-general.php' == $pagenow && isset($_REQUEST['page']) && 'updraftplus' == substr($_REQUEST['page'], 0, 11)) {
191 add_action('all_admin_notices', array('UpdraftPlus_Options', 'show_admin_warning_multisite'));
192 }
193 }
194
195 public static function hourminute($pot) {
196 if (preg_match("/^([0-2]?[0-9]):([0-5][0-9])$/", $pot, $matches)) return sprintf("%02d:%s", $matches[1], $matches[2]);
197 if ('' == $pot) return date('H:i', time()+300);
198 return '00:00';
199 }
200
201 public static function week_or_month_day($pot) {
202 $pot = absint($pot);
203 return ($pot>28) ? 1 : $pot;
204 }
205
206 public static function show_admin_warning_multisite() {
207 global $updraftplus_admin;
208 $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, or the Multisite add-on.', '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');
209 }
210 }
211
212 add_action('admin_init', array('UpdraftPlus_Options', 'admin_init'));
213 add_action('admin_menu', array('UpdraftPlus_Options', 'add_admin_pages'));
214