updraftplus
Last commit date
addons
13 years ago
images
11 years ago
includes
11 years ago
languages
11 years ago
methods
11 years ago
oc
11 years ago
admin.php
11 years ago
backup.php
11 years ago
class-updraftplus.php
11 years ago
class-zip.php
11 years ago
example-decrypt.php
11 years ago
index.html
12 years ago
options.php
11 years ago
readme.txt
11 years ago
restorer.php
11 years ago
updraftplus.php
11 years ago
options.php
168 lines
| 1 | <?php |
| 2 | |
| 3 | // Options handling |
| 4 | if (!defined('ABSPATH')) die ('No direct access allowed'); |
| 5 | |
| 6 | class UpdraftPlus_Options { |
| 7 | |
| 8 | public static function user_can_manage() { |
| 9 | return current_user_can(apply_filters('option_page_capability_updraft-options-group', 'manage_options')); |
| 10 | } |
| 11 | |
| 12 | public static function admin_page_url() { |
| 13 | return admin_url('options-general.php'); |
| 14 | } |
| 15 | |
| 16 | public static function admin_page() { |
| 17 | return 'options-general.php'; |
| 18 | } |
| 19 | |
| 20 | public static function get_updraft_option($option, $default = null) { |
| 21 | return get_option($option, $default); |
| 22 | } |
| 23 | |
| 24 | public static function update_updraft_option($option, $value, $use_cache = true) { |
| 25 | update_option($option, $value); |
| 26 | } |
| 27 | |
| 28 | public static function delete_updraft_option($option) { |
| 29 | delete_option($option); |
| 30 | } |
| 31 | |
| 32 | public static function add_admin_pages() { |
| 33 | global $updraftplus_admin; |
| 34 | 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")); |
| 35 | } |
| 36 | |
| 37 | public static function options_form_begin($settings_fields = 'updraft-options-group', $allow_autocomplete = true, $get_params = array()) { |
| 38 | global $pagenow; |
| 39 | echo '<form method="post"'; |
| 40 | |
| 41 | $page = ''; |
| 42 | if ('options-general.php' == $pagenow) $page="options.php"; |
| 43 | |
| 44 | if (!empty($get_params)) { |
| 45 | $page .= '?'; |
| 46 | $first_one = true; |
| 47 | foreach ($get_params as $k => $v) { |
| 48 | if ($first_one) { |
| 49 | $first_one = false; |
| 50 | } else { |
| 51 | $page .= '&'; |
| 52 | } |
| 53 | $page .= urlencode($k).'='.urlencode($v); |
| 54 | } |
| 55 | } |
| 56 | |
| 57 | if ($page) echo ' action="'.$page.'"'; |
| 58 | |
| 59 | if (!$allow_autocomplete) echo ' autocomplete="off"'; |
| 60 | echo '>'; |
| 61 | if ($settings_fields) { |
| 62 | // This is settings_fields('updraft-options-group'), but with the referer pruned |
| 63 | echo "<input type='hidden' name='option_page' value='" . esc_attr('updraft-options-group') . "' />"; |
| 64 | echo '<input type="hidden" name="action" value="update" />'; |
| 65 | // $action = -1, $name = "_wpnonce", $referer = true , $echo = true |
| 66 | wp_nonce_field("updraft-options-group-options", '_wpnonce', false); |
| 67 | |
| 68 | // wp_unslash() does not exist until after WP 3.5 |
| 69 | if (function_exists('wp_unslash')) { |
| 70 | $referer = wp_unslash( remove_query_arg( array('state', 'action'), $_SERVER['REQUEST_URI']) ); |
| 71 | } else { |
| 72 | $referer = stripslashes_deep( remove_query_arg( array('state', 'action'), $_SERVER['REQUEST_URI']) ); |
| 73 | } |
| 74 | |
| 75 | $referer_field = '<input type="hidden" name="_wp_http_referer" value="'. esc_attr($referer) . '" />'; |
| 76 | echo $referer_field; |
| 77 | } |
| 78 | } |
| 79 | |
| 80 | public static function admin_init() { |
| 81 | |
| 82 | global $updraftplus, $updraftplus_admin; |
| 83 | register_setting('updraft-options-group', 'updraft_interval', array($updraftplus, 'schedule_backup') ); |
| 84 | register_setting('updraft-options-group', 'updraft_interval_database', array($updraftplus, 'schedule_backup_database') ); |
| 85 | register_setting('updraft-options-group', 'updraft_interval_increments'); |
| 86 | register_setting('updraft-options-group', 'updraft_retain', array($updraftplus, 'retain_range') ); |
| 87 | register_setting('updraft-options-group', 'updraft_retain_db', array($updraftplus, 'retain_range') ); |
| 88 | register_setting('updraft-options-group', 'updraft_encryptionphrase'); |
| 89 | register_setting('updraft-options-group', 'updraft_service', array($updraftplus, 'just_one')); |
| 90 | |
| 91 | register_setting('updraft-options-group', 'updraft_s3', array($updraftplus, 's3_sanitise')); |
| 92 | register_setting('updraft-options-group', 'updraft_ftp', array($updraftplus, 'ftp_sanitise')); |
| 93 | register_setting('updraft-options-group', 'updraft_dreamobjects'); |
| 94 | register_setting('updraft-options-group', 'updraft_s3generic'); |
| 95 | register_setting('updraft-options-group', 'updraft_cloudfiles'); |
| 96 | register_setting('updraft-options-group', 'updraft_bitcasa', array($updraftplus, 'bitcasa_checkchange')); |
| 97 | register_setting('updraft-options-group', 'updraft_copycom', array($updraftplus, 'copycom_checkchange')); |
| 98 | register_setting('updraft-options-group', 'updraft_openstack'); |
| 99 | register_setting('updraft-options-group', 'updraft_dropbox', array($updraftplus, 'dropbox_checkchange')); |
| 100 | register_setting('updraft-options-group', 'updraft_googledrive', array($updraftplus, 'googledrive_checkchange')); |
| 101 | register_setting('updraft-options-group', 'updraft_onedrive', array($updraftplus, 'onedrive_checkchange')); |
| 102 | |
| 103 | register_setting('updraft-options-group', 'updraft_sftp_settings'); |
| 104 | register_setting('updraft-options-group', 'updraft_webdav_settings', array($updraftplus, 'replace_http_with_webdav')); |
| 105 | |
| 106 | register_setting('updraft-options-group', 'updraft_ssl_nossl', 'absint'); |
| 107 | register_setting('updraft-options-group', 'updraft_log_syslog', 'absint'); |
| 108 | register_setting('updraft-options-group', 'updraft_ssl_useservercerts', 'absint'); |
| 109 | register_setting('updraft-options-group', 'updraft_ssl_disableverify', 'absint'); |
| 110 | |
| 111 | register_setting('updraft-options-group', 'updraft_split_every', array($updraftplus_admin, 'optionfilter_split_every') ); |
| 112 | |
| 113 | register_setting('updraft-options-group', 'updraft_dir', array($updraftplus_admin, 'prune_updraft_dir_prefix') ); |
| 114 | register_setting('updraft-options-group', 'updraft_email', array($updraftplus, 'just_one_email')); |
| 115 | |
| 116 | register_setting('updraft-options-group', 'updraft_report_warningsonly', array($updraftplus_admin, 'return_array')); |
| 117 | register_setting('updraft-options-group', 'updraft_report_wholebackup', array($updraftplus_admin, 'return_array')); |
| 118 | |
| 119 | register_setting('updraft-options-group', 'updraft_autobackup_default', 'absint' ); |
| 120 | register_setting('updraft-options-group', 'updraft_delete_local', 'absint' ); |
| 121 | register_setting('updraft-options-group', 'updraft_debug_mode', 'absint' ); |
| 122 | register_setting('updraft-options-group', 'updraft_extradbs'); |
| 123 | register_setting('updraft-options-group', 'updraft_backupdb_nonwp', 'absint'); |
| 124 | |
| 125 | register_setting('updraft-options-group', 'updraft_include_plugins', 'absint' ); |
| 126 | register_setting('updraft-options-group', 'updraft_include_themes', 'absint' ); |
| 127 | register_setting('updraft-options-group', 'updraft_include_uploads', 'absint' ); |
| 128 | register_setting('updraft-options-group', 'updraft_include_others', 'absint' ); |
| 129 | register_setting('updraft-options-group', 'updraft_include_wpcore', 'absint' ); |
| 130 | register_setting('updraft-options-group', 'updraft_include_wpcore_exclude', array($updraftplus, 'strip_dirslash')); |
| 131 | register_setting('updraft-options-group', 'updraft_include_more', 'absint' ); |
| 132 | register_setting('updraft-options-group', 'updraft_include_more_path', array($updraftplus, 'remove_empties')); |
| 133 | register_setting('updraft-options-group', 'updraft_include_uploads_exclude', array($updraftplus, 'strip_dirslash')); |
| 134 | register_setting('updraft-options-group', 'updraft_include_others_exclude', array($updraftplus, 'strip_dirslash')); |
| 135 | |
| 136 | register_setting('updraft-options-group', 'updraft_starttime_files', array('UpdraftPlus_Options', 'hourminute') ); |
| 137 | register_setting('updraft-options-group', 'updraft_starttime_db', array('UpdraftPlus_Options', 'hourminute') ); |
| 138 | |
| 139 | register_setting('updraft-options-group', 'updraft_startday_files', array('UpdraftPlus_Options', 'weekday') ); |
| 140 | register_setting('updraft-options-group', 'updraft_startday_db', array('UpdraftPlus_Options', 'weekday') ); |
| 141 | |
| 142 | global $pagenow; |
| 143 | if (is_multisite() && $pagenow == 'options-general.php' && isset($_REQUEST['page']) && 'updraftplus' == substr($_REQUEST['page'], 0, 11)) { |
| 144 | add_action('all_admin_notices', array('UpdraftPlus_Options', 'show_admin_warning_multisite') ); |
| 145 | } |
| 146 | } |
| 147 | |
| 148 | public static function hourminute($pot) { |
| 149 | if (preg_match("/^([0-2]?[0-9]):([0-5][0-9])$/", $pot, $matches)) return sprintf("%02d:%s", $matches[1], $matches[2]); |
| 150 | if ('' == $pot) return date('H:i', time()+300); |
| 151 | return '00:00'; |
| 152 | } |
| 153 | |
| 154 | public static function weekday($pot) { |
| 155 | $pot = absint($pot); |
| 156 | return ($pot>6) ? 0 : $pot; |
| 157 | } |
| 158 | |
| 159 | public static function show_admin_warning_multisite() { |
| 160 | global $updraftplus_admin; |
| 161 | $updraftplus_admin->show_admin_warning('<strong>'.__('UpdraftPlus warning:', 'updraftplus').'</strong> '.__('This is a WordPress multi-site (a.k.a. network) installation.', 'updraftplus').' <a href="http://updraftplus.com">'.__('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 back up (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'); |
| 162 | } |
| 163 | |
| 164 | } |
| 165 | |
| 166 | add_action('admin_init', array('UpdraftPlus_Options', 'admin_init')); |
| 167 | add_action('admin_menu', array('UpdraftPlus_Options', 'add_admin_pages')); |
| 168 |