class backup_migrate_filter_utils

  1. nittany7 modules/contrib/backup_migrate/includes/filters.utils.inc backup_migrate_filter_utils
  2. mooc7 modules/contrib/backup_migrate/includes/filters.utils.inc backup_migrate_filter_utils

A filter to send a notification email on success or failure of backup.

Hierarchy

Expanded class hierarchy of backup_migrate_filter_utils

Members

Contains filters are case sensitive
Namesort descending Modifiers Type Description
backup_migrate_filter::backup function This function is called on a backup file after the backup has been completed.
backup_migrate_filter::backup_settings_form_submit function Submit the settings form. Any values returned will be saved.
backup_migrate_filter::backup_settings_form_validate function Get the form for the settings for this filter.
backup_migrate_filter::destinations function Declare any default destinations for this filter.
backup_migrate_filter::file_types function Get a list of file types handled by this filter.
backup_migrate_filter::restore function This function is called on a backup file before importing it.
backup_migrate_filter::restore_settings_form_submit function Submit the settings form. Any values returned will be saved.
backup_migrate_filter::restore_settings_form_validate function Get the form for the settings for this filter.
backup_migrate_filter::weight function Get the weight of the filter for the given op.
backup_migrate_filter_utils::add_file_info function Add the backup metadata to the file.
backup_migrate_filter_utils::backup_settings_default function Get the default backup settings for this filter.
backup_migrate_filter_utils::backup_settings_form function Get the form for the backup settings for this filter.
backup_migrate_filter_utils::disable_devel_query function Disable devel query logging if it's active and the user has chosen to do so.
backup_migrate_filter_utils::enable_devel_query function Restore devel query to previous state.
backup_migrate_filter_utils::post_backup function
backup_migrate_filter_utils::post_restore function
backup_migrate_filter_utils::pre_backup function
backup_migrate_filter_utils::pre_restore function
backup_migrate_filter_utils::restore_settings_default function Get the default restore settings for this filter.
backup_migrate_filter_utils::restore_settings_form function Get the form for the restore settings for this filter.
backup_migrate_filter_utils::take_site_offline function Take the site offline if configured to do so.
backup_migrate_filter_utils::take_site_online function Take the site online again after backup or restore.

File

modules/contrib/backup_migrate/includes/filters.utils.inc, line 14
A filter to run some basic utility functions. Basically any useful option not big enough to justify it's own class.

View source
class backup_migrate_filter_utils extends backup_migrate_filter {
  var $saved_devel_query = NULL;

  /**
   * Get the default backup settings for this filter.
   */
  function backup_settings_default() {
    return array(
      'utils_disable_query_log' => TRUE,
      'utils_site_offline' => FALSE,
      'utils_description' => '',
    );
  }

  /**
   * Get the default restore settings for this filter.
   */
  function restore_settings_default() {
    return array(
      'utils_disable_query_log' => TRUE,
      'utils_site_offline' => FALSE,
    );
  }

  /**
   * Get the form for the backup settings for this filter.
   */
  function backup_settings_form($settings) {
    $form = array();
    if (module_exists('devel') && variable_get('dev_query', 0)) {
      $form['database']['utils_disable_query_log'] = array(
        '#type' => 'checkbox',
        '#title' => t('Disable query log'),
        '#default_value' => !empty($settings['utils_disable_query_log']) ? $settings['utils_disable_query_log'] : NULL,
        '#description' => t('Disable the devel module\'s query logging during the backup operation. It will be enabled again after backup is complete. This is very highly recommended.'),
      );
    }
    $form['advanced']['utils_site_offline'] = array(
      '#type' => 'checkbox',
      '#title' => t('Take site offline'),
      '#default_value' => !empty($settings['utils_site_offline']) ? $settings['utils_site_offline'] : NULL,
      '#description' => t('Take the site offline during backup and show a maintenance message. Site will be taken back online once the backup is complete.'),
    );
    $form['advanced']['utils_site_offline_message'] = array(
      '#type' => 'textarea',
      '#title' => t('Site off-line message'),
      '#default_value' => !empty($settings['utils_site_offline_message']) ? $settings['utils_site_offline_message'] : variable_get('maintenance_mode_message', t('@site is currently under maintenance. We should be back shortly. Thank you for your patience.', array('@site' => variable_get('site_name', 'Drupal')))),
      '#description' => t('Message to show visitors when the site is in off-line mode.'),
    );
    $form['advanced']['utils_description'] = array(
      '#type' => 'textarea',
      '#title' => t('Description'),
      '#default_value' => !empty($settings['utils_description']) ? $settings['utils_description'] : NULL,
      '#description' => t('Add a short description to the backup file.'),
    );

    return $form;
  }

  /**
   * Get the form for the restore settings for this filter.
   */
  function restore_settings_form($settings) {
    $form = array();
    if (module_exists('devel') && variable_get('dev_query', 0)) {
      $form['advanced']['utils_disable_query_log'] = array(
        '#type' => 'checkbox',
        '#title' => t('Disable query log'),
        '#default_value' => @$settings['utils_disable_query_log'],
        '#description' => t('Disable the devel module\'s query logging during the restore operation. It will be enabled again after restore is complete. This is very highly recommended.'),
      );
    }
    $form['advanced']['utils_site_offline'] = array(
      '#type' => 'checkbox',
      '#title' => t('Take site offline'),
      '#default_value' => !empty($settings['utils_site_offline']) ? $settings['utils_site_offline'] : NULL,
      '#description' => t('Take the site offline during restore and show a maintenance message. Site will be taken back online once the restore is complete.'),
    );
    $form['advanced']['utils_site_offline_message'] = array(
      '#type' => 'textarea',
      '#title' => t('Site off-line message'),
      '#default_value' => !empty($settings['utils_site_offline_message']) ? $settings['utils_site_offline_message'] : variable_get('maintenance_mode_message', t('@site is currently under maintenance. We should be back shortly. Thank you for your patience.', array('@site' => variable_get('site_name', 'Drupal')))),
      '#description' => t('Message to show visitors when the site is in off-line mode.'),
    );
    return $form;
  }

  function pre_backup($source, $file, $settings) {
    $this->take_site_offline($settings);
    $this->disable_devel_query($settings);
  }

  function post_backup($source, $file, $settings) {
    $this->enable_devel_query($settings);
    $this->take_site_online($settings);
    $this->add_file_info($file, $settings);
  }

  function pre_restore($file, $settings) {
    $this->disable_devel_query($settings);
    $this->take_site_offline($settings);
  }

  function post_restore($file, $settings) {
    $this->enable_devel_query($settings);
    $this->take_site_online($settings);
  }

  /**
   * Disable devel query logging if it's active and the user has chosen to do so.
   */
  function disable_devel_query($settings) {
    $this->saved_devel_query = variable_get('dev_query', 0);
    if (module_exists('devel') && variable_get('dev_query', 0) && !empty($settings->filters['utils_disable_query_log'])) {
      variable_set('dev_query', 0);
    }
  }

  /**
   * Restore devel query to previous state.
   */
  function enable_devel_query($settings) {
    if (module_exists('devel')) {
      variable_set('dev_query', $this->saved_devel_query);
    }
  }

  /**
   * Add the backup metadata to the file.
   */
  function add_file_info($file, $settings) {
    $file->file_info['description'] = $settings->filters['utils_description'];
    $file->file_info['datestamp'] = time();
    $file->file_info['generator'] = 'Backup and Migrate (http://drupal.org/project/backup_migrate)';
    $file->file_info['generatorversion'] = BACKUP_MIGRATE_VERSION;
    $file->file_info['sites'] = array(
      '0' => array(
        'version' => VERSION,
        'name' => variable_get('site_name', ''),
        'url' => url('', array('absolute' => TRUE)),
      ),
    );

  }

  /**
   * Take the site offline if configured to do so.
   */
  function take_site_offline($settings) {
    // Save the current state of the site in case a restore overwrites it.
    $this->saved_site_offline = variable_get('maintenance_mode', 0);
    if (@$settings->filters['utils_site_offline']) {
      $this->saved_site_offline_message = variable_get('maintenance_mode_message', NULL);
      if (!empty($settings->filters['utils_site_offline_message'])) {
        $this->saved_site_offline_message = variable_get('maintenance_mode_message', NULL);
        variable_set('maintenance_mode_message', $settings->filters['utils_site_offline_message']);
      }
      variable_set('maintenance_mode', 1);
      _backup_migrate_message('Site was taken offline.');
    }
  }

  /**
   * Take the site online again after backup or restore.
   */
  function take_site_online($settings) {
    // Take the site back off/online because the restored db may have changed that setting.
    variable_set('maintenance_mode', $this->saved_site_offline);
    if ($settings->filters['utils_site_offline']) {
      if (!empty($this->saved_site_offline_message)) {
        variable_set('maintenance_mode_message', $this->saved_site_offline_message);
      }
      _backup_migrate_message('Site was taken online.');
    }
  }
}