Changeset 11925 for trunk/src/bp-messages/bp-messages-star.php
- Timestamp:
- 04/02/2018 02:24:57 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-messages/bp-messages-star.php
r11586 r11925 311 311 } 312 312 313 /** SCREENS **************************************************************/314 315 /**316 * Screen handler to display a user's "Starred" private messages page.317 *318 * @since 2.3.0319 */320 function bp_messages_star_screen() {321 add_action( 'bp_template_content', 'bp_messages_star_content' );322 323 /**324 * Fires right before the loading of the "Starred" messages box.325 *326 * @since 2.3.0327 */328 do_action( 'bp_messages_screen_star' );329 330 bp_core_load_template( 'members/single/plugins' );331 }332 333 /**334 * Screen content callback to display a user's "Starred" messages page.335 *336 * @since 2.3.0337 */338 function bp_messages_star_content() {339 // Add our message thread filter.340 add_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' );341 342 // Load the message loop template part.343 bp_get_template_part( 'members/single/messages/messages-loop' );344 345 // Remove our filter.346 remove_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' );347 }348 349 /**350 * Filter message threads by those starred by the logged-in user.351 *352 * @since 2.3.0353 *354 * @param array $r Current message thread arguments.355 * @return array $r Array of starred message threads.356 */357 function bp_messages_filter_starred_message_threads( $r = array() ) {358 $r['box'] = 'starred';359 $r['meta_query'] = array( array(360 'key' => 'starred_by_user',361 'value' => $r['user_id']362 ) );363 364 return $r;365 }366 367 /** ACTIONS **************************************************************/368 369 /**370 * Action handler to set a message's star status for those not using JS.371 *372 * @since 2.3.0373 */374 function bp_messages_star_action_handler() {375 if ( ! bp_is_user_messages() ) {376 return;377 }378 379 if ( false === ( bp_is_current_action( 'unstar' ) || bp_is_current_action( 'star' ) ) ) {380 return;381 }382 383 if ( ! wp_verify_nonce( bp_action_variable( 1 ), 'bp-messages-star-' . bp_action_variable( 0 ) ) ) {384 wp_die( "Oops! That's a no-no!" );385 }386 387 // Check capability.388 if ( ! is_user_logged_in() || ! bp_core_can_edit_settings() ) {389 return;390 }391 392 // Mark the star.393 bp_messages_star_set_action( array(394 'action' => bp_current_action(),395 'message_id' => bp_action_variable(),396 'bulk' => (bool) bp_action_variable( 2 )397 ) );398 399 // Redirect back to previous screen.400 $redirect = wp_get_referer() ? wp_get_referer() : bp_displayed_user_domain() . bp_get_messages_slug();401 bp_core_redirect( $redirect );402 die();403 }404 add_action( 'bp_actions', 'bp_messages_star_action_handler' );405 406 /**407 * Bulk manage handler to set the star status for multiple messages.408 *409 * @since 2.3.0410 */411 function bp_messages_star_bulk_manage_handler() {412 if ( empty( $_POST['messages_bulk_nonce' ] ) ) {413 return;414 }415 416 // Check the nonce.417 if ( ! wp_verify_nonce( $_POST['messages_bulk_nonce'], 'messages_bulk_nonce' ) ) {418 return;419 }420 421 // Check capability.422 if ( ! is_user_logged_in() || ! bp_core_can_edit_settings() ) {423 return;424 }425 426 $action = ! empty( $_POST['messages_bulk_action'] ) ? $_POST['messages_bulk_action'] : '';427 $threads = ! empty( $_POST['message_ids'] ) ? $_POST['message_ids'] : '';428 $threads = wp_parse_id_list( $threads );429 430 // Bail if action doesn't match our star actions or no IDs.431 if ( false === in_array( $action, array( 'star', 'unstar' ), true ) || empty( $threads ) ) {432 return;433 }434 435 // It's star time!436 switch ( $action ) {437 case 'star' :438 $count = count( $threads );439 440 // If we're starring a thread, we only star the first message in the thread.441 foreach ( $threads as $thread ) {442 $thread = new BP_Messages_thread( $thread );443 $mids = wp_list_pluck( $thread->messages, 'id' );444 445 bp_messages_star_set_action( array(446 'action' => 'star',447 'message_id' => $mids[0],448 ) );449 }450 451 bp_core_add_message( sprintf( _n( '%s message was successfully starred', '%s messages were successfully starred', $count, 'buddypress' ), $count ) );452 break;453 454 case 'unstar' :455 $count = count( $threads );456 457 foreach ( $threads as $thread ) {458 bp_messages_star_set_action( array(459 'action' => 'unstar',460 'thread_id' => $thread,461 'bulk' => true462 ) );463 }464 465 bp_core_add_message( sprintf( _n( '%s message was successfully unstarred', '%s messages were successfully unstarred', $count, 'buddypress' ), $count ) );466 break;467 }468 469 // Redirect back to message box.470 bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/' );471 die();472 }473 add_action( 'bp_actions', 'bp_messages_star_bulk_manage_handler', 5 );474 475 313 /** HOOKS ****************************************************************/ 476 314
Note: See TracChangeset
for help on using the changeset viewer.