"user/". arg(1) ."/contact", 'title' => t('contact'), 'callback' => 'contact_mail_user', 'type' => MENU_LOCAL_TASK, 'weight' => 2); } } return $items; } /** * Implementation of hook_user(). * * Provides signature customization for the user's comments. */ function contact_user($type, $edit, &$user, $category = NULL) { if ($type == 'form' && $category == 'account') { return array(array('title' => t('Contact settings'), 'data' => form_checkbox(t('Personal contact form'), 'contact', 1, $edit['contact'], t('Allow other users to contact you by e-mail via your personal contact form. Note that your e-mail address is not made public and that privileged users such as site administrators are able to contact you even if you choose not to enable this feature.', array('%url' => "user/$user->uid/contact"))), 'weight' => 2)); } if ($type == 'validate') { return array('contact' => $edit['contact']); } } function contact_mail_user() { global $user; if ($account = user_load(array('uid' => arg(1), 'status' => 1))) { if (!$account->contact && !user_access('administer users')) { $output = t('%name is not accepting e-mails.', array('%name' => $account->name)); } else if (!$user->uid) { $output = t('Please login or register to send %name a message.', array('%login' => url('user/login'), '%register' => url('user/register'), '%name' => $account->name)); } else if (!valid_email_address($user->mail)) { $output = t('You need to provide a valid e-mail address to contact other users. Please edit your user information.', array('%url' => url("user/$user->uid/edit"))); } else if (!flood_is_allowed('contact', CONTACT_HOURLY_THRESHOLD)) { $output = t("You can't contact more than %number users per hour. Please try again later.", array('%number' => CONTACT_HOURLY_THRESHOLD)); } else { $edit = $_POST['edit']; if ($edit) { // Validate the message: if (!$edit['message']) { form_set_error('message', t('You must enter a message.')); } if (!$edit['subject']) { form_set_error('subject', t('You must enter a subject.')); } if (!form_get_errors()) { // Compose the body: $message[] = "$account->name,"; $message[] = t("%name (%name-url) has sent you a message via your contact form (%form-url) at %site.", array('%name' => $user->name, '%name-url' => url("user/$user->uid", NULL, NULL, TRUE), '%form-url' => url($_GET['q'], NULL, NULL, TRUE), '%site' => variable_get('site_name', 'drupal'))); $message[] = t("If you don't want to receive such e-mails, you can change your settings at %url.", array('%url' => url("user/$account->uid", NULL, NULL, TRUE))); $message[] = t('Message:'); $message[] = $edit['message']; // Tidy up the body: foreach ($message as $key => $value) { $message[$key] = wordwrap($value); } // Prepare all fields: $to = $account->mail; $from = $user->mail; // Format the subject: $subject = '['. variable_get('site_name', 'drupal') .'] '. $edit['subject']; // Prepare the body: $body = implode("\n\n", $message); // Send the e-mail: user_mail($to, $subject, $body, "From: $from\nReply-to: $from\nX-Mailer: Drupal\nReturn-path: $from\nErrors-to: $from"); // Log the operation: flood_register_event('contact'); watchdog('mail', t('%name-from sent %name-to an e-mail.', array('%name-from' => $user->name, '%name-to' => $account->name))); // Set a status message: drupal_set_message(t('Your message has been sent.')); // Jump to the user's profile page: drupal_goto("user/$account->uid"); } } else { $edit['mail'] = $user->mail; } $output = form_item(t('From'), $user->name .' <'. $user->mail .'>'); $output .= form_item(t('To'), $account->name); $output .= form_textfield(t('Subject'), 'subject', $edit['subject'], 50, 50, NULL, NULL, TRUE); $output .= form_textarea(t('Message'), 'message', $edit['message'], 70, 8, NULL, NULL, TRUE); $output .= form_submit(t('Send e-mail')); $output = form($output); } print theme('page', $output, $account->name); } else { drupal_not_found(); } } ?>