Example #1
0
 /**
  * @group bp_messages_delete_meta
  * @group messages_delete_thread
  */
 public function test_bp_messages_delete_metadata_cache_on_thread_delete()
 {
     $this->old_current_user = get_current_user_id();
     $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' => 'Oy'));
     // create a reply
     $this->factory->message->create(array('thread_id' => $t1, 'sender_id' => $u2, 'recipients' => array($u1), 'content' => 'Yo'));
     // add message meta
     list($m1, $m2) = $this->get_message_ids($t1);
     bp_messages_update_meta($m1, 'yolo', 'gah');
     bp_messages_update_meta($m2, 'yolo', 'bah');
     // prime message meta cache
     bp_messages_get_meta($m1, 'yolo');
     bp_messages_get_meta($m2, 'yolo');
     // delete thread
     // to outright delete a thread, both recipients must delete it
     $this->set_current_user($u1);
     messages_delete_thread($t1);
     $this->set_current_user($u2);
     messages_delete_thread($t1);
     // assert empty meta cache
     $this->assertEmpty(wp_cache_get($m1, 'message_meta'));
     $this->assertEmpty(wp_cache_get($m2, 'message_meta'));
     // cleanup
     $this->set_current_user($this->old_current_user);
 }
/**
 * Set a private message item's embed cache.
 *
 * Used during {@link BP_Embed::parse_oembed()} via {@link bp_messages_embed()}.
 *
 * @since 2.2.0
 *
 * @param string $cache    An empty string passed by BP_Embed::parse_oembed() for
 *                         functions like this one to filter.
 * @param string $cachekey The cache key generated in BP_Embed::parse_oembed().
 * @param int    $id       The ID of the message item.
 */
function bp_embed_message_save_cache($cache, $cachekey, $id)
{
    bp_messages_update_meta($id, $cachekey, $cache);
}
 /**
  * @group bp_has_message_threads
  * @group meta_query
  */
 public function test_thread_has_messages_meta_query_multiple_clauses_relation_and()
 {
     $u1 = $this->factory->user->create();
     $u2 = $this->factory->user->create();
     // create some threads
     $message_1 = $this->factory->message->create_and_get(array('sender_id' => $u1, 'recipients' => array($u2), 'subject' => 'This is a knive'));
     $message_2 = $this->factory->message->create_and_get(array('sender_id' => $u1, 'recipients' => array($u2), 'subject' => 'Oy'));
     // misc threads
     $this->factory->message->create_many(3, array('sender_id' => $u1, 'recipients' => array($u2)));
     $t1 = $message_1->thread_id;
     $t2 = $message_2->thread_id;
     // create some replies for thread 1
     $message_3 = $this->factory->message->create_and_get(array('thread_id' => $t1, 'sender_id' => $u2, 'recipients' => array($u1), 'content' => "That's a spoon"));
     $message_4 = $this->factory->message->create_and_get(array('thread_id' => $t1, 'sender_id' => $u1, 'recipients' => array($u2), 'content' => "I see you've played knivey-spooney before."));
     $message_5 = $this->factory->message->create_and_get(array('thread_id' => $t1, 'sender_id' => $u2, 'recipients' => array($u1), 'content' => '*crickets*'));
     // create some replies for thread 2
     $message_6 = $this->factory->message->create_and_get(array('thread_id' => $t2, 'sender_id' => $u2, 'recipients' => array($u1), 'content' => "Oy yourself."));
     // belong to $t1
     $m1 = $message_1->id;
     $m3 = $message_3->id;
     $m4 = $message_4->id;
     $m5 = $message_5->id;
     // belong to $t2
     $m2 = $message_2->id;
     $m6 = $message_6->id;
     // add meta for some of the messages
     bp_messages_update_meta($m1, 'utensil', 'knive');
     bp_messages_update_meta($m1, 'is_knive', 'yes');
     bp_messages_update_meta($m1, "starred_by_user_{$u2}", true);
     bp_messages_update_meta($m2, 'utensil', 'spoon');
     bp_messages_update_meta($m2, 'is_knive', 'no');
     bp_messages_update_meta($m2, 'is_spoon', 'yes');
     bp_messages_update_meta($m3, "starred_by_user_{$u2}", true);
     bp_messages_update_meta($m6, "starred_by_user_{$u2}", true);
     // now, do the message thread loop query
     global $messages_template;
     bp_has_message_threads(array('user_id' => $u2, 'meta_query' => array('relation' => 'AND', array('key' => "starred_by_user_{$u2}"), array('key' => 'utensil', 'value' => 'knive'))));
     $this->assertEquals(1, $messages_template->thread_count);
     $this->assertEqualSets(array($t1), wp_list_pluck($messages_template->threads, 'thread_id'));
 }
Example #4
0
 /**
  * @group bp_has_message_threads
  * @group meta_query
  */
 public function test_thread_has_messages_meta_query_multiple_clauses_relation_and()
 {
     $u1 = $this->factory->user->create();
     $u2 = $this->factory->user->create();
     // create some threads
     $t1 = $this->factory->message->create(array('sender_id' => $u1, 'recipients' => array($u2), 'subject' => 'This is a knive'));
     $t2 = $this->factory->message->create(array('sender_id' => $u1, 'recipients' => array($u2), 'subject' => 'Oy'));
     // misc threads
     $this->factory->message->create_many(3, array('sender_id' => $u1, 'recipients' => array($u2)));
     // create some replies for thread 1
     $this->factory->message->create(array('thread_id' => $t1, 'sender_id' => $u2, 'recipients' => array($u1), 'content' => "That's a spoon"));
     $this->factory->message->create(array('thread_id' => $t1, 'sender_id' => $u1, 'recipients' => array($u2), 'content' => "I see you've played knivey-spooney before."));
     $this->factory->message->create(array('thread_id' => $t1, 'sender_id' => $u2, 'recipients' => array($u1), 'content' => '*crickets*'));
     // create some replies for thread 2
     $this->factory->message->create(array('thread_id' => $t2, 'sender_id' => $u2, 'recipients' => array($u1), 'content' => "Oy yourself."));
     // grab the message ids as individual variables for thread 1
     $thread = new BP_Messages_Thread($t1);
     $mids = wp_list_pluck($thread->messages, 'id');
     list($m1, $m2, $m3, $m4) = $mids;
     // grab the message ids as individual variables for thread 2
     $thread = new BP_Messages_Thread($t2);
     $mids = wp_list_pluck($thread->messages, 'id');
     list($m5, $m6) = $mids;
     // add meta for some of the messages
     bp_messages_update_meta($m1, 'utensil', 'knive');
     bp_messages_update_meta($m1, 'is_knive', 'yes');
     bp_messages_update_meta($m1, "starred_by_user_{$u2}", true);
     bp_messages_update_meta($m2, 'utensil', 'spoon');
     bp_messages_update_meta($m2, 'is_knive', 'no');
     bp_messages_update_meta($m2, 'is_spoon', 'yes');
     bp_messages_update_meta($m3, "starred_by_user_{$u2}", true);
     bp_messages_update_meta($m5, "starred_by_user_{$u2}", true);
     // now, do the message thread loop query
     global $messages_template;
     bp_has_message_threads(array('user_id' => $u2, 'meta_query' => array('relation' => 'AND', array('key' => "starred_by_user_{$u2}"), array('key' => 'utensil', 'value' => 'knive'))));
     $this->assertEquals(1, $messages_template->thread_count);
     $this->assertEqualSets(array($t1), wp_list_pluck($messages_template->threads, 'thread_id'));
 }