diff options
Diffstat (limited to 'mod/invitefriends/actions')
-rw-r--r-- | mod/invitefriends/actions/invite.php | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/mod/invitefriends/actions/invite.php b/mod/invitefriends/actions/invite.php new file mode 100644 index 000000000..eed156d69 --- /dev/null +++ b/mod/invitefriends/actions/invite.php @@ -0,0 +1,88 @@ +<?php + +/** + * Elgg invite friends action + * + * @package ElggInviteFriends + */ + +$site = elgg_get_site_entity(); + +$emails = get_input('emails'); +$emailmessage = get_input('emailmessage'); + +$emails = trim($emails); +if (strlen($emails) > 0) { + $emails = preg_split('/\\s+/', $emails, -1, PREG_SPLIT_NO_EMPTY); +} + +if (!is_array($emails) || count($emails) == 0) { + register_error(elgg_echo('invitefriends:noemails')); + forward(REFERER); +} + +$current_user = elgg_get_logged_in_user_entity(); + +$error = FALSE; +$bad_emails = array(); +$already_members = array(); +$sent_total = 0; +foreach ($emails as $email) { + + $email = trim($email); + if (empty($email)) { + continue; + } + + // send out other email addresses + if (!is_email_address($email)) { + $error = TRUE; + $bad_emails[] = $email; + continue; + } + + if (get_user_by_email($email)) { + $error = TRUE; + $already_members[] = $email; + continue; + } + + $link = elgg_get_site_url() . 'register?friend_guid=' . $current_user->guid . '&invitecode=' . generate_invite_code($current_user->username); + $message = elgg_echo('invitefriends:email', array( + $site->name, + $current_user->name, + $emailmessage, + $link + ) + ); + + $subject = elgg_echo('invitefriends:subject', array($site->name)); + + // create the from address + $site = get_entity($site->guid); + if ($site && $site->email) { + $from = $site->email; + } else { + $from = 'noreply@' . get_site_domain($site->guid); + } + + elgg_send_email($from, $email, $subject, $message); + $sent_total++; +} + +if ($error) { + register_error(elgg_echo('invitefriends:invitations_sent', array($sent_total))); + + if (count($bad_emails) > 0) { + register_error(elgg_echo('invitefriends:email_error', array(implode(', ', $bad_emails)))); + } + + if (count($already_members) > 0) { + register_error(elgg_echo('invitefriends:already_members', array(implode(', ', $already_members)))); + } + +} else { + system_message(elgg_echo('invitefriends:success')); +} + +forward(REFERER); |