Skip to content

Commit fa208ac

Browse files
authored
Merge pull request #11376 from Vitaliy-1/i11374_review_anonymity
#11374 Fix reviewer latest review related issues
2 parents 08ed04a + cb2567a commit fa208ac

File tree

5 files changed

+23
-27
lines changed

5 files changed

+23
-27
lines changed

api/v1/reviews/PKPReviewController.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,9 +242,8 @@ public function getHistory(Request $illuminateRequest): JsonResponse
242242
$lastReviewAssignment = Repo::reviewAssignment()->getCollector()
243243
->filterByContextIds([$contextId])
244244
->filterBySubmissionIds([$submissionId])
245-
->filterByReviewerIds([$reviewerId])
245+
->filterByReviewerIds([$reviewerId], true)
246246
->filterByStageId($stageId)
247-
->filterByLastReviewRound(true)
248247
->getMany()
249248
->first();
250249

api/v1/submissions/PKPSubmissionController.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,8 +1047,7 @@ public function getPublications(Request $illuminateRequest): JsonResponse
10471047

10481048
$currentUserReviewAssignment = Repo::reviewAssignment()->getCollector()
10491049
->filterBySubmissionIds([$submission->getId()])
1050-
->filterByReviewerIds([$request->getUser()->getId()])
1051-
->filterByLastReviewRound(true)
1050+
->filterByReviewerIds([$request->getUser()->getId()], true)
10521051
->getMany()
10531052
->first();
10541053

classes/submission/Repository.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,7 @@ public function getWorkflowUrlByUserRoles(Submission $submission, ?int $userId =
229229
// Send reviewers to review wizard
230230
$reviewAssignment = Repo::reviewAssignment()->getCollector()
231231
->filterBySubmissionIds([$submission->getId()])
232-
->filterByReviewerIds([$user->getId()])
233-
->filterByLastReviewRound(true)
232+
->filterByReviewerIds([$user->getId()], true)
234233
->getMany()
235234
->first();
236235

classes/submission/maps/Schema.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -456,8 +456,7 @@ protected function mapByProperties(array $props, Submission $submission, bool|Co
456456
if (in_array('publications', $props)) {
457457
$currentUserReviewAssignment = Repo::reviewAssignment()->getCollector()
458458
->filterBySubmissionIds([$submission->getId()])
459-
->filterByReviewerIds([$this->request->getUser()->getId()])
460-
->filterByLastReviewRound(true)
459+
->filterByReviewerIds([$this->request->getUser()->getId()], true)
461460
->getMany()
462461
->first();
463462
$anonymize = $currentUserReviewAssignment && $currentUserReviewAssignment->getReviewMethod() === ReviewAssignment::SUBMISSION_REVIEW_METHOD_DOUBLEANONYMOUS;

classes/submission/reviewAssignment/Collector.php

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -291,25 +291,7 @@ public function orderBySubmissionId(string $direction = self::ORDER_DIR_ASC): st
291291
*/
292292
public function getQueryBuilder(): Builder
293293
{
294-
$q = DB::table($this->dao->table . ' as ra')
295-
// Aggregating data regarding latest review round and stage. For OMP the latest round isn't equal to the round with the highest number per submission
296-
->leftJoinSub(
297-
DB::table('review_assignments as rr')
298-
->select(['rr.submission_id', 'rr.stage_id'])
299-
->selectRaw('MAX(rr.round) as latest_round')
300-
->groupBy('rr.submission_id', 'rr.stage_id')
301-
->leftJoinSub(
302-
DB::table('review_assignments as rs')
303-
->select('rs.submission_id')
304-
->selectRaw('MAX(rs.stage_id) as latest_stage')
305-
->groupBy('rs.submission_id'),
306-
'rsmax',
307-
fn (JoinClause $join) => $join->on('rr.submission_id', '=', 'rsmax.submission_id')
308-
)
309-
->whereColumn('rr.stage_id', 'rsmax.latest_stage'), // Take the highest round only from the latest stage
310-
'rrmax',
311-
fn (JoinClause $join) => $join->on('ra.submission_id', '=', 'rrmax.submission_id')
312-
);
294+
$q = DB::table($this->dao->table . ' as ra');
313295

314296
$q->when(
315297
$this->contextIds !== null,
@@ -331,6 +313,24 @@ public function getQueryBuilder(): Builder
331313

332314
$q->when($this->isLastReviewRound || $this->isIncomplete, function (Builder $q) {
333315
$q
316+
// Aggregating data regarding latest review round and stage. For OMP the latest round isn't equal to the round with the highest number per submission
317+
->leftJoinSub(
318+
DB::table('review_rounds as rr')
319+
->select(['rr.submission_id', 'rr.stage_id'])
320+
->selectRaw('MAX(rr.round) as latest_round')
321+
->groupBy('rr.submission_id', 'rr.stage_id')
322+
->leftJoinSub(
323+
DB::table('review_rounds as rs')
324+
->select('rs.submission_id')
325+
->selectRaw('MAX(rs.stage_id) as latest_stage')
326+
->groupBy('rs.submission_id'),
327+
'rsmax',
328+
fn (JoinClause $join) => $join->on('rr.submission_id', '=', 'rsmax.submission_id')
329+
)
330+
->whereColumn('rr.stage_id', 'rsmax.latest_stage'), // Take the highest round only from the latest stage
331+
'rrmax',
332+
fn (JoinClause $join) => $join->on('ra.submission_id', '=', 'rrmax.submission_id')
333+
)
334334
->whereColumn('ra.round', '=', 'rrmax.latest_round') // assignments from the last review round only
335335
->whereColumn('ra.stage_id', '=', 'rrmax.stage_id') // assignments for the current review stage only (for OMP)
336336
->when(

0 commit comments

Comments
 (0)