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 } |