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