Ejemplo n.º 1
0
 /**
  * @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;
 }
Ejemplo n.º 2
0
</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);