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