Changeset 1651
- Timestamp:
- 08/11/2009 10:59:21 PM (17 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
-
bp-messages.php (modified) (7 diffs)
-
bp-messages/bp-messages-classes.php (modified) (5 diffs)
-
bp-messages/bp-messages-cssjs.php (modified) (2 diffs)
-
bp-messages/bp-messages-templatetags.php (modified) (4 diffs)
-
bp-messages/css/autocomplete/jquery.autocompletefb.css (modified) (1 diff)
-
bp-messages/deprecated/bp-messages-deprecated.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/bp-messages.php
r1636 r1651 54 54 message longtext NOT NULL, 55 55 date_sent datetime NOT NULL, 56 message_order int(10) NOT NULL, 57 sender_is_group tinyint(1) NOT NULL DEFAULT '0', 58 KEY sender_id (sender_id), 59 KEY message_order (message_order), 60 KEY sender_is_group (sender_is_group) 56 KEY sender_id (sender_id) 61 57 ) {$charset_collate};"; 62 58 … … 161 157 162 158 function messages_screen_compose() { 159 global $bp; 160 163 161 // Remove any saved message data from a previous session. 164 162 messages_remove_callback_values(); 165 163 166 // Require the auto 167 $recipients = false; 168 if ( empty( $_POST['send_to_usernames'] ) ) { 169 if ( !empty( $_POST['send-to-input'] ) ) { 170 // Replace commas with places 171 $recipients = str_replace( ',', ' ', $_POST['send-to-input'] ); 172 $recipients = str_replace( ' ', ' ', $recipients ); 173 } 174 } else { 175 $recipients = $_POST['send_to_usernames']; 176 } 177 178 if ( $recipients || ( isset($_POST['send-notice']) && is_site_admin() ) ) { 179 if ( !check_admin_referer( 'messages_send_message' ) ) 180 return false; 164 /* Check if the message form has been submitted */ 165 if ( isset( $_POST['send'] ) ) { 166 167 /* Check the nonce */ 168 check_admin_referer( 'messages_send_message' ); 169 170 /* Check we have what we need */ 171 if ( empty( $_POST['subject'] ) || empty( $_POST['content'] ) ) { 172 bp_core_add_message( __( 'There was an error sending that message, please try again', 'buddypress' ), 'error' ); 173 } else { 174 /* If this is a notice, send it */ 175 if ( isset($_POST['send-notice']) ) { 176 messages_send_notice( $_POST['subject'], $_POST['content'] ); 177 } else { 178 /* Filter recipients into the format we need - array( 'username/userid', 'username/userid' ) */ 179 if ( empty( $_POST['send_to_usernames'] ) ) { 180 if ( !empty( $_POST['send-to-input'] ) ) 181 $recipients = explode( ',', $_POST['send-to-input'] ); 182 } else { 183 $recipients = explode( ' ', $_POST['send_to_usernames'] ); 184 } 181 185 182 messages_send_message( $recipients, $_POST['subject'], $_POST['content'], $_POST['thread_id'], false, true ); 186 /* Send the message */ 187 if ( $thread_id = messages_new_message( array( 'recipients' => $recipients, 'subject' => $_POST['subject'], 'content' => $_POST['content'] ) ) ) { 188 bp_core_add_message( __( 'Message sent successfully!', 'buddypress' ) ); 189 bp_core_redirect( $bp->loggedin_user->domain . $bp->messages->slug . '/view/' . $thread_id . '/' ); 190 } else { 191 bp_core_add_message( __( 'There was an error sending that message, please try again', 'buddypress' ), 'error' ); 192 } 193 } 194 } 195 183 196 } 184 197 … … 270 283 271 284 $thread_id = $bp->action_variables[0]; 272 273 if ( !$thread_id || !is_numeric($thread_id) || !BP_Messages_Thread::check_access($thread_id) ) {285 286 if ( !$thread_id || ( !messages_check_thread_access($thread_id) && !is_site_admin() ) ) 274 287 bp_core_redirect( $bp->displayed_user->domain . $bp->current_component ); 275 } else { 276 277 bp_core_new_subnav_item( array( 'name' => sprintf( __( 'From: %s', 'buddypress'), BP_Messages_Thread::get_last_sender($thread_id) ), 'slug' => 'view', 'parent_url' => $bp->loggedin_user->domain . $bp->messages->slug . '/', 'parent_slug' => $bp->messages->slug, 'screen_function' => true, 'position' => 40, 'user_has_access' => bp_is_home() ) ); 278 279 bp_core_load_template( apply_filters( 'messages_template_view_message', 'messages/view' ) ); 280 } 288 289 /* Check if a new reply has been submitted */ 290 if ( isset( $_POST['send'] ) ) { 291 292 /* Check the nonce */ 293 check_admin_referer( 'messages_send_message' ); 294 295 /* Send the reply */ 296 if ( messages_new_message( array( 'thread_id' => $thread_id, 'subject' => $_POST['subject'], 'content' => $_POST['content'] ) ) ) 297 bp_core_add_message( __( 'Your reply was sent successfully', 'buddypress' ) ); 298 else 299 bp_core_add_message( __( 'There was a problem sending your reply, please try again', 'buddypress' ), 'error' ); 300 301 bp_core_redirect( $bp->displayed_user->domain . $bp->current_component . '/view/' . $thread_id . '/' ); 302 } 303 304 bp_core_new_subnav_item( array( 'name' => sprintf( __( 'From: %s', 'buddypress'), BP_Messages_Thread::get_last_sender($thread_id) ), 'slug' => 'view', 'parent_url' => $bp->loggedin_user->domain . $bp->messages->slug . '/', 'parent_slug' => $bp->messages->slug, 'screen_function' => true, 'position' => 40, 'user_has_access' => bp_is_home() ) ); 305 bp_core_load_template( apply_filters( 'messages_template_view_message', 'messages/view' ) ); 281 306 } 282 307 add_action( 'wp', 'messages_action_view_message', 3 ); … … 290 315 $thread_id = $bp->action_variables[1]; 291 316 292 if ( !$thread_id || !is_numeric($thread_id) || ! BP_Messages_Thread::check_access($thread_id) ) {317 if ( !$thread_id || !is_numeric($thread_id) || !messages_check_thread_access($thread_id) ) { 293 318 bp_core_redirect( $bp->displayed_user->domain . $bp->current_component . '/' . $bp->current_action ); 294 319 } else { … … 315 340 $thread_ids = $_POST['thread_ids']; 316 341 317 if ( !$thread_ids || ! BP_Messages_Thread::check_access($thread_ids) ) {342 if ( !$thread_ids || !messages_check_thread_access($thread_ids) ) { 318 343 bp_core_redirect( $bp->displayed_user->domain . $bp->current_component . '/' . $bp->current_action ); 319 344 } else { … … 378 403 */ 379 404 380 function messages_send_message( $recipients, $subject, $content, $thread_id, $from_ajax = false, $from_template = false, $is_reply = false ) { 381 global $pmessage; 382 global $message, $type; 383 global $bp, $current_user; 384 385 messages_add_callback_values( $recipients, $subject, $content ); 386 387 if ( isset( $_POST['send-notice'] ) ) { 388 if ( messages_send_notice( $subject, $content, $from_template ) ) { 389 bp_core_add_message( __('Notice posted successfully.', 'buddypress') ); 390 } else { 391 bp_core_add_message( __('There was an error posting that notice.', 'buddypress'), 'error' ); 392 } 393 bp_core_redirect( $bp->loggedin_user->domain . $bp->current_component . '/notices' ); 394 return true; 395 } 396 397 $recipients = explode( ' ', $recipients ); 398 399 // If there are no recipients 400 if ( count( $recipients ) < 1 ) { 401 if ( !$from_ajax ) { 402 bp_core_add_message( __('Please enter at least one valid user to send this message to.', 'buddypress'), 'error' ); 403 bp_core_redirect( $bp->loggedin_user->domain . $bp->current_component . '/compose' ); 404 } else { 405 return array('status' => 0, 'message' => __('There was an error sending the reply, please try again.', 'buddypress')); 406 } 407 408 // If there is only 1 recipient and it is the logged in user. 409 } else if ( 1 == count( $recipients ) && $recipients[0] == $current_user->user_login ) { 410 bp_core_add_message( __('You must send your message to one or more users not including yourself.', 'buddypress'), 'error' ); 411 bp_core_redirect( $bp->loggedin_user->domain . $bp->current_component . '/compose' ); 412 413 // If the subject or content boxes are empty. 414 } else if ( empty( $subject ) || empty( $content ) ) { 415 if ( !$from_ajax ) { 416 bp_core_add_message( __('Please make sure you fill in all the fields.', 'buddypress'), 'error' ); 417 bp_core_redirect( $bp->loggedin_user->domain . $bp->current_component . '/compose' ); 418 } else { 419 return array('status' => 0, 'message' => __('Please make sure you have typed a message before sending a reply.', 'buddypress')); 420 } 421 422 // Passed validation continue. 405 function messages_new_message( $args = '' ) { 406 global $bp; 407 408 $defaults = array( 409 'thread_id' => false, // false for a new message, thread id for a reply to a thread. 410 'sender_id' => $bp->loggedin_user->id, 411 'recipients' => false, // Can be an array of usernames, user_ids or mixed. 412 'subject' => false, 413 'content' => false, 414 'date_sent' => time() 415 ); 416 417 $r = wp_parse_args( $args, $defaults ); 418 extract( $r, EXTR_SKIP ); 419 420 if ( !$sender_id || !$subject || !$content ) 421 return false; 422 423 /* Create a new message object */ 424 $message = new BP_Messages_Message; 425 $message->thread_id = $thread_id; 426 $message->sender_id = $sender_id; 427 $message->subject = $subject; 428 $message->message = $content; 429 $message->date_sent = $date_sent; 430 431 /* If we have a thread ID, use the existing recipients, otherwise use the recipients passed */ 432 if ( $thread_id ) { 433 $thread = new BP_Messages_Thread($thread_id); 434 $message->recipients = $thread->get_recipients(); 423 435 } else { 424 425 // Strip the logged in user from the recipient list if they exist 426 if ( $key = array_search( $current_user->user_login, $recipients ) ) 427 unset( $recipients[$key] ); 428 429 $pmessage = new BP_Messages_Message; 430 431 $pmessage->sender_id = $bp->loggedin_user->id; 432 $pmessage->subject = $subject; 433 $pmessage->message = $content; 434 $pmessage->thread_id = $thread_id; 435 $pmessage->date_sent = time(); 436 $pmessage->message_order = 0; // TODO 437 $pmessage->sender_is_group = 0; 438 439 if ( $is_reply ) { 440 $thread = new BP_Messages_Thread($thread_id); 441 $pmessage->recipients = $thread->get_recipients(); 442 } else { 443 $pmessage->recipients = BP_Messages_Message::get_recipient_ids( $recipients ); 444 } 445 446 if ( !is_null( $pmessage->recipients ) ) { 447 if ( !$pmessage->send() ) { 448 $message = __('Message could not be sent, please try again.', 'buddypress'); 449 $type = 'error'; 450 451 if ( $from_ajax ) { 452 return array('status' => 0, 'message' => $message); 453 } else { 454 bp_core_add_message( $message, $type ); 455 bp_core_redirect( $bp->loggedin_user->domain . $bp->current_component . '/compose' ); 456 } 457 } else { 458 $message = __('Message sent successfully!', 'buddypress'); 459 $type = 'success'; 460 461 // Send screen notifications to the recipients 462 for ( $i = 0; $i < count($pmessage->recipients); $i++ ) { 463 if ( $pmessage->recipients[$i] != $bp->loggedin_user->id ) { 464 bp_core_add_notification( $pmessage->id, $pmessage->recipients[$i], 'messages', 'new_message' ); 465 } 466 } 467 468 // Send email notifications to the recipients 469 require_once( BP_PLUGIN_DIR . '/bp-messages/bp-messages-notifications.php' ); 470 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 ) ); 471 472 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 ) ); 473 474 if ( $from_ajax ) { 475 return array('status' => 1, 'message' => $message, 'reply' => $pmessage); 476 } else { 477 bp_core_add_message( $message ); 478 bp_core_redirect( $bp->loggedin_user->domain . $bp->messages->slug . '/view/' . $pmessage->thread_id ); 479 } 480 } 481 } else { 482 $message = __('Message could not be sent, please try again.', 'buddypress'); 483 $type = 'error'; 484 485 if ( $from_ajax ) { 486 return array('status' => 0, 'message' => $message); 487 } else { 488 bp_core_add_message( $message, $type ); 489 bp_core_redirect( $bp->loggedin_user->domain . $bp->messages->slug . '/compose' ); 490 } 491 } 492 } 493 494 } 495 496 function messages_add_callback_values( $recipients, $subject, $content ) { 497 setcookie( 'bp_messages_send_to', $recipients, time()+60*60*24, COOKIEPATH ); 498 setcookie( 'bp_messages_subject', $subject, time()+60*60*24, COOKIEPATH ); 499 setcookie( 'bp_messages_content', $content, time()+60*60*24, COOKIEPATH ); 500 } 501 502 function messages_remove_callback_values() { 503 setcookie( 'bp_messages_send_to', false, time()-1000, COOKIEPATH ); 504 setcookie( 'bp_messages_subject', false, time()-1000, COOKIEPATH ); 505 setcookie( 'bp_messages_content', false, time()-1000, COOKIEPATH ); 506 } 507 508 function messages_send_notice( $subject, $message, $from_template ) { 436 if ( empty( $recipients ) ) 437 return false; 438 439 /* Loop the recipients and convert all usernames to user_ids where needed */ 440 foreach( (array) $recipients as $recipient ) { 441 if ( is_numeric( trim( $recipient ) ) ) 442 $recipient_ids[] = (int)trim( $recipient ); 443 444 if ( $recipient_id = bp_core_get_userid( trim( $recipient ) ) ) 445 $recipient_ids[] = (int)$recipient_id; 446 } 447 448 /* Strip the sender from the recipient list if they exist */ 449 if ( $key = array_search( $sender_id, $recipient_ids ) ) 450 unset( $recipient_ids[$key] ); 451 452 $message->recipients = $recipient_ids; 453 } 454 455 return $message->send(); 456 } 457 458 459 function messages_send_notice( $subject, $message ) { 509 460 if ( !is_site_admin() || empty( $subject ) || empty( $message ) ) { 510 461 return false; … … 548 499 } 549 500 501 function messages_check_thread_access( $thread_id, $user_id = false ) { 502 global $bp; 503 504 if ( !$user_id ) 505 $user_id = $bp->loggedin_user->id; 506 507 return BP_Messages_Thread::check_access( $thread_id, $user_id ); 508 } 509 510 function messages_add_callback_values( $recipients, $subject, $content ) { 511 setcookie( 'bp_messages_send_to', $recipients, time()+60*60*24, COOKIEPATH ); 512 setcookie( 'bp_messages_subject', $subject, time()+60*60*24, COOKIEPATH ); 513 setcookie( 'bp_messages_content', $content, time()+60*60*24, COOKIEPATH ); 514 } 515 516 function messages_remove_callback_values() { 517 setcookie( 'bp_messages_send_to', false, time()-1000, COOKIEPATH ); 518 setcookie( 'bp_messages_subject', false, time()-1000, COOKIEPATH ); 519 setcookie( 'bp_messages_content', false, time()-1000, COOKIEPATH ); 520 } 521 550 522 function messages_get_unread_count( $user_id = false ) { 551 523 global $bp; -
trunk/bp-messages/bp-messages-classes.php
r1636 r1651 278 278 } 279 279 280 function check_access($id) { 281 global $wpdb, $bp; 282 283 $sql = $wpdb->prepare("SELECT id FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d AND user_id = %d", $id, $bp->loggedin_user->id ); 284 $has_access = $wpdb->get_var($sql); 285 286 if ( $has_access ) 287 return true; 288 289 return false; 280 function check_access( $thread_id, $user_id = false ) { 281 global $wpdb, $bp; 282 283 if ( !$user_id ) 284 $user_id = $bp->loggedin_user->id; 285 286 return $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$bp->messages->table_name_recipients} WHERE thread_id = %d AND user_id = %d", $thread_id, $user_id ) ); 290 287 } 291 288 … … 308 305 var $message; 309 306 var $date_sent; 310 var $message_order;311 var $sender_is_group;312 307 313 308 var $thread_id; … … 336 331 $this->message = $message->message; 337 332 $this->date_sent = $message->date_sent; 338 $this->message_order = $message->message_order;339 $this->sender_is_group = $message->sender_is_group;340 333 } 341 334 … … 349 342 $this->message = apply_filters( 'messages_message_content_before_save', $this->message, $this->id ); 350 343 $this->date_sent = apply_filters( 'messages_message_date_sent_before_save', $this->date_sent, $this->id ); 351 $this->message_order = apply_filters( 'messages_message_order_before_save', $this->message_order, $this->id );352 $this->sender_is_group = apply_filters( 'messages_message_sender_is_group_before_save', $this->sender_is_group, $this->id );353 344 354 345 do_action( 'messages_message_before_save', $this ); 355 346 356 347 // First insert the message into the messages table 357 if ( !$wpdb->query( $wpdb->prepare( "INSERT INTO {$bp->messages->table_name_messages} ( sender_id, subject, message, date_sent , message_order, sender_is_group ) VALUES ( %d, %s, %s, FROM_UNIXTIME(%d), %d, %d )", $this->sender_id, $this->subject, $this->message, $this->date_sent, $this->message_order, $this->sender_is_group) ) )348 if ( !$wpdb->query( $wpdb->prepare( "INSERT INTO {$bp->messages->table_name_messages} ( sender_id, subject, message, date_sent ) VALUES ( %d, %s, %s, FROM_UNIXTIME(%d) )", $this->sender_id, $this->subject, $this->message, $this->date_sent ) ) ) 358 349 return false; 359 350 … … 418 409 do_action( 'messages_message_after_save', $this ); 419 410 420 return true;411 return $this->thread_id; 421 412 } 422 413 -
trunk/bp-messages/bp-messages-cssjs.php
r1636 r1651 5 5 6 6 // Include the autocomplete JS for composing a message. 7 if ( $bp->current_component == $bp->messages->slug && $bp->current_action == 'compose') {7 if ( $bp->current_component == $bp->messages->slug && 'compose' == $bp->current_action ) { 8 8 add_action( 'wp_head', 'messages_autocomplete_init_jsblock' ); 9 9 10 wp_enqueue_script( 'bp-jquery-autocomplete', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.autocomplete.js', 'jquery');11 wp_enqueue_script( 'bp-jquery-autocomplete-fb', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.autocompletefb.js' , 'jquery');12 wp_enqueue_script( 'bp-jquery-bgiframe', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.bgiframe.min.js' , 'jquery');13 wp_enqueue_script( 'bp-jquery-dimensions', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.dimensions.js' , 'jquery');10 wp_enqueue_script( 'bp-jquery-autocomplete', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.autocomplete.js', array( 'jquery' ) ); 11 wp_enqueue_script( 'bp-jquery-autocomplete-fb', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.autocompletefb.js' ); 12 wp_enqueue_script( 'bp-jquery-bgiframe', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.bgiframe.min.js' ); 13 wp_enqueue_script( 'bp-jquery-dimensions', BP_PLUGIN_URL . '/bp-messages/js/autocomplete/jquery.dimensions.js' ); 14 14 } 15 15 … … 20 20 global $bp; 21 21 22 if ( $bp->current_component == $bp->messages->slug && $bp->current_action == 'compose') {23 wp_enqueue_style( 'bp-messages-autocomplete', BP_PLUGIN_URL . '/bp-messages/ deprecated/css/autocomplete/jquery.autocompletefb.css' );22 if ( $bp->current_component == $bp->messages->slug && 'compose' == $bp->current_action ) { 23 wp_enqueue_style( 'bp-messages-autocomplete', BP_PLUGIN_URL . '/bp-messages/css/autocomplete/jquery.autocompletefb.css' ); 24 24 wp_print_styles(); 25 25 } -
trunk/bp-messages/bp-messages-templatetags.php
r1636 r1651 159 159 function bp_get_message_thread_id() { 160 160 global $messages_template; 161 161 162 return apply_filters( 'bp_get_message_thread_id', $messages_template->thread->thread_id ); 162 163 } … … 284 285 global $bp; 285 286 286 return apply_filters( 'bp_get_messages_form_action', $bp->loggedin_user->domain . $bp->messages->slug . '/' . $bp->current_action );287 return apply_filters( 'bp_get_messages_form_action', $bp->loggedin_user->domain . $bp->messages->slug . '/' . $bp->current_action . '/' . $bp->action_variables[0] . '/' ); 287 288 } 288 289 … … 582 583 } 583 584 585 function bp_the_thread_id() { 586 echo bp_get_the_thread_id(); 587 } 588 function bp_get_the_thread_id() { 589 global $thread_template; 590 591 return apply_filters( 'bp_get_the_thread_id', $thread_template->thread->thread_id ); 592 } 593 584 594 function bp_the_thread_subject() { 585 595 echo bp_get_the_thread_subject(); … … 587 597 function bp_get_the_thread_subject() { 588 598 global $thread_template; 589 590 return apply_filters( 'bp_get_the_thread_subject', $thread_template->thread-> subject );599 600 return apply_filters( 'bp_get_the_thread_subject', $thread_template->thread->last_message_subject ); 591 601 } 592 602 -
trunk/bp-messages/css/autocomplete/jquery.autocompletefb.css
r1366 r1651 53 53 height : 1%; 54 54 overflow: hidden; 55 padding: 0; 56 list-style: none; 55 57 } 56 58 ul.acfb-holder li { -
trunk/bp-messages/deprecated/bp-messages-deprecated.php
r1636 r1651 162 162 add_action( 'wp_ajax_messages_close_notice', 'messages_ajax_close_notice' ); 163 163 164 /* Deprecated -- use messages_new_message() */ 165 function 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 164 279 ?>
Note: See TracChangeset
for help on using the changeset viewer.