public static function notices_init() { if (self::$initialized) { return; } self::$initialized = true; self::$notices_content = defined('UPDRAFTPLUS_NOADS_B') && UPDRAFTPLUS_NOADS_B ? array() : self::populate_notices_content(); global $updraftplus; $our_version = @constant('SCRIPT_DEBUG') ? $updraftplus->version . '.' . time() : $updraftplus->version; wp_enqueue_style('updraftplus-notices-css', UPDRAFTPLUS_URL . '/css/updraftplus-notices.css', array(), $our_version); }
public function send_results_email($final_message, $jobdata) { global $updraftplus; $debug_mode = UpdraftPlus_Options::get_updraft_option('updraft_debug_mode'); $sendmail_to = $updraftplus->just_one_email(UpdraftPlus_Options::get_updraft_option('updraft_email')); if (is_string($sendmail_to)) { $sendmail_to = array($sendmail_to); } $backup_files = $jobdata['backup_files']; $backup_db = $jobdata['backup_database']; if (is_array($backup_db)) { $backup_db = $backup_db['wp']; } if (is_array($backup_db)) { $backup_db = $backup_db['status']; } $backup_type = 'backup' == $jobdata['job_type'] ? __('Full backup', 'updraftplus') : __('Incremental', 'updraftplus'); $was_aborted = !empty($jobdata['aborted']); if ($was_aborted) { $backup_contains = __('The backup was aborted by the user', 'updraftplus'); } elseif ('finished' == $backup_files && ('finished' == $backup_db || 'encrypted' == $backup_db)) { $backup_contains = __("Files and database", 'updraftplus') . " ({$backup_type})"; } elseif ('finished' == $backup_files) { $backup_contains = $backup_db == "begun" ? __("Files (database backup has not completed)", 'updraftplus') : __("Files only (database was not part of this particular schedule)", 'updraftplus'); $backup_contains .= " ({$backup_type})"; } elseif ($backup_db == 'finished' || $backup_db == 'encrypted') { $backup_contains = $backup_files == "begun" ? __("Database (files backup has not completed)", 'updraftplus') : __("Database only (files were not part of this particular schedule)", 'updraftplus'); } else { $updraftplus->log('Unknown/unexpected status: ' . serialize($backup_files) . '/' . serialize($backup_db)); $backup_contains = __("Unknown/unexpected error - please raise a support request", 'updraftplus'); } $append_log = ''; $attachments = array(); $error_count = 0; if ($updraftplus->error_count() > 0) { $append_log .= __('Errors encountered:', 'updraftplus') . "\r\n"; $attachments[0] = $updraftplus->logfile_name; foreach ($updraftplus->errors as $err) { if (is_wp_error($err)) { foreach ($err->get_error_messages() as $msg) { $append_log .= "* " . rtrim($msg) . "\r\n"; } } elseif (is_array($err) && 'error' == $err['level']) { $append_log .= "* " . rtrim($err['message']) . "\r\n"; } elseif (is_string($err)) { $append_log .= "* " . rtrim($err) . "\r\n"; } $error_count++; } $append_log .= "\r\n"; } $warnings = isset($jobdata['warnings']) ? $jobdata['warnings'] : array(); if (is_array($warnings) && count($warnings) > 0) { $append_log .= __('Warnings encountered:', 'updraftplus') . "\r\n"; $attachments[0] = $updraftplus->logfile_name; foreach ($warnings as $err) { $append_log .= "* " . rtrim($err) . "\r\n"; } $append_log .= "\r\n"; } if ($debug_mode && '' != $updraftplus->logfile_name && !in_array($updraftplus->logfile_name, $attachments)) { $append_log .= "\r\n" . __('The log file has been attached to this email.', 'updraftplus'); $attachments[0] = $updraftplus->logfile_name; } // We have to use the action in order to set the MIME type on the attachment - by default, WordPress just puts application/octet-stream $subject = apply_filters('updraft_report_subject', sprintf(__('Backed up: %s', 'updraftplus'), get_bloginfo('name')) . ' (UpdraftPlus ' . $updraftplus->version . ') ' . get_date_from_gmt(gmdate('Y-m-d H:i:s', time()), 'Y-m-d H:i'), $error_count, count($warnings)); # The class_exists() check here is a micro-optimization to prevent a possible HTTP call whose results may be disregarded by the filter $feed = ''; if (!class_exists('UpdraftPlus_Addon_Reporting') && !defined('UPDRAFTPLUS_NOADS_B') && !defined('UPDRAFTPLUS_NONEWSFEED')) { $updraftplus->log('Fetching RSS news feed'); $rss = $updraftplus->get_updraftplus_rssfeed(); $updraftplus->log('Fetched RSS news feed; result is a: ' . get_class($rss)); if (is_a($rss, 'SimplePie')) { $feed .= __('Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news', 'updraftplus') . " - " . sprintf(__('read more at %s', 'updraftplus'), 'https://updraftplus.com/news/') . "\r\n\r\n"; foreach ($rss->get_items(0, 6) as $item) { $feed .= '* '; $feed .= $item->get_title(); $feed .= " (" . $item->get_date('j F Y') . ")"; #$feed .= ' - '.$item->get_permalink(); $feed .= "\r\n"; } } $feed .= "\r\n\r\n"; } $extra_messages = apply_filters('updraftplus_report_extramessages', array()); $extra_msg = ''; if (is_array($extra_messages)) { foreach ($extra_messages as $msg) { $extra_msg .= '<strong>' . $msg['key'] . '</strong>: ' . $msg['val'] . "\r\n"; } } foreach ($this->remotestorage_extrainfo as $service => $message) { if (!empty($updraftplus->backup_methods[$service])) { $extra_msg .= $updraftplus->backup_methods[$service] . ': ' . $message['plain'] . "\r\n"; } } // Make it available to the filter $jobdata['remotestorage_extrainfo'] = $this->remotestorage_extrainfo; if (!class_exists('UpdraftPlus_Notices')) { require_once UPDRAFTPLUS_DIR . '/includes/updraftplus-notices.php'; } $ws_advert = UpdraftPlus_Notices::do_notice(false, 'report-plain', true); $body = apply_filters('updraft_report_body', __('Backup of:', 'updraftplus') . ' ' . site_url() . "\r\n" . "UpdraftPlus " . __('WordPress backup is complete', 'updraftplus') . ".\r\n" . __('Backup contains:', 'updraftplus') . " {$backup_contains}\r\n" . __('Latest status:', 'updraftplus') . ' ' . $final_message . "\r\n" . $extra_msg . "\r\n" . $feed . $ws_advert . "\r\n" . $append_log, $final_message, $backup_contains, $updraftplus->errors, $warnings, $jobdata); $this->attachments = apply_filters('updraft_report_attachments', $attachments); if (count($this->attachments) > 0) { add_action('phpmailer_init', array($this, 'phpmailer_init')); } $attach_size = 0; $unlink_files = array(); foreach ($this->attachments as $ind => $attach) { if ($attach == $updraftplus->logfile_name && filesize($attach) > 6 * 1048576) { $updraftplus->log("Log file is large (" . round(filesize($attach) / 1024, 1) . " KB): will compress before e-mailing"); if (!($handle = fopen($attach, "r"))) { $updraftplus->log("Error: Failed to open log file for reading: " . $attach); } else { if (!($whandle = gzopen($attach . '.gz', 'w'))) { $updraftplus->log("Error: Failed to open log file for reading: " . $attach . ".gz"); } else { while (false !== ($line = @stream_get_line($handle, 131072, "\n"))) { @gzwrite($whandle, $line . "\n"); } fclose($handle); gzclose($whandle); $this->attachments[$ind] = $attach . '.gz'; $unlink_files[] = $attach . '.gz'; } } } $attach_size += filesize($this->attachments[$ind]); } foreach ($sendmail_to as $ind => $mailto) { if (false === apply_filters('updraft_report_sendto', true, $mailto, $error_count, count($warnings), $ind)) { continue; } foreach (explode(',', $mailto) as $sendmail_addr) { $updraftplus->log("Sending email ('{$backup_contains}') report (attachments: " . count($attachments) . ", size: " . round($attach_size / 1024, 1) . " KB) to: " . substr($sendmail_addr, 0, 5) . "..."); try { wp_mail(trim($sendmail_addr), $subject, $body, array("X-UpdraftPlus-Backup-ID: " . $updraftplus->nonce)); } catch (Exception $e) { $updraftplus->log("Exception occurred when sending mail (" . get_class($e) . "): " . $e->getMessage()); } } } foreach ($unlink_files as $file) { @unlink($file); } do_action('updraft_report_finished'); if (count($this->attachments) > 0) { remove_action('phpmailer_init', array($this, 'phpmailer_init')); } }
public function settings_formcontents($options = array()) { global $updraftplus; $updraft_dir = $updraftplus->backups_dir_location(); $really_is_writable = $updraftplus->really_is_writable($updraft_dir); $default_options = array('include_database_decrypter' => true, 'include_adverts' => true, 'include_save_button' => true); foreach ($default_options as $k => $v) { if (!isset($options[$k])) { $options[$k] = $v; } } ?> <table class="form-table"> <tr> <th><?php _e('Files backup schedule', 'updraftplus'); ?> :</th> <td> <div style="float:left; clear:both;"> <select class="updraft_interval" name="updraft_interval"> <?php $intervals = $this->get_intervals(); $selected_interval = UpdraftPlus_Options::get_updraft_option('updraft_interval', 'manual'); foreach ($intervals as $cronsched => $descrip) { echo "<option value=\"{$cronsched}\" "; if ($cronsched == $selected_interval) { echo 'selected="selected"'; } echo ">" . htmlspecialchars($descrip) . "</option>\n"; } ?> </select> <span class="updraft_files_timings"><?php echo apply_filters('updraftplus_schedule_showfileopts', '<input type="hidden" name="updraftplus_starttime_files" value="">', $selected_interval); ?> </span> <?php $updraft_retain = max((int) UpdraftPlus_Options::get_updraft_option('updraft_retain', 2), 1); $retain_files_config = __('and retain this many scheduled backups', 'updraftplus') . ': <input type="number" min="1" step="1" name="updraft_retain" value="' . $updraft_retain . '" class="retain-files" />'; // echo apply_filters('updraftplus_retain_files_intervalline', $retain_files_config, $updraft_retain); echo $retain_files_config; ?> </div> <?php do_action('updraftplus_after_filesconfig'); ?> </td> </tr> <?php if (defined('UPDRAFTPLUS_EXPERIMENTAL') && UPDRAFTPLUS_EXPERIMENTAL) { ?> <tr class="updraft_incremental_row"> <th><?php _e('Incremental file backup schedule', 'updraftplus'); ?> :</th> <td> <?php do_action('updraftplus_incremental_cell', $selected_interval); ?> <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/support/tell-me-more-about-incremental-backups/"); ?> "><em><?php _e('Tell me more about incremental backups', 'updraftplus'); ?> <em></a> </td> </tr> <?php } ?> <?php apply_filters('updraftplus_after_file_intervals', false, $selected_interval); ?> <tr> <th><?php _e('Database backup schedule', 'updraftplus'); ?> :</th> <td> <div style="float:left; clear:both;"> <select class="updraft_interval_database" name="updraft_interval_database"> <?php $selected_interval_db = UpdraftPlus_Options::get_updraft_option('updraft_interval_database', UpdraftPlus_Options::get_updraft_option('updraft_interval')); foreach ($intervals as $cronsched => $descrip) { echo "<option value=\"{$cronsched}\" "; if ($cronsched == $selected_interval_db) { echo 'selected="selected"'; } echo ">{$descrip}</option>\n"; } ?> </select> <span class="updraft_same_schedules_message"><?php echo apply_filters('updraftplus_schedule_sametimemsg', ''); ?> </span><span class="updraft_db_timings"><?php echo apply_filters('updraftplus_schedule_showdbopts', '<input type="hidden" name="updraftplus_starttime_db" value="">', $selected_interval_db); ?> </span> <?php $updraft_retain_db = max((int) UpdraftPlus_Options::get_updraft_option('updraft_retain_db', $updraft_retain), 1); $retain_dbs_config = __('and retain this many scheduled backups', 'updraftplus') . ': <input type="number" min="1" step="1" name="updraft_retain_db" value="' . $updraft_retain_db . '" class="retain-files" />'; // echo apply_filters('updraftplus_retain_db_intervalline', $retain_dbs_config, $updraft_retain_db); echo $retain_dbs_config; ?> </div> <?php do_action('updraftplus_after_dbconfig'); ?> </td> </tr> <tr class="backup-interval-description"> <th></th> <td><div> <?php echo apply_filters('updraftplus_fixtime_ftinfo', '<p>' . __('To fix the time at which a backup should take place,', 'updraftplus') . ' (' . __('e.g. if your server is busy at day and you want to run overnight', 'updraftplus') . '), ' . __('or to configure more complex schedules', 'updraftplus') . ', <a href="' . apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/updraftplus-premium/") . '">' . htmlspecialchars(__('use UpdraftPlus Premium', 'updraftplus')) . '</a></p>'); ?> </div></td> </tr> </table> <h2 class="updraft_settings_sectionheading"><?php _e('Sending Your Backup To Remote Storage', 'updraftplus'); ?> </h2> <?php $debug_mode = UpdraftPlus_Options::get_updraft_option('updraft_debug_mode') ? 'checked="checked"' : ""; $active_service = UpdraftPlus_Options::get_updraft_option('updraft_service'); ?> <table class="form-table width-900"> <tr> <th><?php echo __('Choose your remote storage', 'updraftplus') . '<br>' . apply_filters('updraftplus_after_remote_storage_heading_message', '<em>' . __('(tap on an icon to select or unselect)', 'updraftplus') . '</em>'); ?> :</th> <td> <div id="remote-storage-container"> <?php if (is_array($active_service)) { $active_service = $updraftplus->just_one($active_service); } //Change this to give a class that we can exclude $multi = apply_filters('updraftplus_storage_printoptions_multi', ''); foreach ($updraftplus->backup_methods as $method => $description) { $backup_using = esc_attr(sprintf(__("Backup using %s?", 'updraftplus'), $description)); echo "<input aria-label=\"{$backup_using}\" name=\"updraft_service[]\" class=\"updraft_servicecheckbox {$method} {$multi}\" id=\"updraft_servicecheckbox_{$method}\" type=\"checkbox\" value=\"{$method}\""; if ($active_service === $method || is_array($active_service) && in_array($method, $active_service)) { echo ' checked="checked"'; } echo " data-labelauty=\"" . esc_attr($description) . "\">"; } ?> <?php if (false === apply_filters('updraftplus_storage_printoptions', false, $active_service)) { echo '</div>'; echo '<p><a href="' . apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/morestorage/") . '">' . htmlspecialchars(__('You can send a backup to more than one destination with an add-on.', 'updraftplus')) . '</a></p>'; echo '</td></tr>'; } ?> <tr class="updraftplusmethod none ud_nostorage" style="display:none;"> <td></td> <td><em><?php echo htmlspecialchars(__('If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event.', 'updraftplus')); ?> </em></td> </tr> <?php $method_objects = array(); foreach ($updraftplus->backup_methods as $method => $description) { do_action('updraftplus_config_print_before_storage', $method); require_once UPDRAFTPLUS_DIR . '/methods/' . $method . '.php'; $call_method = 'UpdraftPlus_BackupModule_' . $method; $method_objects[$method] = new $call_method(); $method_objects[$method]->config_print(); do_action('updraftplus_config_print_after_storage', $method); } ?> </table> <hr style="width:900px; float:left;"> <h2 class="updraft_settings_sectionheading"><?php _e('File Options', 'updraftplus'); ?> </h2> <table class="form-table" > <tr> <th><?php _e('Include in files backup', 'updraftplus'); ?> :</th> <td> <?php echo $this->files_selector_widgetry(); ?> <p><?php echo apply_filters('updraftplus_admin_directories_description', __('The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org.', 'updraftplus') . ' <a href="' . apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/") . '">' . htmlspecialchars(__('See also the "More Files" add-on from our shop.', 'updraftplus')) . '</a>'); ?> </p> </td> </tr> </table> <h2 class="updraft_settings_sectionheading"><?php _e('Database Options', 'updraftplus'); ?> </h2> <table class="form-table width-900"> <tr> <th><?php _e('Database encryption phrase', 'updraftplus'); ?> :</th> <td> <?php echo apply_filters('updraft_database_encryption_config', '<a href="' . apply_filters('updraftplus_com_link', "https://updraftplus.com/landing/updraftplus-premium") . '">' . __("Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup.", 'updraftplus') . '</a> ' . __('It can also backup external databases.', 'updraftplus')); ?> </td> </tr> <?php if (!empty($options['include_database_decrypter'])) { ?> <tr class="backup-crypt-description"> <td></td> <td> <a href="#" class="updraft_show_decryption_widget"><?php _e('You can manually decrypt an encrypted database here.', 'updraftplus'); ?> </a> <div id="updraft-manualdecrypt-modal" class="updraft-hidden" style="display:none;"> <p><h3><?php _e("Manually decrypt a database backup file", 'updraftplus'); ?> </h3></p> <?php global $wp_version; if (version_compare($wp_version, '3.3', '<')) { echo '<em>' . sprintf(__('This feature requires %s version %s or later', 'updraftplus'), 'WordPress', '3.3') . '</em>'; } else { ?> <div id="plupload-upload-ui2"> <div id="drag-drop-area2"> <div class="drag-drop-inside"> <p class="drag-drop-info"><?php _e('Drop encrypted database files (db.gz.crypt files) here to upload them for decryption', 'updraftplus'); ?> </p> <p><?php _ex('or', 'Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files', 'updraftplus'); ?> </p> <p class="drag-drop-buttons"><input id="plupload-browse-button2" type="button" value="<?php esc_attr_e('Select Files', 'updraftplus'); ?> " class="button" /></p> <p style="margin-top: 18px;"><?php _e('First, enter the decryption key', 'updraftplus'); ?> : <input id="updraftplus_db_decrypt" type="text" size="12"></input></p> </div> </div> <div id="filelist2"> </div> </div> <?php } ?> </div> </td> </tr> <?php } ?> <?php #'<a href="https://updraftplus.com/shop/updraftplus-premium/">'.__("This feature is part of UpdraftPlus Premium.", 'updraftplus').'</a>' $moredbs_config = apply_filters('updraft_database_moredbs_config', false); if (!empty($moredbs_config)) { ?> <tr> <th><?php _e('Back up more databases', 'updraftplus'); ?> :</th> <td><?php echo $moredbs_config; ?> </td> </tr> <?php } ?> </table> <h2 class="updraft_settings_sectionheading"><?php _e('Reporting', 'updraftplus'); ?> </h2> <table class="form-table" style="width:900px;"> <?php $report_rows = apply_filters('updraftplus_report_form', false); if (is_string($report_rows)) { echo $report_rows; } else { ?> <tr> <th><?php _e('Email', 'updraftplus'); ?> :</th> <td> <?php $updraft_email = UpdraftPlus_Options::get_updraft_option('updraft_email'); ?> <input type="checkbox" id="updraft_email" name="updraft_email" value="<?php esc_attr_e(get_bloginfo('admin_email')); ?> "<?php if (!empty($updraft_email)) { echo ' checked="checked"'; } ?> > <br><label for="updraft_email"><?php echo __("Check this box to have a basic report sent to", 'updraftplus') . ' <a href="' . admin_url('options-general.php') . '">' . __("your site's admin address", 'updraftplus') . '</a> (' . htmlspecialchars(get_bloginfo('admin_email')) . ")."; ?> </label> <?php if (!class_exists('UpdraftPlus_Addon_Reporting')) { echo '<a href="' . apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/reporting/") . '">' . __('For more reporting features, use the Reporting add-on.', 'updraftplus') . '</a>'; } ?> </td> </tr> <?php } ?> </table> <script type="text/javascript"> /* <![CDATA[ */ <?php echo $this->get_settings_js($method_objects, $really_is_writable, $updraft_dir); ?> /* ]]> */ </script> <table class="form-table width-900"> <tr> <td colspan="2"><h2 class="updraft_settings_sectionheading"><?php _e('Advanced / Debugging Settings', 'updraftplus'); ?> </h2></td> </tr> <tr> <th><?php _e('Expert settings', 'updraftplus'); ?> :</th> <td><a class="enableexpertmode" href="#enableexpertmode"><?php _e('Show expert settings', 'updraftplus'); ?> </a> - <?php _e("click this to show some further options; don't bother with this unless you have a problem or are curious.", 'updraftplus'); ?> <?php do_action('updraftplus_expertsettingsdescription'); ?> </td> </tr> <?php $delete_local = UpdraftPlus_Options::get_updraft_option('updraft_delete_local', 1); $split_every_mb = UpdraftPlus_Options::get_updraft_option('updraft_split_every', 400); if (!is_numeric($split_every_mb)) { $split_every_mb = 400; } if ($split_every_mb < UPDRAFTPLUS_SPLIT_MIN) { $split_every_mb = UPDRAFTPLUS_SPLIT_MIN; } ?> <tr class="expertmode updraft-hidden" style="display:none;"> <th><?php _e('Debug mode', 'updraftplus'); ?> :</th> <td><input type="checkbox" id="updraft_debug_mode" name="updraft_debug_mode" value="1" <?php echo $debug_mode; ?> /> <br><label for="updraft_debug_mode"><?php _e('Check this to receive more information and emails on the backup process - useful if something is going wrong.', 'updraftplus'); ?> <?php _e('This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these.', 'updraftplus'); ?> </label></td> </tr> <tr class="expertmode updraft-hidden" style="display:none;"> <th><?php _e('Split archives every:', 'updraftplus'); ?> </th> <td><input type="text" name="updraft_split_every" class="updraft_split_every" value="<?php echo $split_every_mb; ?> " size="5" /> MB<br><?php echo sprintf(__('UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems).', 'updraftplus'), 400); ?> </td> </tr> <tr class="deletelocal expertmode updraft-hidden" style="display:none;"> <th><?php _e('Delete local backup', 'updraftplus'); ?> :</th> <td><input type="checkbox" id="updraft_delete_local" name="updraft_delete_local" value="1" <?php if ($delete_local) { echo 'checked="checked"'; } ?> > <br><label for="updraft_delete_local"><?php _e('Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits).', 'updraftplus'); ?> </label></td> </tr> <tr class="expertmode backupdirrow updraft-hidden" style="display:none;"> <th><?php _e('Backup directory', 'updraftplus'); ?> :</th> <td><input type="text" name="updraft_dir" id="updraft_dir" style="width:525px" value="<?php echo htmlspecialchars($this->prune_updraft_dir_prefix($updraft_dir)); ?> " /></td> </tr> <tr class="expertmode backupdirrow updraft-hidden" style="display:none;"> <td></td> <td> <span id="updraft_writable_mess"> <?php $dir_info = $this->really_writable_message($really_is_writable, $updraft_dir); echo $dir_info; ?> </span> <?php echo __("This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content).", 'updraftplus') . ' ' . __("<b>Do not</b> place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...).", 'updraftplus'); ?> </td> </tr> <tr class="expertmode updraft-hidden" style="display:none;"> <th><?php _e("Use the server's SSL certificates", 'updraftplus'); ?> :</th> <td><input data-updraft_settings_test="useservercerts" type="checkbox" id="updraft_ssl_useservercerts" name="updraft_ssl_useservercerts" value="1" <?php if (UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts')) { echo 'checked="checked"'; } ?> > <br><label for="updraft_ssl_useservercerts"><?php _e('By default UpdraftPlus uses its own store of SSL certificates to verify the identity of remote sites (i.e. to make sure it is talking to the real Dropbox, Amazon S3, etc., and not an attacker). We keep these up to date. However, if you get an SSL error, then choosing this option (which causes UpdraftPlus to use your web server\'s collection instead) may help.', 'updraftplus'); ?> </label></td> </tr> <tr class="expertmode updraft-hidden" style="display:none;"> <th><?php _e('Do not verify SSL certificates', 'updraftplus'); ?> :</th> <td><input data-updraft_settings_test="disableverify" type="checkbox" id="updraft_ssl_disableverify" name="updraft_ssl_disableverify" value="1" <?php if (UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify')) { echo 'checked="checked"'; } ?> > <br><label for="updraft_ssl_disableverify"><?php _e('Choosing this option lowers your security by stopping UpdraftPlus from verifying the identity of encrypted sites that it connects to (e.g. Dropbox, Google Drive). It means that UpdraftPlus will be using SSL only for encryption of traffic, and not for authentication.', 'updraftplus'); ?> <?php _e('Note that not all cloud backup methods are necessarily using SSL authentication.', 'updraftplus'); ?> </label></td> </tr> <tr class="expertmode updraft-hidden" style="display:none;"> <th><?php _e('Disable SSL entirely where possible', 'updraftplus'); ?> :</th> <td><input data-updraft_settings_test="nossl" type="checkbox" id="updraft_ssl_nossl" name="updraft_ssl_nossl" value="1" <?php if (UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl')) { echo 'checked="checked"'; } ?> > <br><label for="updraft_ssl_nossl"><?php _e('Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect.', 'updraftplus'); ?> <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/i-get-ssl-certificate-errors-when-backing-up-andor-restoring/"); ?> "><?php _e('See this FAQ also.', 'updraftplus'); ?> </a></label></td> </tr> <?php do_action('updraftplus_configprint_expertoptions'); ?> <tr> <td></td> <td> <?php if (!empty($options['include_adverts'])) { if (!class_exists('UpdraftPlus_Notices')) { require_once UPDRAFTPLUS_DIR . '/includes/updraftplus-notices.php'; } UpdraftPlus_Notices::do_notice(false, 'bottom'); } ?> </td> </tr> <?php if (!empty($options['include_save_button'])) { ?> <tr> <td></td> <td> <input type="hidden" name="action" value="update" /> <input type="submit" class="button-primary" id="updraftplus-settings-save" value="<?php _e('Save Changes', 'updraftplus'); ?> " /> </td> </tr> <?php } ?> </table> <?php }