You are here

class backup_migrate_filter_utils in Backup and Migrate 8.3

Same name and namespace in other branches
  1. 8.2 includes/filters.utils.inc \backup_migrate_filter_utils
  2. 6.3 includes/filters.utils.inc \backup_migrate_filter_utils
  3. 6.2 includes/filters.utils.inc \backup_migrate_filter_utils
  4. 7.3 includes/filters.utils.inc \backup_migrate_filter_utils
  5. 7.2 includes/filters.utils.inc \backup_migrate_filter_utils

A filter to run some basic utility functions.

Hierarchy

Expanded class hierarchy of backup_migrate_filter_utils

1 string reference to 'backup_migrate_filter_utils'
backup_migrate_backup_migrate_filters in includes/filters.inc
Implementation of hook_backup_migrate_filters().

File

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 $op_weights = array(
    'pre_backup' => -1000,
    'post_backup' => 1000,
  );
  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_wrapper'] = array(
      '#type' => 'backup_migrate_dependent',
      '#dependencies' => array(
        'filters[utils_site_offline]' => TRUE,
      ),
    );
    $form['advanced']['utils_site_offline_message_wrapper']['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('site_offline_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('Add a note'),
      '#default_value' => !empty($settings['utils_description']) ? $settings['utils_description'] : NULL,
      '#description' => t('Add a short note to the backup file.'),
    );
    $form['advanced']['use_cli'] = array(
      "#type" => "checkbox",
      "#title" => t("Use cli commands"),
      "#default_value" => !empty($settings['use_cli']),
      "#description" => t("Use the command line tools (mysqldump, tar, gzip etc.) if available. This can be faster for large sites but will not work on all servers. EXPERIMENTAL"),
    );
    $form['advanced']['ignore_errors'] = array(
      "#type" => "checkbox",
      "#title" => t("Ignore errors"),
      "#default_value" => !empty($settings['ignore_errors']),
      "#description" => t("Will attempt to complete backup even if certain recoverable errors occur. This may make the backup files invalid. Enable this if you have unreadable files that you want to ignore during backup."),
    );
    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_wrapper'] = array(
      '#type' => 'backup_migrate_dependent',
      '#dependencies' => array(
        'filters[utils_site_offline]' => TRUE,
      ),
    );
    $form['advanced']['utils_site_offline_message_wrapper']['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('site_offline_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']['use_cli'] = array(
      "#type" => "checkbox",
      "#title" => t("Use cli commands"),
      "#default_value" => !empty($settings['use_cli']),
      "#description" => t("Use the command line tools (mysqldump, tar, gzip etc.) if available. This can be faster for large sites but will not work on all servers. EXPERIMENTAL"),
    );

    // $form['advanced']['ignore_errors'] = array(
    //   "#type" => "checkbox",
    //   "#title" => t("Ignore errors"),
    //   "#default_value" => !empty($settings['ignore_errors']),
    //   "#description" => t("Will attempt to complete restore even if certain recoverable errors occur. This may could corrupt your site."),
    // );
    return $form;
  }
  function pre_backup($file, $settings) {
    $this
      ->take_site_offline($settings);
    $this
      ->disable_devel_query($settings);
  }
  function post_backup($file, $settings) {
    $this
      ->enable_devel_query($settings);
    $this
      ->take_site_online($settings);
    if ($file) {
      $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['siteurl'] = url('', array(
      'absolute' => TRUE,
    ));
    $file->file_info['sitename'] = variable_get('site_name', '');
    $file->file_info['drupalversion'] = VERSION;
    $file
      ->calculate_filesize();
    $source = $settings
      ->get('source');
    $file->file_info['bam_sourceid'] = $source
      ->get('id');
    $file->file_info['bam_sourcetype'] = $source
      ->get('subtype');
    $file->file_info['bam_sourcename'] = $source
      ->get('name');

    // Add any additional info that has been added to the settings by other plugins.
    if (!empty($settings->file_info)) {
      $file->file_info += $settings->file_info;
    }
  }

  /**
   * 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.');
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
backup_migrate_filter::$weight property
backup_migrate_filter::backup function This function is called on a backup file after the backup has been completed. 3
backup_migrate_filter::backup_settings_form_submit function Submit the settings form. Any values returned will be saved. 1
backup_migrate_filter::backup_settings_form_validate function Get the form for the settings for this filter. 1
backup_migrate_filter::destinations function Declare any default destinations for this filter. 1
backup_migrate_filter::file_types function Get a list of file types handled by this filter. 3
backup_migrate_filter::restore function This function is called on a backup file before importing it. 3
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::$op_weights property Overrides backup_migrate_filter::$op_weights
backup_migrate_filter_utils::$saved_devel_query property
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. Overrides backup_migrate_filter::backup_settings_default
backup_migrate_filter_utils::backup_settings_form function Get the form for the backup settings for this filter. Overrides backup_migrate_filter::backup_settings_form
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 This function is called immediately post backup. Overrides backup_migrate_filter::post_backup
backup_migrate_filter_utils::post_restore function This function is called immediately post restore. Overrides backup_migrate_filter::post_restore
backup_migrate_filter_utils::pre_backup function This function is called immediately prior to backup. Overrides backup_migrate_filter::pre_backup
backup_migrate_filter_utils::pre_restore function This function is called immediately prior to restore. Overrides backup_migrate_filter::pre_restore
backup_migrate_filter_utils::restore_settings_default function Get the default restore settings for this filter. Overrides backup_migrate_filter::restore_settings_default
backup_migrate_filter_utils::restore_settings_form function Get the form for the restore settings for this filter. Overrides backup_migrate_filter::restore_settings_form
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.