/** * @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')); }
/** * @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')); }