PATH:
home
/
thebhoeo
/
.trash
/
backwpup
/
inc
<?php use WPMedia\BackWPup\Plugin\Plugin; class BackWPup_Page_Onboarding { /** * The type of job for files only backup. * * @var array */ public static $type_job_files = [ 'FILE', 'WPPLUGIN' ]; /** * The type of job for database only backup. * * @var array */ public static $type_job_database = [ 'DBDUMP' ]; /** * Get onboarding job information. * * @param string $job_id The onboarding job id. * @param string $job_frequency The job frequency value, could be cron expression. * * @return string */ private function get_onboarding_job_cron( string $job_id, string $job_frequency ): string { $get_job_cron = BackWPup_Option::get( $job_id, 'cron' ); if ( is_null( $get_job_cron ) ) { $get_job_cron = BackWPup_Cron::get_basic_cron_expression( $job_frequency ); } return $get_job_cron; } /** * Save post form. * TODO Refactor this method using a Job class. */ public static function save_post_form() { $sanitized_data = self::sanitize_post_data(); $default_values = BackWPup_Option::defaults_job(); $job_types = BackWPup::get_job_types(); $default_id_job_files = get_site_option( Plugin::FILES_JOB_ID, false ); $default_id_job_database = get_site_option( Plugin::DATABASE_JOB_ID, false ); $first_backup_job_id = get_site_option( Plugin::FIRST_JOB_ID, false ); $first_job_frequency = "job_{$default_id_job_files}_frequency"; $second_job_frequency = "job_{$default_id_job_database}_frequency"; $files_job_status = isset( $sanitized_data[ $first_job_frequency ] ); $database_job_status = isset( $sanitized_data[ $second_job_frequency ] ); $files_job_frequency = $sanitized_data[ $first_job_frequency ] ?? 'daily'; $database_job_frequency = $sanitized_data[ $second_job_frequency ] ?? 'daily'; $onboarding_class = ( new self() ); $files_cron_value = $onboarding_class->get_onboarding_job_cron( $default_id_job_files, $files_job_frequency ); $db_cron_value = $onboarding_class->get_onboarding_job_cron( $default_id_job_database, $database_job_frequency ); $first_backup_job_data = BackWPup_Option::get_job( $first_backup_job_id ); if ( ! $first_backup_job_data ) { $first_backup_job_data = []; } // The 2 base jobs. $job_frequency = [ 'files' => array_merge( $first_backup_job_data, [ 'job_id' => $default_id_job_files, 'frequency' => $files_job_frequency, 'type' => BackWPup_JobTypes::$type_job_files, 'activ' => $files_job_status, 'cron' => $files_cron_value, 'tempjob' => false, ] ), 'database' => array_merge( $first_backup_job_data, [ 'job_id' => $default_id_job_database, 'frequency' => $database_job_frequency, 'type' => BackWPup_JobTypes::$type_job_database, 'activ' => $database_job_status, 'cron' => $db_cron_value, 'tempjob' => false, ] ), ]; $mixed_data_type = array_filter( array_column( $job_frequency, 'activ' ) ); if ( count( $mixed_data_type ) === count( $job_frequency ) && $files_cron_value === $db_cron_value ) { $mixed_job_data = array_merge( $first_backup_job_data, [ 'job_id' => $default_id_job_files, 'frequency' => $files_job_frequency, 'type' => BackWPup_JobTypes::$type_job_both, 'activ' => true, 'cron' => $files_cron_value, 'tempjob' => false, ] ); $job_frequency['both'] = $mixed_job_data; unset( $job_frequency['files'] ); unset( $job_frequency['database'] ); } /** * Save backwpup options based on selected type during onboarding. * * @param array $job_frequency The job frequency based on user selected option during onboarding. * @param array $default_values Backup default values. */ do_action( 'backwpup_onboarding_save_option', $job_frequency, $default_values ); foreach ( $job_frequency as $key => $value ) { // We clone the first backup job data to ensure we have the same values for all jobs. foreach ( $value as $sub_key => $sub_value ) { if ( 'job_id' === $sub_key || 'jobid' === $sub_key || 'archivename' === $sub_key || 'name' === $sub_key ) { // Skip job_id,archive name and name fields. continue; } BackWPup_Option::update( $value['job_id'], $sub_key, $sub_value ); } // Cron part. if ( $value['cron'] ) { BackWPup_Option::update( $value['job_id'], 'cron', $value['cron'] ); } // Update cron expression with default only if default activation values are still set. if ( '0 0 1 * *' === BackWPup_Option::get( $value['job_id'], 'cron' ) && 'monthly' === BackWPup_Option::get( $value['job_id'], 'frequency' ) ) { BackWPup_Option::update( $value['job_id'], 'cron', BackWPup_Cron::get_basic_cron_expression( $value['frequency'] ) ); } // Schedule the job if activated. if ( $value['activ'] ) { BackWPup_Option::update( $value['job_id'], 'activetype', $default_values['activetype'] ); $cron_next = BackWPup_Cron::cron_next( BackWPup_Option::get( $value['job_id'], 'cron' ) ); $job_id_as_int = (int) $value['job_id']; wp_clear_scheduled_hook( 'backwpup_cron', [ 'arg' => $job_id_as_int ] ); wp_schedule_single_event( $cron_next, 'backwpup_cron', [ 'arg' => $job_id_as_int ] ); } else { BackWPup_Option::update( $value['job_id'], 'activetype', '' ); } /** * Save onboarding storage options to backup jobs * * @param mixed $job_id Job Id * @param array $storages Array of selected/configured storages */ do_action( 'backwpup_onboarding_storage', $value['job_id'], $sanitized_data['onboarding_storage'] ); } $first_backup_type = []; if ( 2 === count( $mixed_data_type ) ) { $first_backup_type = BackWPup_JobTypes::$type_job_both; } elseif ( true === $files_job_status ) { $first_backup_type = BackWPup_JobTypes::$type_job_files; } elseif ( true === $database_job_status ) { $first_backup_type = BackWPup_JobTypes::$type_job_database; } BackWPup_Option::update( $first_backup_job_id, 'type', $first_backup_type ); BackWPup_Option::update( $first_backup_job_id, 'destinations', $sanitized_data['onboarding_storage'] ); // Onboarding OK. delete_site_option( 'backwpup_onboarding' ); if ( defined( 'BWU_TESTING' ) ) { return; } // Delete placeholder value jobs. if ( ! $database_job_status ) { BackWPup_Option::delete_job( $default_id_job_database ); } if ( ! $files_job_status ) { BackWPup_Option::delete_job( $default_id_job_files ); } // Delete the site options used for onboarding. delete_site_option( Plugin::FILES_JOB_ID ); delete_site_option( Plugin::DATABASE_JOB_ID ); wp_safe_redirect( network_admin_url( 'admin.php?page=backwpupfirstbackup' ) ); exit; } /** * Sanitize post data. * * @return array */ private static function sanitize_post_data() { $sanitized_data = []; foreach ( $_POST as $key => $value ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing // Skip nonce fields. if ( in_array( $key, [ '_wpnonce', '_wp_http_referer', 'backwpupajaxnonce' ], true ) ) { continue; } if ( is_array( $value ) ) { $sanitized_data[ $key ] = array_map( 'sanitize_text_field', wp_unslash( $value ) ); } else { $sanitized_data[ $key ] = sanitize_text_field( wp_unslash( $value ) ); } } $sanitized_data['activetype'] = ''; if ( ! isset( $sanitized_data['onboarding_storage'] ) ) { $sanitized_data['onboarding_storage'] = []; } return $sanitized_data; } /** * Display the page content. */ public static function page() { $first_job_id = get_site_option( Plugin::FILES_JOB_ID, false ); $second_job_id = get_site_option( Plugin::DATABASE_JOB_ID, false ); $first_backup_job_id = get_site_option( Plugin::FIRST_JOB_ID, false ); /** * TODO:: Redefine onboarding so we don't need to have default jobs id. * The initial job id created are deleted after onboarding except first backup * This ids serve as placeholder for value which are needed to complete onboarding process. * After onboarding is completed, the first backup job id is used to create the first backup job. * first_job_id will be used to store files settings and second_job_id will be used to store database settings. */ if ( ! $first_backup_job_id ) { $first_backup_job_id = BackWPup_Option::create_default_jobs( 'First backup', BackWPup_JobTypes::$type_job_both ); BackWPup_Option::update( $first_backup_job_id, 'tempjob', true ); update_site_option( Plugin::FIRST_JOB_ID, $first_backup_job_id ); } if ( ! $first_job_id ) { $first_job_id = $first_backup_job_id + 1; update_site_option( Plugin::FILES_JOB_ID, $first_job_id ); } if ( ! $second_job_id ) { $second_job_id = $first_job_id + 1; update_site_option( Plugin::DATABASE_JOB_ID, $second_job_id ); } include untrailingslashit( BackWPup::get_plugin_data( 'plugindir' ) ) . '/pages/onboarding.php'; } }
[-] class-system-tests-runner.php
[edit]
[-] class-jobtype-dbdump.php
[edit]
[-] class-destination-rsc.php
[edit]
[-] class-encryption.php
[edit]
[-] class-destination-downloader-factory.php
[edit]
[-] class-destination-downloader-interface.php
[edit]
[-] class-destination-ftp-type-ftp.php
[edit]
[-] class-path-fixer.php
[edit]
[-] class-message-box.php
[edit]
[-] class-destination-dropbox-api.php
[edit]
[-] class-option.php
[edit]
[-] class-destination-dropbox-api-request-exception.php
[edit]
[-] class-page-about.php
[edit]
[-] class-migrate.php
[edit]
[-] class-system-requirements.php
[edit]
[-] class-adminbar.php
[edit]
[-] class-msazure-destination-configuration.php
[edit]
[-] class-job.php
[edit]
[-] class-destination-ftp-type-exception.php
[edit]
[-] class-destination-sugarsync-api.php
[edit]
[-] class-download-file-interface.php
[edit]
[-] class-encryption-fallback.php
[edit]
[-] BackWPup.php
[edit]
[-] class-page-backwpup.php
[edit]
[-] class-destination-downloader-data.php
[edit]
[-] class-mysqldump-exception.php
[edit]
[-] class-s3-destination.php
[edit]
[-] class-destination-ftp.php
[edit]
[-] class-cron.php
[edit]
[+]
Notice
[-] class-destination-downloader.php
[edit]
[-] class-destinations.php
[edit]
[-] class-destination-ftp-downloader.php
[edit]
[-] class-destination-dropbox-downloader.php
[edit]
[-] class-download-handler.php
[edit]
[-] class-destination-dropbox.php
[edit]
[-] class-system-tests.php
[edit]
[-] class-destination-folder-downloader.php
[edit]
[-] class-destination-ftp-type.php
[edit]
[-] class-thirdparties.php
[edit]
[-] class-jobtype-wpplugin.php
[edit]
[-] class-directory.php
[edit]
[-] class-recursive-directory.php
[edit]
[-] class-destination-msazure-downloader.php
[edit]
[-] class-destination-connect-interface.php
[edit]
[-] class-install.php
[edit]
[-] class-admin.php
[edit]
[-] class-jobtype-file.php
[edit]
[-] functions.php
[edit]
[+]
Utils
[+]
ThirdParty
[-] class-destination-s3-downloader.php
[edit]
[-] class-destination-rsc-downloader.php
[edit]
[-] class-destination-sugarsync-downloader.php
[edit]
[-] class-destination-email.php
[edit]
[+]
..
[-] class-mysqldump.php
[edit]
[-] class-page-firstbackup.php
[edit]
[-] class-jobtype-wpexp.php
[edit]
[-] class-jobtype-dbcheck.php
[edit]
[-] class-file.php
[edit]
[-] class-sanitize-path.php
[edit]
[+]
Settings
[-] class-destination-s3.php
[edit]
[-] class-page-logs.php
[edit]
[-] class-factory-exception.php
[edit]
[-] class-page-restore.php
[edit]
[+]
dependencies
[-] class-create-archive-exception.php
[edit]
[-] class-page-editjob.php
[edit]
[-] class-page-backups.php
[edit]
[-] class-destination-dropbox-api-exception.php
[edit]
[-] class-create-archive.php
[edit]
[-] class-encryption-openssl.php
[edit]
[-] class-destination-onedrive-config-trait.php
[edit]
[-] class-destination-download-exception.php
[edit]
[-] class-download-file.php
[edit]
[-] class-page-settings.php
[edit]
[-] class-destination-msazure.php
[edit]
[-] class-page-onboarding.php
[edit]
[-] class-destination-folder.php
[edit]
[-] class-jobtypes.php
[edit]
[-] class-destination-connect-exception.php
[edit]
[-] class-destination-sugarsync.php
[edit]
[-] class-page-jobs.php
[edit]
[-] class-destination-sugarsync-api-exception.php
[edit]
[-] class-encryption-mcrypt.php
[edit]