diff modules/update/update.settings.inc @ 1:c1f4ac30525a 6.0

Drupal 6.0
author Franck Deroche <webmaster@defr.org>
date Tue, 23 Dec 2008 14:28:28 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/update/update.settings.inc	Tue Dec 23 14:28:28 2008 +0100
@@ -0,0 +1,108 @@
+<?php
+// $Id: update.settings.inc,v 1.3 2007/10/20 21:57:50 goba Exp $
+
+/**
+ * @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);
+  // Custom valiation 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);
+}