Example #1
0
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;
}
Example #2
0
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&amp;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&amp;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&amp;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 
}