'admin/settings/simpleinvite', 'title' => t('Simpleinvite'), 'callback' => 'drupal_get_form', 'callback arguments' => array('simpleinvite_admin_settings'), ); } else { $items[] = array( 'path' => 'simpleinvite', 'title' => t('Invite a friend'), 'callback' => 'drupal_get_form', 'callback arguments' => array('simpleinvite_form'), 'access' => user_access('access content') && $user->mail, ); } return $items; } function simpleinvite_admin_settings() { $form['email']['simpleinvite_page_subject'] = array( '#type' => 'textfield', '#title' => t('Invitation subject'), '#default_value' => variable_get('simpleinvite_page_subject', simpleinvite_mail_text('simpleinvite_page_subject')), '#description' => t('Customize the subject of your invitation e-mail.') .' '. t('Available variables are:') .' @name, !site_url, @site_name, @custom.'); $form['email']['simpleinvite_page_body'] = array( '#type' => 'textarea', '#title' => t('Invitation body'), '#default_value' => variable_get('simpleinvite_page_body', simpleinvite_mail_text('simpleinvite_page_body')), '#description' => t('Customize the body of your invitation e-mail.') .' '. t('Available variables are:') .' @name, !site_url, @site_name, @custom.'); return system_settings_form($form); } function simpleinvite_form() { $form['to'] = array( '#type' => 'textfield', '#required' => TRUE, '#title' => t('To'), '#description' => t('Enter the email addresses you wish to invite. If inviting multiple addresses, separate each by a comma. You may only invite 10 addresses at a time.')); $form['custom'] = array( '#type' => 'textarea', '#title' => t('Message'), '#description' => t('Enter any message you wish to send with the invitation.'), '#cols' => 60, '#rows' => 25); $form['submit'] = array( '#type' => 'submit', '#value' => t('Send')); return $form; } function simpleinvite_form_validate($form_id, $form_values) { $to = explode(',', $form_values['to']); if (count($to) > 10) { form_set_error('to', t('A maximum of 10 addresses was exceeded. No invitations sent.')); } foreach ($to as $mail) { if (!valid_email_address($mail)) { form_set_error('to', t('Invalid email address: %mail. No invitations sent.', array('%mail' => $mail))); } } } function simpleinvite_form_submit($form_id, $form_values) { global $user; $variables = array('@name' => $user->name, '@site_name' => variable_get('site_name', 'drupal'), '@custom' => $form_values['custom'], '!site_url' => url('', NULL, NULL, TRUE)); $message = simpleinvite_mail_text('simpleinvite_page_body', $variables); $subject = simpleinvite_mail_text('simpleinvite_page_subject', $variables); $from = $user->mail; $mails = explode(',', $form_values['to']); foreach ($mails as $to) { drupal_mail('simpleinvite_invite', $to, $subject, $message, $from); } drupal_set_message(format_plural(count($mails), 'One invitation sent.', '%count invitations sent')); } /** * Define all simpleinvite emails * Modelled after Drupal's user.module */ function simpleinvite_mail_text($messageid, $variables = array()) { // Check if an admin setting overrides the default string. if ($admin_setting = variable_get($messageid, FALSE)) { return strtr($admin_setting, $variables); } // No override, return with default strings. else { switch ($messageid) { case 'simpleinvite_page_subject': return t("You are invited by @name to @site_name", $variables); case 'simpleinvite_page_body': return t("@name invites you to check out the '@site_name' web site at !site_url.\n\n@name wants you to know:\n------------------\n\n@custom", $variables); } } }