00001 <?php
00002
00015
00016
00017
00018 define('SECTION_EDITOR_ACCESS_EDIT', 0x00001);
00019 define('SECTION_EDITOR_ACCESS_REVIEW', 0x00002);
00020
00021 class SubmissionEditHandler extends SectionEditorHandler {
00022 function getFrom($default = 'submissionEditing') {
00023 $from = Request::getUserVar('from');
00024 if (!in_array($from, array('submission', 'submissionEditing'))) return $default;
00025 return $from;
00026 }
00027
00028 function submission($args) {
00029 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00030 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
00031 parent::setupTemplate(true, $articleId);
00032
00033 $user = &Request::getUser();
00034
00035 $journalSettingsDao = &DAORegistry::getDAO('JournalSettingsDAO');
00036 $journalSettings = $journalSettingsDao->getJournalSettings($journal->getJournalId());
00037
00038 $roleDao = &DAORegistry::getDAO('RoleDAO');
00039 $isEditor = $roleDao->roleExists($journal->getJournalId(), $user->getUserId(), ROLE_ID_EDITOR);
00040
00041 $sectionDao = &DAORegistry::getDAO('SectionDAO');
00042 $section = &$sectionDao->getSection($submission->getSectionId());
00043
00044 $enableComments = $journal->getSetting('enableComments');
00045
00046 $templateMgr = &TemplateManager::getManager();
00047
00048 $templateMgr->assign_by_ref('submission', $submission);
00049 $templateMgr->assign_by_ref('section', $section);
00050 $templateMgr->assign_by_ref('authors', $submission->getAuthors());
00051 $templateMgr->assign_by_ref('submissionFile', $submission->getSubmissionFile());
00052 $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles());
00053 $templateMgr->assign_by_ref('reviewFile', $submission->getReviewFile());
00054 $templateMgr->assign_by_ref('journalSettings', $journalSettings);
00055 $templateMgr->assign('userId', $user->getUserId());
00056 $templateMgr->assign('isEditor', $isEditor);
00057 $templateMgr->assign('enableComments', $enableComments);
00058
00059 $sectionDao = &DAORegistry::getDAO('SectionDAO');
00060 $templateMgr->assign_by_ref('sections', $sectionDao->getSectionTitles($journal->getJournalId()));
00061 if ($enableComments) {
00062 import('article.Article');
00063 $templateMgr->assign('commentsStatus', $submission->getCommentsStatus());
00064 $templateMgr->assign_by_ref('commentsStatusOptions', Article::getCommentsStatusOptions());
00065 }
00066
00067 $publishedArticleDao = &DAORegistry::getDAO('PublishedArticleDAO');
00068 $publishedArticle = &$publishedArticleDao->getPublishedArticleByArticleId($submission->getArticleId());
00069 if ($publishedArticle) {
00070 $issueDao = &DAORegistry::getDAO('IssueDAO');
00071 $issue = &$issueDao->getIssueById($publishedArticle->getIssueId());
00072 $templateMgr->assign_by_ref('issue', $issue);
00073 $templateMgr->assign_by_ref('publishedArticle', $publishedArticle);
00074 }
00075
00076 if ($isEditor) {
00077 $templateMgr->assign('helpTopicId', 'editorial.editorsRole.submissionSummary');
00078 }
00079
00080
00081 import('payment.ojs.OJSPaymentManager');
00082 $paymentManager =& OJSPaymentManager::getManager();
00083 if ( $paymentManager->submissionEnabled() || $paymentManager->fastTrackEnabled() || $paymentManager->publicationEnabled()) {
00084 $templateMgr->assign('authorFees', true);
00085 $completedPaymentDAO =& DAORegistry::getDAO('OJSCompletedPaymentDAO');
00086
00087 if ( $paymentManager->submissionEnabled() ) {
00088 $templateMgr->assign_by_ref('submissionPayment', $completedPaymentDAO->getSubmissionCompletedPayment ( $journal->getJournalId(), $articleId ));
00089 }
00090
00091 if ( $paymentManager->fastTrackEnabled() ) {
00092 $templateMgr->assign_by_ref('fastTrackPayment', $completedPaymentDAO->getFastTrackCompletedPayment ( $journal->getJournalId(), $articleId ));
00093 }
00094
00095 if ( $paymentManager->publicationEnabled() ) {
00096 $templateMgr->assign_by_ref('publicationPayment', $completedPaymentDAO->getPublicationCompletedPayment ( $journal->getJournalId(), $articleId ));
00097 }
00098 }
00099
00100 $templateMgr->display('sectionEditor/submission.tpl');
00101 }
00102
00103 function submissionRegrets($args) {
00104 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00105 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
00106 parent::setupTemplate(true, $articleId, 'review');
00107
00108 $reviewAssignmentDao = &DAORegistry::getDAO('ReviewAssignmentDAO');
00109 $cancelsAndRegrets = $reviewAssignmentDao->getCancelsAndRegrets($articleId);
00110 $reviewFilesByRound = $reviewAssignmentDao->getReviewFilesByRound($articleId);
00111
00112 $reviewAssignments =& $submission->getReviewAssignments();
00113 $editorDecisions = $submission->getDecisions();
00114 $numRounds = $submission->getCurrentRound();
00115
00116 $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO');
00117 $reviewFormResponses = array();
00118 if (isset($reviewAssignments[$numRounds-1])) {
00119 foreach ($reviewAssignments[$numRounds-1] as $reviewAssignment) {
00120 $reviewFormResponses[$reviewAssignment->getReviewId()] = $reviewFormResponseDao->reviewFormResponseExists($reviewAssignment->getReviewId());
00121 }
00122 }
00123
00124 $templateMgr = &TemplateManager::getManager();
00125
00126 $templateMgr->assign_by_ref('submission', $submission);
00127 $templateMgr->assign_by_ref('reviewAssignments', $reviewAssignments);
00128 $templateMgr->assign('reviewFormResponses', $reviewFormResponses);
00129 $templateMgr->assign_by_ref('cancelsAndRegrets', $cancelsAndRegrets);
00130 $templateMgr->assign_by_ref('reviewFilesByRound', $reviewFilesByRound);
00131 $templateMgr->assign_by_ref('editorDecisions', $editorDecisions);
00132 $templateMgr->assign('numRounds', $numRounds);
00133 $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality'));
00134
00135 $templateMgr->assign_by_ref('editorDecisionOptions', SectionEditorSubmission::getEditorDecisionOptions());
00136
00137 import('submission.reviewAssignment.ReviewAssignment');
00138 $templateMgr->assign_by_ref('reviewerRatingOptions', ReviewAssignment::getReviewerRatingOptions());
00139 $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions());
00140
00141 $templateMgr->display('sectionEditor/submissionRegrets.tpl');
00142 }
00143
00144 function submissionReview($args) {
00145 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00146 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00147 parent::setupTemplate(true, $articleId);
00148
00149 $sectionEditorSubmissionDao = &DAORegistry::getDAO('SectionEditorSubmissionDAO');
00150 $reviewAssignmentDao = &DAORegistry::getDAO('ReviewAssignmentDAO');
00151 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00152
00153
00154 $round = isset($args[1]) ? $args[1] : $submission->getCurrentRound();
00155
00156 $sectionDao = &DAORegistry::getDAO('SectionDAO');
00157 $sections = &$sectionDao->getJournalSections($journal->getJournalId());
00158
00159 $showPeerReviewOptions = $round == $submission->getCurrentRound() && $submission->getReviewFile() != null ? true : false;
00160
00161 $editorDecisions = $submission->getDecisions($round);
00162 $lastDecision = count($editorDecisions) >= 1 ? $editorDecisions[count($editorDecisions) - 1]['decision'] : null;
00163
00164 $editAssignments =& $submission->getEditAssignments();
00165 $allowRecommendation = $submission->getCurrentRound() == $round && $submission->getReviewFileId() != null && !empty($editAssignments);
00166 $allowResubmit = $lastDecision == SUBMISSION_EDITOR_DECISION_RESUBMIT && $sectionEditorSubmissionDao->getMaxReviewRound($articleId) == $round ? true : false;
00167 $allowCopyedit = $lastDecision == SUBMISSION_EDITOR_DECISION_ACCEPT && $submission->getCopyeditFileId() == null ? true : false;
00168
00169
00170 $notifyReviewerLogs = array();
00171 foreach ($submission->getReviewAssignments($round) as $reviewAssignment) {
00172 $notifyReviewerLogs[$reviewAssignment->getReviewId()] = array();
00173 }
00174
00175
00176 import('article.log.ArticleLog');
00177 $emailLogEntries = &ArticleLog::getEmailLogEntries($articleId);
00178 foreach ($emailLogEntries->toArray() as $emailLog) {
00179 if ($emailLog->getEventType() == ARTICLE_EMAIL_REVIEW_NOTIFY_REVIEWER) {
00180 if (isset($notifyReviewerLogs[$emailLog->getAssocId()]) && is_array($notifyReviewerLogs[$emailLog->getAssocId()])) {
00181 array_push($notifyReviewerLogs[$emailLog->getAssocId()], $emailLog);
00182 }
00183 }
00184 }
00185
00186
00187 $reviewFormTitles =& $reviewFormDao->getJournalReviewFormTitles($journal->getJournalId(), 1);
00188
00189 $reviewFormResponseDao =& DAORegistry::getDAO('ReviewFormResponseDAO');
00190 $reviewFormResponses = array();
00191
00192 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00193 $reviewFormTitles = array();
00194
00195 foreach ($submission->getReviewAssignments($round) as $reviewAssignment) {
00196 $reviewForm =& $reviewFormDao->getReviewForm($reviewAssignment->getReviewFormId());
00197 if ($reviewForm) {
00198 $reviewFormTitles[$reviewForm->getReviewFormId()] = $reviewForm->getReviewFormTitle();
00199 }
00200 unset($reviewForm);
00201 $reviewFormResponses[$reviewAssignment->getReviewId()] = $reviewFormResponseDao->reviewFormResponseExists($reviewAssignment->getReviewId());
00202 }
00203
00204 $templateMgr = &TemplateManager::getManager();
00205
00206 $templateMgr->assign_by_ref('submission', $submission);
00207 $templateMgr->assign_by_ref('reviewIndexes', $reviewAssignmentDao->getReviewIndexesForRound($articleId, $round));
00208 $templateMgr->assign('round', $round);
00209 $templateMgr->assign_by_ref('reviewAssignments', $submission->getReviewAssignments($round));
00210 $templateMgr->assign('reviewFormResponses', $reviewFormResponses);
00211 $templateMgr->assign('reviewFormTitles', $reviewFormTitles);
00212 $templateMgr->assign_by_ref('notifyReviewerLogs', $notifyReviewerLogs);
00213 $templateMgr->assign_by_ref('submissionFile', $submission->getSubmissionFile());
00214 $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles());
00215 $templateMgr->assign_by_ref('reviewFile', $submission->getReviewFile());
00216 $templateMgr->assign_by_ref('copyeditFile', $submission->getCopyeditFile());
00217 $templateMgr->assign_by_ref('revisedFile', $submission->getRevisedFile());
00218 $templateMgr->assign_by_ref('editorFile', $submission->getEditorFile());
00219 $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality'));
00220 $templateMgr->assign('showPeerReviewOptions', $showPeerReviewOptions);
00221 $templateMgr->assign_by_ref('sections', $sections->toArray());
00222 $templateMgr->assign('editorDecisionOptions',
00223 array(
00224 '' => 'common.chooseOne',
00225 SUBMISSION_EDITOR_DECISION_ACCEPT => 'editor.article.decision.accept',
00226 SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS => 'editor.article.decision.pendingRevisions',
00227 SUBMISSION_EDITOR_DECISION_RESUBMIT => 'editor.article.decision.resubmit',
00228 SUBMISSION_EDITOR_DECISION_DECLINE => 'editor.article.decision.decline'
00229 )
00230 );
00231 $templateMgr->assign_by_ref('lastDecision', $lastDecision);
00232
00233 import('submission.reviewAssignment.ReviewAssignment');
00234 $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions());
00235 $templateMgr->assign_by_ref('reviewerRatingOptions', ReviewAssignment::getReviewerRatingOptions());
00236
00237 $templateMgr->assign('allowRecommendation', $allowRecommendation);
00238 $templateMgr->assign('allowResubmit', $allowResubmit);
00239 $templateMgr->assign('allowCopyedit', $allowCopyedit);
00240
00241 $templateMgr->assign('helpTopicId', 'editorial.sectionEditorsRole.review');
00242 $templateMgr->display('sectionEditor/submissionReview.tpl');
00243 }
00244
00245 function submissionEditing($args) {
00246 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00247 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
00248 parent::setupTemplate(true, $articleId);
00249
00250 $useCopyeditors = $journal->getSetting('useCopyeditors');
00251 $useLayoutEditors = $journal->getSetting('useLayoutEditors');
00252 $useProofreaders = $journal->getSetting('useProofreaders');
00253
00254
00255 $round = isset($args[1]) ? $args[1] : $submission->getCurrentRound();
00256 $editorDecisions = $submission->getDecisions($round);
00257 $lastDecision = count($editorDecisions) >= 1 ? $editorDecisions[count($editorDecisions) - 1]['decision'] : null;
00258 $submissionAccepted = ($lastDecision == SUBMISSION_EDITOR_DECISION_ACCEPT) ? true : false;
00259
00260 $templateMgr = &TemplateManager::getManager();
00261
00262 $templateMgr->assign_by_ref('submission', $submission);
00263 $templateMgr->assign_by_ref('submissionFile', $submission->getSubmissionFile());
00264 $templateMgr->assign_by_ref('copyeditFile', $submission->getCopyeditFile());
00265 $templateMgr->assign_by_ref('initialCopyeditFile', $submission->getInitialCopyeditFile());
00266 $templateMgr->assign_by_ref('editorAuthorCopyeditFile', $submission->getEditorAuthorCopyeditFile());
00267 $templateMgr->assign_by_ref('finalCopyeditFile', $submission->getFinalCopyeditFile());
00268 $templateMgr->assign_by_ref('suppFiles', $submission->getSuppFiles());
00269 $templateMgr->assign_by_ref('copyeditor', $submission->getCopyeditor());
00270
00271 $roleDao =& DAORegistry::getDAO('RoleDAO');
00272 $user =& Request::getUser();
00273 $templateMgr->assign('isEditor', $roleDao->roleExists($journal->getJournalId(), $user->getUserId(), ROLE_ID_EDITOR));
00274
00275 import('issue.IssueAction');
00276 $templateMgr->assign('issueOptions', IssueAction::getIssueOptions());
00277 $publishedArticleDao =& DAORegistry::getDAO('PublishedArticleDAO');
00278 $publishedArticle =& $publishedArticleDao->getPublishedArticleByArticleId($submission->getArticleId());
00279 $templateMgr->assign_by_ref('publishedArticle', $publishedArticle);
00280
00281 $templateMgr->assign('useCopyeditors', $useCopyeditors);
00282 $templateMgr->assign('useLayoutEditors', $useLayoutEditors);
00283 $templateMgr->assign('useProofreaders', $useProofreaders);
00284 $templateMgr->assign_by_ref('proofAssignment', $submission->getProofAssignment());
00285 $templateMgr->assign_by_ref('layoutAssignment', $submission->getLayoutAssignment());
00286 $templateMgr->assign('submissionAccepted', $submissionAccepted);
00287
00288
00289 import('payment.ojs.OJSPaymentManager');
00290 $paymentManager =& OJSPaymentManager::getManager();
00291 $completedPaymentDAO =& DAORegistry::getDAO('OJSCompletedPaymentDAO');
00292
00293 $publicationFeeEnabled = $paymentManager->publicationEnabled();
00294 $templateMgr->assign('publicatonFeeEnabled', $publicationFeeEnabled);
00295 if ( $publicationFeeEnabled ) {
00296 $templateMgr->assign_by_ref('publicationPayment', $completedPaymentDAO->getPublicationCompletedPayment ( $journal->getJournalId(), $articleId ));
00297 }
00298
00299 $templateMgr->assign('helpTopicId', 'editorial.sectionEditorsRole.editing');
00300 $templateMgr->display('sectionEditor/submissionEditing.tpl');
00301 }
00302
00306 function submissionHistory($args) {
00307 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00308 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
00309
00310 parent::setupTemplate(true, $articleId);
00311
00312
00313 $articleNoteDao = &DAORegistry::getDAO('ArticleNoteDAO');
00314
00315 $rangeInfo = &Handler::getRangeInfo('submissionNotes');
00316 $submissionNotes =& $articleNoteDao->getArticleNotes($articleId, $rangeInfo);
00317
00318 import('article.log.ArticleLog');
00319 $rangeInfo = &Handler::getRangeInfo('eventLogEntries');
00320 $eventLogEntries = &ArticleLog::getEventLogEntries($articleId, $rangeInfo);
00321 $rangeInfo = &Handler::getRangeInfo('emailLogEntries');
00322 $emailLogEntries = &ArticleLog::getEmailLogEntries($articleId, $rangeInfo);
00323
00324 $templateMgr = &TemplateManager::getManager();
00325
00326 $templateMgr->assign('isEditor', Validation::isEditor());
00327 $templateMgr->assign_by_ref('submission', $submission);
00328 $templateMgr->assign_by_ref('eventLogEntries', $eventLogEntries);
00329 $templateMgr->assign_by_ref('emailLogEntries', $emailLogEntries);
00330 $templateMgr->assign_by_ref('submissionNotes', $submissionNotes);
00331
00332 $templateMgr->display('sectionEditor/submissionHistory.tpl');
00333 }
00334
00335 function changeSection() {
00336 $articleId = Request::getUserVar('articleId');
00337 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
00338
00339 $sectionId = Request::getUserVar('sectionId');
00340
00341 SectionEditorAction::changeSection($submission, $sectionId);
00342
00343 Request::redirect(null, null, 'submission', $articleId);
00344 }
00345
00346 function recordDecision() {
00347 $articleId = Request::getUserVar('articleId');
00348 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00349
00350 $decision = Request::getUserVar('decision');
00351
00352 switch ($decision) {
00353 case SUBMISSION_EDITOR_DECISION_ACCEPT:
00354 case SUBMISSION_EDITOR_DECISION_PENDING_REVISIONS:
00355 case SUBMISSION_EDITOR_DECISION_RESUBMIT:
00356 case SUBMISSION_EDITOR_DECISION_DECLINE:
00357 SectionEditorAction::recordDecision($submission, $decision);
00358 break;
00359 }
00360
00361 Request::redirect(null, null, 'submissionReview', $articleId);
00362 }
00363
00364
00365
00366
00367
00368 function selectReviewer($args) {
00369 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00370 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00371
00372 $sectionEditorSubmissionDao = &DAORegistry::getDAO('SectionEditorSubmissionDAO');
00373
00374 if (isset($args[1]) && $args[1] != null) {
00375
00376 SectionEditorAction::addReviewer($submission, $args[1]);
00377 Request::redirect(null, null, 'submissionReview', $articleId);
00378
00379
00380 } else {
00381 parent::setupTemplate(true, $articleId, 'review');
00382
00383 $sectionEditorSubmissionDao = &DAORegistry::getDAO('SectionEditorSubmissionDAO');
00384
00385 $searchType = null;
00386 $searchMatch = null;
00387 $search = $searchQuery = Request::getUserVar('search');
00388 $searchInitial = Request::getUserVar('searchInitial');
00389 if (isset($search)) {
00390 $searchType = Request::getUserVar('searchField');
00391 $searchMatch = Request::getUserVar('searchMatch');
00392
00393 } else if (isset($searchInitial)) {
00394 $searchInitial = String::strtoupper($searchInitial);
00395 $searchType = USER_FIELD_INITIAL;
00396 $search = $searchInitial;
00397 }
00398
00399 $rangeInfo = &Handler::getRangeInfo('reviewers');
00400 $reviewers = $sectionEditorSubmissionDao->getReviewersForArticle($journal->getJournalId(), $articleId, $submission->getCurrentRound(), $searchType, $search, $searchMatch, $rangeInfo);
00401
00402 $journal = Request::getJournal();
00403 $reviewAssignmentDao = &DAORegistry::getDAO('ReviewAssignmentDAO');
00404
00405 $templateMgr = &TemplateManager::getManager();
00406
00407 $templateMgr->assign('searchField', $searchType);
00408 $templateMgr->assign('searchMatch', $searchMatch);
00409 $templateMgr->assign('search', $searchQuery);
00410 $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial'));
00411
00412 $templateMgr->assign_by_ref('reviewers', $reviewers);
00413 $templateMgr->assign('articleId', $articleId);
00414 $templateMgr->assign('reviewerStatistics', $sectionEditorSubmissionDao->getReviewerStatistics($journal->getJournalId()));
00415 $templateMgr->assign('fieldOptions', Array(
00416 USER_FIELD_INTERESTS => 'user.interests',
00417 USER_FIELD_FIRSTNAME => 'user.firstName',
00418 USER_FIELD_LASTNAME => 'user.lastName',
00419 USER_FIELD_USERNAME => 'user.username',
00420 USER_FIELD_EMAIL => 'user.email'
00421 ));
00422 $templateMgr->assign('completedReviewCounts', $reviewAssignmentDao->getCompletedReviewCounts($journal->getJournalId()));
00423 $templateMgr->assign('rateReviewerOnQuality', $journal->getSetting('rateReviewerOnQuality'));
00424 $templateMgr->assign('averageQualityRatings', $reviewAssignmentDao->getAverageQualityRatings($journal->getJournalId()));
00425
00426 $templateMgr->assign('helpTopicId', 'journal.roles.reviewer');
00427 $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList')));
00428 $templateMgr->assign('reviewerDatabaseLinks', $journal->getSetting('reviewerDatabaseLinks'));
00429 $templateMgr->display('sectionEditor/selectReviewer.tpl');
00430 }
00431 }
00432
00436 function createReviewer($args) {
00437 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00438 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00439
00440 import('sectionEditor.form.CreateReviewerForm');
00441 $createReviewerForm =& new CreateReviewerForm($articleId);
00442 parent::setupTemplate(true, $articleId);
00443
00444 if (isset($args[1]) && $args[1] === 'create') {
00445 $createReviewerForm->readInputData();
00446 if ($createReviewerForm->validate()) {
00447
00448 $newUserId = $createReviewerForm->execute();
00449 Request::redirect(null, null, 'selectReviewer', array($articleId, $newUserId));
00450 } else {
00451 $createReviewerForm->display();
00452 }
00453 } else {
00454
00455 if ($createReviewerForm->isLocaleResubmit()) {
00456 $createReviewerForm->readInputData();
00457 } else {
00458 $createReviewerForm->initData();
00459 }
00460 $createReviewerForm->display();
00461 }
00462
00463 }
00464
00469 function suggestUsername() {
00470 parent::validate();
00471 $suggestion = Validation::suggestUsername(
00472 Request::getUserVar('firstName'),
00473 Request::getUserVar('lastName')
00474 );
00475 echo $suggestion;
00476 }
00477
00481 function enrollSearch($args) {
00482 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00483 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00484
00485 $roleDao = &DAORegistry::getDAO('RoleDAO');
00486 $roleId = $roleDao->getRoleIdFromPath('reviewer');
00487
00488 $user = &Request::getUser();
00489
00490 $rangeInfo = Handler::getRangeInfo('users');
00491 $templateMgr = &TemplateManager::getManager();
00492 parent::setupTemplate(true);
00493
00494 $searchType = null;
00495 $searchMatch = null;
00496 $search = $searchQuery = Request::getUserVar('search');
00497 $searchInitial = Request::getUserVar('searchInitial');
00498 if (isset($search)) {
00499 $searchType = Request::getUserVar('searchField');
00500 $searchMatch = Request::getUserVar('searchMatch');
00501
00502 } else if (isset($searchInitial)) {
00503 $searchInitial = String::strtoupper($searchInitial);
00504 $searchType = USER_FIELD_INITIAL;
00505 $search = $searchInitial;
00506 }
00507
00508 $userDao = &DAORegistry::getDAO('UserDAO');
00509 $users = &$userDao->getUsersByField($searchType, $searchMatch, $search, false, $rangeInfo);
00510
00511 $templateMgr->assign('searchField', $searchType);
00512 $templateMgr->assign('searchMatch', $searchMatch);
00513 $templateMgr->assign('search', $searchQuery);
00514 $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial'));
00515
00516 $templateMgr->assign('articleId', $articleId);
00517 $templateMgr->assign('fieldOptions', Array(
00518 USER_FIELD_INTERESTS => 'user.interests',
00519 USER_FIELD_FIRSTNAME => 'user.firstName',
00520 USER_FIELD_LASTNAME => 'user.lastName',
00521 USER_FIELD_USERNAME => 'user.username',
00522 USER_FIELD_EMAIL => 'user.email'
00523 ));
00524 $templateMgr->assign('roleId', $roleId);
00525 $templateMgr->assign_by_ref('users', $users);
00526 $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList')));
00527
00528 $templateMgr->assign('helpTopicId', 'journal.roles.index');
00529 $templateMgr->display('sectionEditor/searchUsers.tpl');
00530 }
00531
00532 function enroll($args) {
00533 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00534 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00535
00536 $roleDao = &DAORegistry::getDAO('RoleDAO');
00537 $roleId = $roleDao->getRoleIdFromPath('reviewer');
00538
00539 $users = Request::getUserVar('users');
00540 if (!is_array($users) && Request::getUserVar('userId') != null) $users = array(Request::getUserVar('userId'));
00541
00542
00543 for ($i=0; $i<count($users); $i++) {
00544 if (!$roleDao->roleExists($journal->getJournalId(), $users[$i], $roleId)) {
00545 $role = &new Role();
00546 $role->setJournalId($journal->getJournalId());
00547 $role->setUserId($users[$i]);
00548 $role->setRoleId($roleId);
00549
00550 $roleDao->insertRole($role);
00551 }
00552 }
00553 Request::redirect(null, null, 'selectReviewer', $articleId);
00554 }
00555
00556 function notifyReviewer($args = array()) {
00557 $articleId = Request::getUserVar('articleId');
00558 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00559
00560 $reviewId = Request::getUserVar('reviewId');
00561
00562 $send = Request::getUserVar('send')?true:false;
00563 parent::setupTemplate(true, $articleId, 'review');
00564
00565 if (SectionEditorAction::notifyReviewer($submission, $reviewId, $send)) {
00566 Request::redirect(null, null, 'submissionReview', $articleId);
00567 }
00568 }
00569
00570 function clearReview($args) {
00571 $articleId = isset($args[0])?$args[0]:0;
00572 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00573
00574 $reviewId = $args[1];
00575
00576 SectionEditorAction::clearReview($submission, $reviewId);
00577
00578 Request::redirect(null, null, 'submissionReview', $articleId);
00579 }
00580
00581 function cancelReview($args) {
00582 $articleId = Request::getUserVar('articleId');
00583 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00584
00585 $reviewId = Request::getUserVar('reviewId');
00586
00587 $send = Request::getUserVar('send')?true:false;
00588 parent::setupTemplate(true, $articleId, 'review');
00589
00590 if (SectionEditorAction::cancelReview($submission, $reviewId, $send)) {
00591 Request::redirect(null, null, 'submissionReview', $articleId);
00592 }
00593 }
00594
00595 function remindReviewer($args = null) {
00596 $articleId = Request::getUserVar('articleId');
00597 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00598
00599 $reviewId = Request::getUserVar('reviewId');
00600 parent::setupTemplate(true, $articleId, 'review');
00601
00602 if (SectionEditorAction::remindReviewer($submission, $reviewId, Request::getUserVar('send'))) {
00603 Request::redirect(null, null, 'submissionReview', $articleId);
00604 }
00605 }
00606
00607 function thankReviewer($args = array()) {
00608 $articleId = Request::getUserVar('articleId');
00609 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00610
00611 $reviewId = Request::getUserVar('reviewId');
00612
00613 $send = Request::getUserVar('send')?true:false;
00614 parent::setupTemplate(true, $articleId, 'review');
00615
00616 if (SectionEditorAction::thankReviewer($submission, $reviewId, $send)) {
00617 Request::redirect(null, null, 'submissionReview', $articleId);
00618 }
00619 }
00620
00621 function rateReviewer() {
00622 $articleId = Request::getUserVar('articleId');
00623 SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00624 list($journal, $submission) = parent::setupTemplate(true, $articleId, 'review');
00625
00626 $reviewId = Request::getUserVar('reviewId');
00627 $quality = Request::getUserVar('quality');
00628
00629 SectionEditorAction::rateReviewer($articleId, $reviewId, $quality);
00630
00631 Request::redirect(null, null, 'submissionReview', $articleId);
00632 }
00633
00634 function confirmReviewForReviewer($args) {
00635 $articleId = (int) isset($args[0])?$args[0]:0;
00636 $accept = Request::getUserVar('accept')?true:false;
00637 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00638
00639 $reviewId = (int) isset($args[1])?$args[1]:0;
00640
00641 SectionEditorAction::confirmReviewForReviewer($reviewId, $accept);
00642 Request::redirect(null, null, 'submissionReview', $articleId);
00643 }
00644
00645 function uploadReviewForReviewer($args) {
00646 $articleId = (int) Request::getUserVar('articleId');
00647 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00648
00649 $reviewId = (int) Request::getUserVar('reviewId');
00650
00651 SectionEditorAction::uploadReviewForReviewer($reviewId);
00652 Request::redirect(null, null, 'submissionReview', $articleId);
00653 }
00654
00655 function makeReviewerFileViewable() {
00656 $articleId = Request::getUserVar('articleId');
00657 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00658
00659 $reviewId = Request::getUserVar('reviewId');
00660 $fileId = Request::getUserVar('fileId');
00661 $revision = Request::getUserVar('revision');
00662 $viewable = Request::getUserVar('viewable');
00663
00664 SectionEditorAction::makeReviewerFileViewable($articleId, $reviewId, $fileId, $revision, $viewable);
00665
00666 Request::redirect(null, null, 'submissionReview', $articleId);
00667 }
00668
00669 function setDueDate($args) {
00670 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00671 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00672
00673 $reviewId = isset($args[1]) ? $args[1] : 0;
00674 $dueDate = Request::getUserVar('dueDate');
00675 $numWeeks = Request::getUserVar('numWeeks');
00676
00677 if ($dueDate != null || $numWeeks != null) {
00678 SectionEditorAction::setDueDate($articleId, $reviewId, $dueDate, $numWeeks);
00679 Request::redirect(null, null, 'submissionReview', $articleId);
00680
00681 } else {
00682 parent::setupTemplate(true, $articleId, 'review');
00683 $journal = &Request::getJournal();
00684
00685 $reviewAssignmentDao = &DAORegistry::getDAO('ReviewAssignmentDAO');
00686 $reviewAssignment = $reviewAssignmentDao->getReviewAssignmentById($reviewId);
00687
00688 $settingsDao = &DAORegistry::getDAO('JournalSettingsDAO');
00689 $settings = &$settingsDao->getJournalSettings($journal->getJournalId());
00690
00691 $templateMgr = &TemplateManager::getManager();
00692
00693 if ($reviewAssignment->getDateDue() != null) {
00694 $templateMgr->assign('dueDate', $reviewAssignment->getDateDue());
00695 }
00696
00697 $numWeeksPerReview = $settings['numWeeksPerReview'] == null ? 0 : $settings['numWeeksPerReview'];
00698
00699 $templateMgr->assign('articleId', $articleId);
00700 $templateMgr->assign('reviewId', $reviewId);
00701 $templateMgr->assign('todaysDate', date('Y-m-d'));
00702 $templateMgr->assign('numWeeksPerReview', $numWeeksPerReview);
00703 $templateMgr->assign('actionHandler', 'setDueDate');
00704
00705 $templateMgr->display('sectionEditor/setDueDate.tpl');
00706 }
00707 }
00708
00709 function enterReviewerRecommendation($args) {
00710 $articleId = Request::getUserVar('articleId');
00711 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00712
00713 $reviewId = Request::getUserVar('reviewId');
00714
00715 $recommendation = Request::getUserVar('recommendation');
00716
00717 if ($recommendation != null) {
00718 SectionEditorAction::setReviewerRecommendation($articleId, $reviewId, $recommendation, SUBMISSION_REVIEWER_RECOMMENDATION_ACCEPT);
00719 Request::redirect(null, null, 'submissionReview', $articleId);
00720 } else {
00721 parent::setupTemplate(true, $articleId, 'review');
00722
00723 $templateMgr = &TemplateManager::getManager();
00724
00725 $templateMgr->assign('articleId', $articleId);
00726 $templateMgr->assign('reviewId', $reviewId);
00727
00728 import('submission.reviewAssignment.ReviewAssignment');
00729 $templateMgr->assign_by_ref('reviewerRecommendationOptions', ReviewAssignment::getReviewerRecommendationOptions());
00730
00731 $templateMgr->display('sectionEditor/reviewerRecommendation.tpl');
00732 }
00733 }
00734
00739 function userProfile($args) {
00740 parent::validate();
00741 parent::setupTemplate(true);
00742
00743 $templateMgr = &TemplateManager::getManager();
00744 $templateMgr->assign('currentUrl', Request::url(null, Request::getRequestedPage()));
00745
00746 $userDao = &DAORegistry::getDAO('UserDAO');
00747 $userId = isset($args[0]) ? $args[0] : 0;
00748 if (is_numeric($userId)) {
00749 $userId = (int) $userId;
00750 $user = $userDao->getUser($userId);
00751 } else {
00752 $user = $userDao->getUserByUsername($userId);
00753 }
00754
00755
00756 if ($user == null) {
00757
00758 $templateMgr->assign('pageTitle', 'manager.people');
00759 $templateMgr->assign('errorMsg', 'manager.people.invalidUser');
00760 $templateMgr->display('common/error.tpl');
00761
00762 } else {
00763 $site = &Request::getSite();
00764 $journal = &Request::getJournal();
00765
00766 $countryDao =& DAORegistry::getDAO('CountryDAO');
00767 $country = null;
00768 if ($user->getCountry() != '') {
00769 $country = $countryDao->getCountry($user->getCountry());
00770 }
00771 $templateMgr->assign('country', $country);
00772
00773 $templateMgr->assign_by_ref('user', $user);
00774 $templateMgr->assign('localeNames', Locale::getAllLocales());
00775 $templateMgr->assign('helpTopicId', 'journal.roles.index');
00776 $templateMgr->display('sectionEditor/userProfile.tpl');
00777 }
00778 }
00779
00780 function viewMetadata($args) {
00781 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00782 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
00783 parent::setupTemplate(true, $articleId, 'summary');
00784
00785 SectionEditorAction::viewMetadata($submission, ROLE_ID_SECTION_EDITOR);
00786 }
00787
00788 function saveMetadata() {
00789 $articleId = Request::getUserVar('articleId');
00790 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
00791 parent::setupTemplate(true, $articleId, 'summary');
00792
00793 if (SectionEditorAction::saveMetadata($submission)) {
00794 Request::redirect(null, null, 'submission', $articleId);
00795 }
00796 }
00797
00801 function removeCoverPage($args) {
00802 $articleId = isset($args[0]) ? (int)$args[0] : 0;
00803 $formLocale = $args[1];
00804 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
00805
00806 import('file.PublicFileManager');
00807 $publicFileManager = &new PublicFileManager();
00808 $publicFileManager->removeJournalFile($journal->getJournalId(),$submission->getFileName($formLocale));
00809 $submission->setFileName('', $formLocale);
00810 $submission->setOriginalFileName('', $formLocale);
00811 $submission->setWidth('', $formLocale);
00812 $submission->setHeight('', $formLocale);
00813
00814 $articleDao = &DAORegistry::getDAO('ArticleDAO');
00815 $articleDao->updateArticle($submission);
00816
00817 Request::redirect(null, null, 'viewMetadata', $articleId);
00818 }
00819
00820
00821
00822
00823
00828 function previewReviewForm($args) {
00829 parent::validate();
00830 parent::setupTemplate(true);
00831
00832 $reviewId = isset($args[0]) ? (int) $args[0] : null;
00833 $reviewFormId = isset($args[1]) ? (int)$args[1] : null;
00834
00835 $journal =& Request::getJournal();
00836 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00837 $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, $journal->getJournalId());
00838 $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
00839 $reviewFormElements =& $reviewFormElementDao->getReviewFormElements($reviewFormId);
00840 $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO');
00841 $reviewAssignment =& $reviewAssignmentDao->getReviewAssignmentById($reviewId);
00842
00843 $templateMgr =& TemplateManager::getManager();
00844 $templateMgr->assign('pageTitle', 'manager.reviewForms.preview');
00845 $templateMgr->assign_by_ref('reviewForm', $reviewForm);
00846 $templateMgr->assign('reviewFormElements', $reviewFormElements);
00847 $templateMgr->assign('reviewId', $reviewId);
00848 $templateMgr->assign('articleId', $reviewAssignment->getArticleId());
00849
00850 $templateMgr->display('sectionEditor/previewReviewForm.tpl');
00851 }
00852
00857 function clearReviewForm($args) {
00858 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00859 $reviewId = isset($args[1]) ? (int) $args[1] : null;
00860 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00861
00862 SectionEditorAction::clearReviewForm($submission, $reviewId);
00863
00864 Request::redirect(null, null, 'submissionReview', $articleId);
00865 }
00866
00871 function selectReviewForm($args) {
00872 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00873 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00874
00875 $reviewId = isset($args[1]) ? (int) $args[1] : null;
00876 $reviewFormId = isset($args[2]) ? (int) $args[2] : null;
00877
00878 if ($reviewFormId != null) {
00879 SectionEditorAction::addReviewForm($submission, $reviewId, $reviewFormId);
00880 Request::redirect(null, null, 'submissionReview', $articleId);
00881 } else {
00882 $journal =& Request::getJournal();
00883 $rangeInfo =& Handler::getRangeInfo('reviewForms');
00884 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00885 $reviewForms =& $reviewFormDao->getJournalActiveReviewForms($journal->getJournalId(), $rangeInfo);
00886 $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO');
00887 $reviewAssignment =& $reviewAssignmentDao->getReviewAssignmentById($reviewId);
00888
00889 parent::setupTemplate(true, $articleId, 'review');
00890 $templateMgr =& TemplateManager::getManager();
00891
00892 $templateMgr->assign('articleId', $articleId);
00893 $templateMgr->assign('reviewId', $reviewId);
00894 $templateMgr->assign('assignedReviewFormId', $reviewAssignment->getReviewFormId());
00895 $templateMgr->assign_by_ref('reviewForms', $reviewForms);
00896
00897 $templateMgr->display('sectionEditor/selectReviewForm.tpl');
00898 }
00899 }
00900
00905 function viewReviewFormResponse($args) {
00906 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00907 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00908
00909 $reviewId = isset($args[1]) ? (int) $args[1] : null;
00910
00911 SectionEditorAction::viewReviewFormResponse($submission, $reviewId);
00912 }
00913
00914
00915
00916
00917
00918 function editorReview() {
00919 $articleId = Request::getUserVar('articleId');
00920 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
00921
00922 $redirectTarget = 'submissionReview';
00923
00924
00925 $submit = Request::getUserVar('submit');
00926 if ($submit != null) {
00927 SectionEditorAction::uploadEditorVersion($submission);
00928 }
00929
00930 if (Request::getUserVar('setCopyeditFile')) {
00931
00932 $file = explode(',', Request::getUserVar('editorDecisionFile'));
00933 if (isset($file[0]) && isset($file[1])) {
00934 $round = $submission->getCurrentRound();
00935 if ($submission->getMostRecentEditorDecisionComment()) {
00936
00937
00938 SectionEditorAction::setCopyeditFile($submission, $file[0], $file[1]);
00939 }
00940 $redirectTarget = 'submissionEditing';
00941 }
00942
00943 } else if (Request::getUserVar('resubmit')) {
00944
00945 $file = explode(',', Request::getUserVar('editorDecisionFile'));
00946 if (isset($file[0]) && isset($file[1])) {
00947 SectionEditorAction::resubmitFile($submission, $file[0], $file[1]);
00948 }
00949 }
00950
00951 Request::redirect(null, null, $redirectTarget, $articleId);
00952 }
00953
00954
00955
00956
00957
00958 function selectCopyeditor($args) {
00959 $articleId = isset($args[0]) ? (int) $args[0] : 0;
00960 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
00961
00962 $roleDao = &DAORegistry::getDAO('RoleDAO');
00963
00964 if (isset($args[1]) && $args[1] != null && $roleDao->roleExists($journal->getJournalId(), $args[1], ROLE_ID_COPYEDITOR)) {
00965 SectionEditorAction::selectCopyeditor($submission, $args[1]);
00966 Request::redirect(null, null, 'submissionEditing', $articleId);
00967 } else {
00968 parent::setupTemplate(true, $articleId, 'editing');
00969
00970 $sectionEditorSubmissionDao = &DAORegistry::getDAO('SectionEditorSubmissionDAO');
00971
00972 $searchType = null;
00973 $searchMatch = null;
00974 $search = $searchQuery = Request::getUserVar('search');
00975 $searchInitial = Request::getUserVar('searchInitial');
00976 if (isset($search)) {
00977 $searchType = Request::getUserVar('searchField');
00978 $searchMatch = Request::getUserVar('searchMatch');
00979
00980 } else if (isset($searchInitial)) {
00981 $searchInitial = String::strtoupper($searchInitial);
00982 $searchType = USER_FIELD_INITIAL;
00983 $search = $searchInitial;
00984 }
00985
00986 $copyeditors = $roleDao->getUsersByRoleId(ROLE_ID_COPYEDITOR, $journal->getJournalId(), $searchType, $search, $searchMatch);
00987 $copyeditorStatistics = $sectionEditorSubmissionDao->getCopyeditorStatistics($journal->getJournalId());
00988
00989 $templateMgr = &TemplateManager::getManager();
00990
00991 $templateMgr->assign('searchField', $searchType);
00992 $templateMgr->assign('searchMatch', $searchMatch);
00993 $templateMgr->assign('search', $searchQuery);
00994 $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial'));
00995
00996 $templateMgr->assign_by_ref('users', $copyeditors);
00997 $templateMgr->assign('currentUser', $submission->getCopyeditorId());
00998 $templateMgr->assign_by_ref('statistics', $copyeditorStatistics);
00999 $templateMgr->assign('pageSubTitle', 'editor.article.selectCopyeditor');
01000 $templateMgr->assign('pageTitle', 'user.role.copyeditors');
01001 $templateMgr->assign('actionHandler', 'selectCopyeditor');
01002 $templateMgr->assign('fieldOptions', Array(
01003 USER_FIELD_FIRSTNAME => 'user.firstName',
01004 USER_FIELD_LASTNAME => 'user.lastName',
01005 USER_FIELD_USERNAME => 'user.username',
01006 USER_FIELD_EMAIL => 'user.email'
01007 ));
01008 $templateMgr->assign('articleId', $args[0]);
01009
01010 $templateMgr->assign('helpTopicId', 'journal.roles.copyeditor');
01011 $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList')));
01012 $templateMgr->display('sectionEditor/selectUser.tpl');
01013 }
01014 }
01015
01016 function notifyCopyeditor($args = array()) {
01017 $articleId = Request::getUserVar('articleId');
01018 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01019
01020 $send = Request::getUserVar('send')?true:false;
01021 parent::setupTemplate(true, $articleId, 'editing');
01022
01023 if (SectionEditorAction::notifyCopyeditor($submission, $send)) {
01024 Request::redirect(null, null, 'submissionEditing', $articleId);
01025 }
01026 }
01027
01028
01029 function initiateCopyedit() {
01030 $articleId = Request::getUserVar('articleId');
01031 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01032
01033 SectionEditorAction::initiateCopyedit($submission);
01034 Request::redirect(null, null, 'submissionEditing', $articleId);
01035 }
01036
01037 function thankCopyeditor($args = array()) {
01038 $articleId = Request::getUserVar('articleId');
01039 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01040
01041 $send = Request::getUserVar('send')?true:false;
01042 parent::setupTemplate(true, $articleId, 'editing');
01043
01044 if (SectionEditorAction::thankCopyeditor($submission, $send)) {
01045 Request::redirect(null, null, 'submissionEditing', $articleId);
01046 }
01047 }
01048
01049 function notifyAuthorCopyedit($args) {
01050 $articleId = Request::getUserVar('articleId');
01051 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01052
01053 $send = Request::getUserVar('send')?true:false;
01054 parent::setupTemplate(true, $articleId, 'editing');
01055
01056 if (SectionEditorAction::notifyAuthorCopyedit($submission, $send)) {
01057 Request::redirect(null, null, 'submissionEditing', $articleId);
01058 }
01059 }
01060
01061 function thankAuthorCopyedit($args) {
01062 $articleId = Request::getUserVar('articleId');
01063 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01064
01065 $send = Request::getUserVar('send')?true:false;
01066 parent::setupTemplate(true, $articleId, 'editing');
01067
01068 if (SectionEditorAction::thankAuthorCopyedit($submission, $send)) {
01069 Request::redirect(null, null, 'submissionEditing', $articleId);
01070 }
01071 }
01072
01073 function notifyFinalCopyedit($args = array()) {
01074 $articleId = Request::getUserVar('articleId');
01075 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01076
01077 $send = Request::getUserVar('send')?true:false;
01078 parent::setupTemplate(true, $articleId, 'editing');
01079
01080 if (SectionEditorAction::notifyFinalCopyedit($submission, $send)) {
01081 Request::redirect(null, null, 'submissionEditing', $articleId);
01082 }
01083 }
01084
01085 function completeCopyedit($args) {
01086 $articleId = (int) Request::getUserVar('articleId');
01087
01088 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01089
01090 SectionEditorAction::completeCopyedit($submission);
01091 Request::redirect(null, null, 'submissionEditing', $articleId);
01092 }
01093
01094 function completeFinalCopyedit($args) {
01095 $articleId = (int) Request::getUserVar('articleId');
01096
01097 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01098
01099 SectionEditorAction::completeFinalCopyedit($submission);
01100 Request::redirect(null, null, 'submissionEditing', $articleId);
01101 }
01102
01103 function thankFinalCopyedit($args) {
01104 $articleId = Request::getUserVar('articleId');
01105 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01106
01107 $send = Request::getUserVar('send')?true:false;
01108 parent::setupTemplate(true, $articleId, 'editing');
01109
01110 if (SectionEditorAction::thankFinalCopyedit($submission, $send)) {
01111 Request::redirect(null, null, 'submissionEditing', $articleId);
01112 }
01113 }
01114
01115 function uploadReviewVersion() {
01116 $articleId = Request::getUserVar('articleId');
01117 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
01118
01119 SectionEditorAction::uploadReviewVersion($submission);
01120
01121 Request::redirect(null, null, 'submissionReview', $articleId);
01122 }
01123
01124 function uploadCopyeditVersion() {
01125 $articleId = Request::getUserVar('articleId');
01126 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01127
01128 $copyeditStage = Request::getUserVar('copyeditStage');
01129 SectionEditorAction::uploadCopyeditVersion($submission, $copyeditStage);
01130
01131 Request::redirect(null, null, 'submissionEditing', $articleId);
01132 }
01133
01138 function addSuppFile($args) {
01139 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01140 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01141 parent::setupTemplate(true, $articleId, 'summary');
01142
01143 import('submission.form.SuppFileForm');
01144
01145 $submitForm = &new SuppFileForm($submission);
01146
01147 if ($submitForm->isLocaleResubmit()) {
01148 $submitForm->readInputData();
01149 } else {
01150 $submitForm->initData();
01151 }
01152 $submitForm->display();
01153 }
01154
01159 function editSuppFile($args) {
01160 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01161 $suppFileId = isset($args[1]) ? (int) $args[1] : 0;
01162 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01163 parent::setupTemplate(true, $articleId, 'summary');
01164
01165 import('submission.form.SuppFileForm');
01166
01167 $submitForm = &new SuppFileForm($submission, $suppFileId);
01168
01169 if ($submitForm->isLocaleResubmit()) {
01170 $submitForm->readInputData();
01171 } else {
01172 $submitForm->initData();
01173 }
01174 $submitForm->display();
01175 }
01176
01181 function setSuppFileVisibility($args) {
01182 $articleId = Request::getUserVar('articleId');
01183 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01184
01185 $suppFileId = Request::getUserVar('fileId');
01186 $suppFileDao = &DAORegistry::getDAO('SuppFileDAO');
01187 $suppFile = $suppFileDao->getSuppFile($suppFileId, $articleId);
01188
01189 if (isset($suppFile) && $suppFile != null) {
01190 $suppFile->setShowReviewers(Request::getUserVar('show')==1?1:0);
01191 $suppFileDao->updateSuppFile($suppFile);
01192 }
01193 Request::redirect(null, null, 'submissionReview', $articleId);
01194 }
01195
01200 function saveSuppFile($args) {
01201 $articleId = Request::getUserVar('articleId');
01202 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01203
01204 $suppFileId = isset($args[0]) ? (int) $args[0] : 0;
01205
01206 import('submission.form.SuppFileForm');
01207
01208 $submitForm = &new SuppFileForm($submission, $suppFileId);
01209 $submitForm->readInputData();
01210
01211 if ($submitForm->validate()) {
01212 $submitForm->execute();
01213 Request::redirect(null, null, SubmissionEditHandler::getFrom(), $articleId);
01214 } else {
01215 parent::setupTemplate(true, $articleId, 'summary');
01216 $submitForm->display();
01217 }
01218 }
01219
01224 function deleteArticleFile($args) {
01225 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01226 $fileId = isset($args[1]) ? (int) $args[1] : 0;
01227 $revisionId = isset($args[2]) ? (int) $args[2] : 0;
01228
01229 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_REVIEW);
01230 SectionEditorAction::deleteArticleFile($submission, $fileId, $revisionId);
01231
01232 Request::redirect(null, null, 'submissionReview', $articleId);
01233 }
01234
01239 function deleteSuppFile($args) {
01240 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01241 $suppFileId = isset($args[1]) ? (int) $args[1] : 0;
01242 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01243
01244 SectionEditorAction::deleteSuppFile($submission, $suppFileId);
01245
01246 Request::redirect(null, null, SubmissionEditHandler::getFrom(), $articleId);
01247 }
01248
01249 function archiveSubmission($args) {
01250 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01251 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01252
01253 SectionEditorAction::archiveSubmission($submission);
01254
01255 Request::redirect(null, null, 'submission', $articleId);
01256 }
01257
01258 function restoreToQueue($args) {
01259 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01260 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01261
01262 SectionEditorAction::restoreToQueue($submission);
01263
01264 Request::redirect(null, null, 'submissionEditing', $articleId);
01265 }
01266
01267 function unsuitableSubmission($args) {
01268 $articleId = Request::getUserVar('articleId');
01269 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01270
01271 $send = Request::getUserVar('send')?true:false;
01272 parent::setupTemplate(true, $articleId, 'summary');
01273
01274 if (SectionEditorAction::unsuitableSubmission($submission, $send)) {
01275 Request::redirect(null, null, 'submission', $articleId);
01276 }
01277 }
01278
01283 function updateSection($args) {
01284 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01285 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01286 SectionEditorAction::updateSection($submission, Request::getUserVar('section'));
01287 Request::redirect(null, null, 'submission', $articleId);
01288 }
01289
01294 function updateCommentsStatus($args) {
01295 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01296 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01297 SectionEditorAction::updateCommentsStatus($submission, Request::getUserVar('commentsStatus'));
01298 Request::redirect(null, null, 'submission', $articleId);
01299 }
01300
01301
01302
01303
01304
01308 function uploadLayoutFile() {
01309 $layoutFileType = Request::getUserVar('layoutFileType');
01310 if ($layoutFileType == 'submission') {
01311 SubmissionEditHandler::uploadLayoutVersion();
01312
01313 } else if ($layoutFileType == 'galley') {
01314 SubmissionEditHandler::uploadGalley('layoutFile');
01315
01316 } else if ($layoutFileType == 'supp') {
01317 SubmissionEditHandler::uploadSuppFile('layoutFile');
01318
01319 } else {
01320 Request::redirect(null, null, SubmissionEditHandler::getFrom(), Request::getUserVar('articleId'));
01321 }
01322 }
01323
01327 function uploadLayoutVersion() {
01328 $articleId = Request::getUserVar('articleId');
01329 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01330
01331 SectionEditorAction::uploadLayoutVersion($submission);
01332
01333 Request::redirect(null, null, 'submissionEditing', $articleId);
01334 }
01335
01340 function deleteArticleImage($args) {
01341 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01342 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
01343 $fileId = isset($args[2]) ? (int) $args[2] : 0;
01344 $revisionId = isset($args[3]) ? (int) $args[3] : 0;
01345
01346 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01347 SectionEditorAction::deleteArticleImage($submission, $fileId, $revisionId);
01348
01349 Request::redirect(null, null, 'editGalley', array($articleId, $galleyId));
01350 }
01351
01356 function assignLayoutEditor($args) {
01357 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01358 $editorId = isset($args[1]) ? (int) $args[1] : 0;
01359 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01360
01361 $roleDao = &DAORegistry::getDAO('RoleDAO');
01362
01363 if ($editorId && $roleDao->roleExists($journal->getJournalId(), $editorId, ROLE_ID_LAYOUT_EDITOR)) {
01364 SectionEditorAction::assignLayoutEditor($submission, $editorId);
01365 Request::redirect(null, null, 'submissionEditing', $articleId);
01366 } else {
01367 $searchType = null;
01368 $searchMatch = null;
01369 $search = $searchQuery = Request::getUserVar('search');
01370 $searchInitial = Request::getUserVar('searchInitial');
01371 if (isset($search)) {
01372 $searchType = Request::getUserVar('searchField');
01373 $searchMatch = Request::getUserVar('searchMatch');
01374
01375 } else if (isset($searchInitial)) {
01376 $searchInitial = String::strtoupper($searchInitial);
01377 $searchType = USER_FIELD_INITIAL;
01378 $search = $searchInitial;
01379 }
01380
01381 $layoutEditors = $roleDao->getUsersByRoleId(ROLE_ID_LAYOUT_EDITOR, $journal->getJournalId(), $searchType, $search, $searchMatch);
01382
01383 $sectionEditorSubmissionDao = &DAORegistry::getDAO('SectionEditorSubmissionDAO');
01384 $layoutEditorStatistics = $sectionEditorSubmissionDao->getLayoutEditorStatistics($journal->getJournalId());
01385
01386 parent::setupTemplate(true, $articleId, 'editing');
01387
01388 $templateMgr = &TemplateManager::getManager();
01389
01390 $templateMgr->assign('searchField', $searchType);
01391 $templateMgr->assign('searchMatch', $searchMatch);
01392 $templateMgr->assign('search', $searchQuery);
01393 $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial'));
01394 $templateMgr->assign('alphaList', explode(' ', Locale::translate('common.alphaList')));
01395
01396 $templateMgr->assign('pageTitle', 'user.role.layoutEditors');
01397 $templateMgr->assign('pageSubTitle', 'editor.article.selectLayoutEditor');
01398 $templateMgr->assign('actionHandler', 'assignLayoutEditor');
01399 $templateMgr->assign('articleId', $articleId);
01400 $templateMgr->assign_by_ref('users', $layoutEditors);
01401
01402 $layoutAssignment = &$submission->getLayoutAssignment();
01403 if ($layoutAssignment) {
01404 $templateMgr->assign('currentUser', $layoutAssignment->getEditorId());
01405 }
01406
01407 $templateMgr->assign('fieldOptions', Array(
01408 USER_FIELD_FIRSTNAME => 'user.firstName',
01409 USER_FIELD_LASTNAME => 'user.lastName',
01410 USER_FIELD_USERNAME => 'user.username',
01411 USER_FIELD_EMAIL => 'user.email'
01412 ));
01413 $templateMgr->assign('statistics', $layoutEditorStatistics);
01414 $templateMgr->assign('helpTopicId', 'journal.roles.layoutEditor');
01415 $templateMgr->display('sectionEditor/selectUser.tpl');
01416 }
01417 }
01418
01422 function notifyLayoutEditor($args) {
01423 $articleId = Request::getUserVar('articleId');
01424 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01425
01426 $send = Request::getUserVar('send')?true:false;
01427 parent::setupTemplate(true, $articleId, 'editing');
01428
01429 if (SectionEditorAction::notifyLayoutEditor($submission, $send)) {
01430 Request::redirect(null, null, 'submissionEditing', $articleId);
01431 }
01432 }
01433
01437 function thankLayoutEditor($args) {
01438 $articleId = Request::getUserVar('articleId');
01439 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01440
01441 $send = Request::getUserVar('send')?true:false;
01442 parent::setupTemplate(true, $articleId, 'editing');
01443
01444 if (SectionEditorAction::thankLayoutEditor($submission, $send)) {
01445 Request::redirect(null, null, 'submissionEditing', $articleId);
01446 }
01447 }
01448
01452 function uploadGalley($fileName = null) {
01453 $articleId = Request::getUserVar('articleId');
01454 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01455
01456 import('submission.form.ArticleGalleyForm');
01457
01458 $galleyForm = &new ArticleGalleyForm($articleId);
01459 $galleyId = $galleyForm->execute($fileName);
01460
01461 Request::redirect(null, null, 'editGalley', array($articleId, $galleyId));
01462 }
01463
01468 function editGalley($args) {
01469 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01470 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
01471 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01472
01473 parent::setupTemplate(true, $articleId, 'editing');
01474
01475 import('submission.form.ArticleGalleyForm');
01476
01477 $submitForm = &new ArticleGalleyForm($articleId, $galleyId);
01478
01479 if ($submitForm->isLocaleResubmit()) {
01480 $submitForm->readInputData();
01481 } else {
01482 $submitForm->initData();
01483 }
01484 $submitForm->display();
01485 }
01486
01491 function saveGalley($args) {
01492 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01493 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
01494 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01495
01496 import('submission.form.ArticleGalleyForm');
01497
01498 $submitForm = &new ArticleGalleyForm($articleId, $galleyId);
01499
01500 $submitForm->readInputData();
01501 if ($submitForm->validate()) {
01502 $submitForm->execute();
01503
01504 if (Request::getUserVar('uploadImage')) {
01505 $submitForm->uploadImage();
01506 Request::redirect(null, null, 'editGalley', array($articleId, $galleyId));
01507 } else if(($deleteImage = Request::getUserVar('deleteImage')) && count($deleteImage) == 1) {
01508 list($imageId) = array_keys($deleteImage);
01509 $submitForm->deleteImage($imageId);
01510 Request::redirect(null, null, 'editGalley', array($articleId, $galleyId));
01511 }
01512 Request::redirect(null, null, 'submissionEditing', $articleId);
01513 } else {
01514 parent::setupTemplate(true, $articleId, 'editing');
01515 $submitForm->display();
01516 }
01517 }
01518
01522 function orderGalley() {
01523 $articleId = Request::getUserVar('articleId');
01524 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01525
01526 SectionEditorAction::orderGalley($submission, Request::getUserVar('galleyId'), Request::getUserVar('d'));
01527
01528 Request::redirect(null, null, 'submissionEditing', $articleId);
01529 }
01530
01535 function deleteGalley($args) {
01536 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01537 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
01538 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01539
01540 SectionEditorAction::deleteGalley($submission, $galleyId);
01541
01542 Request::redirect(null, null, 'submissionEditing', $articleId);
01543 }
01544
01549 function proofGalley($args) {
01550 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01551 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
01552 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01553
01554 $templateMgr = &TemplateManager::getManager();
01555 $templateMgr->assign('articleId', $articleId);
01556 $templateMgr->assign('galleyId', $galleyId);
01557 $templateMgr->display('submission/layout/proofGalley.tpl');
01558 }
01559
01564 function proofGalleyTop($args) {
01565 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01566 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
01567 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01568
01569 $templateMgr = &TemplateManager::getManager();
01570 $templateMgr->assign('articleId', $articleId);
01571 $templateMgr->assign('galleyId', $galleyId);
01572 $templateMgr->assign('backHandler', 'submissionEditing');
01573 $templateMgr->display('submission/layout/proofGalleyTop.tpl');
01574 }
01575
01580 function proofGalleyFile($args) {
01581 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01582 $galleyId = isset($args[1]) ? (int) $args[1] : 0;
01583 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01584
01585 $galleyDao = &DAORegistry::getDAO('ArticleGalleyDAO');
01586 $galley = &$galleyDao->getGalley($galleyId, $articleId);
01587
01588 import('file.ArticleFileManager');
01589
01590 if (isset($galley)) {
01591 if ($galley->isHTMLGalley()) {
01592 $templateMgr = &TemplateManager::getManager();
01593 $templateMgr->assign_by_ref('galley', $galley);
01594 if ($galley->isHTMLGalley() && $styleFile =& $galley->getStyleFile()) {
01595 $templateMgr->addStyleSheet(Request::url(null, 'article', 'viewFile', array(
01596 $articleId, $galleyId, $styleFile->getFileId()
01597 )));
01598 }
01599 $templateMgr->display('submission/layout/proofGalleyHTML.tpl');
01600
01601 } else {
01602
01603 SubmissionEditHandler::viewFile(array($articleId, $galley->getFileId()));
01604 }
01605 }
01606 }
01607
01611 function uploadSuppFile($fileName = null) {
01612 $articleId = Request::getUserVar('articleId');
01613 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01614
01615 import('submission.form.SuppFileForm');
01616
01617 $suppFileForm = &new SuppFileForm($submission);
01618 $suppFileForm->setData('title', Locale::translate('common.untitled'));
01619 $suppFileId = $suppFileForm->execute($fileName);
01620
01621 Request::redirect(null, null, 'editSuppFile', array($articleId, $suppFileId));
01622 }
01623
01627 function orderSuppFile() {
01628 $articleId = Request::getUserVar('articleId');
01629 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01630
01631 SectionEditorAction::orderSuppFile($submission, Request::getUserVar('suppFileId'), Request::getUserVar('d'));
01632
01633 Request::redirect(null, null, 'submissionEditing', $articleId);
01634 }
01635
01636
01637
01638
01639
01640
01644 function submissionEventLog($args) {
01645 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01646 $logId = isset($args[1]) ? (int) $args[1] : 0;
01647 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01648 parent::setupTemplate(true, $articleId, 'history');
01649
01650 $templateMgr = &TemplateManager::getManager();
01651
01652 $templateMgr->assign('isEditor', Validation::isEditor());
01653 $templateMgr->assign_by_ref('submission', $submission);
01654
01655 if ($logId) {
01656 $logDao = &DAORegistry::getDAO('ArticleEventLogDAO');
01657 $logEntry = &$logDao->getLogEntry($logId, $articleId);
01658 }
01659
01660 if (isset($logEntry)) {
01661 $templateMgr->assign('logEntry', $logEntry);
01662 $templateMgr->display('sectionEditor/submissionEventLogEntry.tpl');
01663
01664 } else {
01665 $rangeInfo = &Handler::getRangeInfo('eventLogEntries');
01666
01667 import('article.log.ArticleLog');
01668 $eventLogEntries = &ArticleLog::getEventLogEntries($articleId, $rangeInfo);
01669 $templateMgr->assign('eventLogEntries', $eventLogEntries);
01670 $templateMgr->display('sectionEditor/submissionEventLog.tpl');
01671 }
01672 }
01673
01677 function submissionEventLogType($args) {
01678 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01679 $assocType = isset($args[1]) ? (int) $args[1] : null;
01680 $assocId = isset($args[2]) ? (int) $args[2] : null;
01681 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01682 parent::setupTemplate(true, $articleId, 'history');
01683
01684 $rangeInfo = &Handler::getRangeInfo('eventLogEntries');
01685 $logDao = &DAORegistry::getDAO('ArticleEventLogDAO');
01686 $eventLogEntries = &$logDao->getArticleLogEntriesByAssoc($articleId, $assocType, $assocId, $rangeInfo);
01687
01688 $templateMgr = &TemplateManager::getManager();
01689
01690 $templateMgr->assign('showBackLink', true);
01691 $templateMgr->assign('isEditor', Validation::isEditor());
01692 $templateMgr->assign_by_ref('submission', $submission);
01693 $templateMgr->assign_by_ref('eventLogEntries', $eventLogEntries);
01694 $templateMgr->display('sectionEditor/submissionEventLog.tpl');
01695 }
01696
01700 function clearSubmissionEventLog($args) {
01701 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01702 $logId = isset($args[1]) ? (int) $args[1] : 0;
01703 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01704
01705 $logDao = &DAORegistry::getDAO('ArticleEventLogDAO');
01706
01707 if ($logId) {
01708 $logDao->deleteLogEntry($logId, $articleId);
01709
01710 } else {
01711 $logDao->deleteArticleLogEntries($articleId);
01712 }
01713
01714 Request::redirect(null, null, 'submissionEventLog', $articleId);
01715 }
01716
01720 function submissionEmailLog($args) {
01721 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01722 $logId = isset($args[1]) ? (int) $args[1] : 0;
01723 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01724 parent::setupTemplate(true, $articleId, 'history');
01725
01726 $templateMgr = &TemplateManager::getManager();
01727
01728 $templateMgr->assign('isEditor', Validation::isEditor());
01729 $templateMgr->assign_by_ref('submission', $submission);
01730
01731 $articleFileDao =& DAORegistry::getDAO('ArticleFileDAO');
01732 import('file.ArticleFileManager');
01733 $templateMgr->assign('attachments', $articleFileDao->getArticleFilesByAssocId($logId, ARTICLE_FILE_ATTACHMENT));
01734
01735 if ($logId) {
01736 $logDao = &DAORegistry::getDAO('ArticleEmailLogDAO');
01737 $logEntry = &$logDao->getLogEntry($logId, $articleId);
01738 }
01739
01740 if (isset($logEntry)) {
01741 $templateMgr->assign_by_ref('logEntry', $logEntry);
01742 $templateMgr->display('sectionEditor/submissionEmailLogEntry.tpl');
01743
01744 } else {
01745 $rangeInfo = &Handler::getRangeInfo('emailLogEntries');
01746
01747 import('article.log.ArticleLog');
01748 $emailLogEntries = &ArticleLog::getEmailLogEntries($articleId, $rangeInfo);
01749 $templateMgr->assign_by_ref('emailLogEntries', $emailLogEntries);
01750 $templateMgr->display('sectionEditor/submissionEmailLog.tpl');
01751 }
01752 }
01753
01757 function submissionEmailLogType($args) {
01758 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01759 $assocType = isset($args[1]) ? (int) $args[1] : null;
01760 $assocId = isset($args[2]) ? (int) $args[2] : null;
01761 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01762 parent::setupTemplate(true, $articleId, 'history');
01763
01764 $rangeInfo = &Handler::getRangeInfo('eventLogEntries');
01765 $logDao = &DAORegistry::getDAO('ArticleEmailLogDAO');
01766 $emailLogEntries = &$logDao->getArticleLogEntriesByAssoc($articleId, $assocType, $assocId, $rangeInfo);
01767
01768 $templateMgr = &TemplateManager::getManager();
01769
01770 $templateMgr->assign('showBackLink', true);
01771 $templateMgr->assign('isEditor', Validation::isEditor());
01772 $templateMgr->assign_by_ref('submission', $submission);
01773 $templateMgr->assign_by_ref('emailLogEntries', $emailLogEntries);
01774 $templateMgr->display('sectionEditor/submissionEmailLog.tpl');
01775 }
01776
01780 function clearSubmissionEmailLog($args) {
01781 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01782 $logId = isset($args[1]) ? (int) $args[1] : 0;
01783 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01784
01785 $logDao = &DAORegistry::getDAO('ArticleEmailLogDAO');
01786
01787 if ($logId) {
01788 $logDao->deleteLogEntry($logId, $articleId);
01789
01790 } else {
01791 $logDao->deleteArticleLogEntries($articleId);
01792 }
01793
01794 Request::redirect(null, null, 'submissionEmailLog', $articleId);
01795 }
01796
01797
01798
01803 function addSubmissionNote() {
01804 $articleId = Request::getUserVar('articleId');
01805 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01806
01807 SectionEditorAction::addSubmissionNote($articleId);
01808 Request::redirect(null, null, 'submissionNotes', $articleId);
01809 }
01810
01815 function removeSubmissionNote() {
01816 $articleId = Request::getUserVar('articleId');
01817 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01818
01819 SectionEditorAction::removeSubmissionNote($articleId);
01820 Request::redirect(null, null, 'submissionNotes', $articleId);
01821 }
01822
01827 function updateSubmissionNote() {
01828 $articleId = Request::getUserVar('articleId');
01829 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01830
01831 SectionEditorAction::updateSubmissionNote($articleId);
01832 Request::redirect(null, null, 'submissionNotes', $articleId);
01833 }
01834
01839 function clearAllSubmissionNotes() {
01840 $articleId = Request::getUserVar('articleId');
01841 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01842
01843 SectionEditorAction::clearAllSubmissionNotes($articleId);
01844 Request::redirect(null, null, 'submissionNotes', $articleId);
01845 }
01846
01850 function submissionNotes($args) {
01851 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01852 $noteViewType = isset($args[1]) ? $args[1] : '';
01853 $noteId = isset($args[2]) ? (int) $args[2] : 0;
01854
01855 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01856 parent::setupTemplate(true, $articleId, 'history');
01857
01858 $rangeInfo = &Handler::getRangeInfo('submissionNotes');
01859 $articleNoteDao = &DAORegistry::getDAO('ArticleNoteDAO');
01860
01861
01862 if ($noteViewType == 'edit') {
01863 $articleNote = $articleNoteDao->getArticleNoteById($noteId);
01864 }
01865
01866 $templateMgr = &TemplateManager::getManager();
01867
01868 $templateMgr->assign('articleId', $articleId);
01869 $templateMgr->assign_by_ref('submission', $submission);
01870 $templateMgr->assign('noteViewType', $noteViewType);
01871 if (isset($articleNote)) {
01872 $templateMgr->assign_by_ref('articleNote', $articleNote);
01873 }
01874
01875 if ($noteViewType == 'edit' || $noteViewType == 'add') {
01876 $templateMgr->assign('showBackLink', true);
01877 } else {
01878 $submissionNotes =& $articleNoteDao->getArticleNotes($articleId, $rangeInfo);
01879 $templateMgr->assign_by_ref('submissionNotes', $submissionNotes);
01880 }
01881
01882 $templateMgr->display('sectionEditor/submissionNotes.tpl');
01883 }
01884
01885
01886
01887
01888
01889
01894 function downloadFile($args) {
01895 $articleId = isset($args[0]) ? $args[0] : 0;
01896 $fileId = isset($args[1]) ? $args[1] : 0;
01897 $revision = isset($args[2]) ? $args[2] : null;
01898
01899 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01900 if (!SectionEditorAction::downloadFile($articleId, $fileId, $revision)) {
01901 Request::redirect(null, null, 'submission', $articleId);
01902 }
01903 }
01904
01909 function viewFile($args) {
01910 $articleId = isset($args[0]) ? $args[0] : 0;
01911 $fileId = isset($args[1]) ? $args[1] : 0;
01912 $revision = isset($args[2]) ? $args[2] : null;
01913
01914 list($journal, $submission) = SubmissionEditHandler::validate($articleId);
01915 if (!SectionEditorAction::viewFile($articleId, $fileId, $revision)) {
01916 Request::redirect(null, null, 'submission', $articleId);
01917 }
01918 }
01919
01920
01921
01922
01923
01924
01929 function selectProofreader($args) {
01930 $articleId = isset($args[0]) ? (int) $args[0] : 0;
01931 $userId = isset($args[1]) ? (int) $args[1] : 0;
01932
01933 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
01934
01935 $roleDao = &DAORegistry::getDAO('RoleDAO');
01936
01937 if ($userId && $articleId && $roleDao->roleExists($journal->getJournalId(), $userId, ROLE_ID_PROOFREADER)) {
01938 import('submission.proofreader.ProofreaderAction');
01939 ProofreaderAction::selectProofreader($userId, $submission);
01940 Request::redirect(null, null, 'submissionEditing', $articleId);
01941 } else {
01942 parent::setupTemplate(true, $articleId, 'editing');
01943
01944 $searchType = null;
01945 $searchMatch = null;
01946 $search = $searchQuery = Request::getUserVar('search');
01947 $searchInitial = Request::getUserVar('searchInitial');
01948 if (isset($search)) {
01949 $searchType = Request::getUserVar('searchField');
01950 $searchMatch = Request::getUserVar('searchMatch');
01951
01952 } else if (isset($searchInitial)) {
01953 $searchInitial = String::strtoupper($searchInitial);
01954 $searchType = USER_FIELD_INITIAL;
01955 $search = $searchInitial;
01956 }
01957
01958 $proofreaders = $roleDao->getUsersByRoleId(ROLE_ID_PROOFREADER, $journal->getJournalId(), $searchType, $search, $searchMatch);
01959
01960 $sectionEditorSubmissionDao = &DAORegistry::getDAO('SectionEditorSubmissionDAO');
01961 $proofreaderStatistics = $sectionEditorSubmissionDao->getProofreaderStatistics($journal->getJournalId());
01962
01963 $templateMgr = &TemplateManager::getManager();
01964
01965 $templateMgr->assign('searchField', $searchType);
01966 $templateMgr->assign('searchMatch', $searchMatch);
01967 $templateMgr->assign('search', $searchQuery);
01968 $templateMgr->assign('searchInitial', Request::getUserVar('searchInitial'));
01969
01970 $templateMgr->assign_by_ref('users', $proofreaders);
01971
01972 $proofAssignment = &$submission->getProofAssignment();
01973 if ($proofAssignment) {
01974 $templateMgr->assign('currentUser', $proofAssignment->getProofreaderId());
01975 }
01976 $templateMgr->assign('statistics', $proofreaderStatistics);
01977 $templateMgr->assign('fieldOptions', Array(
01978 USER_FIELD_FIRSTNAME => 'user.firstName',
01979 USER_FIELD_LASTNAME => 'user.lastName',
01980 USER_FIELD_USERNAME => 'user.username',
01981 USER_FIELD_EMAIL => 'user.email'
01982 ));
01983 $templateMgr->assign('articleId', $articleId);
01984 $templateMgr->assign('pageSubTitle', 'editor.article.selectProofreader');
01985 $templateMgr->assign('pageTitle', 'user.role.proofreaders');
01986 $templateMgr->assign('actionHandler', 'selectProofreader');
01987
01988 $templateMgr->assign('helpTopicId', 'journal.roles.proofreader');
01989 $templateMgr->display('sectionEditor/selectUser.tpl');
01990 }
01991 }
01992
01996 function notifyAuthorProofreader($args) {
01997 $articleId = Request::getUserVar('articleId');
01998 $send = Request::getUserVar('send')?1:0;
01999 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02000 parent::setupTemplate(true, $articleId, 'editing');
02001
02002 import('submission.proofreader.ProofreaderAction');
02003 if (ProofreaderAction::proofreadEmail($articleId, 'PROOFREAD_AUTHOR_REQUEST', $send?'':Request::url(null, null, 'notifyAuthorProofreader'))) {
02004 Request::redirect(null, null, 'submissionEditing', $articleId);
02005 }
02006 }
02007
02011 function thankAuthorProofreader($args) {
02012 $articleId = Request::getUserVar('articleId');
02013 $send = Request::getUserVar('send')?1:0;
02014 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02015 parent::setupTemplate(true, $articleId, 'editing');
02016
02017 import('submission.proofreader.ProofreaderAction');
02018 if (ProofreaderAction::proofreadEmail($articleId, 'PROOFREAD_AUTHOR_ACK', $send?'':Request::url(null, null, 'thankAuthorProofreader'))) {
02019 Request::redirect(null, null, 'submissionEditing', $articleId);
02020 }
02021 }
02022
02026 function editorInitiateProofreader() {
02027 $articleId = Request::getUserVar('articleId');
02028 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02029
02030 $proofAssignmentDao = &DAORegistry::getDAO('ProofAssignmentDAO');
02031 $proofAssignment = &$proofAssignmentDao->getProofAssignmentByArticleId($articleId);
02032 $proofAssignment->setDateProofreaderNotified(Core::getCurrentDate());
02033 $proofAssignmentDao->updateProofAssignment($proofAssignment);
02034
02035 Request::redirect(null, null, 'submissionEditing', $articleId);
02036 }
02037
02041 function editorCompleteProofreader() {
02042 $articleId = Request::getUserVar('articleId');
02043 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02044
02045 $proofAssignmentDao = &DAORegistry::getDAO('ProofAssignmentDAO');
02046 $proofAssignment = &$proofAssignmentDao->getProofAssignmentByArticleId($articleId);
02047 $proofAssignment->setDateProofreaderCompleted(Core::getCurrentDate());
02048 $proofAssignmentDao->updateProofAssignment($proofAssignment);
02049
02050 Request::redirect(null, null, 'submissionEditing', $articleId);
02051 }
02052
02056 function notifyProofreader($args) {
02057 $articleId = Request::getUserVar('articleId');
02058 $send = Request::getUserVar('send');
02059 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02060 parent::setupTemplate(true, $articleId, 'editing');
02061
02062 import('submission.proofreader.ProofreaderAction');
02063 if (ProofreaderAction::proofreadEmail($articleId, 'PROOFREAD_REQUEST', $send?'':Request::url(null, null, 'notifyProofreader'))) {
02064 Request::redirect(null, null, 'submissionEditing', $articleId);
02065 }
02066 }
02067
02071 function thankProofreader($args) {
02072 $articleId = Request::getUserVar('articleId');
02073 $send = Request::getUserVar('send')?1:0;
02074 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02075 parent::setupTemplate(true, $articleId, 'editing');
02076
02077 import('submission.proofreader.ProofreaderAction');
02078 if (ProofreaderAction::proofreadEmail($articleId, 'PROOFREAD_ACK', $send?'':Request::url(null, null, 'thankProofreader'))) {
02079 Request::redirect(null, null, 'submissionEditing', $articleId);
02080 }
02081 }
02082
02086 function editorInitiateLayoutEditor() {
02087 $articleId = Request::getUserVar('articleId');
02088 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02089
02090 $proofAssignmentDao = &DAORegistry::getDAO('ProofAssignmentDAO');
02091 $proofAssignment = &$proofAssignmentDao->getProofAssignmentByArticleId($articleId);
02092 $proofAssignment->setDateLayoutEditorNotified(Core::getCurrentDate());
02093 $proofAssignmentDao->updateProofAssignment($proofAssignment);
02094
02095 Request::redirect(null, null, 'submissionEditing', $articleId);
02096 }
02097
02101 function editorCompleteLayoutEditor() {
02102 $articleId = Request::getUserVar('articleId');
02103 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02104
02105 $proofAssignmentDao = &DAORegistry::getDAO('ProofAssignmentDAO');
02106 $proofAssignment = &$proofAssignmentDao->getProofAssignmentByArticleId($articleId);
02107 $proofAssignment->setDateLayoutEditorCompleted(Core::getCurrentDate());
02108 $proofAssignmentDao->updateProofAssignment($proofAssignment);
02109
02110 Request::redirect(null, null, 'submissionEditing', $articleId);
02111 }
02112
02116 function notifyLayoutEditorProofreader($args) {
02117 $articleId = Request::getUserVar('articleId');
02118 $send = Request::getUserVar('send')?1:0;
02119 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02120 parent::setupTemplate(true, $articleId, 'editing');
02121
02122 import('submission.proofreader.ProofreaderAction');
02123 if (ProofreaderAction::proofreadEmail($articleId, 'PROOFREAD_LAYOUT_REQUEST', $send?'':Request::url(null, null, 'notifyLayoutEditorProofreader'))) {
02124 Request::redirect(null, null, 'submissionEditing', $articleId);
02125 }
02126 }
02127
02131 function thankLayoutEditorProofreader($args) {
02132 $articleId = Request::getUserVar('articleId');
02133 $send = Request::getUserVar('send')?1:0;
02134 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02135 parent::setupTemplate(true, $articleId, 'editing');
02136
02137 import('submission.proofreader.ProofreaderAction');
02138 if (ProofreaderAction::proofreadEmail($articleId, 'PROOFREAD_LAYOUT_ACK', $send?'':Request::url(null, null, 'thankLayoutEditorProofreader'))) {
02139 Request::redirect(null, null, 'submissionEditing', $articleId);
02140 }
02141 }
02142
02146 function scheduleForPublication($args) {
02147 $articleId = (int) array_shift($args);
02148 $issueId = (int) Request::getUserVar('issueId');
02149 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02150 $sectionEditorSubmissionDao =& DAORegistry::getDAO('SectionEditorSubmissionDAO');
02151 $publishedArticleDao =& DAORegistry::getDAO('PublishedArticleDAO');
02152 $sectionDao =& DAORegistry::getDAO('SectionDAO');
02153 $publishedArticle =& $publishedArticleDao->getPublishedArticleByArticleId($articleId);
02154
02155 $issueDao =& DAORegistry::getDAO('IssueDAO');
02156 $issue =& $issueDao->getIssueById($issueId, $journal->getJournalId());
02157
02158 if ($issue) {
02159
02160 if ($publishedArticle) {
02161 $publishedArticle->setIssueId($issueId);
02162 $publishedArticleDao->updatePublishedArticle($publishedArticle);
02163 } else {
02164 $publishedArticle =& new PublishedArticle();
02165 $publishedArticle->setArticleId($submission->getArticleId());
02166 $publishedArticle->setIssueId($issueId);
02167 $publishedArticle->setDatePublished(Core::getCurrentDate());
02168 $publishedArticle->setSeq(REALLY_BIG_NUMBER);
02169 $publishedArticle->setViews(0);
02170 $publishedArticle->setAccessStatus(0);
02171
02172 $publishedArticleDao->insertPublishedArticle($publishedArticle);
02173
02174
02175 $publishedArticleDao->resequencePublishedArticles($submission->getSectionId(), $issueId);
02176
02177
02178
02179
02180 if ($sectionDao->customSectionOrderingExists($issueId)) {
02181 if ($sectionDao->getCustomSectionOrder($issueId, $submission->getSectionId()) === null) {
02182 $sectionDao->insertCustomSectionOrder($issueId, $submission->getSectionId(), REALLY_BIG_NUMBER);
02183 $sectionDao->resequenceCustomSectionOrders($issueId);
02184 }
02185 }
02186 }
02187 } else {
02188 if ($publishedArticle) {
02189
02190
02191 $publishedArticleDao->resequencePublishedArticles($submission->getSectionId(), $publishedArticle->getIssueId());
02192 $publishedArticleDao->deletePublishedArticleByArticleId($articleId);
02193 }
02194 }
02195 $submission->stampStatusModified();
02196
02197 if ($issue && $issue->getPublished()) {
02198 $submission->setStatus(STATUS_PUBLISHED);
02199 } else {
02200 $submission->setStatus(STATUS_QUEUED);
02201 }
02202
02203 $sectionEditorSubmissionDao->updateSectionEditorSubmission($submission);
02204
02205 Request::redirect(null, null, 'submissionEditing', array($articleId), null, 'scheduling');
02206 }
02207
02212 function waiveSubmissionFee($args) {
02213 $articleId = (int) array_shift($args);
02214 $markAsPaid = Request::getUserVar('markAsPaid');
02215
02216 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02217 import('payment.ojs.OJSPaymentManager');
02218 $paymentManager =& OJSPaymentManager::getManager();
02219 $user =& Request::getUser();
02220
02221 $queuedPayment =& $paymentManager->createQueuedPayment(
02222 $journal->getJournalId(),
02223 PAYMENT_TYPE_SUBMISSION,
02224 $markAsPaid ? $submission->getUserId() : $user->getUserId(),
02225 $articleId,
02226 $markAsPaid ? $journal->getSetting('submissionFee') : 0,
02227 $markAsPaid ? $journal->getSetting('currency') : ''
02228 );
02229
02230 $queuedPaymentId = $paymentManager->queuePayment($queuedPayment);
02231
02232
02233 $paymentManager->fulfillQueuedPayment($queuedPayment, $markAsPaid?'ManualPayment':'Waiver');
02234 Request::redirect(null, null, 'submission', array($articleId));
02235 }
02236
02237 function waiveFastTrackFee($args) {
02238 $articleId = (int) array_shift($args);
02239 $markAsPaid = Request::getUserVar('markAsPaid');
02240 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02241 import('payment.ojs.OJSPaymentManager');
02242 $paymentManager =& OJSPaymentManager::getManager();
02243 $user =& Request::getUser();
02244
02245 $queuedPayment =& $paymentManager->createQueuedPayment(
02246 $journal->getJournalId(),
02247 PAYMENT_TYPE_FASTTRACK,
02248 $markAsPaid ? $submission->getUserId() : $user->getUserId(),
02249 $articleId,
02250 $markAsPaid ? $journal->getSetting('fastTrackFee') : 0,
02251 $markAsPaid ? $journal->getSetting('currency') : ''
02252 );
02253
02254 $queuedPaymentId = $paymentManager->queuePayment($queuedPayment);
02255
02256
02257 $paymentManager->fulfillQueuedPayment($queuedPayment, $markAsPaid?'ManualPayment':'Waiver');
02258 Request::redirect(null, null, 'submission', array($articleId));
02259 }
02260
02261 function waivePublicationFee($args) {
02262 $articleId = (int) array_shift($args);
02263 $markAsPaid = Request::getUserVar('markAsPaid');
02264 $sendToScheduling = Request::getUserVar('sendToScheduling')?true:false;
02265
02266 list($journal, $submission) = SubmissionEditHandler::validate($articleId, SECTION_EDITOR_ACCESS_EDIT);
02267 import('payment.ojs.OJSPaymentManager');
02268 $paymentManager =& OJSPaymentManager::getManager();
02269 $user =& Request::getUser();
02270
02271 $queuedPayment =& $paymentManager->createQueuedPayment(
02272 $journal->getJournalId(),
02273 PAYMENT_TYPE_PUBLICATION,
02274 $markAsPaid ? $submission->getUserId() : $user->getUserId(),
02275 $articleId,
02276 $markAsPaid ? $journal->getSetting('publicationFee') : 0,
02277 $markAsPaid ? $journal->getSetting('currency') : ''
02278 );
02279
02280 $queuedPaymentId = $paymentManager->queuePayment($queuedPayment);
02281
02282
02283 $paymentManager->fulfillQueuedPayment($queuedPayment, $markAsPaid?'ManualPayment':'Waiver');
02284
02285 if ( $sendToScheduling ) {
02286 Request::redirect(null, null, 'submissionEditing', array($articleId), null, 'scheduling');
02287 } else {
02288 Request::redirect(null, null, 'submission', array($articleId));
02289 }
02290 }
02291
02292
02293
02294
02295
02303 function validate($articleId, $access = null) {
02304 parent::validate();
02305
02306 $isValid = true;
02307
02308 $sectionEditorSubmissionDao = &DAORegistry::getDAO('SectionEditorSubmissionDAO');
02309 $journal = &Request::getJournal();
02310 $user = &Request::getUser();
02311
02312 $sectionEditorSubmission = &$sectionEditorSubmissionDao->getSectionEditorSubmission($articleId);
02313
02314 if ($sectionEditorSubmission == null) {
02315 $isValid = false;
02316
02317 } else if ($sectionEditorSubmission->getJournalId() != $journal->getJournalId()) {
02318 $isValid = false;
02319
02320 } else if ($sectionEditorSubmission->getDateSubmitted() == null) {
02321 $isValid = false;
02322
02323 } else {
02324 $templateMgr =& TemplateManager::getManager();
02325
02326 if (Validation::isEditor()) {
02327
02328
02329 $templateMgr->assign('canReview', true);
02330 $templateMgr->assign('canEdit', true);
02331 } else {
02332
02333 $editAssignments =& $sectionEditorSubmission->getEditAssignments();
02334 $wasFound = false;
02335 foreach ($editAssignments as $editAssignment) {
02336 if ($editAssignment->getEditorId() == $user->getUserId()) {
02337 $templateMgr->assign('canReview', $editAssignment->getCanReview());
02338 $templateMgr->assign('canEdit', $editAssignment->getCanEdit());
02339 switch ($access) {
02340 case SECTION_EDITOR_ACCESS_EDIT:
02341 if ($editAssignment->getCanEdit()) {
02342 $wasFound = true;
02343 }
02344 break;
02345 case SECTION_EDITOR_ACCESS_REVIEW:
02346 if ($editAssignment->getCanReview()) {
02347 $wasFound = true;
02348 }
02349 break;
02350
02351 default:
02352 $wasFound = true;
02353 }
02354 break;
02355 }
02356 }
02357
02358 if (!$wasFound) $isValid = false;
02359 }
02360 }
02361
02362 if (!$isValid) {
02363 Request::redirect(null, Request::getRequestedPage());
02364 }
02365
02366
02367 $editAssignmentDao = &DAORegistry::getDAO('EditAssignmentDAO');
02368 $editAssignments = &$sectionEditorSubmission->getEditAssignments();
02369 foreach ($editAssignments as $editAssignment) {
02370 if ($editAssignment->getEditorId() == $user->getUserId() && $editAssignment->getDateUnderway() === null) {
02371 $editAssignment->setDateUnderway(Core::getCurrentDate());
02372 $editAssignmentDao->updateEditAssignment($editAssignment);
02373 }
02374 }
02375
02376 return array(&$journal, &$sectionEditorSubmission);
02377 }
02378
02379 }
02380 ?>