PageRenderTime 26ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 1ms

/wp-content/plugins/updraftplus/options.php

https://gitlab.com/meixnertobias/thaimaidaiproductionwp
PHP | 191 lines | 142 code | 41 blank | 8 comment | 25 complexity | 6c12bda9dc1a01d11392b3aa455f252e MD5 | raw file
  1. <?php
  2. // Options handling
  3. if (!defined('ABSPATH')) die ('No direct access allowed');
  4. class UpdraftPlus_Options {
  5. public static function user_can_manage() {
  6. $user_can_manage = current_user_can(apply_filters('option_page_capability_updraft-options-group', 'manage_options'));
  7. // false: allows the filter to know that the request is not coming from the multisite add-on
  8. return apply_filters('updraft_user_can_manage', $user_can_manage, false);
  9. }
  10. public static function options_table() {
  11. return 'options';
  12. }
  13. public static function admin_page_url() {
  14. return admin_url('options-general.php');
  15. }
  16. public static function admin_page() {
  17. return 'options-general.php';
  18. }
  19. public static function get_updraft_option($option, $default = null) {
  20. return get_option($option, $default);
  21. }
  22. // The apparently unused parameter is used in the alternative class in the Multisite add-on
  23. public static function update_updraft_option($option, $value, $use_cache = true) {
  24. return update_option($option, $value);
  25. }
  26. public static function delete_updraft_option($option) {
  27. delete_option($option);
  28. }
  29. public static function add_admin_pages() {
  30. global $updraftplus_admin;
  31. 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"));
  32. }
  33. public static function options_form_begin($settings_fields = 'updraft-options-group', $allow_autocomplete = true, $get_params = array()) {
  34. global $pagenow;
  35. echo '<form method="post"';
  36. $page = '';
  37. if ('options-general.php' == $pagenow) $page="options.php";
  38. if (!empty($get_params)) {
  39. $page .= '?';
  40. $first_one = true;
  41. foreach ($get_params as $k => $v) {
  42. if ($first_one) {
  43. $first_one = false;
  44. } else {
  45. $page .= '&';
  46. }
  47. $page .= urlencode($k).'='.urlencode($v);
  48. }
  49. }
  50. if ($page) echo ' action="'.$page.'"';
  51. if (!$allow_autocomplete) echo ' autocomplete="off"';
  52. echo '>';
  53. if ($settings_fields) {
  54. // This is settings_fields('updraft-options-group'), but with the referer pruned
  55. echo "<input type='hidden' name='option_page' value='" . esc_attr('updraft-options-group') . "' />";
  56. echo '<input type="hidden" name="action" value="update" />';
  57. // $action = -1, $name = "_wpnonce", $referer = true , $echo = true
  58. wp_nonce_field("updraft-options-group-options", '_wpnonce', false);
  59. $remove_query_args = array('state', 'action', 'updraftcopycomparms', 'oauth_verifier');
  60. // wp_unslash() does not exist until after WP 3.5
  61. if (function_exists('wp_unslash')) {
  62. $referer = wp_unslash( remove_query_arg( $remove_query_args, $_SERVER['REQUEST_URI']) );
  63. } else {
  64. $referer = stripslashes_deep( remove_query_arg( $remove_query_args, $_SERVER['REQUEST_URI']) );
  65. }
  66. // 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.
  67. if (substr($referer, -19, 19) == 'options-general.php' && false !== strpos($_SERVER['REQUEST_URI'], '?')) $referer .= '?page=updraftplus';
  68. $referer_field = '<input type="hidden" name="_wp_http_referer" value="'. esc_attr($referer) . '" />';
  69. echo $referer_field;
  70. }
  71. }
  72. public static function admin_init() {
  73. static $already_inited = false;
  74. if ($already_inited) return;
  75. $already_inited = true;
  76. // If being called outside of the admin context, this may not be loaded yet
  77. if (!function_exists('register_setting')) include_once(ABSPATH.'wp-admin/includes/plugin.php');
  78. global $updraftplus, $updraftplus_admin;
  79. register_setting('updraft-options-group', 'updraft_interval', array($updraftplus, 'schedule_backup') );
  80. register_setting('updraft-options-group', 'updraft_interval_database', array($updraftplus, 'schedule_backup_database') );
  81. register_setting('updraft-options-group', 'updraft_interval_increments');
  82. register_setting('updraft-options-group', 'updraft_retain', array($updraftplus, 'retain_range') );
  83. register_setting('updraft-options-group', 'updraft_retain_db', array($updraftplus, 'retain_range') );
  84. register_setting('updraft-options-group', 'updraft_retain_extrarules' );
  85. register_setting('updraft-options-group', 'updraft_encryptionphrase');
  86. register_setting('updraft-options-group', 'updraft_service', array($updraftplus, 'just_one'));
  87. register_setting('updraft-options-group', 'updraft_s3', array($updraftplus, 's3_sanitise'));
  88. register_setting('updraft-options-group', 'updraft_ftp', array($updraftplus, 'ftp_sanitise'));
  89. register_setting('updraft-options-group', 'updraft_dreamobjects');
  90. register_setting('updraft-options-group', 'updraft_s3generic');
  91. register_setting('updraft-options-group', 'updraft_cloudfiles');
  92. register_setting('updraft-options-group', 'updraft_bitcasa', array($updraftplus, 'bitcasa_checkchange'));
  93. register_setting('updraft-options-group', 'updraft_copycom', array($updraftplus, 'copycom_checkchange'));
  94. register_setting('updraft-options-group', 'updraft_openstack');
  95. register_setting('updraft-options-group', 'updraft_dropbox', array($updraftplus, 'dropbox_checkchange'));
  96. register_setting('updraft-options-group', 'updraft_googledrive', array($updraftplus, 'googledrive_checkchange'));
  97. register_setting('updraft-options-group', 'updraft_onedrive', array($updraftplus, 'onedrive_checkchange'));
  98. register_setting('updraft-options-group', 'updraft_azure', array($updraftplus, 'azure_checkchange'));
  99. register_setting('updraft-options-group', 'updraft_googlecloud', array($updraftplus, 'googlecloud_checkchange'));
  100. register_setting('updraft-options-group', 'updraft_sftp_settings');
  101. register_setting('updraft-options-group', 'updraft_webdav_settings', array($updraftplus, 'replace_http_with_webdav'));
  102. register_setting('updraft-options-group', 'updraft_ssl_nossl', 'absint');
  103. register_setting('updraft-options-group', 'updraft_log_syslog', 'absint');
  104. register_setting('updraft-options-group', 'updraft_ssl_useservercerts', 'absint');
  105. register_setting('updraft-options-group', 'updraft_ssl_disableverify', 'absint');
  106. register_setting('updraft-options-group', 'updraft_split_every', array($updraftplus_admin, 'optionfilter_split_every') );
  107. register_setting('updraft-options-group', 'updraft_dir', array($updraftplus_admin, 'prune_updraft_dir_prefix') );
  108. register_setting('updraft-options-group', 'updraft_email', array($updraftplus, 'just_one_email'));
  109. register_setting('updraft-options-group', 'updraft_report_warningsonly', array($updraftplus_admin, 'return_array'));
  110. register_setting('updraft-options-group', 'updraft_report_wholebackup', array($updraftplus_admin, 'return_array'));
  111. register_setting('updraft-options-group', 'updraft_autobackup_default', 'absint' );
  112. register_setting('updraft-options-group', 'updraft_delete_local', 'absint' );
  113. register_setting('updraft-options-group', 'updraft_debug_mode', 'absint' );
  114. register_setting('updraft-options-group', 'updraft_extradbs');
  115. register_setting('updraft-options-group', 'updraft_backupdb_nonwp', 'absint');
  116. register_setting('updraft-options-group', 'updraft_include_plugins', 'absint' );
  117. register_setting('updraft-options-group', 'updraft_include_themes', 'absint' );
  118. register_setting('updraft-options-group', 'updraft_include_uploads', 'absint' );
  119. register_setting('updraft-options-group', 'updraft_include_others', 'absint' );
  120. register_setting('updraft-options-group', 'updraft_include_wpcore', 'absint' );
  121. register_setting('updraft-options-group', 'updraft_include_wpcore_exclude', array($updraftplus, 'strip_dirslash'));
  122. register_setting('updraft-options-group', 'updraft_include_more', 'absint' );
  123. register_setting('updraft-options-group', 'updraft_include_more_path', array($updraftplus, 'remove_empties'));
  124. register_setting('updraft-options-group', 'updraft_include_uploads_exclude', array($updraftplus, 'strip_dirslash'));
  125. register_setting('updraft-options-group', 'updraft_include_others_exclude', array($updraftplus, 'strip_dirslash'));
  126. register_setting('updraft-options-group', 'updraft_starttime_files', array('UpdraftPlus_Options', 'hourminute') );
  127. register_setting('updraft-options-group', 'updraft_starttime_db', array('UpdraftPlus_Options', 'hourminute') );
  128. register_setting('updraft-options-group', 'updraft_startday_files', array('UpdraftPlus_Options', 'week_or_month_day') );
  129. register_setting('updraft-options-group', 'updraft_startday_db', array('UpdraftPlus_Options', 'week_or_month_day') );
  130. global $pagenow;
  131. if (is_multisite() && $pagenow == 'options-general.php' && isset($_REQUEST['page']) && 'updraftplus' == substr($_REQUEST['page'], 0, 11)) {
  132. add_action('all_admin_notices', array('UpdraftPlus_Options', 'show_admin_warning_multisite') );
  133. }
  134. }
  135. public static function hourminute($pot) {
  136. if (preg_match("/^([0-2]?[0-9]):([0-5][0-9])$/", $pot, $matches)) return sprintf("%02d:%s", $matches[1], $matches[2]);
  137. if ('' == $pot) return date('H:i', time()+300);
  138. return '00:00';
  139. }
  140. public static function week_or_month_day($pot) {
  141. $pot = absint($pot);
  142. return ($pot>28) ? 1 : $pot;
  143. }
  144. public static function show_admin_warning_multisite() {
  145. global $updraftplus_admin;
  146. $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 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');
  147. }
  148. }
  149. add_action('admin_init', array('UpdraftPlus_Options', 'admin_init'));
  150. add_action('admin_menu', array('UpdraftPlus_Options', 'add_admin_pages'));