Changeset 11925
- Timestamp:
- 04/02/2018 02:24:57 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 19 added
- 2 deleted
- 3 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 -
trunk/src/bp-messages/classes/class-bp-messages-component.php
r11910 r11925 59 59 'cssjs', 60 60 'cache', 61 'actions',62 'screens',63 61 'filters', 64 62 'template', … … 79 77 80 78 parent::includes( $includes ); 79 } 80 81 /** 82 * Late includes method. 83 * 84 * Only load up certain code when on specific pages. 85 * 86 * @since 3.0.0 87 */ 88 public function late_includes() { 89 // Bail if PHPUnit is running. 90 if ( defined( 'BP_TESTS_DIR' ) ) { 91 return; 92 } 93 94 if ( bp_is_messages_component() ) { 95 // Authenticated actions. 96 if ( is_user_logged_in() && 97 in_array( bp_current_action(), array( 'compose', 'notices', 'view' ), true ) 98 ) { 99 require $this->path . 'bp-messages/actions/' . bp_current_action() . '.php'; 100 } 101 102 // Authenticated action variables. 103 if ( is_user_logged_in() && bp_action_variable( 0 ) && 104 in_array( bp_action_variable( 0 ), array( 'delete', 'read', 'unread', 'bulk-manage', 'bulk-delete' ), true ) 105 ) { 106 require $this->path . 'bp-messages/actions/' . bp_action_variable( 0 ) . '.php'; 107 } 108 109 // Authenticated actions - Star. 110 if ( is_user_logged_in() && bp_is_active( $this->id, 'star' ) ) { 111 // Single action. 112 if ( in_array( bp_current_action(), array( 'star', 'unstar' ), true ) ) { 113 require $this->path . 'bp-messages/actions/star.php'; 114 } 115 116 // Bulk-manage. 117 if ( bp_is_action_variable( 'bulk-manage' ) ) { 118 require $this->path . 'bp-messages/actions/bulk-manage-star.php'; 119 } 120 } 121 122 // Screens - User profile integration. 123 if ( bp_is_user() ) { 124 require $this->path . 'bp-messages/screens/inbox.php'; 125 126 /* 127 * Nav items. 128 * 129 * 'view' is not a registered nav item, but we add a screen handler manually. 130 */ 131 if ( bp_is_user_messages() && in_array( bp_current_action(), array( 'sentbox', 'compose', 'notices', 'view' ), true ) ) { 132 require $this->path . 'bp-messages/screens/' . bp_current_action() . '.php'; 133 } 134 135 // Nav item - Starred. 136 if ( bp_is_active( $this->id, 'star' ) && bp_is_current_action( bp_get_messages_starred_slug() ) ) { 137 require $this->path . 'bp-messages/screens/starred.php'; 138 } 139 } 140 } 141 142 // Groups notifications HTML table. 143 if ( bp_is_user_settings_notifications() ) { 144 require $this->path . 'bp-messages/screens/settings-email.php'; 145 } 81 146 } 82 147 -
trunk/tests/phpunit/includes/loader.php
r11923 r11925 24 24 * loaded at the same time to prevent weird load order issues. 25 25 */ 26 $components = array( 'activity', 'groups' );26 $components = array( 'activity', 'groups', 'messages' ); 27 27 foreach ( $components as $component ) { 28 28 add_action( "bp_{$component}_includes", function() use ( $component ) {
Note: See TracChangeset
for help on using the changeset viewer.