public static function no_recent_backup_reminder() { // If Live enabled, see if too long since the last Snapshot. foreach (pb_backupbuddy::$options['remote_destinations'] as $destination) { // Look for Live destination. if ('live' == $destination['type'] && (int) $destination['no_new_snapshots_error_days'] > 0) { // Live destination and notifications are enabled. require_once pb_backupbuddy::plugin_path() . '/destinations/live/live_periodic.php'; $state = backupbuddy_live_periodic::get_stats(); if ($state['stats']['last_db_snapshot'] > 0) { // At least one Snapshot has been made. $time_since_last = time() - $state['stats']['last_db_snapshot']; $days_since_last = round($time_since_last / 60 / 60 / 24); if ($days_since_last > (int) $destination['no_new_snapshots_error_days']) { $message = 'Warning! BackupBuddy is configured to notify you if no new BackupBuddy Stash Live Snapshots have been made in `' . (int) $destination['no_new_snapshots_error_days'] . '` days. It has been `' . $days_since_last . '` days since your last Snapshot. There may be a problem with your site\'s Stash Live setup requiring your attention.'; pb_backupbuddy::status('warning', $message); backupbuddy_core::mail_error($message); } } elseif ($state['stats']['first_activity'] > 0) { // Live was set up but never even made a first Snapshot. Activate if DOUBLE the no_new_snapshot_error_days is surpassed (to give time for first backup to fully upload). $time_since_last = time() - $state['stats']['first_activity']; $days_since_last = round($time_since_last / 60 / 60 / 24); if ($days_since_last > (int) $destination['no_new_snapshots_error_days'] * 2) { $message = 'Warning! BackupBuddy is configured to notify you if no new BackupBuddy Stash Live Snapshots have been made in `' . (int) $destination['no_new_snapshots_error_days'] . '` days. It has been at least twice this (`' . $days_since_last . '` days) since you set up BackupBuddy Stash Live but the first Snapshot has not been made yet. There may be a problem with your site\'s Stash Live setup requiring your attention.'; pb_backupbuddy::status('warning', $message); backupbuddy_core::mail_error($message); } } return true; // Don't send any traditional notifications when Live enabled. } } // Alert user if no new backups FINISHED within X number of days if enabled. Max 1 email notification per 24 hours period. if (is_main_site()) { // Only run for main site or standalone. if (pb_backupbuddy::$options['no_new_backups_error_days'] > 0) { if (pb_backupbuddy::$options['last_backup_finish'] > 0) { $time_since_last = time() - pb_backupbuddy::$options['last_backup_finish']; $days_since_last = round($time_since_last / 60 / 60 / 24); if ($days_since_last > pb_backupbuddy::$options['no_new_backups_error_days']) { $last_sent = get_transient('pb_backupbuddy_no_new_backup_error'); if (false === $last_sent) { $last_sent = time(); set_transient('pb_backupbuddy_no_new_backup_error', $last_sent, 60 * 60 * 24); } if (time() - $last_sent > 60 * 60 * 24) { // 24hrs+ elapsed since last email sent. $message = 'Warning! BackupBuddy is configured to notify you if no new backups have completed in `' . pb_backupbuddy::$options['no_new_backups_error_days'] . '` days. It has been `' . $days_since_last . '` days since your last completed backup.'; pb_backupbuddy::status('warning', $message); backupbuddy_core::mail_error($message); } } } } } }
require_once pb_backupbuddy::plugin_path() . '/destinations/live/live_periodic.php'; $state = backupbuddy_live_periodic::get_stats(); // If currently running. if ('daily_init' != $state['step']['function'] && time() - $state['stats']['last_activity'] < backupbuddy_core::adjustedMaxExecutionTime()) { set_transient('backupbuddy_live_snapshot', true, 60 * 60 * 48); // Request transient to run. pb_backupbuddy::status('details', 'Snapshot requested to be ran.'); if ('1' != pb_backupbuddy::$options['skip_spawn_cron_call']) { pb_backupbuddy::status('details', 'Spawning cron now.'); update_option('_transient_doing_cron', 0); // Prevent cron-blocking for next item. spawn_cron(time() + 150); // Adds > 60 seconds to get around once per minute cron running limit. } } else { backupbuddy_live_periodic::_set_next_step('daily_init', array($manual_snapshot = true), $save_now_and_unlock = true); $schedule_result = backupbuddy_core::schedule_single_event(time(), 'live_periodic', $cronArgs = array()); if (true === $schedule_result) { pb_backupbuddy::status('details', 'Next Live Periodic chunk step cron event scheduled.'); } else { pb_backupbuddy::status('error', 'Next Live Periodic chunk step cron event FAILED to be scheduled.'); } if ('1' != pb_backupbuddy::$options['skip_spawn_cron_call']) { pb_backupbuddy::status('details', 'Spawning cron now.'); update_option('_transient_doing_cron', 0); // Prevent cron-blocking for next item. spawn_cron(time() + 150); // Adds > 60 seconds to get around once per minute cron running limit. } } // end backed up 100%.
backupbuddy_core::php_runtime_test_results(); } $liveDestinationID = false; foreach (pb_backupbuddy::$options['remote_destinations'] as $destination_id => $destination) { if ('live' == $destination['type']) { $liveDestinationID = $destination_id; break; } } // Handle disconnect. if ('disconnect' == pb_backupbuddy::_GET('live_action') && false !== $liveDestinationID) { // If disconnecting and not already disconnected. $disconnected = false; require_once pb_backupbuddy::plugin_path() . '/destinations/live/live_periodic.php'; require_once pb_backupbuddy::plugin_path() . '/destinations/stash2/class.itx_helper2.php'; $destination_settings = backupbuddy_live_periodic::get_destination_settings(); if ('yes' == pb_backupbuddy::_POST('disconnect')) { pb_backupbuddy::verify_nonce(); // Pass itxapi_password to disconnect. global $wp_version; $password_hash = iThemes_Credentials::get_password_hash($destination_settings['itxapi_username'], pb_backupbuddy::_POST('password')); $access_token = ITXAPI_Helper2::get_access_token($destination_settings['itxapi_username'], $password_hash, site_url(), $wp_version); $settings = array('itxapi_username' => $destination_settings['itxapi_username'], 'itxapi_password' => $access_token, 'itxapi_token' => $destination_settings['itxapi_token']); $response = pb_backupbuddy_destination_live::stashAPI($settings, 'disconnect'); if (!is_array($response)) { pb_backupbuddy::alert('Error Disconnecting: ' . $response); } elseif (!isset($response['success']) || '1' != $response['success']) { pb_backupbuddy::alert('Error #483948944. Unexpected response disconnecting: `' . print_r($response, true) . '`.'); } else { $disconnected = true; // Clear destination settings.
public static function _run_remote_snapshot($trigger = 'unknown') { if (false === self::_load_state()) { return false; } $destination_settings = backupbuddy_live_periodic::get_destination_settings(); // Send email notification? if ('1' == $destination_settings['send_snapshot_notification'] || 0 == self::$_state['stats']['first_completion']) { // Email notification enabled _OR_ it's the first snapshot for this site. if ('' != $destination_settings['email']) { $email = $destination_settings['email']; } else { pb_backupbuddy::status('details', 'Snapshot set to send email notification to account. Send notification?: `' . $destination_settings['send_snapshot_notification'] . '`. First completion: `' . self::$_state['stats']['first_completion'] . '`.'); $email = 'account'; } } else { pb_backupbuddy::status('details', 'Snapshot set not to send email notification.'); $email = 'none'; } $additionalParams = array('ibpass' => '', 'email' => $email, 'stash_copy' => true, 'trim' => backupbuddy_live::get_archive_limit_settings_array(false)); if ('' != pb_backupbuddy::$options['importbuddy_pass_hash']) { $additionalParams['ibpass'] = pb_backupbuddy::$options['importbuddy_pass_hash']; } if (false !== ($timezone = self::tz_offset_to_name(get_option('gmt_offset')))) { $additionalParams['timezone'] = $timezone; } require_once pb_backupbuddy::plugin_path() . '/destinations/live/init.php'; $response = pb_backupbuddy_destination_live::stashAPI($destination_settings, 'live-snapshot', $additionalParams, $blocking = true, $passthru_errors = true); self::$_state['stats']['last_remote_snapshot_trigger'] = $trigger; self::$_state['stats']['last_remote_snapshot_response'] = $response; self::$_state['stats']['last_remote_snapshot_response_time'] = microtime(true); self::$_state['stats']['manual_snapshot'] = false; // Set false no matter what. if (pb_backupbuddy::$options['log_level'] == '3') { // Full logging enabled. pb_backupbuddy::status('details', 'live-snapshot response due to logging level: `' . print_r($response, true) . '`. Call params: `' . print_r($additionalParams, true) . ' `.'); } do_action('backupbuddy_run_remote_snapshot_response', $response); return $response; }
<?php require_once pb_backupbuddy::plugin_path() . '/destinations/live/live.php'; if (false === ($destination_id = backupbuddy_live::getLiveID())) { // $destination_id used by _stats.php. return false; } require_once pb_backupbuddy::plugin_path() . '/destinations/live/live_periodic.php'; $state = backupbuddy_live_periodic::get_stats(); include pb_backupbuddy::plugin_path() . '/destinations/live/_stats.php'; return $stats; // Set in _stats.php.
<?php /* BackupBuddy Stash Live Remote Tables Viewer (table format; not file format) * * @author Dustin Bolton * @since 7.0 * */ require_once pb_backupbuddy::plugin_path() . '/destinations/live/live_periodic.php'; $tables = backupbuddy_live_periodic::get_tables(); $tables_list = array(); foreach ($tables as $table_name => $table) { $pendingDelete = __('No', 'it-l10n-backupbuddy'); if (true === $table['d']) { $pendingDelete = __('Yes', 'it-l10n-backupbuddy'); } $sent = __('Unsent', 'it-l10n-backupbuddy'); if ($table['b'] > 0) { $sent = pb_backupbuddy::$format->date(pb_backupbuddy::$format->localize_time($table['b'])) . '<br><span class="description">(' . pb_backupbuddy::$format->time_ago($table['b']) . ' ago)</span>'; } $tables_list[] = array($table_name, pb_backupbuddy::$format->date(pb_backupbuddy::$format->localize_time($table['a'])) . '<br><span class="description">(' . pb_backupbuddy::$format->time_ago($table['a']) . ' ago)</span>', pb_backupbuddy::$format->date(pb_backupbuddy::$format->localize_time($table['m'])) . '<br><span class="description">(' . pb_backupbuddy::$format->time_ago($table['m']) . ' ago)</span>', $sent, pb_backupbuddy::$format->file_size($table['s']), (string) $table['t'], $pendingDelete); } pb_backupbuddy::$ui->list_table($tables_list, array('action' => pb_backupbuddy::page_url(), 'columns' => array(__('Database Tables', 'it-l10n-backupbuddy') . ' <img src="' . pb_backupbuddy::plugin_url() . '/images/sort_down.png" style="vertical-align: 0px;" title="Sorted alphabetically">', __('Added', 'it-l10n-backupbuddy'), __('Modified', 'it-l10n-backupbuddy'), __('Transferred', 'it-l10n-backupbuddy'), __('Size', 'it-l10n-backupbuddy'), __('Send Retries', 'it-l10n-backupbuddy'), __('Pending Delete?', 'it-l10n-backupbuddy')), 'css' => 'width: 100%'));