aboutsummaryrefslogtreecommitdiff
path: root/mod/invitefriends/actions/invite.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/invitefriends/actions/invite.php')
-rw-r--r--mod/invitefriends/actions/invite.php51
1 files changed, 34 insertions, 17 deletions
diff --git a/mod/invitefriends/actions/invite.php b/mod/invitefriends/actions/invite.php
index abc212bea..eed156d69 100644
--- a/mod/invitefriends/actions/invite.php
+++ b/mod/invitefriends/actions/invite.php
@@ -4,12 +4,10 @@
* Elgg invite friends action
*
* @package ElggInviteFriends
- * @author Curverider Ltd
- * @copyright Curverider Ltd 2008-2010
- * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
- * @link http://elgg.org/
*/
+$site = elgg_get_site_entity();
+
$emails = get_input('emails');
$emailmessage = get_input('emailmessage');
@@ -19,15 +17,17 @@ if (strlen($emails) > 0) {
}
if (!is_array($emails) || count($emails) == 0) {
- register_error(elgg_echo('invitefriends:failure'));
- forward($_SERVER['HTTP_REFERER']);
+ register_error(elgg_echo('invitefriends:noemails'));
+ forward(REFERER);
}
-$current_user = get_loggedin_user();
+$current_user = elgg_get_logged_in_user_entity();
$error = FALSE;
$bad_emails = array();
-foreach($emails as $email) {
+$already_members = array();
+$sent_total = 0;
+foreach ($emails as $email) {
$email = trim($email);
if (empty($email)) {
@@ -41,31 +41,48 @@ foreach($emails as $email) {
continue;
}
- $link = $CONFIG->wwwroot . 'pg/register?friend_guid=' . $current_user->guid . '&invitecode=' . generate_invite_code($current_user->username);
- $message = sprintf(elgg_echo('invitefriends:email'),
- $CONFIG->site->name,
+ 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 = sprintf(elgg_echo('invitefriends:subject'), $CONFIG->site->name);
+ $subject = elgg_echo('invitefriends:subject', array($site->name));
// create the from address
- $site = get_entity($CONFIG->site_guid);
- if (($site) && (isset($site->email))) {
+ $site = get_entity($site->guid);
+ if ($site && $site->email) {
$from = $site->email;
} else {
- $from = 'noreply@' . get_site_domain($CONFIG->site_guid);
+ $from = 'noreply@' . get_site_domain($site->guid);
}
elgg_send_email($from, $email, $subject, $message);
+ $sent_total++;
}
if ($error) {
- register_error(sprintf(elgg_echo('invitefriends:email_error'), implode(', ', $bad_emails)));
+ 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($_SERVER['HTTP_REFERER']);
+forward(REFERER);