Exemplo n.º 1
0
 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 :(
}