function backup_migrate_prune_add_form in Backup and migrate prune 7
Same name and namespace in other branches
- 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;
}