/** * @group bp_messages_star_set_action * @group bulk */ public function test_star_set_action_bulk_unstar() { $u1 = $this->factory->user->create(); $u2 = $this->factory->user->create(); // create the thread $t1 = $this->factory->message->create(array('sender_id' => $u1, 'recipients' => array($u2), 'subject' => 'This is a knive')); // create a reply $this->factory->message->create(array('thread_id' => $t1, 'sender_id' => $u2, 'recipients' => array($u1), 'content' => "That's a spoon")); // grab the message ids as individual variables list($m1, $m2) = $this->get_message_ids($t1); // star all messages bp_messages_star_set_action(array('user_id' => $u1, 'message_id' => $m1)); bp_messages_star_set_action(array('user_id' => $u1, 'message_id' => $m2)); // assert that stars are set $this->assertTrue(bp_messages_is_message_starred($m1, $u1)); $this->assertTrue(bp_messages_is_message_starred($m2, $u1)); // unstar all messages bp_messages_star_set_action(array('user_id' => $u1, 'thread_id' => $t1, 'action' => 'unstar', 'bulk' => true)); // assert that star is removed $this->assertFalse(bp_messages_is_message_starred($m1, $u1)); $this->assertFalse(bp_messages_is_message_starred($m2, $u1)); }
/** * @group bp_messages_star_set_action * @group bulk */ public function test_star_set_action_bulk_unstar() { $u1 = $this->factory->user->create(); $u2 = $this->factory->user->create(); // create the thread $message_1 = $this->factory->message->create_and_get(array('sender_id' => $u1, 'recipients' => array($u2), 'subject' => 'This is a knive')); // create a reply $message_2 = $this->factory->message->create_and_get(array('thread_id' => $message_1->thread_id, 'sender_id' => $u2, 'recipients' => array($u1), 'content' => "That's a spoon")); $m1 = $message_1->id; $m2 = $message_2->id; $t1 = $message_1->thread_id; // star all messages bp_messages_star_set_action(array('user_id' => $u1, 'message_id' => $m1)); bp_messages_star_set_action(array('user_id' => $u1, 'message_id' => $m2)); // assert that stars are set $this->assertTrue(bp_messages_is_message_starred($m1, $u1)); $this->assertTrue(bp_messages_is_message_starred($m2, $u1)); // unstar all messages bp_messages_star_set_action(array('user_id' => $u1, 'thread_id' => $t1, 'action' => 'unstar', 'bulk' => true)); // assert that star is removed $this->assertFalse(bp_messages_is_message_starred($m1, $u1)); $this->assertFalse(bp_messages_is_message_starred($m2, $u1)); }
/** * Add CSS class for the current message depending on starred status. * * @since 2.3.0 * * @param array $retval Current CSS classes. * @return array */ function bp_messages_star_message_css_class($retval = array()) { if (true === bp_messages_is_message_starred(bp_get_the_thread_message_id())) { $status = 'starred'; } else { $status = 'not-starred'; } // Add css class based on star status for the current message. $retval[] = "message-{$status}"; return $retval; }
/** * Get a specific message * * @param WP_REST_Request $request * @return array|WP_Error */ public function get_item($request) { global $thread_template; $id = $request['id']; if (bp_thread_has_messages(array('thread_id' => $id))) { $data = array(); $data['thread_id'] = $id; $data['subject'] = bp_get_the_thread_subject(); if (bp_is_active('messages', 'star')) { $data['star'] = strpos(bp_get_the_message_star_action_link(array('thread_id' => $id)), 'unstar') ? true : false; } if (bp_get_thread_recipients_count() <= 1) { $data['thread_title'] = __('You are alone in this conversation.', BP_API_PLUGIN_SLUG); } elseif (bp_get_max_thread_recipients_to_list() <= bp_get_thread_recipients_count()) { $data['thread_title'] = sprintf(__('Conversation between %s recipients.', BP_API_PLUGIN_SLUG), number_format_i18n(bp_get_thread_recipients_count())); } else { foreach ((array) $thread_template->thread->recipients as $recipient) { if ((int) $recipient->user_id !== bp_loggedin_user_id()) { $recipient_name = bp_core_get_user_displayname($recipient->user_id); if (empty($recipient_name)) { $recipient_name = __('Deleted User', BP_API_PLUGIN_SLUG); } $recipient_names[] = $recipient_name; } } $data['thread_title'] = sprintf(__('Conversation between %s and you.'), implode(',', $recipient_names)); $data['thread_msg'] = []; while (bp_thread_messages()) { bp_thread_the_message(); $single_msg = (array) $thread_template->message; $single_msg['sender_avatar'] = bp_core_fetch_avatar(array('item_id' => $thread_template->message->sender_id, 'width' => 25, 'height' => 25, 'html' => false)); $single_msg['sender_name'] = bp_get_the_thread_message_sender_name(); if (bp_is_active('messages', 'star')) { $single_msg['star'] = bp_messages_is_message_starred($thread_template->message->id, bp_loggedin_user_id()); } $data['thread_msg'][] = $single_msg; } } } else { return new WP_Error('bp_json_message', __('Message Not Found.', BP_API_PLUGIN_SLUG), array('status' => 404)); } return new WP_REST_Response($data, 200); }