function invite_anyone_process_invitations($data) { global $bp; $emails = false; // Parse out the individual email addresses if (!empty($data['invite_anyone_email_addresses'])) { $emails = invite_anyone_parse_addresses($data['invite_anyone_email_addresses']); } // Filter the email addresses so that plugins can have a field day $emails = apply_filters('invite_anyone_submitted_email_addresses', $emails, $data); // Set up a wrapper for any data to return to the Send Invites screen in case of error $returned_data = array('error_message' => false, 'error_emails' => array(), 'subject' => $data['invite_anyone_custom_subject'], 'message' => $data['invite_anyone_custom_message'], 'groups' => isset($data['invite_anyone_groups']) ? $data['invite_anyone_groups'] : ''); // Check against the max number of invites. Send back right away if there are too many $options = invite_anyone_options(); $max_invites = !empty($options['max_invites']) ? $options['max_invites'] : 5; if (count($emails) > $max_invites) { $returned_data['error_message'] = sprintf(__('You are only allowed to invite up to %s people at a time. Please remove some addresses and try again', 'invite-anyone'), $max_invites); $returned_data['error_emails'] = $emails; setcookie('invite-anyone', serialize($returned_data), 0, '/'); $redirect = bp_loggedin_user_domain() . $bp->invite_anyone->slug . '/invite-new-members/'; bp_core_redirect($redirect); die; } if (empty($emails)) { bp_core_add_message(__('You didn\'t include any email addresses!', 'invite-anyone'), 'error'); bp_core_redirect($bp->loggedin_user->domain . $bp->invite_anyone->slug . '/invite-new-members'); die; } // Max number of invites sent $limit_total_invites = !empty($options['email_limit_invites_toggle']) && 'no' != $options['email_limit_invites_toggle']; if ($limit_total_invites && !current_user_can('delete_others_pages')) { $sent_invites = invite_anyone_get_invitations_by_inviter_id(bp_loggedin_user_id()); $sent_invites_count = (int) $sent_invites->post_count; $remaining_invites_count = (int) $options['limit_invites_per_user'] - $sent_invites_count; if (count($emails) > $remaining_invites_count) { $returned_data['error_message'] = sprintf(__('You are only allowed to invite %s more people. Please remove some addresses and try again', 'invite-anyone'), $remaining_invites_count); $returned_data['error_emails'] = $emails; setcookie('invite-anyone', serialize($returned_data), 0, '/'); $redirect = bp_loggedin_user_domain() . $bp->invite_anyone->slug . '/invite-new-members/'; bp_core_redirect($redirect); die; } } // Turn the CS emails into an array so that they can be matched against the main list if (isset($_POST['cloudsponge-emails'])) { $cs_emails = explode(',', $_POST['cloudsponge-emails']); } // validate email addresses foreach ($emails as $key => $email) { $check = invite_anyone_validate_email($email); switch ($check) { case 'opt_out': $returned_data['error_message'] .= sprintf(__('<strong>%s</strong> has opted out of email invitations from this site.', 'invite-anyone'), $email); break; case 'used': $returned_data['error_message'] .= sprintf(__("<strong>%s</strong> is already a registered user of the site.", 'invite-anyone'), $email); break; case 'unsafe': $returned_data['error_message'] .= sprintf(__('<strong>%s</strong> is not a permitted email address.', 'invite-anyone'), $email); break; case 'invalid': $returned_data['error_message'] .= sprintf(__('<strong>%s</strong> is not a valid email address. Please make sure that you have typed it correctly.', 'invite-anyone'), $email); break; case 'limited_domain': $returned_data['error_message'] .= sprintf(__('<strong>%s</strong> is not a permitted email address. Please make sure that you have typed the domain name correctly.', 'invite-anyone'), $email); break; } // If there was an error in validation, we won't process this email if ($check != 'okay') { $returned_data['error_message'] .= '<br />'; $returned_data['error_emails'][] = $email; unset($emails[$key]); } } if (!empty($emails)) { unset($message, $to); /* send and record invitations */ do_action('invite_anyone_process_addl_fields'); $groups = !empty($data['invite_anyone_groups']) ? $data['invite_anyone_groups'] : array(); $is_error = 0; foreach ($emails as $email) { $subject = stripslashes(strip_tags($data['invite_anyone_custom_subject'])); $message = stripslashes(strip_tags($data['invite_anyone_custom_message'])); $footer = invite_anyone_process_footer($email); $footer = invite_anyone_wildcard_replace($footer, $email); $message .= ' ================ '; $message .= $footer; $to = apply_filters('invite_anyone_invitee_email', $email); $subject = apply_filters('invite_anyone_invitation_subject', $subject); $message = apply_filters('invite_anyone_invitation_message', $message); wp_mail($to, $subject, $message); /* todo: isolate which email(s) cause problems, and send back to user */ /* if ( !invite_anyone_send_invitation( $bp->loggedin_user->id, $email, $message, $groups ) ) $is_error = 1; */ // Determine whether this address came from CloudSponge $is_cloudsponge = isset($cs_emails) && in_array($email, $cs_emails) ? true : false; invite_anyone_record_invitation($bp->loggedin_user->id, $email, $message, $groups, $subject, $is_cloudsponge); do_action('sent_email_invite', $bp->loggedin_user->id, $email, $groups); unset($message, $to); } // Set a success message $success_message = sprintf(__("Invitations were sent successfully to the following email addresses: %s", 'invite-anyone'), implode(", ", $emails)); bp_core_add_message($success_message); do_action('sent_email_invites', $bp->loggedin_user->id, $emails, $groups); } else { $success_message = sprintf(__("Please correct your errors and resubmit.", 'invite-anyone')); bp_core_add_message($success_message, 'error'); } // If there are errors, redirect to the Invite New Members page if (!empty($returned_data['error_emails'])) { setcookie('invite-anyone', serialize($returned_data), 0, '/'); $redirect = bp_loggedin_user_domain() . $bp->invite_anyone->slug . '/invite-new-members/'; bp_core_redirect($redirect); die; } return true; }
function invite_anyone_screen_two_content() { global $bp; $inviter_id = bp_loggedin_user_id(); if (isset($_GET['clear'])) { $clear_id = $_GET['clear']; check_admin_referer('invite_anyone_clear'); if ((int) $clear_id) { invite_anyone_clear_sent_invite(array('inviter_id' => $inviter_id, 'clear_id' => $clear_id)); } else { invite_anyone_clear_sent_invite(array('inviter_id' => $inviter_id, 'type' => $clear_id)); } } if (isset($_GET['sort_by'])) { $sort_by = $_GET['sort_by']; } else { $sort_by = 'date_invited'; } if (isset($_GET['order'])) { $order = $_GET['order']; } else { $order = 'DESC'; } $base_url = $bp->displayed_user->domain . $bp->invite_anyone->slug . '/sent-invites/'; ?> <h4><?php _e('Sent Invites', 'bp-invite-anyone'); ?> </h4> <?php if ($invites = invite_anyone_get_invitations_by_inviter_id(bp_loggedin_user_id(), $sort_by, $order)) { ?> <p id="sent-invites-intro"><?php _e('You have sent invitations to the following people.', 'bp-invite-anyone'); ?> </p> <table class="invite-anyone-sent-invites zebra" summary="<?php _e('This table displays a list of all your sent invites. Invites that have been accepted are highlighted in the listings. You may clear any individual invites, all accepted invites or all of the invite from the list.', 'bp-invite-anyone'); ?> "> <thead> <tr> <th scope="col"></th> <th scope="col" <?php if (!empty($_GET['sort_by']) && $_GET['sort_by'] == 'email') { ?> class="sort-by-me"<?php } ?> ><a class="<?php echo $order; ?> " title="Sort column order <?php echo $order; ?> " href="<?php echo $base_url; ?> ?sort_by=email&order=<?php if ($_GET['sort_by'] == 'email' && $_GET['order'] == 'ASC') { $order = 'DESC'; ?> DESC<?php } else { $order = 'ASC'; ?> ASC<?php } ?> "><?php _e('Invited email address', 'bp-invite-anyone'); ?> </a></th> <th scope="col"><?php _e('Group invitations', 'bp-invite-anyone'); ?> </th> <th scope="col" <?php if (!empty($_GET['sort_by']) && $_GET['sort_by'] == 'date_invited') { ?> class="sort-by-me"<?php } ?> ><a class="<?php echo $order; ?> " title="Sort column order <?php echo $order; ?> " href="<?php echo $base_url; ?> ?sort_by=date_invited&order=<?php if ($_GET['sort_by'] == 'date_invited' && $_GET['order'] == 'DESC') { $order = 'ASC'; ?> ASC<?php } else { $order = 'DESC'; ?> DESC<?php } ?> "><?php _e('Sent', 'bp-invite-anyone'); ?> </a></th> <th scope="col" <?php if (!empty($_GET['sort_by']) && $_GET['sort_by'] == 'date_joined') { ?> class="sort-by-me"<?php } ?> ><a class="<?php echo $order; ?> " title="Sort column order <?php echo $order; ?> " href="<?php echo $base_url; ?> ?sort_by=date_joined&order=<?php if ($_GET['sort_by'] == 'date_joined' && $_GET['order'] == 'DESC') { $order = 'ASC'; ?> ASC<?php } else { $order = 'DESC'; ?> DESC<?php } ?> "><?php _e('Accepted', 'bp-invite-anyone'); ?> </a></th> </tr> </thead> <tfoot> <tr id="batch-clear"> <td colspan="5" > <ul id="invite-anyone-clear-links"> <li> <a title="<?php _e('Clear all accepted invites from the list', 'bp-invite-anyone'); ?> " class="confirm" href="<?php echo wp_nonce_url($base_url . '?clear=accepted', 'invite_anyone_clear'); ?> "><?php _e('Clear all accepted invitations', 'bp-invite-anyone'); ?> </a></li> <li class="last"><a title="<?php _e('Clear all your listed invites', 'bp-invite-anyone'); ?> " class="confirm" href="<?php echo wp_nonce_url($base_url . '?clear=all', 'invite_anyone_clear'); ?> "><?php _e('Clear all invitations', 'bp-invite-anyone'); ?> </a></li> </ul> </td> </tr> </tfoot> <tbody> <?php foreach ($invites as $invite) { ?> <?php $query_string = preg_replace("|clear=[0-9]+|", '', $_SERVER['QUERY_STRING']); $clear_url = $query_string ? $base_url . '?' . $query_string . '&clear=' . $invite->id : $base_url . '?clear=' . $invite->id; $clear_url = wp_nonce_url($clear_url, 'invite_anyone_clear'); $clear_link = '<a class="clear-entry confirm" title="' . __('Clear this invitation', 'bp-invite-anyone') . '" href="' . $clear_url . '">x<span></span></a>'; if ($invite->group_invitations) { $groups = unserialize($invite->group_invitations); $group_names = '<ul>'; foreach ($groups as $group_id) { $group = new BP_Groups_Group($group_id); $group_names .= '<li>' . bp_get_group_name($group) . '</li>'; } $group_names .= '</ul>'; } else { $group_names = '-'; } $date_invited = invite_anyone_format_date($invite->date_invited); if ($invite->date_joined) { $date_joined = invite_anyone_format_date($invite->date_joined); $accepted = true; } else { $date_joined = '-'; $accepted = false; } ?> <tr <?php if ($accepted) { ?> class="accepted" <?php } ?> > <td><?php echo $clear_link; ?> </td> <td><?php echo $invite->email; ?> </td> <td><?php echo $group_names; ?> </td> <td><?php echo $date_invited; ?> </td> <td class="date-joined"><?php echo $date_joined; ?> </td> </tr> <?php } ?> </tbody> </table> <?php } else { ?> <p id="sent-invites-intro"><?php _e("You haven't sent any email invitations yet.", 'bp-invite-anyone'); ?> </p> <?php } ?> <?php }