17 import(
'lib.pkp.classes.plugins.ReportPlugin');
23 function register($category, $path, $mainContextId =
null) {
24 $success = parent::register($category, $path, $mainContextId);
26 $this->
import(
'ReviewReportDAO');
38 return 'ReviewReportPlugin';
45 return __(
'plugins.reports.reviews.displayName');
52 return __(
'plugins.reports.reviews.description');
61 header(
'content-type: text/comma-separated-values');
62 header(
'content-disposition: attachment; filename=reviews-' . date(
'Ymd') .
'.csv');
66 list($commentsIterator, $reviewsIterator, $interestsArray) = $reviewReportDao->getReviewReport($context->getId());
69 while ($row = $commentsIterator->next()) {
70 if (isset($comments[$row[
'submission_id']][$row[
'author_id']])) {
71 $comments[$row[
'submission_id']][$row[
'author_id']] .=
"; " . $row[
'comments'];
73 $comments[$row[
'submission_id']][$row[
'author_id']] = $row[
'comments'];
77 import(
'lib.pkp.classes.submission.reviewAssignment.ReviewAssignment');
78 $recommendations = array(
79 SUBMISSION_REVIEWER_RECOMMENDATION_ACCEPT =>
'reviewer.article.decision.accept',
80 SUBMISSION_REVIEWER_RECOMMENDATION_PENDING_REVISIONS =>
'reviewer.article.decision.pendingRevisions',
81 SUBMISSION_REVIEWER_RECOMMENDATION_RESUBMIT_HERE =>
'reviewer.article.decision.resubmitHere',
82 SUBMISSION_REVIEWER_RECOMMENDATION_RESUBMIT_ELSEWHERE =>
'reviewer.article.decision.resubmitElsewhere',
83 SUBMISSION_REVIEWER_RECOMMENDATION_DECLINE =>
'reviewer.article.decision.decline',
84 SUBMISSION_REVIEWER_RECOMMENDATION_SEE_COMMENTS =>
'reviewer.article.decision.seeComments'
88 'stage_id' => __(
'workflow.stage'),
89 'round' => __(
'plugins.reports.reviews.round'),
90 'submission' => __(
'plugins.reports.reviews.submissionTitle'),
91 'submission_id' => __(
'plugins.reports.reviews.submissionId'),
92 'reviewer' => __(
'plugins.reports.reviews.reviewer'),
93 'user_given' => __(
'user.givenName'),
94 'user_family' => __(
'user.familyName'),
95 'orcid' => __(
'user.orcid'),
96 'country' => __(
'common.country'),
97 'affiliation' => __(
'user.affiliation'),
98 'email' => __(
'user.email'),
99 'interests' => __(
'user.interests'),
100 'dateassigned' => __(
'plugins.reports.reviews.dateAssigned'),
101 'datenotified' => __(
'plugins.reports.reviews.dateNotified'),
102 'dateconfirmed' => __(
'plugins.reports.reviews.dateConfirmed'),
103 'datecompleted' => __(
'plugins.reports.reviews.dateCompleted'),
104 'dateacknowledged' => __(
'plugins.reports.reviews.dateAcknowledged'),
105 'unconsidered' => __(
'plugins.reports.reviews.unconsidered'),
106 'datereminded' => __(
'plugins.reports.reviews.dateReminded'),
107 'dateresponsedue' => __(
'reviewer.submission.responseDueDate'),
108 'overdueresponse' => __(
'plugins.reports.reviews.responseOverdue'),
109 'datedue' => __(
'reviewer.submission.reviewDueDate'),
110 'overdue' => __(
'plugins.reports.reviews.reviewOverdue'),
111 'declined' => __(
'submissions.declined'),
112 'recommendation' => __(
'plugins.reports.reviews.recommendation'),
113 'comments' => __(
'plugins.reports.reviews.comments')
116 $fp = fopen(
'php://output',
'wt');
118 fprintf($fp, chr(0xEF).chr(0xBB).chr(0xBF));
119 fputcsv($fp, array_values($columns));
121 while ($row = $reviewsIterator->next()) {
122 if (substr($row[
'dateresponsedue'], 11) ===
'00:00:00') {
123 $row[
'dateresponsedue'] = substr($row[
'dateresponsedue'], 0, 11) .
'23:59:59';
125 if (substr($row[
'datedue'], 11) ===
'00:00:00') {
126 $row[
'datedue'] = substr($row[
'datedue'], 0, 11) .
'23:59:59';
128 list($overdueResponseDays, $overdueDays) = $this->
getOverdueDays($row);
129 $row[
'overdueresponse'] = $overdueResponseDays;
130 $row[
'overdue'] = $overdueDays;
132 foreach ($columns as $index => $junk)
switch ($index) {
137 $columns[$index] = __($row[$index]?
'common.yes':
'common.no');
140 $columns[$index] = __($row[$index]?
'common.yes':
'');
142 case 'recommendation':
143 if (isset($recommendations[$row[$index]])) {
144 $columns[$index] = (!isset($row[$index])) ? __(
'common.none') : __($recommendations[$row[$index]]);
146 $columns[$index] =
'';
150 if (isset($comments[$row[
'submission_id']][$row[
'reviewer_id']])) {
151 $columns[$index] = $comments[$row[
'submission_id']][$row[
'reviewer_id']];
153 $columns[$index] =
'';
157 if (isset($interestsArray[$row[
'reviewer_id']])) {
158 $columns[$index] = $interestsArray[$row[
'reviewer_id']];
160 $columns[$index] =
'';
164 $columns[$index] = $row[$index];
166 fputcsv($fp, $columns);
172 $responseDueTime = strtotime($row[
'dateresponsedue']);
173 $reviewDueTime = strtotime($row[
'datedue']);
174 $overdueResponseDays = $overdueDays =
'';
175 if (!$row[
'dateconfirmed']){
176 if($responseDueTime < time()) {
177 $datediff = time() - $responseDueTime;
178 $overdueResponseDays = round($datediff / (60 * 60 * 24));
179 } elseif ($reviewDueTime < time()) {
180 $datediff = time() - $reviewDueTime;
181 $overdueDays = round($datediff / (60 * 60 * 24));
183 } elseif (!$row[
'datecompleted']) {
184 if ($reviewDueTime < time()) {
185 $datediff = time() - $reviewDueTime;
186 $overdueDays = round($datediff / (60 * 60 * 24));
189 return array($overdueResponseDays, $overdueDays);