You are here

function backup_migrate_prune_add_form in Backup and migrate prune 7

Same name and namespace in other branches
  1. 7.2 backup_migrate_prune.module \backup_migrate_prune_add_form()
1 string reference to 'backup_migrate_prune_add_form'
backup_migrate_prune_menu in ./backup_migrate_prune.module
Implementation of hook_menu().

File

./backup_migrate_prune.module, line 75
Create (manually or scheduled) and restore backups of your Drupal MySQL database with an option to exclude table data (e.g. cache_*)

Code

function backup_migrate_prune_add_form($form, $form_state, $gardener_id = NULL) {
  backup_migrate_include('destinations');
  try {
    $gardener = new Gardener($gardener_id);
  } catch (ErrorException $e) {
    drupal_set_message($e
      ->getMessage(), 'error');
  }
  $form = array();
  if ($gardener_id) {
    drupal_set_title(t('Edit gardener: @name.', array(
      '@name' => $gardener
        ->getName(),
    )));
    $message = t('If you change the deletion settings of a gardener will probably end up deleting backups you kept previously. If you are not sure about the resulting configuration <strong>do not change</strong> the deletion settings.<br />Example: If you kept the backups in June for the last 3 years and you change that setting to March all the June backups will be gone.');
    $form['warning'] = array(
      'title' => array(
        '#markup' => '<h3>' . t('Important notice') . '</h3>',
      ),
      'message' => array(
        '#markup' => $message,
      ),
    );
  }
  $form['name'] = array(
    '#type' => 'textfield',
    '#title' => t('Name'),
    '#description' => t('Enter a name describing your gardener.'),
    '#required' => TRUE,
    '#default_value' => $gardener
      ->getName(),
  );
  foreach (backup_migrate_get_destinations() as $key => $value) {
    $options[$key] = $value->name;
  }
  $form['destination'] = array(
    '#type' => 'select',
    '#title' => t('Destination'),
    '#description' => t('Select the destination to act upon.'),
    '#options' => $options,
    '#required' => TRUE,
    '#default_value' => $gardener_id ? $gardener
      ->getDestination()
      ->get_id() : '',
  );
  $form['settings'] = array(
    '#type' => 'fieldset',
    '#title' => t('Deletion settings'),
    '#tree' => TRUE,
  );
  $form['settings']['thisweek_slot'] = array(
    '#type' => 'fieldset',
    '#title' => t('Backups created this week'),
    '#description' => t('Prune backups created this week leaving one backup per day.'),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
    '#tree' => TRUE,
  );
  $form['settings']['thisweek_slot']['active'] = array(
    '#type' => 'checkbox',
    '#title' => t('Active'),
    '#default_value' => TRUE,
    '#disabled' => TRUE,
  );
  $form['settings']['thismonth_slot'] = array(
    '#type' => 'fieldset',
    '#title' => t('Backups created this month'),
    '#description' => t('Prune backups created this month leaving only one backup per week.'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#tree' => TRUE,
  );
  $form['settings']['thismonth_slot']['active'] = array(
    '#type' => 'checkbox',
    '#title' => t('Active'),
  );
  $form['settings']['thismonth_slot']['keep'] = array(
    '#type' => 'select',
    '#options' => array(
      1 => t('Monday'),
      2 => t('Tuesday'),
      3 => t('Wednesday'),
      4 => t('Thursday'),
      5 => t('Friday'),
      6 => t('Saturday'),
      7 => t('Sunday'),
    ),
    '#title' => t('Preferred day to keep'),
    '#description' => t('Select the day in the week you want to keep. The most recent backup will be kept. If there is no backup on your preferred day a random day will be used.'),
  );
  $form['settings']['thisyear_slot'] = array(
    '#type' => 'fieldset',
    '#title' => t('Backups created this year'),
    '#description' => t('Prune backups created this year leaving only one backup per month.'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#tree' => TRUE,
  );
  $form['settings']['thisyear_slot']['active'] = array(
    '#type' => 'checkbox',
    '#title' => t('Active'),
  );
  $form['settings']['thisyear_slot']['keep'] = array(
    '#type' => 'select',
    '#options' => array(
      1 => t('1st week'),
      2 => t('2nd week'),
      3 => t('3rd week'),
      4 => t('4th week'),
    ),
    '#title' => t('Preferred week to keep'),
    '#description' => t('Select the week of the month to keep. Only the first four weeks will be considered. If there is no backup on your preferred week a random week will be used.'),
  );
  $form['settings']['pastyears_slot'] = array(
    '#type' => 'fieldset',
    '#title' => t('Backups created past years'),
    '#description' => t('Prune backups created more than one year ago leaving only one backup per year.'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#tree' => TRUE,
  );
  $form['settings']['pastyears_slot']['active'] = array(
    '#type' => 'checkbox',
    '#title' => t('Active'),
  );
  $form['settings']['pastyears_slot']['keep'] = array(
    '#type' => 'select',
    '#options' => array(
      1 => t('January'),
      2 => t('February'),
      3 => t('March'),
      4 => t('April'),
      5 => t('May'),
      6 => t('June'),
      7 => t('July'),
      8 => t('August'),
      9 => t('September'),
      10 => t('October'),
      11 => t('November'),
      12 => t('December'),
    ),
    '#title' => t('Preferred month to keep'),
    '#description' => t('Select the month in the year you want to keep. If there is no backup on your preferred month a random month will be used.'),
  );
  $settings = $gardener
    ->getSettings();
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );
  if ($settings) {

    // Fill in the default values
    $form['settings']['thismonth_slot']['active']['#default_value'] = $settings['thismonth_slot']['active'];
    $form['settings']['thismonth_slot']['keep']['#default_value'] = $settings['thismonth_slot']['keep'];
    $form['settings']['thisyear_slot']['active']['#default_value'] = $settings['thisyear_slot']['active'];
    $form['settings']['thisyear_slot']['keep']['#default_value'] = $settings['thisyear_slot']['keep'];
    $form['settings']['pastyears_slot']['active']['#default_value'] = $settings['pastyears_slot']['active'];
    $form['settings']['pastyears_slot']['keep']['#default_value'] = $settings['pastyears_slot']['keep'];
  }
  $form['gardener_id'] = array(
    '#type' => 'hidden',
    '#value' => $gardener_id,
  );
  $form['#submit'][] = 'backup_migrate_prune_menu_submit';
  return $form;
}