annotate modules/update/update.settings.inc @ 11:589fb7c02327 6.5

Drupal 6.5
author Franck Deroche <webmaster@defr.org>
date Tue, 23 Dec 2008 14:32:19 +0100
parents c1f4ac30525a
children
rev   line source
webmaster@1 1 <?php
webmaster@1 2 // $Id: update.settings.inc,v 1.3 2007/10/20 21:57:50 goba Exp $
webmaster@1 3
webmaster@1 4 /**
webmaster@1 5 * @file
webmaster@1 6 * Code required only for the update status settings form.
webmaster@1 7 */
webmaster@1 8
webmaster@1 9 /**
webmaster@1 10 * Form builder for the update settings tab.
webmaster@1 11 */
webmaster@1 12 function update_settings() {
webmaster@1 13 $form = array();
webmaster@1 14
webmaster@1 15 $notify_emails = variable_get('update_notify_emails', array());
webmaster@1 16 $form['update_notify_emails'] = array(
webmaster@1 17 '#type' => 'textarea',
webmaster@1 18 '#title' => t('E-mail addresses to notify when updates are available'),
webmaster@1 19 '#rows' => 4,
webmaster@1 20 '#default_value' => implode("\n", $notify_emails),
webmaster@1 21 '#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.'),
webmaster@1 22 );
webmaster@1 23
webmaster@1 24 $form['update_check_frequency'] = array(
webmaster@1 25 '#type' => 'radios',
webmaster@1 26 '#title' => t('Check for updates'),
webmaster@1 27 '#default_value' => variable_get('update_check_frequency', 1),
webmaster@1 28 '#options' => array(
webmaster@1 29 '1' => t('Daily'),
webmaster@1 30 '7' => t('Weekly'),
webmaster@1 31 ),
webmaster@1 32 '#description' => t('Select how frequently you want to automatically check for new releases of your currently installed modules and themes.'),
webmaster@1 33 );
webmaster@1 34
webmaster@1 35 $form['update_notification_threshold'] = array(
webmaster@1 36 '#type' => 'radios',
webmaster@1 37 '#title' => t('Notification threshold'),
webmaster@1 38 '#default_value' => variable_get('update_notification_threshold', 'all'),
webmaster@1 39 '#options' => array(
webmaster@1 40 'all' => t('All newer versions'),
webmaster@1 41 'security' => t('Only security updates'),
webmaster@1 42 ),
webmaster@1 43 '#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')))
webmaster@1 44 );
webmaster@1 45
webmaster@1 46 $form = system_settings_form($form);
webmaster@1 47 // Custom valiation callback for the email notification setting.
webmaster@1 48 $form['#validate'][] = 'update_settings_validate';
webmaster@1 49 // We need to call our own submit callback first, not the one from
webmaster@1 50 // system_settings_form(), so that we can process and save the emails.
webmaster@1 51 unset($form['#submit']);
webmaster@1 52
webmaster@1 53 return $form;
webmaster@1 54 }
webmaster@1 55
webmaster@1 56 /**
webmaster@1 57 * Validation callback for the settings form.
webmaster@1 58 *
webmaster@1 59 * Validates the email addresses and ensures the field is formatted correctly.
webmaster@1 60 */
webmaster@1 61 function update_settings_validate($form, &$form_state) {
webmaster@1 62 if (!empty($form_state['values']['update_notify_emails'])) {
webmaster@1 63 $valid = array();
webmaster@1 64 $invalid = array();
webmaster@1 65 foreach (explode("\n", trim($form_state['values']['update_notify_emails'])) as $email) {
webmaster@1 66 $email = trim($email);
webmaster@1 67 if (!empty($email)) {
webmaster@1 68 if (valid_email_address($email)) {
webmaster@1 69 $valid[] = $email;
webmaster@1 70 }
webmaster@1 71 else {
webmaster@1 72 $invalid[] = $email;
webmaster@1 73 }
webmaster@1 74 }
webmaster@1 75 }
webmaster@1 76 if (empty($invalid)) {
webmaster@1 77 $form_state['notify_emails'] = $valid;
webmaster@1 78 }
webmaster@1 79 elseif (count($invalid) == 1) {
webmaster@1 80 form_set_error('update_notify_emails', t('%email is not a valid e-mail address.', array('%email' => reset($invalid))));
webmaster@1 81 }
webmaster@1 82 else {
webmaster@1 83 form_set_error('update_notify_emails', t('%emails are not valid e-mail addresses.', array('%emails' => implode(', ', $invalid))));
webmaster@1 84 }
webmaster@1 85 }
webmaster@1 86 }
webmaster@1 87
webmaster@1 88 /**
webmaster@1 89 * Submit handler for the settings tab.
webmaster@1 90 */
webmaster@1 91 function update_settings_submit($form, $form_state) {
webmaster@1 92 $op = $form_state['values']['op'];
webmaster@1 93
webmaster@1 94 if ($op == t('Reset to defaults')) {
webmaster@1 95 unset($form_state['notify_emails']);
webmaster@1 96 }
webmaster@1 97 else {
webmaster@1 98 if (empty($form_state['notify_emails'])) {
webmaster@1 99 variable_del('update_notify_emails');
webmaster@1 100 }
webmaster@1 101 else {
webmaster@1 102 variable_set('update_notify_emails', $form_state['notify_emails']);
webmaster@1 103 }
webmaster@1 104 unset($form_state['notify_emails']);
webmaster@1 105 unset($form_state['values']['update_notify_emails']);
webmaster@1 106 }
webmaster@1 107 system_settings_form_submit($form, $form_state);
webmaster@1 108 }