View source
<?php
function backup_migrate_get_filters($op = NULL) {
$filters =& drupal_static('backup_migrate_get_filters', NULL);
if ($filters === NULL) {
$filters = array();
$definitions = module_invoke_all('backup_migrate_filters');
foreach ($definitions as $definition) {
if (!empty($definition['file'])) {
require_once './' . $definition['file'];
}
$filters[] = new $definition['class']();
}
}
$sort = array();
foreach ($filters as $filter) {
$sort[] = $filter
->weight($op);
}
array_multisort($sort, SORT_ASC, SORT_NUMERIC, $filters);
return $filters;
}
function backup_migrate_backup_migrate_filters() {
return array(
'backup_restore' => array(
'file' => drupal_get_path('module', 'backup_migrate') . '/includes/filters.backup_restore.inc',
'class' => 'backup_migrate_filter_backup_restore',
),
'compression' => array(
'file' => drupal_get_path('module', 'backup_migrate') . '/includes/filters.compression.inc',
'class' => 'backup_migrate_filter_compression',
),
'encryption' => array(
'file' => drupal_get_path('module', 'backup_migrate') . '/includes/filters.encryption.inc',
'class' => 'backup_migrate_filter_encryption',
),
'statusnotify' => array(
'file' => drupal_get_path('module', 'backup_migrate') . '/includes/filters.statusnotify.inc',
'class' => 'backup_migrate_filter_statusnotify',
),
'utils' => array(
'file' => drupal_get_path('module', 'backup_migrate') . '/includes/filters.utils.inc',
'class' => 'backup_migrate_filter_utils',
),
);
}
function backup_migrate_filters_invoke_all() {
$args = func_get_args();
$op = array_shift($args);
$out = array();
$filters = backup_migrate_get_filters($op);
foreach ($filters as $filter) {
if (method_exists($filter, $op)) {
switch (count($args)) {
case 1:
$ret = $filter
->{$op}($args[0]);
break;
case 2:
$ret = $filter
->{$op}($args[0], $args[1]);
break;
default:
$ret = call_user_func_array(array(
$filter,
$op,
), $args);
}
$out = array_merge_recursive($out, (array) $ret);
}
}
return $out;
}
function backup_migrate_filters_backup($file, &$settings) {
backup_migrate_filters_invoke_all('pre_backup', $file, $settings);
$filters = backup_migrate_get_filters('backup');
foreach ($filters as $filter) {
if ($file) {
$file = $filter
->backup($file, $settings);
}
}
backup_migrate_filters_invoke_all('post_backup', $file, $settings);
return $file;
}
function backup_migrate_filters_restore($file, &$settings) {
backup_migrate_filters_invoke_all('pre_restore', $file, $settings);
$filters = backup_migrate_get_filters('restore');
foreach ($filters as $filter) {
if ($file) {
$file = $filter
->restore($file, $settings);
}
}
backup_migrate_filters_invoke_all('post_restore', $file, $settings);
return $file;
}
function backup_migrate_filters_settings_form($settings, $op) {
$out = backup_migrate_filters_invoke_all($op . '_settings_form', $settings);
$out = backup_migrate_filters_settings_form_set_parents($out);
return $out;
}
function backup_migrate_filters_settings_form_set_parents($form) {
foreach (element_children($form) as $key) {
if (!isset($form[$key]['#parents'])) {
$form[$key]['#parents'] = array(
'filters',
$key,
);
$form[$key] = backup_migrate_filters_settings_form_set_parents($form[$key]);
}
}
return $form;
}
function backup_migrate_filters_settings_form_validate($op, $form, &$form_state) {
backup_migrate_filters_invoke_all($op . '_settings_form_validate', $form, $form_state);
}
function backup_migrate_filters_settings_form_submit($op, $form, &$form_state) {
backup_migrate_filters_invoke_all($op . '_settings_form_submit', $form, $form_state);
}
function backup_migrate_filters_settings_default($op) {
return backup_migrate_filters_invoke_all($op . '_settings_default');
}
function backup_migrate_filters_before_action_form($settings, $op) {
$out = array();
$out += backup_migrate_filters_invoke_all('before_action_form', $op, $settings);
$out += backup_migrate_filters_invoke_all('before_' . $op . '_form', $settings);
return $out;
}
function backup_migrate_filters_before_action_form_validate($settings, $op, $form, &$form_state) {
backup_migrate_filters_invoke_all('before_action_form_validate', $op, $settings, $form, $form_state);
backup_migrate_filters_invoke_all('before_' . $op . '_form_validate', $settings, $form, $form_state);
}
function backup_migrate_filters_before_action_form_submit($settings, $op, $form, &$form_state) {
backup_migrate_filters_invoke_all('before_action_form_submit', $op, $settings, $form, $form_state);
backup_migrate_filters_invoke_all('before_' . $op . '_form_submit', $settings, $form, $form_state);
}
function backup_migrate_filters_file_types() {
return backup_migrate_filters_invoke_all('file_types');
}
class backup_migrate_filter {
public $weight = 0;
public $op_weights = array();
public function weight($op = NULL) {
if ($op && isset($this->op_weights[$op])) {
return $this->op_weights[$op];
}
return $this->weight;
}
public function backup_settings_default() {
return array();
}
public function backup_settings_form($settings) {
return array();
}
public function backup_settings_form_validate($form, &$form_state) {
}
public function backup_settings_form_submit($form, &$form_state) {
}
public function restore_settings_default() {
return array();
}
public function restore_settings_form($settings) {
return array();
}
public function restore_settings_form_validate($form, &$form_state) {
}
public function restore_settings_form_submit($form, &$form_state) {
return $form_state['values'];
}
public function file_types() {
return array();
}
public function destinations() {
return array();
}
public function backup($file, $settings) {
return $file;
}
public function pre_backup($file, $settings) {
}
public function post_backup($file, $settings) {
}
public function restore($file, $settings) {
return $file;
}
public function pre_restore($file, $settings) {
}
public function post_restore($file, $settings) {
}
}