We use OJS 2.4.3 for peer review management and I’ve come across a minor bug that appears to be present throughout the 2.4.x series. The SectionEditorSubmissionDAO::getReviewersForArticle method returns a list of all eligible reviewers for an article, including those who have previously declined a review request for the article. It returns a $reviewers object used by the sectionEditor/selectReviewer.tpl template which contains the code:
{if $reviewer->declined}
<a class="action" href="{url op="reassignReviewer" path=$articleId|to_array:$reviewer->getUserId()}">{translate key="editor.reassign"}</a>
{else}
{translate key="common.alreadyAssigned"}
{/if}
The problem is that the “declined” field from the review_assignments table was not part of the SELECT statement in the DAO, so it’s always null and editors cannot therefore reassign a reviewer who has had a change of heart about the request. They’ll always show as alreadyAssigned to editors.
Fortunately the fix is trivial–adding one more argument to the SELECT solves the problem. Change the line which reads:
ar.review_id,
to:
ar.review_id, ar.declined,
at around line 823 of the class solves the problem. I’ve tested it on our system and it appears to give the desired behavior, showing the “Reassign” link as it should.
Anticipating a likely question, unfortunately, I’m not git-space yet–our OJS is heavily modded–so I cannot submit a pull request
Roger