/** * @param array $attributes * * @return array|void */ public function validate($attributes) { $jobs = get_site_option('my-wp-backup-jobs', array()); $last_job = end($jobs); $new_id = $last_job['id'] + 1; $values = self::$form_defaults; $cron_types = array('simple' => 'simple', 'advanced' => 'advanced'); $shedule_types = array('manual' => 'manual', 'cron' => 'cron'); $id = $values['id'] = isset($attributes['id']) ? '0' !== $attributes['id'] ? absint($attributes['id']) : $new_id : $new_id; if (!$id) { wp_die(esc_html__('Nope! Security check failed!', 'my-wp-backup')); } $job_name = sanitize_text_field($attributes['job_name']); if ('' === $job_name) { $job_name = 'Job ' . $id; } $values['job_name'] = $job_name; $file_name = trim($attributes['filename']); if ('' !== $file_name) { $values['filename'] = $file_name; } if (isset(self::$compression_methods[$attributes['compression']])) { $values['compression'] = $attributes['compression']; } $values['password'] = isset($attributes['password']) ? sanitize_text_field($attributes['password']) : ''; if (isset($attributes['volsize'])) { $volsize = absint($attributes['volsize']); if ($volsize > 0) { $values['volsize'] = $volsize; } } if (isset($attributes['differential']) && '1' === $attributes['differential']) { $values['differential'] = '1'; } if (isset($attributes['schedule_type'])) { $schedule_type = sanitize_text_field($attributes['schedule_type']); if (isset($shedule_types[$schedule_type])) { $values['schedule_type'] = $shedule_types[$schedule_type]; } } if (isset($attributes['cron_type'])) { $cron_type = sanitize_text_field($attributes['cron_type']); if (isset($cron_types[$cron_type])) { $values['cron_type'] = $cron_types[$cron_type]; } } $values['destination'] = isset($attributes['destination']) ? $attributes['destination'] : array(); $values['rep_destination'] = isset($attributes['rep_destination']) ? $attributes['rep_destination'] : array(); $values['backup_files'] = isset($attributes['backup_files']) && '1' === $attributes['backup_files'] ? '1' : '0'; $values['backup_uploads'] = isset($attributes['backup_uploads']) && '1' === $attributes['backup_uploads'] ? '1' : '0'; if (isset($attributes['exclude_files'])) { $values['exclude_files'] = '1' === $attributes['exclude_files'] ? '1' : '0'; } if (isset($attributes['file_filters'])) { $values['file_filters'] = array_filter(preg_split("/\r\n|\n|\r/", $attributes['file_filters']), function ($filter) { $filter = sanitize_text_field($filter); return empty($filter) ? false : $filter; }); } $values['export_db'] = isset($attributes['export_db']) && '1' === $attributes['export_db'] ? '1' : '0'; if (isset($attributes['exclude_tables'])) { $values['exclude_tables'] = '1' === $attributes['exclude_tables'] ? '1' : '0'; } if (isset($attributes['table_filters'])) { if (is_array($attributes['table_filters'])) { $tables = Admin::get_tables(); $values['table_filters'] = array_filter($attributes['table_filters'], function ($filter) use($tables) { return in_array($filter, $tables) ? $filter : false; }); } } if (isset($attributes['delete_local'])) { $values['delete_local'] = '1' === $attributes['delete_local'] ? '1' : '0'; } if (isset($attributes['destination_options']) && is_array($attributes['destination_options'])) { foreach ($attributes['destination_options'] as $destination => $options) { switch ($destination) { case 'ftp': if (isset($options['host'])) { $values['destination_options'][$destination]['host'] = sanitize_text_field($options['host']); } if (isset($options['username'])) { $values['destination_options'][$destination]['username'] = sanitize_text_field($options['username']); } if (isset($options['password'])) { $values['destination_options'][$destination]['password'] = sanitize_text_field($options['password']); } if (isset($options['port'])) { $values['destination_options'][$destination]['port'] = absint($options['port']); } if (isset($options['folder'])) { $values['destination_options'][$destination]['folder'] = sanitize_text_field($options['folder']); } if (isset($options['ssl']) && '1' === $options['ssl']) { $values['destination_options'][$destination]['ssl'] = '1'; } break; case 'dropbox': if (isset($options['token'])) { $values['destination_options'][$destination]['token'] = sanitize_text_field($options['token']); } if (isset($options['folder'])) { $values['destination_options'][$destination]['folder'] = sanitize_text_field($options['folder']); } break; case 'googledrive': if (isset($options['token'])) { $values['destination_options'][$destination]['token'] = sanitize_text_field($options['token']); } if (isset($options['token_json'])) { $values['destination_options'][$destination]['token_json'] = sanitize_text_field($options['token_json']); } if (isset($options['folder'])) { $values['destination_options'][$destination]['folder'] = sanitize_text_field($options['folder']); } break; } } } if (isset($attributes['reporter_options']) && is_array($attributes['reporter_options'])) { foreach ($attributes['reporter_options'] as $reporter => $options) { $reporter = sanitize_key($reporter); $values['reporter_options'][$reporter] = array_map('sanitize_text_field', $options); if ('mail' === $reporter) { $values['reporter_options'][$reporter]['attach'] = isset($attributes['reporter_options'][$reporter]['attach']) ? '1' : '0'; } } } return $values; }
</label></th> <td> <input type="checkbox" class="enable-exclude" name="my-wp-backup-jobs[exclude_tables]" id="enable-exclude-tables" value="1" <?php checked('1', $job['exclude_tables'], true); ?> ><label for="enable-exclude-tables"><?php esc_html_e('Enable', 'my-wp-backup'); ?> </label> <div class="exclude-filters"> <p class="description"><?php esc_html_e('Exclude the following database tables:', 'my-wp-backup'); ?> </p><br> <?php foreach (\MyWPBackup\Admin\Admin::get_tables() as $table) { ?> <input name="my-wp-backup-jobs[table_filters][]" type="checkbox" id="table_<?php echo esc_attr($table); ?> " value="<?php echo esc_attr($table); ?> " <?php checked(true, in_array($table, $job['table_filters']), true); ?> ><label for="table_<?php echo esc_attr($table); ?> "><?php echo esc_html($table);