2007-07-11 15:15:40 +00:00
< ? 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 ),
2007-08-18 11:30:59 +00:00
'#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.' ),
2007-07-11 15:15:40 +00:00
);
$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' ),
),
2007-10-20 21:57:50 +00:00
'#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' )))
2007-07-11 15:15:40 +00:00
);
2009-01-11 21:19:19 +00:00
$form = system_settings_form ( $form , FALSE );
2008-12-30 16:43:20 +00:00
// Custom validation callback for the email notification setting.
2007-07-11 15:15:40 +00:00
$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 );
}