wp/wp-content/plugins/wp-db-backup/wp-db-backup.php
author ymh <ymh.work@gmail.com>
Mon, 08 Sep 2025 19:44:41 +0200
changeset 23 417f20492bf7
parent 19 3d72ae0968f4
permissions -rwxr-xr-x
Update Docker configuration and plugin versions - Upgrade MariaDB from 10.6 to 11 with auto-upgrade support - Add WordPress debug environment variable to FPM container - Update PHP-FPM Dockerfile base image - Update Include Mastodon Feed plugin with bug fixes and improvements - Update Portfolio plugin (v2.58) with latest translations and demo data enhancements - Remove old README.md from Mastodon Feed plugin 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
/*
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
     3
Plugin Name: Database Backup for WordPress
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
     4
Plugin URI: https://github.com/deliciousbrains/wp-db-backup
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
Description: On-demand backup of your WordPress database. Navigate to <a href="edit.php?page=wp-db-backup">Tools &rarr; Backup</a> to get started.
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
     6
Author: Delicious Brains
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
     7
Author URI: https://deliciousbrains.com
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
     8
Version: 2.5.2
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
     9
Domain Path: /languages
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    11
This program is free software; you can redistribute it and/or modify
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    12
it under the terms of the GNU General Public License as published by
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    13
the Free Software Foundation; either version 2 of the License, or
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    14
(at your option) any later version.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    16
This program is distributed in the hope that it will be useful,
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    17
but WITHOUT ANY WARRANTY; without even the implied warranty of
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    18
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    19
GNU General Public License for more details.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    21
You should have received a copy of the GNU General Public License
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    22
along with this program; if not, write to the Free Software
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    23
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
*/
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    26
if ( ! defined( 'ABSPATH' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    27
	die( 'Please do not load this file directly.' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    30
if ( ! defined( 'DBBWP_ROWS_PER_SEGMENT' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    31
	define( 'DBBWP_ROWS_PER_SEGMENT', 100 );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    34
/**
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    35
 * Set DBBWP_MOD_EVASIVE_OVERRIDE to true
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    36
 * and increase DBBWP_MOD_EVASIVE_DELAY
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
 * if the backup stops prematurely.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    39
// define('DBBWP_MOD_EVASIVE_OVERRIDE', false);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    40
if ( ! defined( 'DBBWP_MOD_EVASIVE_DELAY' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    41
	define( 'DBBWP_MOD_EVASIVE_DELAY', '500' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
class wpdbBackup {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
	var $backup_complete = false;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    47
	var $backup_file     = '';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
	var $backup_filename;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
	var $core_table_names = array();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    50
	var $errors           = array();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
	var $basename;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
	var $page_url;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
	var $referer_check_key;
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
    54
	var $version = '2.5.2';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
	function module_check() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
		$mod_evasive = false;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    58
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    59
		if ( defined( 'DBBWP_MOD_EVASIVE_OVERRIDE' ) && true === DBBWP_MOD_EVASIVE_OVERRIDE ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    60
			return true;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    61
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    62
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    63
		if ( ! defined( 'DBBWP_MOD_EVASIVE_OVERRIDE' ) || false === DBBWP_MOD_EVASIVE_OVERRIDE ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    64
			return false;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    65
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    66
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    67
		if ( function_exists( 'apache_get_modules' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    68
			foreach ( (array) apache_get_modules() as $mod ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    69
				if ( false !== strpos( $mod, 'mod_evasive' ) || false !== strpos( $mod, 'mod_dosevasive' ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
					return true;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    71
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    72
			}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    73
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    74
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
		return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    78
	function __construct() {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
		global $table_prefix, $wpdb;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    80
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    81
		add_action( 'wp_ajax_save_backup_time', array( &$this, 'save_backup_time' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    82
		add_action( 'init', array( &$this, 'init_textdomain' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    83
		add_action( 'init', array( &$this, 'set_page_url' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    84
		add_action( 'admin_notices', array( &$this, 'update_notice' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    85
		add_action( 'wp_db_backup_cron', array( &$this, 'cron_backup' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    86
		add_action( 'wp_cron_daily', array( &$this, 'wp_cron_daily' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    87
		add_filter( 'cron_schedules', array( &$this, 'add_sched_options' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    88
		add_filter( 'wp_db_b_schedule_choices', array( &$this, 'schedule_choices' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    89
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    90
		$table_prefix          = ( isset( $table_prefix ) ) ? $table_prefix : $wpdb->prefix;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
    91
		$datum                 = date( 'Ymd_B' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
		$this->backup_filename = DB_NAME . "_$table_prefix$datum.sql";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
		$possible_names = array(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
			'categories',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
			'commentmeta',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
			'comments',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
			'link2cat',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
			'linkcategories',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
			'links',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
			'options',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
			'post2cat',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
			'postmeta',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
			'posts',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
			'terms',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
			'term_taxonomy',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
			'term_relationships',
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   108
			'termmeta',
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
			'users',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
			'usermeta',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
		);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   113
		foreach ( $possible_names as $name ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
			if ( isset( $wpdb->{$name} ) ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
				$this->core_table_names[] = $wpdb->{$name};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   118
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   119
		$tmp_dir = get_temp_dir();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   120
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   121
		if ( isset( $_GET['wp_db_temp_dir'] ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   122
			$requested_dir = sanitize_text_field( $_GET['wp_db_temp_dir'] );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   123
			if ( is_writeable( $requested_dir ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   124
				$tmp_dir = $requested_dir;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   125
			}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   126
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   127
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   128
		$this->backup_dir = trailingslashit( apply_filters( 'wp_db_b_backup_dir', $tmp_dir ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   129
		$this->basename   = 'wp-db-backup';
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   130
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
		$this->referer_check_key = $this->basename . '-download_' . DB_NAME;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   132
		if ( isset( $_POST['do_backup'] ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   133
			$this->wp_secure( 'fatal' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   134
			check_admin_referer( $this->referer_check_key );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   135
			$this->can_user_backup( 'main' );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   136
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
			// save exclude prefs
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   138
			update_option(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   139
				'wp_db_backup_excs',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   140
				array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   141
					'revisions' => $this->get_revisions_to_exclude(),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   142
					'spam'      => $this->get_spam_to_exclude(),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   143
				)
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   144
			);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   145
			switch ( $_POST['do_backup'] ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   146
				case 'backup':
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   147
					add_action( 'init', array( &$this, 'perform_backup' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   148
					break;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   149
				case 'fragments':
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   150
					add_action( 'admin_menu', array( &$this, 'admin_menu' ) );
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   151
					break;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
			}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   153
		} elseif ( isset( $_GET['fragment'] ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   154
			$this->can_user_backup( 'frame' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   155
			add_action( 'init', array( &$this, 'init' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   156
		} elseif ( isset( $_GET['backup'] ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
			$this->can_user_backup();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   158
			add_action( 'init', array( &$this, 'init' ) );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
		} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   160
			add_action( 'admin_menu', array( &$this, 'admin_menu' ) );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
	}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   163
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
	function init() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
		$this->can_user_backup();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   166
		if ( isset( $_GET['backup'] ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   167
			$via = isset( $_GET['via'] ) ? sanitize_text_field( $_GET['via'] ) : 'http';
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   168
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   169
			$this->backup_file = sanitize_text_field( $_GET['backup'] );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   170
			$this->validate_file( $this->backup_file );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   172
			switch ( $via ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   173
				case 'smtp':
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   174
				case 'email':
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   175
					$success = $this->deliver_backup( $this->backup_file, 'smtp', sanitize_text_field( $_GET['recipient'] ), 'frame' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   176
					$this->error_display( 'frame' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   177
					if ( $success ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   178
						echo '
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
						<!-- ' . $via . ' -->
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
						<script type="text/javascript"><!--\\
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
					';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   182
						echo '
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   183
						alert("' . __( 'Backup Complete!', 'wp-db-backup' ) . '");
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   184
						window.onbeforeunload = null;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
						</script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
					';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   187
					}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   188
					break;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   189
				default:
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   190
					$success = $this->deliver_backup( $this->backup_file, $via );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   191
					echo $this->error_display( 'frame', false );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   192
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   193
					if ( $success ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   194
						echo '
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
					<script type="text/javascript">
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   196
						window.parent.setProgress("' . __( 'Backup Complete!', 'wp-db-backup' ) . '");
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
					</script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
					';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   199
					}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
			exit;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
		}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   203
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   204
		if ( isset( $_GET['fragment'] ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   205
			list($table, $segment, $filename) = explode( ':', sanitize_text_field( $_GET['fragment'] ) );
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   206
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   207
			if ( empty( $table ) || in_array( $table, $this->get_tables() ) ) {
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   208
				$this->validate_file( $filename );
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   209
				$this->backup_fragment( $table, $segment, $filename );
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   210
			} else {
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   211
				$this->error(
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   212
					array(
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   213
						'loc'  => 'frame',
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   214
						'kind' => 'fatal',
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   215
						'msg'  => __(
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   216
							'There was an error determining the table to backup. Please check the settings used for the backup and try again.',
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   217
							'wp-db-backup'
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   218
						),
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   219
					)
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   220
				);
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   221
			}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
		die();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
	function init_textdomain() {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   228
		load_plugin_textdomain(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   229
			'wp-db-backup',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   230
			false,
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   231
			dirname( plugin_basename( __FILE__ ) ) . '/languages'
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   232
		);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
	function set_page_url() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
		$query_args = array( 'page' => $this->basename );
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   237
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   238
		if ( function_exists( 'wp_create_nonce' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   239
			$query_args = array_merge( $query_args, array( '_wpnonce' => wp_create_nonce( $this->referer_check_key ) ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   240
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   241
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   242
		$base           = ( function_exists( 'site_url' ) ) ? site_url( '', 'admin' ) : get_option( 'siteurl' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   243
		$this->page_url = add_query_arg( $query_args, $base . '/wp-admin/edit.php' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
	/*
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   247
	 * Add a link to back up your database when doing a core upgrade.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   249
	function update_notice() {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   250
		global $pagenow;
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   251
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   252
		if ( empty( $pagenow ) || 'update-core.php' !== $pagenow ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   253
			return false;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   254
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   255
		?>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   256
		<div class="notice notice-warning">
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   257
			<p>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   258
				<?php
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   259
				printf(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   260
					__( 'Click <a href="%s">here</a> to back up your database using the WordPress Database Backup plugin. <strong>Note:</strong> WordPress Database Backup does <em>not</em> back up your files, just your database.', 'wp-db-backup' ),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   261
					esc_url( get_admin_url( null, 'tools.php?page=wp-db-backup' ) )
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   262
				);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   263
				?>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   264
			</p>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   265
		</div>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   266
		<?php
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   267
	}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
	function build_backup_script() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
		global $table_prefix, $wpdb;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   271
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   272
		echo '<fieldset class="options backup-running"><legend>' . __( 'Progress', 'wp-db-backup' ) . '</legend>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   273
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   274
		<div class="panel-heading">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   275
			<h3>Backup In Progress...</h3>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   276
		</div>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   277
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   278
		<div class="panel-content">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   279
			<div class="progress-bar">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   280
			    <div id="progress-status"></div>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   281
				<div id="meterbox" style="height:11px;width:80%;padding:3px;border:1px solid #659fff;"><div id="meter" style="color:#fff;height:11px;line-height:11px;background-color:#659fff;width:0%;text-align:center;font-size:6pt;"></div></div>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   282
				<div id="progress_message"></div>'?>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   283
			</div>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   284
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   285
			<div class="info-notice">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   286
			<img src="<?php echo plugin_dir_url( __FILE__ ) . 'assets/warning.svg'; ?>">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   287
				<p>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   288
					Whilst the backup is in progress, please do not close the browser, reload or change the page, or click the stop or back browser buttons. This would result in the backup failing.
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   289
				</p>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   290
			</div>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   291
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   292
			<?php echo '<div id="errors"></div>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   293
            <iframe id="backuploader" src="about:blank" style="display:none;border:none;height:1em;width:1px;"></iframe>
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
			</fieldset>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
			<script type="text/javascript">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
			//<![CDATA[
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
			window.onbeforeunload = function() {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   298
				return "' . __( 'Navigating away from this page will cause your backup to fail.', 'wp-db-backup' ) . '";
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
			function setMeter(pct) {
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   301
                var meterStatus = document.getElementById("progress-status");
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
				var meter = document.getElementById("meter");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
				meter.style.width = pct + "%";
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   304
				meterStatus.innerHTML = Math.floor(pct) + "%";
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
			function setProgress(str) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
				var progress = document.getElementById("progress_message");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
				progress.innerHTML = str;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
			function addError(str) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
				var errors = document.getElementById("errors");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
				errors.innerHTML = errors.innerHTML + str + "<br />";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
			function backup(table, segment) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
				var fram = document.getElementById("backuploader");
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   317
				fram.src = "' . $this->page_url . '&fragment=" + table + ":" + segment + ":' . $this->backup_filename . ':&wp_db_temp_dir=' . $this->backup_dir . '";
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
			}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   319
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
			var curStep = 0;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   321
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
			function nextStep() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
				backupStep(curStep);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
				curStep++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
			}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   326
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
			function finishBackup() {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   328
				var fram = document.getElementById("backuploader");
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
				setMeter(100);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
		';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   332
		$download_uri = add_query_arg( 'backup', $this->backup_filename, $this->page_url );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   333
		switch ( $_POST['deliver'] ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   334
			case 'http':
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   335
				echo '
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   336
				setProgress("' . __( 'Preparing download.', 'wp-db-backup' ) . '");
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   337
				window.onbeforeunload = null;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
				fram.src = "' . $download_uri . '";
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   339
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
				setTimeout( function() {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   341
					var secondFrame = document.createElement("iframe");
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   342
					secondFrame.style.display = "none";
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
					fram.parentNode.insertBefore(secondFrame, fram);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
					secondFrame.src = "' . $download_uri . '&download-retry=1";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
				}, 30000 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
			';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   347
				break;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   348
			case 'smtp':
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   349
				$email = sanitize_text_field( wp_unslash( $_POST['backup_recipient'] ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   350
				if ( get_option( 'wpdb_backup_recip' ) != $email ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   351
					update_option( 'wpdb_backup_recip', $email );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   352
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   353
				echo '
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   354
				setProgress("' . sprintf( __( 'Your backup has been emailed to %s', 'wp-db-backup' ), $email ) . '");
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   355
				window.onbeforeunload = null;
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   356
				fram.src = "' . $download_uri . '&via=email&recipient=' . $email . '";
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
			';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   358
				break;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   359
			default:
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   360
				echo '
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   361
				setProgress("' . __( 'Backup Complete!', 'wp-db-backup' ) . '");
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   362
				window.onbeforeunload = null;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
			';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   365
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
		echo '
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
			}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   368
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
			function backupStep(step) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
				switch(step) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
				case 0: backup("", 0); break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
		';
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   373
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   374
		$also_backup = $this->get_post_data_array( 'other_tables' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   375
		$core_tables = $this->get_post_data_array( 'core_tables' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   376
		$tables      = array_merge( $core_tables, $also_backup );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   377
		$step_count  = 1;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   378
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   379
		foreach ( $tables as $table ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   380
			$rec_count    = $wpdb->get_var( "SELECT count(*) FROM {$table}" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   381
			$rec_segments = ceil( $rec_count / DBBWP_ROWS_PER_SEGMENT );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   382
			$table_count  = 0;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
			if ( $this->module_check() ) {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   384
				$delay      = "setTimeout('";
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   385
				$delay_time = "', " . (int) DBBWP_MOD_EVASIVE_DELAY . ')';
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   386
			} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   387
				$delay = $delay_time = ''; }
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
			do {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
				echo "case {$step_count}: {$delay}backup(\"{$table}\", {$table_count}){$delay_time}; break;\n";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
				$step_count++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
				$table_count++;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   392
			} while ( $table_count < $rec_segments );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
			echo "case {$step_count}: {$delay}backup(\"{$table}\", -1){$delay_time}; break;\n";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
			$step_count++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
		}
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   396
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
		echo "case {$step_count}: finishBackup(); break;";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
		echo '
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
				if(step != 0) setMeter(100 * step / ' . $step_count . ');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
			nextStep();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
			// ]]>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
			</script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
		';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   409
	function backup_fragment( $table, $segment, $filename ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
		global $table_prefix, $wpdb;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   411
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
		echo "$table:$segment:$filename";
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   413
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   414
		if ( $table == '' ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   415
			$msg = __( 'Creating backup file...', 'wp-db-backup' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
		} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   417
			if ( $segment == -1 ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   418
				$msg = sprintf( __( 'Finished backing up table \\"%s\\".', 'wp-db-backup' ), $table );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
			} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   420
				$msg = sprintf( __( 'Backing up table \\"%s\\"...', 'wp-db-backup' ), $table );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   423
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   424
		if ( is_writable( $this->backup_dir ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   425
			$this->fp = $this->open( $this->backup_dir . $filename, 'a' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   426
			if ( ! $this->fp ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   427
				$this->error( __( 'Could not open the backup file for writing!', 'wp-db-backup' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   428
				$this->error(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   429
					array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   430
						'loc'  => 'frame',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   431
						'kind' => 'fatal',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   432
						'msg'  => __(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   433
							'The backup file could not be saved.  Please check the permissions for writing to your backup directory and try again.',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   434
							'wp-db-backup'
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   435
						),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   436
					)
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   437
				);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   438
			} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   439
				if ( $table == '' ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
					//Begin new backup of MySql
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   441
					$this->stow( '# ' . __( 'WordPress MySQL database backup', 'wp-db-backup' ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   442
					$this->stow( "#\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   443
					$this->stow( '# ' . sprintf( __( 'Generated: %s', 'wp-db-backup' ), date( 'l j. F Y H:i T' ) ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   444
					$this->stow( '# ' . sprintf( __( 'Hostname: %s', 'wp-db-backup' ), DB_HOST ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   445
					$this->stow( '# ' . sprintf( __( 'Database: %s', 'wp-db-backup' ), $this->backquote( DB_NAME ) ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   446
					$this->stow( "# --------------------------------------------------------\n" );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
				} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   448
					if ( $segment == 0 ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
						// Increase script execution time-limit to 15 min for every table.
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   450
						if ( ! ini_get( 'safe_mode' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   451
							@set_time_limit( 15 * 60 );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   452
						}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
						// Create the SQL statements
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   454
						$this->stow( "# --------------------------------------------------------\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   455
						$this->stow( '# ' . sprintf( __( 'Table: %s', 'wp-db-backup' ), $this->backquote( $table ) ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   456
						$this->stow( "# --------------------------------------------------------\n" );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   457
					}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   458
					$this->backup_table( $table, $segment );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
		} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   462
			$this->error(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   463
				array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   464
					'kind' => 'fatal',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   465
					'loc'  => 'frame',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   466
					'msg'  => __(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   467
						'The backup directory is not writeable!  Please check the permissions for writing to your backup directory and try again.',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   468
						'wp-db-backup'
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   469
					),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   470
				)
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   471
			);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   474
		if ( $this->fp ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   475
			$this->close( $this->fp );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   476
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   477
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   478
		$this->error_display( 'frame' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
		echo '<script type="text/javascript"><!--//
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
		var msg = "' . $msg . '";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
		window.parent.setProgress(msg);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
		window.parent.nextStep();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
		//--></script>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
		';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
		die();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
	function perform_backup() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
		// are we backing up any other tables?
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
		$also_backup = array();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   492
		if ( isset( $_POST['other_tables'] ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   493
			$also_backup = sanitize_text_field( $_POST['other_tables'] );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   494
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   495
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   496
		$core_tables       = sanitize_text_field( $_POST['core_tables'] );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   497
		$this->backup_file = $this->db_backup( $core_tables, $also_backup );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   498
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   499
		if ( false !== $this->backup_file ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   500
			if ( 'smtp' == $_POST['deliver'] ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   501
				$email = sanitize_text_field( wp_unslash( $_POST['backup_recipient'] ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   502
				$this->deliver_backup( $this->backup_file, sanitize_text_field( $_POST['deliver'] ), $email, 'main' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   503
				if ( get_option( 'wpdb_backup_recip' ) != $email ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   504
					update_option( 'wpdb_backup_recip', $email );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
				}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   506
				wp_redirect( $this->page_url );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   507
			} elseif ( 'http' == $_POST['deliver'] ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   508
				$download_uri = add_query_arg( 'backup', $this->backup_file, $this->page_url );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   509
				wp_redirect( $download_uri );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
				exit;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
			}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   512
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
			// we do this to say we're done.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
			$this->backup_complete = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
	function admin_header() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
		?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
		<script type="text/javascript">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
		//<![CDATA[
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
		if ( 'undefined' != typeof addLoadEvent ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
			addLoadEvent(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
				var t = {'extra-tables-list':{name: 'other_tables[]'}, 'include-tables-list':{name: 'wp_cron_backup_tables[]'}};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
				for ( var k in t ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
					t[k].s = null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
					var d = document.getElementById(k);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
					if ( ! d )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
						continue;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
					var ul = d.getElementsByTagName('ul').item(0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
					if ( ul ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
						var lis = ul.getElementsByTagName('li');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
						if ( 2 < lis.length ) {
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   535
							var text = document.querySelector('.instructions-container p');
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   536
                            text.style.display = 'block';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
					t[k].p = d.getElementsByTagName("input");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
					for(var i=0; i < t[k].p.length; i++) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
						if(t[k].name == t[k].p[i].getAttribute('name')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
							t[k].p[i].id = k + '-table-' + i;
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   543
                            var label = document.getElementById(t[k].p[i].id).parentNode;
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   544
							t[k].p[i].onkeyup = label.onclick = function(e) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
								e = e ? e : event;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   546
								if ( 16  == e.keyCode )
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
									return;
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   548
								var match = /([\w-]*)-table-(\d*)/.exec(this.querySelector('input').id);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
								var listname = match[1];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
								var that = match[2];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
								if ( null === t[listname].s )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
									t[listname].s = that;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
								else if ( e.shiftKey ) {
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   554
                                    console.log(this);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
									var start = Math.min(that, t[listname].s) + 1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
									var end = Math.max(that, t[listname].s);
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   557
                                    this.querySelector('input').checked = true;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
									for( var j=start; j < end; j++)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   559
										t[listname].p[j].checked = t[listname].p[j].checked ? false : true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   560
									t[listname].s = null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   561
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   562
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   563
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   564
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   565
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   566
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   567
				<?php if ( function_exists( 'wp_schedule_event' ) ) : // needs to be at least WP 2.1 for ajax ?>
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   568
				if ( 'undefined' == typeof XMLHttpRequest )
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   569
					var xml = new ActiveXObject( navigator.userAgent.indexOf('MSIE 5') >= 0 ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   570
				else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   571
					var xml = new XMLHttpRequest();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   572
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   573
				var initTimeChange = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   574
					var timeWrap = document.getElementById('backup-time-wrap');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   575
					var backupTime = document.getElementById('next-backup-time');
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   576
					if ( !! timeWrap && !! backupTime && ( 1 ==
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   577
					<?php
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   578
						echo (int) ( 'en' == strtolower( substr( get_locale(), 0, 2 ) ) );
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   579
					?>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   580
					 ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   581
						var span = document.createElement('span');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   582
						span.className = 'submit';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   583
						span.id = 'change-wrap';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   584
						span.innerHTML = '<input type="submit" id="change-backup-time" name="change-backup-time" value="<?php _e( 'Change', 'wp-db-backup' ); ?>" />';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   585
						timeWrap.appendChild(span);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   586
						backupTime.ondblclick = function(e) { span.parentNode.removeChild(span); clickTime(e, backupTime); };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   587
						span.onclick = function(e) { span.parentNode.removeChild(span); clickTime(e, backupTime); };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   588
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   589
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   590
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   591
				var clickTime = function(e, backupTime) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   592
					var tText = backupTime.innerHTML;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   593
					backupTime.innerHTML = '<input type="text" value="' + tText + '" name="backup-time-text" id="backup-time-text" /> <span class="submit"><input type="submit" name="save-backup-time" id="save-backup-time" value="<?php _e( 'Save', 'wp-db-backup' ); ?>" /></span>';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   594
					backupTime.ondblclick = null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   595
					var mainText = document.getElementById('backup-time-text');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   596
					mainText.focus();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   597
					var saveTButton = document.getElementById('save-backup-time');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   598
					if ( !! saveTButton )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   599
						saveTButton.onclick = function(e) { saveTime(backupTime, mainText); return false; };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   600
					if ( !! mainText )
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   601
						mainText.onkeydown = function(e) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   602
							e = e || window.event;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   603
							if ( 13 == e.keyCode ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   604
								saveTime(backupTime, mainText);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   605
								return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   606
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   607
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   608
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   609
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   610
				var saveTime = function(backupTime, mainText) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   611
					var tVal = mainText.value;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   612
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   613
					xml.open('POST', 'admin-ajax.php', true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   614
					xml.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   615
					if ( xml.overrideMimeType )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   616
						xml.setRequestHeader('Connection', 'close');
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   617
					xml.send('action=save_backup_time&_wpnonce=<?php echo wp_create_nonce( $this->referer_check_key ); ?>&backup-time='+tVal);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   618
					xml.onreadystatechange = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   619
						if ( 4 == xml.readyState && '0' != xml.responseText ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   620
							backupTime.innerHTML = xml.responseText;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   621
							initTimeChange();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   622
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   623
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   624
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   625
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   626
				initTimeChange();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   627
				<?php endif; // wp_schedule_event exists ?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   628
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   629
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   630
		//]]>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   631
		</script>
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   632
		<?php
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   633
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   634
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   635
	function admin_load() {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   636
		add_action( 'admin_head', array( &$this, 'admin_header' ) );
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   637
		wp_enqueue_style( 'wp-db-backup-styles', plugin_dir_url( __FILE__ ) . 'assets/css/style.css', array( 'common', 'forms' ) );
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
   638
        wp_enqueue_script( 'wp-db-backup-script', plugin_dir_url( __FILE__ ) . 'assets/js/script.js', array( 'jquery' ), $this->version, true );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   639
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   640
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   641
	function admin_menu() {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   642
		$_page_hook = add_management_page( __( 'Backup', 'wp-db-backup' ), __( 'Backup', 'wp-db-backup' ), 'import', $this->basename, array( &$this, 'backup_menu' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   643
		add_action( 'load-' . $_page_hook, array( &$this, 'admin_load' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   644
		if ( function_exists( 'get_current_screen' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   645
			$screen = convert_to_screen( $_page_hook );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   646
			if ( method_exists( $screen, 'add_help_tab' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   647
				$screen->add_help_tab(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   648
					array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   649
						'title'   => __( 'Backup', 'wp-db-backup' ),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   650
						'id'      => $_page_hook,
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   651
						'content' => $this->help_menu(),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   652
					)
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   653
				);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   654
			}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   655
		} elseif ( function_exists( 'add_contextual_help' ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   656
			$text = $this->help_menu();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   657
			add_contextual_help( $_page_hook, $text );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   658
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   659
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   660
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   661
	/**
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   662
	 * Add WP-DB-Backup-specific help options to the 2.7 =< WP contextual help menu
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   663
	 * @return string The text of the help menu.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   664
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   665
	function help_menu() {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   666
		$text = "\n<a href=\"http://wordpress.org/extend/plugins/wp-db-backup/faq/\" target=\"_blank\">" . __( 'FAQ', 'wp-db-backup' ) . '</a>';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   667
		return $text;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   668
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   669
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   670
	function save_backup_time() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   671
		if ( $this->can_user_backup() ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   672
			// try to get a time from the input string
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   673
			$time = strtotime( strval( $_POST['backup-time'] ) );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   674
			if ( ! empty( $time ) && time() < $time ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   675
				wp_clear_scheduled_hook( 'wp_db_backup_cron' ); // unschedule previous
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   676
				$scheds = (array) wp_get_schedules();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   677
				$name   = get_option( 'wp_cron_backup_schedule' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   678
				if ( 0 != $time ) {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   679
					wp_schedule_event( $time, $name, 'wp_db_backup_cron' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   680
					echo gmdate( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $time + ( get_option( 'gmt_offset' ) * 3600 ) );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   681
					exit;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   682
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   683
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   684
		} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   685
			die( 0 );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   686
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   687
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   688
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   689
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   690
	 * Better addslashes for SQL queries.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   691
	 * Taken from phpMyAdmin.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   692
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   693
	function sql_addslashes( $a_string = '', $is_like = false ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   694
		if ( $is_like ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   695
			$a_string = str_replace( '\\', '\\\\\\\\', $a_string );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   696
		} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   697
			$a_string = str_replace( '\\', '\\\\', $a_string );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   698
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   699
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   700
		return str_replace( '\'', '\\\'', $a_string );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   701
	}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   702
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   703
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   704
	 * Add backquotes to tables and db-names in
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   705
	 * SQL queries. Taken from phpMyAdmin.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   706
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   707
	function backquote( $a_name ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   708
		if ( ! empty( $a_name ) && $a_name != '*' ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   709
			if ( is_array( $a_name ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   710
				$result = array();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   711
				reset( $a_name );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   712
				while ( list($key, $val) = each( $a_name ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   713
					$result[ $key ] = '`' . $val . '`';
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   714
				}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   715
				return $result;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   716
			} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   717
				return '`' . $a_name . '`';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   718
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   719
		} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   720
			return $a_name;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   721
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   722
	}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   723
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   724
	function open( $filename = '', $mode = 'w' ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   725
		if ( '' == $filename ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   726
			return false;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   727
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   728
		$fp = @fopen( $filename, $mode );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   729
		return $fp;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   730
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   731
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   732
	function close( $fp ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   733
		fclose( $fp );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   734
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   735
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   736
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   737
	 * Write to the backup file
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   738
	 * @param string $query_line the line to write
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   739
	 * @return null
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   740
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   741
	function stow( $query_line ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   742
		if ( false === @fwrite( $this->fp, $query_line ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   743
			$this->error( __( 'There was an error writing a line to the backup script:', 'wp-db-backup' ) . '  ' . $query_line . '  ' . $php_errormsg );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   744
		}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   745
	}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   746
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   747
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   748
	 * Logs any error messages
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   749
	 * @param array $args
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   750
	 * @return bool
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   751
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   752
	function error( $args = array() ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   753
		if ( is_string( $args ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   754
			$args = array( 'msg' => $args );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   755
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   756
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   757
		$args = array_merge(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   758
			array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   759
				'loc'  => 'main',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   760
				'kind' => 'warn',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   761
				'msg'  => '',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   762
			),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   763
			$args
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   764
		);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   765
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   766
		$this->errors[ $args['kind'] ][] = $args['msg'];
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   767
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   768
		if ( 'fatal' == $args['kind'] || 'frame' == $args['loc'] ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   769
			$this->error_display( $args['loc'] );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   770
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   771
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   772
		return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   773
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   774
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   775
	/**
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   776
	 * Displays error messages
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   777
	 * @param array $errs
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   778
	 * @param string $loc
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   779
	 * @return string
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   780
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   781
	function error_display( $loc = 'main', $echo = true ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   782
		$errs = $this->errors;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   783
		unset( $this->errors );
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   784
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   785
		if ( ! count( $errs ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   786
			return;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   787
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   788
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   789
		$msg           = '';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   790
		$errs['fatal'] = isset( $errs['fatal'] ) ? (array) $errs['fatal'] : array();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   791
		$errs['warn']  = isset( $errs['warn'] ) ? (array) $errs['warn'] : array();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   792
		$err_list      = array_slice( array_merge( $errs['fatal'], $errs['warn'] ), 0, 10 );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   793
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   794
		if ( 10 == count( $err_list ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   795
			$err_list[9] = __( 'Subsequent errors have been omitted from this log.', 'wp-db-backup' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   796
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   797
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   798
		$wrap = ( 'frame' == $loc ) ? "<script type=\"text/javascript\">\n var msgList = ''; \n %1\$s \n if ( msgList ) alert(msgList); \n </script>" : '%1$s';
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   799
		$line = ( 'frame' == $loc ) ?
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   800
			"try{ window.parent.addError('%1\$s'); } catch(e) { msgList += ' %1\$s';}\n" :
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   801
			"%1\$s<br />\n";
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   802
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   803
		foreach ( (array) $err_list as $err ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   804
			$msg .= sprintf( $line, str_replace( array( "\n", "\r" ), '', addslashes( $err ) ) );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   805
		}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   806
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   807
		$msg = sprintf( $wrap, $msg );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   808
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   809
		if ( count( $errs['fatal'] ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   810
			if ( function_exists( 'wp_die' ) && 'frame' != $loc ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   811
				wp_die( stripslashes( $msg ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   812
			} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   813
				die( $msg );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   814
			}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   815
		} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   816
			if ( $echo ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   817
				echo $msg;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   818
			} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   819
				return $msg;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   820
			}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   821
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   822
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   823
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   824
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   825
	 * Taken partially from phpMyAdmin and partially from
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   826
	 * Alain Wolf, Zurich - Switzerland
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   827
	 * Website: http://restkultur.ch/personal/wolf/scripts/db_backup/
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   828
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   829
	 * Modified by Scott Merrill (http://www.skippy.net/)
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   830
	 * to use the WordPress $wpdb object
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   831
	 * @param string $table
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   832
	 * @param string $segment
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   833
	 * @return void
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   834
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   835
	function backup_table( $table, $segment = 'none' ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   836
		global $wpdb;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   837
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   838
		$table_structure = $wpdb->get_results( "DESCRIBE $table" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   839
		if ( ! $table_structure ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   840
			$this->error( __( 'Error getting table details', 'wp-db-backup' ) . ": $table" );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   841
			return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   842
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   843
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   844
		if ( ( $segment == 'none' ) || ( $segment == 0 ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   845
			// Add SQL statement to drop existing table
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   846
			$this->stow( "\n\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   847
			$this->stow( "#\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   848
			$this->stow( '# ' . sprintf( __( 'Delete any existing table %s', 'wp-db-backup' ), $this->backquote( $table ) ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   849
			$this->stow( "#\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   850
			$this->stow( "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   851
			$this->stow( 'DROP TABLE IF EXISTS ' . $this->backquote( $table ) . ";\n" );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   852
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   853
			// Table structure
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   854
			// Comment in SQL-file
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   855
			$this->stow( "\n\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   856
			$this->stow( "#\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   857
			$this->stow( '# ' . sprintf( __( 'Table structure of table %s', 'wp-db-backup' ), $this->backquote( $table ) ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   858
			$this->stow( "#\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   859
			$this->stow( "\n" );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   860
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   861
			$create_table = $wpdb->get_results( "SHOW CREATE TABLE $table", ARRAY_N );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   862
			if ( false === $create_table ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   863
				$err_msg = sprintf( __( 'Error with SHOW CREATE TABLE for %s.', 'wp-db-backup' ), $table );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   864
				$this->error( $err_msg );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   865
				$this->stow( "#\n# $err_msg\n#\n" );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   866
			}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   867
			$this->stow( $create_table[0][1] . ' ;' );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   868
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   869
			if ( false === $table_structure ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   870
				$err_msg = sprintf( __( 'Error getting table structure of %s', 'wp-db-backup' ), $table );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   871
				$this->error( $err_msg );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   872
				$this->stow( "#\n# $err_msg\n#\n" );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   873
			}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   874
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   875
			// Comment in SQL-file
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   876
			$this->stow( "\n\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   877
			$this->stow( "#\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   878
			$this->stow( '# ' . sprintf( __( 'Data contents of table %s', 'wp-db-backup' ), $this->backquote( $table ) ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   879
			$this->stow( "#\n" );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   880
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   881
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   882
		if ( ( $segment == 'none' ) || ( $segment >= 0 ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   883
			$defs = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   884
			$ints = array();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   885
			foreach ( $table_structure as $struct ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   886
				if ( ( 0 === strpos( $struct->Type, 'tinyint' ) ) ||
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   887
					( 0 === strpos( strtolower( $struct->Type ), 'smallint' ) ) ||
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   888
					( 0 === strpos( strtolower( $struct->Type ), 'mediumint' ) ) ||
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   889
					( 0 === strpos( strtolower( $struct->Type ), 'int' ) ) ||
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   890
					( 0 === strpos( strtolower( $struct->Type ), 'bigint' ) ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   891
						$defs[ strtolower( $struct->Field ) ] = ( null === $struct->Default ) ? 'NULL' : $struct->Default;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   892
						$ints[ strtolower( $struct->Field ) ] = '1';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   893
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   894
			}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   895
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   896
			// Batch by $row_inc
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   897
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   898
			if ( $segment == 'none' ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   899
				$row_start = 0;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   900
				$row_inc   = DBBWP_ROWS_PER_SEGMENT;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   901
			} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   902
				$row_start = $segment * DBBWP_ROWS_PER_SEGMENT;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   903
				$row_inc   = DBBWP_ROWS_PER_SEGMENT;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   904
			}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   905
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   906
			do {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   907
				// don't include extra stuff, if so requested
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   908
				$excs  = (array) get_option( 'wp_db_backup_excs' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   909
				$where = '';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   910
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   911
				if ( is_array( $excs['spam'] ) && in_array( $table, $excs['spam'] ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   912
					$where = " WHERE comment_approved != 'spam'";
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   913
				} elseif ( is_array( $excs['revisions'] ) && in_array( $table, $excs['revisions'] ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   914
					$where = " WHERE post_type != 'revision'";
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   915
				}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   916
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   917
				if ( ! ini_get( 'safe_mode' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   918
					@set_time_limit( 15 * 60 );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   919
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   920
				$table_data = $wpdb->get_results( "SELECT * FROM $table $where LIMIT {$row_start}, {$row_inc}", ARRAY_A );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   921
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   922
				$entries = 'INSERT INTO ' . $this->backquote( $table ) . ' VALUES (';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   923
				//    \x08\\x09, not required
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   924
				$search  = array( "\x00", "\x0a", "\x0d", "\x1a" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   925
				$replace = array( '\0', '\n', '\r', '\Z' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   926
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   927
				if ( $table_data ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   928
					foreach ( $table_data as $row ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   929
						$values = array();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   930
						foreach ( $row as $key => $value ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   931
							if ( ! empty( $ints[ strtolower( $key ) ] ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   932
								// make sure there are no blank spots in the insert syntax,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   933
								// yet try to avoid quotation marks around integers
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   934
								$value    = ( null === $value || '' === $value ) ? $defs[ strtolower( $key ) ] : $value;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   935
								$values[] = ( '' === $value ) ? "''" : $value;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   936
							} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   937
								$values[] = "'" . str_replace( $search, $replace, $this->sql_addslashes( $value ) ) . "'";
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   938
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   939
						}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   940
						$this->stow( " \n" . $entries . implode( ', ', $values ) . ');' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   941
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   942
					$row_start += $row_inc;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   943
				}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   944
			} while ( ( count( $table_data ) > 0 ) and ( $segment == 'none' ) );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   945
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   946
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   947
		if ( ( $segment == 'none' ) || ( $segment < 0 ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   948
			// Create footer/closing comment in SQL-file
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   949
			$this->stow( "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   950
			$this->stow( "#\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   951
			$this->stow( '# ' . sprintf( __( 'End of data contents of table %s', 'wp-db-backup' ), $this->backquote( $table ) ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   952
			$this->stow( "# --------------------------------------------------------\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   953
			$this->stow( "\n" );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   954
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   955
	} // end backup_table()
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   956
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   957
	function db_backup( $core_tables, $other_tables ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   958
		global $table_prefix, $wpdb;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   959
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   960
		if ( is_writable( $this->backup_dir ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   961
			$this->fp = $this->open( $this->backup_dir . $this->backup_filename );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   962
			if ( ! $this->fp ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   963
				$this->error( __( 'Could not open the backup file for writing!', 'wp-db-backup' ) );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   964
				return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   965
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   966
		} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   967
			$this->error( __( 'The backup directory is not writeable!', 'wp-db-backup' ) );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   968
			return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   969
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   970
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   971
		//Begin new backup of MySql
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   972
		$this->stow( '# ' . __( 'WordPress MySQL database backup', 'wp-db-backup' ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   973
		$this->stow( "#\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   974
		$this->stow( '# ' . sprintf( __( 'Generated: %s', 'wp-db-backup' ), date( 'l j. F Y H:i T' ) ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   975
		$this->stow( '# ' . sprintf( __( 'Hostname: %s', 'wp-db-backup' ), DB_HOST ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   976
		$this->stow( '# ' . sprintf( __( 'Database: %s', 'wp-db-backup' ), $this->backquote( DB_NAME ) ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   977
		$this->stow( "# --------------------------------------------------------\n" );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   978
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   979
		if ( ( is_array( $other_tables ) ) && ( count( $other_tables ) > 0 ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   980
			$tables = array_merge( $core_tables, $other_tables );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   981
		} else {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   982
			$tables = $core_tables;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   983
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   984
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   985
		foreach ( $tables as $table ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   986
			// Increase script execution time-limit to 15 min for every table.
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   987
			if ( ! ini_get( 'safe_mode' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   988
				@set_time_limit( 15 * 60 );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   989
			}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   990
			// Create the SQL statements
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   991
			$this->stow( "# --------------------------------------------------------\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   992
			$this->stow( '# ' . sprintf( __( 'Table: %s', 'wp-db-backup' ), $this->backquote( $table ) ) . "\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   993
			$this->stow( "# --------------------------------------------------------\n" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   994
			$this->backup_table( $table );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   995
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   996
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   997
		$this->close( $this->fp );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   998
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   999
		if ( count( $this->errors ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1000
			return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1001
		} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1002
			return $this->backup_filename;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1003
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1004
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1005
	} //wp_db_backup
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1006
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1007
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1008
	 * Sends the backed-up file via email
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1009
	 *
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1010
	 * @param string $to
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1011
	 * @param string $subject
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1012
	 * @param string $message
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1013
	 * @param string $diskfile
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1014
	 *
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1015
	 * @return bool
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1016
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1017
	function send_mail( $to, $subject, $message, $diskfile ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1018
		return wp_mail( $to, $subject, $message, array(), array( $diskfile ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1019
	}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1020
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1021
	function deliver_backup( $filename = '', $delivery = 'http', $recipient = '', $location = 'main' ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1022
		if ( '' == $filename ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1023
			return false; }
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1024
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1025
		$diskfile    = $this->backup_dir . $filename;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1026
		$gz_diskfile = "{$diskfile}.gz";
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1027
		$retry       = isset( $_GET['download-retry'] );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1028
		$success     = false;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1029
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1030
		// Try to gzip the file if we can.
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1031
		if ( file_exists( $diskfile ) && ! file_exists( $gz_diskfile ) && ! $retry ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1032
			if ( function_exists( 'gzencode' ) && function_exists( 'file_get_contents' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1033
				// Try upping the memory limit before gzipping
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1034
				if ( function_exists( 'memory_get_usage' ) && ( (int) @ini_get( 'memory_limit' ) < 64 ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1035
					@ini_set( 'memory_limit', '64M' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1036
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1037
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1038
				$contents = file_get_contents( $diskfile );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1039
				$gzipped  = gzencode( $contents, 9 );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1040
				$fp       = fopen( $gz_diskfile, 'w' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1041
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1042
				fwrite( $fp, $gzipped );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1043
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1044
				if ( fclose( $fp ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1045
					unlink( $diskfile );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1046
				}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1047
			}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1048
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1049
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1050
		if ( file_exists( $gz_diskfile ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1051
			$filename        = $filename . '.gz';
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1052
			$file_to_deliver = $gz_diskfile;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1053
		} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1054
			$file_to_deliver = $diskfile;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1055
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1056
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1057
		if ( 'http' == $delivery ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1058
			if ( ! file_exists( $file_to_deliver ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1059
				if ( ! $retry ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1060
					$this->error(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1061
						array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1062
							'kind' => 'fatal',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1063
							'msg'  => sprintf(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1064
								__(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1065
									'File not found:%s',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1066
									'wp-db-backup'
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1067
								),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1068
								"&nbsp;<strong>$filename</strong><br />"
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1069
							) . '<br /><a href="' . $this->page_url . '">' . __(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1070
								'Return to Backup',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1071
								'wp-db-backup'
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1072
							) . '</a>',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1073
						)
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1074
					);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1075
				} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1076
					return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1077
				}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1078
			} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1079
				header( 'Content-Description: File Transfer' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1080
				header( 'Content-Type: application/octet-stream' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1081
				header( 'Content-Length: ' . filesize( $file_to_deliver ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1082
				header( "Content-Disposition: attachment; filename=$filename" );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1083
				$success = readfile( $file_to_deliver );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1084
				if ( $success ) {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1085
					unlink( $file_to_deliver );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1086
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1087
			}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1088
		} elseif ( 'smtp' == $delivery ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1089
			if ( ! file_exists( $file_to_deliver ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1090
				$msg = sprintf( __( 'File %s does not exist!', 'wp-db-backup' ), $file_to_deliver );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1091
				$this->error( $msg );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1092
				return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1093
			}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1094
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1095
			if ( ! is_email( $recipient ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1096
				$recipient = get_option( 'admin_email' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1097
			}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1098
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1099
			$message = sprintf( __( "Attached to this email is\n   %1\$1s\n   Size:%2\$2s kilobytes\n", 'wp-db-backup' ), $filename, round( filesize( $file_to_deliver ) / 1024 ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1100
			$success = $this->send_mail( $recipient, get_bloginfo( 'name' ) . ' ' . __( 'Database Backup', 'wp-db-backup' ), $message, $file_to_deliver );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1101
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1102
			if ( false === $success ) {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1103
				$msg = __( 'The following errors were reported:', 'wp-db-backup' ) . "\n ";
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1104
				if ( function_exists( 'error_get_last' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1105
					$err  = error_get_last();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1106
					$msg .= $err['message'];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1107
				} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1108
					$msg .= __( 'ERROR: The mail application has failed to deliver the backup.', 'wp-db-backup' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1109
				}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1110
				$this->error(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1111
					array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1112
						'kind' => 'fatal',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1113
						'loc'  => $location,
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1114
						'msg'  => $msg,
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1115
					)
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1116
				);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1117
			} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1118
				if ( file_exists( $file_to_deliver ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1119
					unlink( $file_to_deliver );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1120
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1121
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1122
		}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1123
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1124
		return $success;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1125
	}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1126
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1127
	function backup_menu() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1128
		global $table_prefix, $wpdb;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1129
		$feedback = '';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1130
		$whoops   = false;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1131
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1132
		// did we just do a backup?  If so, let's report the status
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1133
		if ( $this->backup_complete ) {
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1134
			$feedback = '<div class="wp-db-backup-updated"><p>' . __( 'Backup Successful', 'wp-db-backup' ) . '!';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1135
			$file     = $this->backup_file;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1136
			switch ( $_POST['deliver'] ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1137
				case 'http':
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1138
					$feedback .= '<br />' . sprintf( __( 'Your backup file: %2s should begin downloading shortly.', 'wp-db-backup' ), "{$this->backup_file}", $this->backup_file );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1139
					break;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1140
				case 'smtp':
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1141
					$email = sanitize_text_field( wp_unslash( $_POST['backup_recipient'] ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1142
					if ( ! is_email( $email ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1143
						$feedback .= get_option( 'admin_email' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1144
					} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1145
						$feedback .= $email;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1146
					}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1147
					$feedback = '<br />' . sprintf( __( 'Your backup has been emailed to %s', 'wp-db-backup' ), $feedback );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1148
					break;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1149
			}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1150
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1151
			$feedback .= '</p></div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1152
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1153
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1154
		// security check
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1155
		$this->wp_secure();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1156
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1157
		if ( count( $this->errors ) ) {
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1158
			$feedback .= '<div class="wp-db-backup-updated error inline"><p><strong>' . __( 'The following errors were reported:', 'wp-db-backup' ) . '</strong></p>';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1159
			$feedback .= '<p>' . $this->error_display( 'main', false ) . '</p>';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1160
			$feedback .= '</p></div>';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1161
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1162
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1163
		// did we just save options for wp-cron?
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1164
		if ( ( function_exists( 'wp_schedule_event' ) || function_exists( 'wp_cron_init' ) ) && isset( $_POST['wp_cron_backup_options'] ) ) :
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1165
			check_admin_referer( $this->referer_check_key );
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1166
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1167
			do_action( 'wp_db_b_update_cron_options' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1168
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1169
			if ( function_exists( 'wp_schedule_event' ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1170
				wp_clear_scheduled_hook( 'wp_db_backup_cron' ); // unschedule previous
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1171
				$scheds   = (array) wp_get_schedules();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1172
				$name     = sanitize_text_field( strval( $_POST['wp_cron_schedule'] ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1173
				$interval = ( isset( $scheds[ $name ]['interval'] ) ) ? (int) $scheds[ $name ]['interval'] : 0;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1174
				update_option( 'wp_cron_backup_schedule', $name, false );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1175
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1176
				if ( 0 !== $interval ) {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1177
					wp_schedule_event( time() + $interval, $name, 'wp_db_backup_cron' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1178
				}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1179
			} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1180
				update_option( 'wp_cron_backup_schedule', intval( $_POST['cron_schedule'] ), false );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1181
			}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1182
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1183
			update_option( 'wp_cron_backup_tables', $this->get_submitted_tables_to_backup_in_cron() );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1184
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1185
			if ( is_email( $_POST['cron_backup_recipient'] ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1186
				update_option( 'wp_cron_backup_recipient', sanitize_text_field( $_POST['cron_backup_recipient'] ), false );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1187
			}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1188
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1189
			$feedback .= '<div class="wp-db-backup-updated wp-db-backup-schedule-updated"><p>' . __( 'Scheduled Backup Options Saved!', 'wp-db-backup' ) . '</p></div>';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1190
		endif;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1191
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1192
		$other_tables = array();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1193
		$also_backup  = array();
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1194
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1195
		// Get complete db table list
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1196
		$all_tables = $this->get_tables();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1197
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1198
		// Get list of WP tables that actually exist in this DB (for 1.6 compat!)
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1199
		$wp_backup_default_tables = array_intersect( $all_tables, $this->core_table_names );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1200
		// Get list of non-WP tables
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1201
		$other_tables = array_diff( $all_tables, $wp_backup_default_tables );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1202
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1203
		if ( ! $this->wp_secure() ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1204
			return;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1205
		}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1206
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1207
		// Give the new dirs the same perms as wp-content.
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1208
		//      $stat = stat( ABSPATH . 'wp-content' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1209
		//      $dir_perms = $stat['mode'] & 0000777; // Get the permission bits.
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1210
		$dir_perms = '0777';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1211
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1212
		// the file doesn't exist and can't create it
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1213
		if ( ! file_exists( $this->backup_dir ) && ! @mkdir( $this->backup_dir ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1214
			?>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1215
			<div class="wp-db-backup-updated error inline">
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1216
				<p><?php _e( 'WARNING: Your backup directory does <strong>NOT</strong> exist, and we cannot create it.', 'wp-db-backup' ); ?></p>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1217
				<p><?php printf( __( 'Using your FTP client, try to create the backup directory yourself: %s', 'wp-db-backup' ), '<code>' . $this->backup_dir . '</code>' ); ?></p>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1218
			</div>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1219
			<?php
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1220
			// not writable due to write permissions
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1221
			$whoops = true;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1222
		} elseif ( ! is_writable( $this->backup_dir ) && ! @chmod( $this->backup_dir, $dir_perms ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1223
			?>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1224
			<div class="wp-db-backup-updated error inline">
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1225
				<p><?php _e( 'WARNING: Your backup directory is <strong>NOT</strong> writable! We cannot create the backup files.', 'wp-db-backup' ); ?></p>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1226
				<p><?php printf( __( 'Using your FTP client, try to set the backup directory&rsquo;s write permission to %1$s or %2$s: %3$s', 'wp-db-backup' ), '<code>777</code>', '<code>a+w</code>', '<code>' . $this->backup_dir . '</code>' ); ?></p>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1227
			</div>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1228
			<?php
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1229
			$whoops = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1230
		} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1231
			$this->fp = $this->open( $this->backup_dir . 'test' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1232
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1233
			if ( $this->fp ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1234
				$this->close( $this->fp );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1235
				@unlink( $this->backup_dir . 'test' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1236
				// the directory is not writable probably due to safe mode
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1237
			} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1238
				?>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1239
				<div class="wp-db-backup-updated error inline">
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1240
					<p><?php _e( 'WARNING: Your backup directory is <strong>NOT</strong> writable! We cannot create the backup files.', 'wp-db-backup' ); ?></p>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1241
					<?php
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1242
					if ( ini_get( 'safe_mode' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1243
						?>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1244
						<p><?php _e( 'This problem seems to be caused by your server&rsquo;s <code>safe_mode</code> file ownership restrictions, which limit what files web applications like WordPress can create.', 'wp-db-backup' ); ?></p>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1245
						<?php
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1246
					}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1247
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1248
					printf( __( 'You can try to correct this problem by using your FTP client to delete and then re-create the backup directory: %s', 'wp-db-backup' ), '<code>' . $this->backup_dir . '</code>' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1249
					?>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1250
				</div>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1251
				<?php
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1252
				$whoops = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1253
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1254
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1255
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1256
		if ( ! file_exists( $this->backup_dir . 'index.php' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1257
			@touch( $this->backup_dir . 'index.php' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1258
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1259
		?>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1260
		<div id="wpdb" class='wrap'>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1261
			<div class="header">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1262
				<img src="<?php echo plugin_dir_url( __FILE__ ) . 'assets/logo.svg'; ?>">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1263
				<h2 class="title"><?php _e( 'Database Backup for WordPress', 'wp-db-backup' ); ?></h2>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1264
			</div>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1265
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1266
			<div class="subnav">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1267
				<ul>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1268
					<li>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1269
						<a class="active" href="#backup" data-type="backup">Backup Now</a>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1270
					</li>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1271
					<li>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1272
						<a href="#schedule" data-type="schedule">Scheduled Backup</a>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1273
					</li>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1274
				</ul>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1275
			</div>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1276
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1277
			<div class="content-wrap">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1278
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1279
            <?php
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1280
            if ( '' != $feedback ) {
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1281
                echo $feedback;
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1282
            }
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1283
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1284
            if ( isset( $_POST['do_backup'] ) && $_POST['do_backup'] === 'fragments' ) {
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1285
                $this->build_backup_script();
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1286
            }
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1287
            ?>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1288
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1289
			<form method="post" action="">
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1290
			<?php
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1291
			if ( function_exists( 'wp_nonce_field' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1292
				wp_nonce_field( $this->referer_check_key );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1293
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1294
			?>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1295
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1296
			<fieldset class="options backup-content">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1297
				<legend><?php _e( 'Tables', 'wp-db-backup' ); ?></legend>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1298
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1299
				<div class="panel-heading">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1300
					<h3>Tables</h3>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1301
				</div>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1302
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1303
			<div class="panel-content tables">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1304
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1305
			<div class="tables-list core-tables alternate">
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1306
				<div class="instructions-container">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1307
				  <h4><?php _e( 'Core WordPress tables to backup', 'wp-db-backup' ); ?></h4>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1308
		  	</div>
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1309
				<ul>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1310
				<?php
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1311
					$excs = (array) get_option( 'wp_db_backup_excs' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1312
					foreach ( $wp_backup_default_tables as $table ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1313
						if ( $table == $wpdb->comments ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1314
							$checked = ( isset( $excs['spam'] ) && is_array( $excs['spam'] ) && in_array( $table, $excs['spam'] ) ) ? ' checked=\'checked\'' : '';
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1315
							echo "<li><input type='hidden' name='core_tables[]' value='$table' /><code>$table</code> <span class='instructions'><label for='exclude-spam'><input type='checkbox' id='exclude-spam' name='exclude-spam[]' value='$table' $checked /> " . __( 'Exclude spam comments', 'wp-db-backup' ) . '</label></span></li>';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1316
						} elseif ( function_exists( 'wp_get_post_revisions' ) && $table == $wpdb->posts ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1317
							$checked = ( isset( $excs['revisions'] ) && is_array( $excs['revisions'] ) && in_array( $table, $excs['revisions'] ) ) ? ' checked=\'checked\'' : '';
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1318
							echo "<li><input type='hidden' name='core_tables[]' value='$table' /><code>$table</code> <span class='instructions'><label for='exclude-revisions'><input type='checkbox'id='exclude-revisions' name='exclude-revisions[]' value='$table' $checked /> " . __( 'Exclude post revisions', 'wp-db-backup' ) . '</label></span></li>';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1319
						} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1320
							echo "<li><input type='hidden' name='core_tables[]' value='$table' /><code>$table</code></li>";
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1321
						}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1322
					}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1323
				?>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1324
				</ul>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1325
			</div>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1326
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1327
			<div class="tables-list extra-tables" id="extra-tables-list">
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1328
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1329
			<?php
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1330
			if ( count( $other_tables ) > 0 ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1331
				?>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1332
                <div class="instructions-container">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1333
				    <h4><?php _e( 'Additional tables to backup', 'wp-db-backup' ); ?></h4>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1334
                    <p hidden><?php _e( 'Hold <code class="shift-key">SHIFT</code> to toggle multiple checkboxes', 'wp-db-backup' ); ?></p>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1335
                </div>
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1336
				<ul>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1337
					<?php
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1338
					foreach ( $other_tables as $table ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1339
						?>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1340
						<li><label><input type="checkbox" name="other_tables[]" value="<?php echo $table; ?>" /> <code><?php echo $table; ?></code></label>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1341
						<?php
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1342
					}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1343
					?>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1344
				</ul>
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1345
				<?php
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1346
			}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1347
			?>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1348
			</div>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1349
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1350
		</div><!--panel-content-->
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1351
		</fieldset>
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1352
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1353
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1354
		<!--BACKUP PANEL-->
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1355
		<fieldset class="options backup-content">
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1356
			<legend><?php _e( 'Backup Options', 'wp-db-backup' ); ?></legend>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1357
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1358
			<div class="panel-heading">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1359
				<h3>Backup Options</h3>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1360
			</div>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1361
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1362
			<div class="panel-content backup">
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1363
			<ul>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1364
			<li><label for="do_download">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1365
				<input type="radio" checked="checked" id="do_download" name="deliver" value="http" style="border:none;" />
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1366
				<?php _e( 'Download', 'wp-db-backup' ); ?>
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1367
			</label></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1368
			<li><label for="do_email">
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1369
				<input type="radio" name="deliver" id="do_email" value="smtp" style="border:none;" />
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1370
				<?php
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1371
				$backup_recip = get_option( 'wpdb_backup_recip' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1372
				if ( empty( $backup_recip ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1373
					$backup_recip = get_option( 'admin_email' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1374
				}
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1375
				_e( 'Send to email address', 'wp-db-backup' );
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1376
				?>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1377
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1378
				<div class="email">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1379
				<label for="backup_recipient">Email Address</label>
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1380
				<input type="text" id="backup_recipient" name="backup_recipient" size="20" value="<?php echo esc_attr( $backup_recip ); ?>" />
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1381
			</div>
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1382
			</label></li>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1383
			</ul>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1384
			<?php if ( ! $whoops ) : ?>
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1385
			<input type="hidden" name="do_backup" id="do_backup" value="backup" />
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1386
			<p class="submit">
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1387
				<input type="submit" name="submit" onclick="document.getElementById('do_backup').value='fragments';" value="<?php _e( 'Backup now', 'wp-db-backup' ); ?>" />
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1388
			</p>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1389
			<?php else : ?>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1390
				<div class="wp-db-backup-updated error inline"><p><?php _e( 'WARNING: Your backup directory is <strong>NOT</strong> writable!', 'wp-db-backup' ); ?></p></div>
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1391
			<?php endif; // ! whoops ?>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1392
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1393
		</div><!--panel-content-->
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1394
		</fieldset>
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1395
		<?php do_action( 'wp_db_b_backup_opts' ); ?>
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1396
		</form>
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1397
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1398
		<?php
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1399
		// this stuff only displays if some sort of wp-cron is available
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1400
		$cron     = ( function_exists( 'wp_schedule_event' ) ) ? true : false; // wp-cron in WP 2.1+
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1401
		$cron_old = ( function_exists( 'wp_cron_init' ) && ! $cron ) ? true : false; // wp-cron plugin by Skippy
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1402
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1403
		if ( $cron_old || $cron ) :
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1404
			echo '<fieldset class="options schedule-content" hidden><legend>' . __( 'Scheduled Backup', 'wp-db-backup' ) . '</legend>';
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1405
			echo '<div class="panel-heading"><h3>Scheduled Backup</h3></div>';
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1406
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1407
			echo '<div class="panel-content scheduled-backup">';
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1408
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1409
			$datetime = get_option( 'date_format' ) . ' ' . get_option( 'time_format' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1410
			if ( $cron ) :
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1411
				$next_cron = wp_next_scheduled( 'wp_db_backup_cron' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1412
				if ( ! empty( $next_cron ) ) :
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1413
					?>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1414
					<p id="backup-time-wrap">
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1415
					<?php printf( __( '<strong>Next Backup:</strong> %s', 'wp-db-backup' ), '<span id="next-backup-time">' . gmdate( $datetime, $next_cron + ( get_option( 'gmt_offset' ) * 3600 ) ) . '</span>' ); ?>
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1416
					</p>
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1417
					<?php
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1418
				endif;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1419
			elseif ( $cron_old ) :
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1420
				?>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1421
				<p><?php printf( __( 'Last WP-Cron Daily Execution: %s', 'wp-db-backup' ), gmdate( $datetime, get_option( 'wp_cron_daily_lastrun' ) + ( get_option( 'gmt_offset' ) * 3600 ) ) ); ?><br />
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1422
				<?php
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1423
				printf( __( 'Next WP-Cron Daily Execution: %s', 'wp-db-backup' ), gmdate( $datetime, ( get_option( 'wp_cron_daily_lastrun' ) + ( get_option( 'gmt_offset' ) * 3600 ) + 86400 ) ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1424
				?>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1425
				</p>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1426
				<?php
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1427
			endif;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1428
			?>
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1429
			<form method="post" action="">
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1430
			<?php
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1431
			if ( function_exists( 'wp_nonce_field' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1432
				wp_nonce_field( $this->referer_check_key );}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1433
			?>
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1434
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1435
			<div class="panel-content row">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1436
			<div class="tables-list scheduled">
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1437
			<h4><?php _e( 'Schedule', 'wp-db-backup' ); ?></h4>
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1438
			<?php
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1439
			if ( $cron_old ) :
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1440
				$wp_cron_backup_schedule = get_option( 'wp_cron_backup_schedule' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1441
				$schedule                = array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1442
					0 => __( 'None', 'wp-db-backup' ),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1443
					1 => __( 'Daily', 'wp-db-backup' ),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1444
				);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1445
				foreach ( $schedule as $value => $name ) {
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1446
					echo '<input type="radio" style="border:none;" name="cron_schedule"';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1447
					if ( $wp_cron_backup_schedule == $value ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1448
						echo ' checked="checked" ';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1449
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1450
					echo 'value="' . $value . '" /> ' . $name;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1451
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1452
			elseif ( $cron ) :
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1453
				echo apply_filters( 'wp_db_b_schedule_choices', wp_get_schedules() );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1454
			endif;
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1455
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1456
			$cron_recipient = get_option( 'wp_cron_backup_recipient' );
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1457
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1458
			if ( ! is_email( $cron_recipient ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1459
				$cron_recipient = get_option( 'admin_email' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1460
			}
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1461
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1462
			$cron_recipient_input = '<div class="email"><label for="cron_backup_recipient">' . __( 'Email backup to', 'wp-db-backup' ) . ' <input type="text" name="cron_backup_recipient" id="cron_backup_recipient" size="20" value="' . $cron_recipient . '" /></div></label>';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1463
			echo apply_filters( 'wp_db_b_cron_recipient_input', $cron_recipient_input );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1464
			echo '</div>';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1465
			$cron_tables = get_option( 'wp_cron_backup_tables' );
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1466
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1467
			if ( ! is_array( $cron_tables ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1468
				$cron_tables = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1469
			}
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1470
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1471
			if ( count( $other_tables ) > 0 ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1472
				echo '<div class="tables-list alternate" id="include-tables-list">';
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1473
                echo '<div class="instructions-container">';
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1474
				echo '<h4>' . __( 'Tables to include in the scheduled backup:', 'wp-db-backup' ) . '</h4>';
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1475
                if ( count( $other_tables ) > 1 ) {
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1476
                    echo '<p>' . __( 'Hold <code class="shift-key">SHIFT</code> to toggle multiple checkboxes', 'wp-db-backup' ) . '</p>';
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1477
                }
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1478
                echo '</div><ul>';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1479
				foreach ( $other_tables as $table ) {
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1480
					echo '<li><label><input type="checkbox" ';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1481
					if ( in_array( $table, $cron_tables ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1482
						echo 'checked="checked" ';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1483
					}
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1484
					echo "name='wp_cron_backup_tables[]' value='{$table}' /> <code>{$table}</code></label></li>";
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1485
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1486
				echo '</ul></div>';
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1487
				echo '</div><!-- panel-content .row -->';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1488
			}
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1489
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1490
			echo '<p class="submit"><input type="submit" name="submit" value="' . __( 'Save schedule', 'wp-db-backup' ) . '" /></p>';
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1491
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1492
			echo '<input type="hidden" name="wp_cron_backup_options" value="SET" /></form>';
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1493
			echo '</div><!-- .panel-content scheduled-backup -->';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1494
			echo '</fieldset>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1495
		endif; // end of wp_cron (legacy) section
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1496
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1497
		echo '</div><!-- .content-wrap -->';
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1498
		echo '</div><!-- .wrap -->';
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1499
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1500
	} // end wp_backup_menu()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1501
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1502
	function get_sched() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1503
		$options = array_keys( (array) wp_get_schedules() );
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1504
		$freq    = get_option( 'wp_cron_backup_schedule' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1505
		$freq    = ( in_array( $freq, $options ) ) ? $freq : 'never';
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1506
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1507
		return $freq;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1508
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1509
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1510
	function schedule_choices( $schedule ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1511
		// create the cron menu based on the schedule
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1512
		$wp_cron_backup_schedule = $this->get_sched();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1513
		$next_cron               = wp_next_scheduled( 'wp_db_backup_cron' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1514
		$wp_cron_backup_schedule = ( empty( $next_cron ) ) ? 'never' : $wp_cron_backup_schedule;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1515
		$sort                    = array();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1516
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1517
		foreach ( (array) $schedule as $key => $value ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1518
			$sort[ $key ] = $value['interval'];
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1519
		}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1520
		asort( $sort );
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1521
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1522
		$schedule_sorted = array();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1523
		foreach ( (array) $sort as $key => $value ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1524
			$schedule_sorted[ $key ] = $schedule[ $key ];
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1525
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1526
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1527
		$menu     = '<ul>';
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1528
		$schedule = array_merge(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1529
			array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1530
				'never' => array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1531
					'interval' => 0,
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1532
					'display'  => __( 'Never', 'wp-db-backup' ),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1533
				),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1534
			),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1535
			(array) $schedule_sorted
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1536
		);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1537
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1538
		foreach ( $schedule as $name => $settings ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1539
			$interval = (int) $settings['interval'];
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1540
			if ( 0 == $interval && ! 'never' == $name ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1541
				continue;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1542
			}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1543
			$display = ( ! '' == $settings['display'] ) ? $settings['display'] : sprintf( __( '%s seconds', 'wp-db-backup' ), $interval );
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1544
			$menu   .= "<li><label for='$name'><input type='radio' name='wp_cron_schedule' style='border:none;' ";
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1545
			if ( $wp_cron_backup_schedule == $name ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1546
				$menu .= " checked='checked' ";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1547
			}
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1548
			$menu .= "id='$name' value='$name' />$display</label></li>";
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1549
		}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1550
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1551
		$menu .= '</ul>';
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1552
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1553
		return $menu;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1554
	} // end schedule_choices()
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1555
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1556
	function wp_cron_daily() {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1557
		// for legacy cron plugin
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1558
		$schedule = intval( get_option( 'wp_cron_backup_schedule' ) );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1559
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1560
		// If scheduled backup is disabled
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1561
		if ( 0 == $schedule ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1562
			return;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1563
		} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1564
			return $this->cron_backup();
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1565
		}
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1566
	}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1567
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1568
	function cron_backup() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1569
		global $table_prefix, $wpdb;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1570
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1571
		$all_tables   = $this->get_tables();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1572
		$core_tables  = array_intersect( $all_tables, $this->core_table_names );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1573
		$other_tables = get_option( 'wp_cron_backup_tables' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1574
		$recipient    = get_option( 'wp_cron_backup_recipient' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1575
		$backup_file  = $this->db_backup( $core_tables, $other_tables );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1576
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1577
		if ( false !== $backup_file ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1578
			return $this->deliver_backup( $backup_file, 'smtp', $recipient, 'main' );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1579
		} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1580
			return false;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1581
		}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1582
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1583
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1584
	function add_sched_options( $sched ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1585
		$sched['weekly'] = array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1586
			'interval' => 604800,
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1587
			'display'  => __( 'Once Weekly', 'wp-db-backup' ),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1588
		);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1589
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1590
		return $sched;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1591
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1592
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1593
	/**
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1594
	 * Checks that WordPress has sufficient security measures
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1595
	 * @param string $kind
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1596
	 * @return bool
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1597
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1598
	function wp_secure( $kind = 'warn', $loc = 'main' ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1599
		global $wp_version;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1600
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1601
		if ( function_exists( 'wp_verify_nonce' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1602
			return true;
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1603
		} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1604
			$this->error(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1605
				array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1606
					'kind' => $kind,
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1607
					'loc'  => $loc,
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1608
					'msg'  => sprintf(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1609
						__(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1610
							'Your WordPress version, %1$1s, lacks important security features without which it is unsafe to use the WP-DB-Backup plugin.  Hence, this plugin is automatically disabled.  Please consider <a href="%2$2s">upgrading WordPress</a> to a more recent version.',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1611
							'wp-db-backup'
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1612
						),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1613
						$wp_version,
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1614
						'http://wordpress.org/download/'
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1615
					),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1616
				)
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1617
			);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1618
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1619
			return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1620
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1621
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1622
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1623
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1624
	 * Checks that the user has sufficient permission to backup
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1625
	 * @param string $loc
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1626
	 * @return bool
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1627
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1628
	function can_user_backup( $loc = 'main' ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1629
		$can = false;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1630
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1631
		// make sure WPMU users are site admins, not ordinary admins
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1632
		if ( function_exists( 'is_site_admin' ) && ! is_site_admin() ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1633
			return false;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1634
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1635
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1636
		if ( ( $this->wp_secure( 'fatal', $loc ) ) && current_user_can( 'import' ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1637
			$can = $this->verify_nonce( $_REQUEST['_wpnonce'], $this->referer_check_key, $loc );
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1638
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1639
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1640
		if ( false == $can ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1641
			$this->error(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1642
				array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1643
					'loc'  => $loc,
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1644
					'kind' => 'fatal',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1645
					'msg'  => __(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1646
						'You are not allowed to perform backups.',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1647
						'wp-db-backup'
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1648
					),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1649
				)
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1650
			);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1651
		}
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1652
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1653
		return $can;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1654
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1655
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1656
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1657
	 * Verify that the nonce is legitimate
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1658
	 * @param string $rec   the nonce received
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1659
	 * @param string $nonce what the nonce should be
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1660
	 * @param string $loc   the location of the check
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1661
	 * @return bool
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1662
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1663
	function verify_nonce( $rec = '', $nonce = 'X', $loc = 'main' ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1664
		if ( wp_verify_nonce( $rec, $nonce ) ) {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1665
			return true;
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1666
		} else {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1667
			$this->error(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1668
				array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1669
					'loc'  => $loc,
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1670
					'kind' => 'fatal',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1671
					'msg'  => sprintf(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1672
						__(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1673
							'There appears to be an unauthorized attempt from this site to access your database located at %1s.  The attempt has been halted.',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1674
							'wp-db-backup'
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1675
						),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1676
						get_option( 'home' )
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1677
					),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1678
				)
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1679
			);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1680
		}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1681
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1682
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1683
	/**
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1684
	 * Check whether a file to be downloaded is
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1685
	 * surreptitiously trying to download a non-backup file
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1686
	 * @param string $file
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1687
	 * @return null
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1688
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1689
	function validate_file( $file ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1690
		if ( ( false !== strpos( $file, '..' ) ) || ( false !== strpos( $file, './' ) ) || ( ':' == substr( $file, 1, 1 ) ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1691
			$this->error(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1692
				array(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1693
					'kind' => 'fatal',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1694
					'loc'  => 'frame',
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1695
					'msg'  => __(
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1696
						"Cheatin' uh ?",
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1697
						'wp-db-backup'
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1698
					),
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1699
				)
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1700
			);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1701
		}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1702
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1703
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1704
	/**
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1705
	 * Get the sitename by query $_SERVER['SERVER_NAME'].
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1706
	 * If it is not set, then use site_url() instead
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1707
	 * @return string
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1708
	 */
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1709
	function get_sitename() {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1710
		$sitename = '';
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1711
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1712
		if ( isset( $_SERVER['SERVER_NAME'] ) ) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1713
			$sitename = strtolower( sanitize_text_field( $_SERVER['SERVER_NAME'] ) );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1714
		} else {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1715
			if ( function_exists( 'site_url' ) ) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1716
				// site_url() was added since 3.0.0
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1717
				// force http scheme so we can easily get rid of leading http://
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1718
				$sitename = strtolower( site_url( '', 'http' ) );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1719
				$sitename = substr( $sitename, 7 );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1720
			} else {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1721
				// try to be compatible with versions < 3.0.0
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1722
				$sitename = strtolower( get_option( 'siteurl' ) );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1723
				if ( substr( $sitename, 0, 7 ) == 'http://' ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1724
					$sitename = substr( $sitename, 7 );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1725
				} elseif ( substr( $sitename, 0, 8 ) == 'https://' ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1726
					$sitename = substr( $sitename, 8 );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1727
				}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1728
			}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1729
		}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1730
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1731
		// get rid of www
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1732
		if ( substr( $sitename, 0, 4 ) == 'www.' ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1733
			$sitename = substr( $sitename, 4 );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1734
		}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1735
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1736
		return $sitename;
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1737
	}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1738
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1739
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1740
	/**
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1741
	 * Sanitize an array of content.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1742
	 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1743
	 * @param array $array_of_data
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1744
	 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1745
	 * @return array
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1746
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1747
	function sanitize_array( $array_to_sanitize ) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1748
		$sanitized = array();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1749
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1750
		foreach ( $array_to_sanitize as $key => $value ) {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1751
			$sanitized[ $key ] = sanitize_text_field( $value );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1752
		}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1753
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1754
		return $sanitized;
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1755
	}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1756
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1757
	/**
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1758
	 * Get a sanitized array of submitted $_POST values
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1759
	 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1760
	 * @param string $post_key The key of the $_POST array.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1761
	 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1762
	 * @return array
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1763
	 */
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1764
	function get_post_data_array( $post_key ) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1765
		$sanitized_data = array();
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1766
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1767
		if ( isset( $_POST[ $post_key ] ) ) {
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1768
			$sanitized_data = (array) $_POST[ $post_key ];
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1769
		}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1770
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1771
		return $this->sanitize_array( $sanitized_data );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1772
	}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1773
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1774
	/**
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1775
	 * Get the revisions to exclude.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1776
	 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1777
	 * @return array
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1778
	 */
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1779
	function get_revisions_to_exclude() {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1780
		return $this->get_post_data_array( 'exclude-revisions' );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1781
	}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1782
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1783
	/**
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1784
	 * Get the spam to exclude.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1785
	 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1786
	 * @return array
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1787
	 */
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1788
	function get_spam_to_exclude() {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1789
		return $this->get_post_data_array( 'exclude-spam' );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1790
	}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1791
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1792
	/**
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1793
	 * Get the submitted tables to backup.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1794
	 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1795
	 * @return array
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1796
	 */
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1797
	function get_submitted_tables_to_backup_in_cron() {
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1798
		return $this->get_post_data_array( 'wp_cron_backup_tables' );
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1799
	}
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1800
19
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1801
	/**
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1802
	 * Get an array of all tables on the current WP install.
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1803
	 *
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1804
	 * @return array
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1805
	 */
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1806
	function get_tables() {
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1807
		global $wpdb;
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1808
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1809
		$all_tables = $wpdb->get_results( 'SHOW TABLES', ARRAY_N );
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1810
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1811
		return array_map(
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1812
			function( $a ) {
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1813
				return $a[0];
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1814
			},
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1815
			$all_tables
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1816
		);
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1817
	}
3d72ae0968f4 upgrade wordpress to 6.0.2
ymh <ymh.work@gmail.com>
parents: 18
diff changeset
  1818
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1819
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1820
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1821
function wpdbBackup_init() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1822
	global $mywpdbbackup;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
  1823
	$mywpdbbackup = new wpdbBackup();
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1824
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1825
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
  1826
add_action( 'plugins_loaded', 'wpdbBackup_init' );