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