Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
08/11/2009 10:59:21 PM (17 years ago)
Author:
apeatling
Message:

Re-factored message sending code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-messages/deprecated/bp-messages-deprecated.php

    r1636 r1651  
    162162add_action( 'wp_ajax_messages_close_notice', 'messages_ajax_close_notice' );
    163163
     164/* Deprecated -- use messages_new_message() */
     165function messages_send_message( $recipients, $subject, $content, $thread_id, $from_ajax = false, $from_template = false, $is_reply = false ) {
     166        global $pmessage;
     167        global $message, $type;
     168        global $bp, $current_user;
     169               
     170        messages_add_callback_values( $recipients, $subject, $content );
     171       
     172        if ( isset( $_POST['send-notice'] ) ) {
     173                if ( messages_send_notice( $subject, $content, $from_template ) ) {
     174                        bp_core_add_message( __('Notice posted successfully.', 'buddypress') );
     175                } else {
     176                        bp_core_add_message( __('There was an error posting that notice.', 'buddypress'), 'error' );                   
     177                }
     178                bp_core_redirect( $bp->loggedin_user->domain . $bp->current_component . '/notices' );
     179                return true;
     180        }
     181       
     182        $recipients = explode( ' ', $recipients );
     183       
     184        // If there are no recipients
     185        if ( count( $recipients ) < 1 ) {
     186                if ( !$from_ajax ) {   
     187                        bp_core_add_message( __('Please enter at least one valid user to send this message to.', 'buddypress'), 'error' );
     188                        bp_core_redirect( $bp->loggedin_user->domain . $bp->current_component . '/compose' );
     189                } else {
     190                        return array('status' => 0, 'message' => __('There was an error sending the reply, please try again.', 'buddypress'));
     191                }
     192               
     193        // If there is only 1 recipient and it is the logged in user.
     194        } else if ( 1 == count( $recipients ) && $recipients[0] == $current_user->user_login ) {
     195                bp_core_add_message( __('You must send your message to one or more users not including yourself.', 'buddypress'), 'error' );
     196                bp_core_redirect( $bp->loggedin_user->domain . $bp->current_component . '/compose' );   
     197       
     198        // If the subject or content boxes are empty.
     199        } else if ( empty( $subject ) || empty( $content ) ) {
     200                if ( !$from_ajax ) {
     201                        bp_core_add_message( __('Please make sure you fill in all the fields.', 'buddypress'), 'error' );
     202                        bp_core_redirect( $bp->loggedin_user->domain . $bp->current_component . '/compose' );
     203                } else {
     204                        return array('status' => 0, 'message' => __('Please make sure you have typed a message before sending a reply.', 'buddypress'));
     205                }
     206               
     207        // Passed validation continue.
     208        } else {
     209
     210                // Strip the logged in user from the recipient list if they exist
     211                if ( $key = array_search( $current_user->user_login, $recipients ) )
     212                        unset( $recipients[$key] );
     213               
     214                $pmessage = new BP_Messages_Message;
     215
     216                $pmessage->sender_id = $bp->loggedin_user->id;
     217                $pmessage->subject = $subject;
     218                $pmessage->message = $content;
     219                $pmessage->thread_id = $thread_id;
     220                $pmessage->date_sent = time();
     221               
     222                if ( $is_reply ) {
     223                        $thread = new BP_Messages_Thread($thread_id);
     224                        $pmessage->recipients = $thread->get_recipients();
     225                } else {
     226                        $pmessage->recipients = BP_Messages_Message::get_recipient_ids( $recipients );
     227                }
     228
     229                if ( !is_null( $pmessage->recipients ) ) {
     230                        if ( !$pmessage->send() ) {
     231                                $message = __('Message could not be sent, please try again.', 'buddypress');
     232                                $type = 'error';
     233               
     234                                if ( $from_ajax ) {
     235                                        return array('status' => 0, 'message' => $message);
     236                                } else {
     237                                        bp_core_add_message( $message, $type );
     238                                        bp_core_redirect( $bp->loggedin_user->domain . $bp->current_component . '/compose' );
     239                                }
     240                        } else {
     241                                $message = __('Message sent successfully!', 'buddypress');
     242                                $type = 'success';
     243                               
     244                                // Send screen notifications to the recipients
     245                                for ( $i = 0; $i < count($pmessage->recipients); $i++ ) {
     246                                        if ( $pmessage->recipients[$i] != $bp->loggedin_user->id ) {
     247                                                bp_core_add_notification( $pmessage->id, $pmessage->recipients[$i], 'messages', 'new_message' );       
     248                                        }
     249                                }
     250                               
     251                                // Send email notifications to the recipients
     252                                require_once( BP_PLUGIN_DIR . '/bp-messages/bp-messages-notifications.php' );
     253                                messages_notification_new_message( array( 'item_id' => $pmessage->id, 'recipient_ids' => $pmessage->recipients, 'thread_id' => $pmessage->thread_id, 'component_name' => $bp->messages->slug, 'component_action' => 'message_sent', 'is_private' => 1 ) );
     254
     255                                do_action( 'messages_send_message', array( 'item_id' => $pmessage->id, 'recipient_ids' => $pmessage->recipients, 'thread_id' => $pmessage->thread_id, 'component_name' => $bp->messages->slug, 'component_action' => 'message_sent', 'is_private' => 1 ) );
     256               
     257                                if ( $from_ajax ) {
     258                                        return array('status' => 1, 'message' => $message, 'reply' => $pmessage);
     259                                } else {
     260                                        bp_core_add_message( $message );
     261                                        bp_core_redirect( $bp->loggedin_user->domain . $bp->messages->slug . '/view/' . $pmessage->thread_id );
     262                                }
     263                        }
     264                } else {
     265                        $message = __('Message could not be sent, please try again.', 'buddypress');
     266                        $type = 'error';
     267               
     268                        if ( $from_ajax ) {
     269                                return array('status' => 0, 'message' => $message);
     270                        } else {
     271                                bp_core_add_message( $message, $type );
     272                                bp_core_redirect( $bp->loggedin_user->domain . $bp->messages->slug . '/compose' );
     273                        }
     274                }
     275        }
     276
     277}
     278
    164279?>
Note: See TracChangeset for help on using the changeset viewer.