Exemplo n.º 1
0
/**
 * Save reader selection data sent via AJAX.
 *
 * @param int $post_id ID of the post.
 */
function cacsp_save_reader_connection($post_id)
{
    if (!defined('DOING_AJAX') || !DOING_AJAX) {
        return;
    }
    if (!isset($_POST['social_paper_readers_nonce']) || !isset($_POST['social_paper_readers'])) {
        return;
    }
    if (!wp_verify_nonce($_POST['social_paper_readers_nonce'], 'cacsp-reader-selector')) {
        return;
    }
    $paper = new CACSP_Paper($post_id);
    $results = array();
    $new_reader_ids = array_map('intval', (array) $_POST['social_paper_readers']);
    $existing_reader_ids = $paper->get_reader_ids();
    // Remove readers no longer listed.
    $readers_to_remove = array_diff($existing_reader_ids, $new_reader_ids);
    if ($readers_to_remove) {
        foreach ($readers_to_remove as $user_id) {
            $results['removed'][$user_id] = $paper->remove_reader($user_id);
        }
    }
    // Add new readers.
    $readers_to_add = array_diff($new_reader_ids, $existing_reader_ids);
    if ($readers_to_add) {
        foreach ($readers_to_add as $user_id) {
            $results['connected'][$user_id] = $paper->add_reader($user_id);
        }
    }
    // Can't do much with results :(
}
Exemplo n.º 2
0
 public function test_remove_reader_successful_removal()
 {
     $p = $this->factory->paper->create();
     $u = $this->factory->user->create();
     $paper = new CACSP_Paper($p);
     $paper->add_reader($u);
     $this->assertTrue($paper->remove_reader($u));
 }