schedules = wp_get_schedules();
}
/**
* Data entry form to add or update a data backup
*
* @param string $action Add for new export; Update to edit existing export.
*/
public function create_export( $action ) {
$wpda_db_options_activated = get_option( 'wpda_db_options_activated' );
if ( ! is_array( $wpda_db_options_activated ) || 0 === count( $wpda_db_options_activated ) ) { // phpcs:ignore -- 8.1 proof
echo '
';
esc_html_e( 'You need to define and activate at least one storage device in Data Backup Settings to use this feature.', 'wp-data-access' );
echo '
';
echo '» ';
esc_html_e( 'Define and/or activate a storage device', 'wp-data-access' );
echo '';
wp_die();
}
if ( isset( $_REQUEST['wpdaschema_name'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
$schema_name = sanitize_text_field( wp_unslash( $_REQUEST['wpdaschema_name'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
} else {
$schema_name = '';
}
$device_arg = '';
if ( 'update' === $action ) {
if ( isset( $_REQUEST['schedule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
$schedule = sanitize_text_field( wp_unslash( $_REQUEST['schedule'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
if ( 'wpda_data_backup' !== $schedule ) {
wp_die( esc_attr__( 'ERROR: Wrong arguments', 'wp-data-access' ) );
}
} else {
wp_die( esc_attr__( 'ERROR: Wrong arguments', 'wp-data-access' ) );
}
if ( isset( $_REQUEST['schedule_args'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
$backupid = sanitize_text_field( wp_unslash( $_REQUEST['schedule_args'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
} else {
wp_die( esc_attr__( 'ERROR: Wrong arguments', 'wp-data-access' ) );
}
$data_backups = get_option( 'wpda_data_backup_option' );
$data_backup_found = false;
foreach ( $data_backups as $data_backup ) {
if ( $data_backup['id'] === $backupid ) {
$data_backup_tables = $data_backup['tables'];
$keep = $data_backup['keep'];
$schema_name = isset( $data_backup['schema_name'] ) ? $data_backup['schema_name'] : '';
$data_backup_found = true;
}
}
if ( ! $data_backup_found ) {
wp_die( esc_attr__( 'ERROR: Wrong arguments', 'wp-data-access' ) );
}
if ( isset( $_REQUEST['interval'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
$interval = sanitize_text_field( wp_unslash( $_REQUEST['interval'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
}
if ( isset( $_REQUEST['device'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
$device_arg = sanitize_text_field( wp_unslash( $_REQUEST['device'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
}
} else {
$backupid = '';
}
$table_list = WPDA_Dictionary_Lists::get_tables( false, $schema_name );
?>
| '; echo ' | '; echo ' | ' . esc_html__( 'Hook Name', 'wp-data-access' ) . ' | '; echo '' . esc_html__( 'Arguments', 'wp-data-access' ) . ' | '; echo '' . esc_html__( 'Interval', 'wp-data-access' ) . ' | '; echo '' . esc_html__( 'Next Execution', 'wp-data-access' ) . ' | '; echo '' . esc_html__( 'Backup Location', 'wp-data-access' ) . ' | '; echo '' . esc_html__( 'Files Kept', 'wp-data-access' ) . ' | '; echo '' . esc_html__( 'Status', 'wp-data-access' ) . ' | '; echo '|||
|---|---|---|---|---|---|---|---|---|---|---|---|
| '; echo ''; echo ' | '; echo ''; echo ''; echo ' | '; } else { echo ''; echo ' | '; echo ''; echo ' | '; } echo ''; echo esc_attr( $key ); echo ' | '; foreach ( $value as $value_key => $value_value ) { echo ''; if ( is_array ($value_value['args']) && 0 < count( $value_value['args'] ) ) { // phpcs:ignore -- 8.1 proof foreach ( $value_value['args'] as $arg ) { if ( reset( $value_value['args'] ) !== $arg ) { // phpcs:ignore -- 8.1 proof echo ','; } echo esc_attr( $arg ); } } else { echo '-'; } echo ' | '; echo ''; if ( isset( $this->schedules[ $value_value['schedule'] ]['display'] ) ) { echo esc_attr( $this->schedules[ $value_value['schedule'] ]['display'] ); if ( isset( $value_value['interval'] ) ) { echo ' (' . esc_attr( $value_value['interval'] ) . ' sec)'; } } echo ' | '; echo ''; $next = wp_next_scheduled( $key, $value_value['args'] ); echo esc_attr( get_date_from_gmt( gmdate( 'Y-m-d H:i:s', $next ) ) ); echo ' | '; echo ''; if ( 'wpda_data_backup' === $key ) { if ( isset( $data_backups_device[ $value_value['args'][0] ] ) ) { echo esc_attr( $data_backups_device[ $value_value['args'][0] ] ); } } echo ' | '; echo ''; if ( 'wpda_data_backup' === $key ) { if ( isset( $data_backups_keep[ $value_value['args'][0] ] ) ) { echo esc_attr( $data_backups_keep[ $value_value['args'][0] ] ); } } echo ' | '; echo ''; if ( 'wpda_data_backup' === $key ) { echo ''; } echo ' | '; echo ''; if ( 'wpda_data_backup' === $key ) { $resultset = $wpdb->get_results( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- plugin table $wpdb->prepare( " SELECT `log_time`, `log_type`, `log_msg` FROM `{$wpdb->prefix}wpda_logging` WHERE `log_id` = %s ORDER BY `log_time` desc limit 1", array( $value_value['args'][0], ) ), 'ARRAY_A' ); // db call ok; no-cache ok. if ( 1 === $wpdb->num_rows ) { echo esc_attr( $resultset[0]['log_type'] ) . ': ' . esc_attr( $resultset[0]['log_msg'] ) . ' (' . esc_attr( $resultset[0]['log_time'] ) . ')'; } else { esc_html_e( 'No logging information found', 'wp-data-access' ); } } echo ' | '; } echo '
| ' . esc_attr( $no_data_backup_events ) . ' data backup job' . ( 1 < $no_data_backup_events ? 's' : '' ) . ' scheduled | '; } else { echo '
| ' . esc_html__( 'No data backup jobs found', 'wp-data-access' ) . ' | '; } echo ''; echo ''; echo ' | '; echo '