public function test_pre_get_posts_filter() { $papers = $this->factory->paper->create_many(3); $groups = $this->factory->group->create_many(3); $p0 = new CACSP_Paper($papers[0]); $p1 = new CACSP_Paper($papers[1]); $p2 = new CACSP_Paper($papers[2]); $p0->connect_to_group($groups[0]); $p1->connect_to_group($groups[1]); $p2->connect_to_group($groups[2]); $q = new WP_Query(array('post_type' => 'cacsp_paper', 'bp_group' => array($groups[0], $groups[2]), 'fields' => 'ids')); $this->assertEqualSets(array($papers[0], $papers[2]), $q->posts); }
/** * Save group selection data sent via AJAX. * * @param int $post_id ID of the post. */ function cacsp_save_group_connection($post_id) { if (!defined('DOING_AJAX') || !DOING_AJAX) { return; } if (!isset($_POST['social_paper_groups_nonce']) || !isset($_POST['social_paper_groups'])) { return; } if (!wp_verify_nonce($_POST['social_paper_groups_nonce'], 'cacsp-group-selector')) { return; } $paper = new CACSP_Paper($post_id); $results = array(); $new_group_ids = array_map('intval', (array) $_POST['social_paper_groups']); $existing_group_ids = $paper->get_group_ids(); // Disconnect from groups no longer listed. $disconnected_groups = array_diff($existing_group_ids, $new_group_ids); if ($disconnected_groups) { foreach ($disconnected_groups as $group_id) { $results['disconnected'][$group_id] = $paper->disconnect_from_group($group_id); } } // Connect to new groups. $connected_groups = array_diff($new_group_ids, $existing_group_ids); if ($connected_groups) { foreach ($connected_groups as $group_id) { $results['connected'][$group_id] = $paper->connect_to_group($group_id); } } // Can't do much with results :( }