109 lines
3.9 KiB
PHP
109 lines
3.9 KiB
PHP
<?php
|
|
// $Id$
|
|
|
|
/**
|
|
* @file
|
|
* Code required only for the update status settings form.
|
|
*/
|
|
|
|
/**
|
|
* Form builder for the update settings tab.
|
|
*/
|
|
function update_settings() {
|
|
$form = array();
|
|
|
|
$notify_emails = variable_get('update_notify_emails', array());
|
|
$form['update_notify_emails'] = array(
|
|
'#type' => 'textarea',
|
|
'#title' => t('E-mail addresses to notify when updates are available'),
|
|
'#rows' => 4,
|
|
'#default_value' => implode("\n", $notify_emails),
|
|
'#description' => t('Whenever your site checks for available updates and finds new releases, it can notify a list of users via e-mail. Put each address on a separate line. If blank, no e-mails will be sent.'),
|
|
);
|
|
|
|
$form['update_check_frequency'] = array(
|
|
'#type' => 'radios',
|
|
'#title' => t('Check for updates'),
|
|
'#default_value' => variable_get('update_check_frequency', 1),
|
|
'#options' => array(
|
|
'1' => t('Daily'),
|
|
'7' => t('Weekly'),
|
|
),
|
|
'#description' => t('Select how frequently you want to automatically check for new releases of your currently installed modules and themes.'),
|
|
);
|
|
|
|
$form['update_notification_threshold'] = array(
|
|
'#type' => 'radios',
|
|
'#title' => t('Notification threshold'),
|
|
'#default_value' => variable_get('update_notification_threshold', 'all'),
|
|
'#options' => array(
|
|
'all' => t('All newer versions'),
|
|
'security' => t('Only security updates'),
|
|
),
|
|
'#description' => t('If there are updates available of Drupal core or any of your installed modules and themes, your site will print an error message on the <a href="@status_report">status report</a>, the <a href="@modules_page">modules page</a>, and the <a href="@themes_page">themes page</a>. You can choose to only see these error messages if a security update is available, or to be notified about any newer versions.', array('@status_report' => url('admin/reports/status'), '@modules_page' => url('admin/build/modules'), '@themes_page' => url('admin/build/themes')))
|
|
);
|
|
|
|
$form = system_settings_form($form, FALSE);
|
|
// Custom validation callback for the email notification setting.
|
|
$form['#validate'][] = 'update_settings_validate';
|
|
// We need to call our own submit callback first, not the one from
|
|
// system_settings_form(), so that we can process and save the emails.
|
|
unset($form['#submit']);
|
|
|
|
return $form;
|
|
}
|
|
|
|
/**
|
|
* Validation callback for the settings form.
|
|
*
|
|
* Validates the email addresses and ensures the field is formatted correctly.
|
|
*/
|
|
function update_settings_validate($form, &$form_state) {
|
|
if (!empty($form_state['values']['update_notify_emails'])) {
|
|
$valid = array();
|
|
$invalid = array();
|
|
foreach (explode("\n", trim($form_state['values']['update_notify_emails'])) as $email) {
|
|
$email = trim($email);
|
|
if (!empty($email)) {
|
|
if (valid_email_address($email)) {
|
|
$valid[] = $email;
|
|
}
|
|
else {
|
|
$invalid[] = $email;
|
|
}
|
|
}
|
|
}
|
|
if (empty($invalid)) {
|
|
$form_state['notify_emails'] = $valid;
|
|
}
|
|
elseif (count($invalid) == 1) {
|
|
form_set_error('update_notify_emails', t('%email is not a valid e-mail address.', array('%email' => reset($invalid))));
|
|
}
|
|
else {
|
|
form_set_error('update_notify_emails', t('%emails are not valid e-mail addresses.', array('%emails' => implode(', ', $invalid))));
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Submit handler for the settings tab.
|
|
*/
|
|
function update_settings_submit($form, $form_state) {
|
|
$op = $form_state['values']['op'];
|
|
|
|
if ($op == t('Reset to defaults')) {
|
|
unset($form_state['notify_emails']);
|
|
}
|
|
else {
|
|
if (empty($form_state['notify_emails'])) {
|
|
variable_del('update_notify_emails');
|
|
}
|
|
else {
|
|
variable_set('update_notify_emails', $form_state['notify_emails']);
|
|
}
|
|
unset($form_state['notify_emails']);
|
|
unset($form_state['values']['update_notify_emails']);
|
|
}
|
|
system_settings_form_submit($form, $form_state);
|
|
}
|