| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321 | <?php/** * @file * All of the settings profiles handling code for Backup and Migrate. */backup_migrate_include('crud');/** * Get all the available backup profiles. */function backup_migrate_get_profiles() {  backup_migrate_include('filters');  static $profiles = NULL;  // Get the list of profiles and cache them locally.  if ($profiles === NULL) {    $profiles = backup_migrate_crud_get_items('profile');  }  return $profiles;}/** * Implementation of hook_backup_migrate_profiles_alter(). * * Add default settings for any plugins which didn't exist when the profile was saved. */function backup_migrate_backup_migrate_profiles_alter(&$profiles) {  foreach ($profiles as $id => $profile) {    // Set the default values for filter setting which don't exist in the profile.    $profiles[$id]->filters = (array)@$profile->filters + (array)backup_migrate_filters_settings_default('backup');  }}/** * Get the profile info for the profile with the given ID, or NULL if none exists. */function backup_migrate_get_profile($profile_id) {  $profiles = backup_migrate_get_profiles();  return @$profiles[$profile_id];}/** * Implementation of hook_backup_migrate_profiles(). */function backup_migrate_backup_migrate_profiles() {  $out = array();  // Get the module default profile.  $out['default'] = backup_migrate_crud_create_item('profile', array('name' => t("Default Settings"), 'profile_id' => 'default'));  return $out;}/* Utilities *//** * Get the available profiles as an options array for a form item. */function _backup_migrate_get_profile_form_item_options() {  $out = array();  foreach ((array)backup_migrate_get_profiles() as $key => $profile) {    $out[$key] = $profile->get('name');  }  return $out;}/** * Get a form to configure the profile. */function _backup_migrate_ui_backup_settings_form($profile) {  drupal_add_js(array('backup_migrate' => array('checkboxLinkText' => t('View as checkboxes'))), array('type' => 'setting'));  drupal_add_js(drupal_get_path('module', 'backup_migrate') .'/backup_migrate.js', array('type' => 'file', 'scope' => 'footer'));  drupal_add_css(drupal_get_path('module', 'backup_migrate') .'/backup_migrate.css');  backup_migrate_include('files', 'destinations', 'filters');  $form    = array();  $form['file'] = array(    "#type" => "fieldset",    "#title" => t("Backup File"),    "#collapsible" => TRUE,    "#collapsed" => FALSE,    "#tree" => FALSE,  );  $form['file']['filename'] = array(    "#type" => "textfield",    "#title" => t("Backup file name"),    "#default_value" => $profile->filename,  );  if (module_exists('token')) {    $form['file']['filename']['#description'] = t('You can use tokens in the file name.');    $form['file']['token_help'] = array(      '#title' => t('Replacement patterns'),      '#type' => 'fieldset',      '#collapsible' => TRUE,      '#collapsed' => TRUE,    );    $form['file']['token_help']['help'] = array(      '#theme' => 'token_tree',      '#token_types' => array('current-date', 'site'),      '#global_types' => FALSE,    );  }  $form['file']['append_timestamp'] = array(    "#type" => "checkbox",    "#title" => t("Append a timestamp."),    "#default_value" => $profile->append_timestamp,  );  $form['file']['timestamp_format'] = array(    "#type" => "textfield",    "#title" => t("Timestamp format"),    "#default_value" => $profile->timestamp_format,    "#description" => t('Should be a PHP <a href="!url">date()</a> format string.', array('!url' => 'http://www.php.net/date')),  );  $form['advanced'] = array('#weight' => 10);  $form = array_merge_recursive($form, backup_migrate_filters_settings_form($profile->filters, 'backup'));  // Add the advanced fieldset if there are any fields in it.  if ($form['advanced']) {    $form['advanced']['#type'] = 'fieldset';    $form['advanced']['#title'] = t('Advanced Options');    $form['advanced']['#collapsed'] = true;    $form['advanced']['#collapsible'] = true;  }  $form['#validate'][]  = '_backup_migrate_ui_backup_settings_form_validate';  $form['#submit'][]    = '_backup_migrate_ui_backup_settings_form_submit';  return $form;}/** * Validate the profile form. */function _backup_migrate_ui_backup_settings_form_validate($form, &$form_state) {  backup_migrate_filters_settings_form_validate('backup', $form, $form_state);}/** * Submit the profile form. */function _backup_migrate_ui_backup_settings_form_submit($form, &$form_state) {  backup_migrate_filters_settings_form_submit('backup', $form, $form_state);}  /** * Get the default profile. */function _backup_migrate_profile_default_profile() {  backup_migrate_include('files', 'filters');  return array(    'source_id' => 'db',    'filename' => _backup_migrate_default_filename(),    'append_timestamp' => 1,    'timestamp_format' => 'Y-m-d\TH-i-s',    'filters' => backup_migrate_filters_settings_default('backup'),  );}/** * Get the default profile saved by the user (or the module default if none exists). */function _backup_migrate_profile_saved_default_profile($profile_id = NULL) {  $profile_id = $profile_id ? $profile_id : variable_get("backup_migrate_profile_id", 'default');  $profile = NULL;  if ($profile_id) {    $profile = backup_migrate_get_profile($profile_id);  }  if (!$profile) {    $profile = backup_migrate_get_profile('default');  }  return $profile;}/** * A profile class for crud operations. */class backup_migrate_profile extends backup_migrate_item {  var $db_table = "backup_migrate_profiles";  var $type_name = "profile";  var $singular = 'profile';  var $plural = 'profiles';  /**   * This function is not supposed to be called. It is just here to help the po extractor out.   */  function strings() {    // Help the pot extractor find these strings.    t('Profile');    t('Profiles');    t('profile');    t('profiles');  }  /**   * Get the default values for standard parameters.   */  function get_default_values() {    return _backup_migrate_profile_default_profile() + array('name' => t("Untitled Profile"));  }  /**   * Get a table of all items of this type.   */    function get_list() {    drupal_add_css(drupal_get_path('module', 'backup_migrate') .'/backup_migrate.css');    return parent::get_list();  }  /**   * Get the columns needed to list the type.   */    function get_list_column_info() {    $out = parent::get_list_column_info();    $out = array(      'name'                  => array('title' => t('Name')),      'source_name'           => array('title' => t('Source')),      'filename'              => array('title' => t('Filename')),    ) + $out;    return $out;  }  /**   * Get a row of data to be used in a list of items of this type.   */    function get_list_row() {    $row = parent::get_list_row();    if (empty($this->enabled)) {      foreach ($row as $key => $field) {        $row[$key] = array('data' => $field, 'class' => 'profile-list-disabled');      }    }    return $row;  }  /**   * Set the source of this setings profile. Takes either a source object or source id.   */  function set_source($source) {    if (is_object($source)) {      $this->source = $source;      $this->source_id = $source->get_id();    }    else {      $this->source_id = $source;      unset($this->source);    }  }  /**   * Get the source of the profile.   */  function get_source() {    backup_migrate_include('destinations');    if (!empty($this->source_id) && (empty($this->source) || $this->source->destination_id !== $this->source_id)) {      $this->source = backup_migrate_get_destination($this->source_id);    }    return empty($this->source) ? NULL : $this->source;  }  /**   * Get the name of the source.   */  function get_source_name() {    if ($source = $this->get_source()) {      return $source->get_name();    }    return t("Missing");  }  /**   * Get the destination of the profile.   */  function get_destination() {    backup_migrate_include('destinations');    if (!empty($this->destination_id) && (empty($this->destination) || $this->destination->destination_id !== $this->destination_id)) {      $this->destination = backup_migrate_get_destination($this->destination_id);    }    return empty($this->destination) ? NULL : $this->destination;  }  /**   * Get the name of the destination.   */  function get_destination_name() {    if ($destination = $this->get_destination()) {      return $destination->get_name();    }    return t("Missing");  }  /**   * Get the edit form.   */  function edit_form() {    $form = parent::edit_form();    $form['name'] = array(      "#type" => "textfield",      "#title" => t("Profile Name"),      '#required' => TRUE,      "#default_value" => $this->get('name'),    );    $form += _backup_migrate_ui_backup_settings_form($this);    return $form;  }  /**   * Get the message to send to the user when confirming the deletion of the item.   */  function delete_confirm_message() {    return t('Are you sure you want to delete the profile %name? Any schedules using this profile will be disabled.', array('%name' => $this->get('name')));  }}
 |