Esempio n. 1
0
 /**
  * @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));
 }
Esempio n. 2
0
 /**
  * @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;
}
Esempio n. 4
0
 /**
  * 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);
 }