Exemplo n.º 1
0
/**
 * Handles AJAX request for remove a reviewer to a post.
 */
function annowf_remove_reviewer()
{
    $response = annowf_remove_user('reviewer');
    $response['decrement'] = 0;
    if ($response['message'] == 'success') {
        $post_id = absint($_POST['post_id']);
        $user_id = absint($_POST['user_id']);
        // Send back to submitted state if we've removed all the reviewers
        if (count(anno_get_reviewers($post_id)) == 0) {
            update_post_meta($post_id, '_post_state', 'submitted');
        }
        // Check if the user had already left a review and send back in response to update dom appropriately
        $round = annowf_get_round($post_id);
        $reviews = get_post_meta($post_id, '_round_' . $round . '_reviewed', true);
        if (!is_array($reviews)) {
            $reviews = array();
        }
        if (in_array($user_id, $reviews)) {
            $key = array_search($user_id, $reviews);
            unset($reviews[$key]);
            update_post_meta($post_id, '_round_' . $round . '_reviewed', $reviews);
            $response['decrement'] = 1;
        }
        //Add to the audit log
        $current_user = wp_get_current_user();
        annowf_save_audit_item($post_id, $current_user->ID, 9, array($user_id));
    }
    echo json_encode($response);
    die;
}
Exemplo n.º 2
0
/**
 * In Review state markup for minor actions.
 */
function annowf_minor_action_in_review_markup()
{
    if (anno_user_can('edit_post')) {
        global $post;
        $post_round = annowf_get_round($post->ID);
        annowf_minor_action_save_markup();
        annowf_minor_action_preview_markup();
        if ($post_round !== false) {
            // Return array of user ids who have given reviews for this round
            $round_reviewed = get_post_meta($post->ID, '_round_' . $post_round . '_reviewed', true);
            if (!is_array($round_reviewed)) {
                $round_reviewed = array();
            }
            $round_reviewed = count($round_reviewed);
            $reviewers = count(anno_get_reviewers($post->ID));
            ?>
			<p class="status-text">
<?php 
            printf(_x('%s of %s Reviews Complete', 'Article publishing box meta text', 'anno'), '<span id="anno-reviewed-count">' . $round_reviewed . '</span>', '<span id="anno-reviewers-count">' . $reviewers . '</span>');
        }
    } else {
        ?>
			<p class="status-text">
<?php 
        _ex('Submitted - In Review', 'Publishing box meta text', 'anno');
    }
    ?>
		</p>
<?php 
}
Exemplo n.º 3
0
/**
 * Get an array of emails for a given role, be it a global or per post role.
 *
 * @param string $role The role of the users to fetch
 * @param stdObj $post A WP post object
 * @return array Returns an array of emails of users of a given role. Returns an empty array if no users are found
 */
function annowf_get_role_emails($role, $post = null)
{
    switch ($role) {
        case 'administrator':
        case 'editor':
            $users = get_users(array('role' => $role));
            break;
        case 'co-author':
        case 'co_author':
        case 'author':
            $user_ids = anno_get_authors($post->ID);
            if (!empty($user_ids)) {
                $users = get_users(array('include' => $user_ids));
            }
            break;
        case 'reviewer':
            $user_ids = anno_get_reviewers($post->ID);
            if (!empty($user_ids)) {
                $users = get_users(array('include' => $user_ids));
            }
            break;
        default:
            break;
    }
    if (!empty($users) && is_array($users)) {
        return array_map('anno_user_email', $users);
    }
    return array();
}
/**
 * Meta box markup for reviewer review and comments
 */
function anno_internal_comments_reviewer_comments()
{
    global $anno_review_options, $current_user, $post;
    $user_review = annowf_get_user_review($post->ID, $current_user->ID);
    $reviewers = anno_get_reviewers($post->ID);
    if (anno_user_can('leave_review', $current_user->ID, $post->ID)) {
        ?>
<div class="review-section <?php 
        echo 'status-' . $user_review;
        ?>
">
	<label for="anno-review"><?php 
        _ex('Recommendation: ', 'Review label for reviewer meta box review dropdown', 'anno');
        ?>
</label>
	<select id="anno-review" name="anno_review">
	<?php 
        foreach ($anno_review_options as $opt_key => $opt_val) {
            ?>
	
		<option value="<?php 
            echo esc_attr($opt_key);
            ?>
"<?php 
            selected($user_review, $opt_key, true);
            ?>
><?php 
            echo esc_html($opt_val);
            ?>
</option>
	<?php 
        }
        ?>
	</select>
	<span class="review-notice"></span>
</div>

<?php 
        wp_nonce_field('anno_review', '_ajax_nonce-review', false);
    }
    anno_internal_comments_display('review');
}