00001 <?php
00002
00015
00016
00017
00018 class SubmitHandler extends AuthorHandler {
00019
00025 function submit($args) {
00026 parent::validate('author.submit.authorSubmitLoginMessage');
00027 parent::setupTemplate(true);
00028
00029 $step = isset($args[0]) ? (int) $args[0] : 0;
00030 $articleId = Request::getUserVar('articleId');
00031
00032 list($journal, $article) = SubmitHandler::validate($articleId, $step);
00033
00034 $formClass = "AuthorSubmitStep{$step}Form";
00035 import("author.form.submit.$formClass");
00036
00037 $submitForm = &new $formClass($article);
00038 if ($submitForm->isLocaleResubmit()) {
00039 $submitForm->readInputData();
00040 } else {
00041 $submitForm->initData();
00042 }
00043 $submitForm->display();
00044 }
00045
00050 function saveSubmit($args) {
00051 parent::validate();
00052 parent::setupTemplate(true);
00053
00054 $step = isset($args[0]) ? (int) $args[0] : 0;
00055 $articleId = Request::getUserVar('articleId');
00056
00057 list($journal, $article) = SubmitHandler::validate($articleId, $step);
00058
00059 $formClass = "AuthorSubmitStep{$step}Form";
00060 import("author.form.submit.$formClass");
00061
00062 $submitForm = &new $formClass($article);
00063 $submitForm->readInputData();
00064
00065
00066 switch ($step) {
00067 case 2:
00068 if (Request::getUserVar('addAuthor')) {
00069
00070 $editData = true;
00071 $authors = $submitForm->getData('authors');
00072 array_push($authors, array());
00073 $submitForm->setData('authors', $authors);
00074
00075 } else if (($delAuthor = Request::getUserVar('delAuthor')) && count($delAuthor) == 1) {
00076
00077 $editData = true;
00078 list($delAuthor) = array_keys($delAuthor);
00079 $delAuthor = (int) $delAuthor;
00080 $authors = $submitForm->getData('authors');
00081 if (isset($authors[$delAuthor]['authorId']) && !empty($authors[$delAuthor]['authorId'])) {
00082 $deletedAuthors = explode(':', $submitForm->getData('deletedAuthors'));
00083 array_push($deletedAuthors, $authors[$delAuthor]['authorId']);
00084 $submitForm->setData('deletedAuthors', join(':', $deletedAuthors));
00085 }
00086 array_splice($authors, $delAuthor, 1);
00087 $submitForm->setData('authors', $authors);
00088
00089 if ($submitForm->getData('primaryContact') == $delAuthor) {
00090 $submitForm->setData('primaryContact', 0);
00091 }
00092
00093 } else if (Request::getUserVar('moveAuthor')) {
00094
00095 $editData = true;
00096 $moveAuthorDir = Request::getUserVar('moveAuthorDir');
00097 $moveAuthorDir = $moveAuthorDir == 'u' ? 'u' : 'd';
00098 $moveAuthorIndex = (int) Request::getUserVar('moveAuthorIndex');
00099 $authors = $submitForm->getData('authors');
00100
00101 if (!(($moveAuthorDir == 'u' && $moveAuthorIndex <= 0) || ($moveAuthorDir == 'd' && $moveAuthorIndex >= count($authors) - 1))) {
00102 $tmpAuthor = $authors[$moveAuthorIndex];
00103 $primaryContact = $submitForm->getData('primaryContact');
00104 if ($moveAuthorDir == 'u') {
00105 $authors[$moveAuthorIndex] = $authors[$moveAuthorIndex - 1];
00106 $authors[$moveAuthorIndex - 1] = $tmpAuthor;
00107 if ($primaryContact == $moveAuthorIndex) {
00108 $submitForm->setData('primaryContact', $moveAuthorIndex - 1);
00109 } else if ($primaryContact == ($moveAuthorIndex - 1)) {
00110 $submitForm->setData('primaryContact', $moveAuthorIndex);
00111 }
00112 } else {
00113 $authors[$moveAuthorIndex] = $authors[$moveAuthorIndex + 1];
00114 $authors[$moveAuthorIndex + 1] = $tmpAuthor;
00115 if ($primaryContact == $moveAuthorIndex) {
00116 $submitForm->setData('primaryContact', $moveAuthorIndex + 1);
00117 } else if ($primaryContact == ($moveAuthorIndex + 1)) {
00118 $submitForm->setData('primaryContact', $moveAuthorIndex);
00119 }
00120 }
00121 }
00122 $submitForm->setData('authors', $authors);
00123 }
00124 break;
00125
00126 case 3:
00127 if (Request::getUserVar('uploadSubmissionFile')) {
00128 $submitForm->uploadSubmissionFile('submissionFile');
00129 $editData = true;
00130 }
00131 break;
00132
00133 case 4:
00134 if (Request::getUserVar('submitUploadSuppFile')) {
00135 SubmitHandler::submitUploadSuppFile();
00136 return;
00137 }
00138 break;
00139 }
00140
00141 if (!isset($editData) && $submitForm->validate()) {
00142 $articleId = $submitForm->execute();
00143
00144 if ($step == 5) {
00145 $journal = &Request::getJournal();
00146 $templateMgr = &TemplateManager::getManager();
00147 $templateMgr->assign_by_ref('journal', $journal);
00148
00149
00150 if (Validation::isEditor($journal->getJournalId()) && $article->getSubmissionFileId()) {
00151 $templateMgr->assign('canExpedite', true);
00152 }
00153 $templateMgr->assign('articleId', $articleId);
00154 $templateMgr->assign('helpTopicId','submission.index');
00155 $templateMgr->display('author/submit/complete.tpl');
00156
00157 } else {
00158 Request::redirect(null, null, 'submit', $step+1, array('articleId' => $articleId));
00159 }
00160
00161 } else {
00162 $submitForm->display();
00163 }
00164 }
00165
00169 function submitUploadSuppFile() {
00170 parent::validate();
00171 parent::setupTemplate(true);
00172
00173 $articleId = Request::getUserVar('articleId');
00174
00175 list($journal, $article) = SubmitHandler::validate($articleId, 4);
00176
00177 import("author.form.submit.AuthorSubmitSuppFileForm");
00178 $submitForm = &new AuthorSubmitSuppFileForm($article);
00179 $submitForm->setData('title', Locale::translate('common.untitled'));
00180 $suppFileId = $submitForm->execute();
00181
00182 Request::redirect(null, null, 'submitSuppFile', $suppFileId, array('articleId' => $articleId));
00183 }
00184
00189 function submitSuppFile($args) {
00190 parent::validate();
00191 parent::setupTemplate(true);
00192
00193 $articleId = Request::getUserVar('articleId');
00194 $suppFileId = isset($args[0]) ? (int) $args[0] : 0;
00195
00196 list($journal, $article) = SubmitHandler::validate($articleId, 4);
00197
00198 import("author.form.submit.AuthorSubmitSuppFileForm");
00199 $submitForm = &new AuthorSubmitSuppFileForm($article, $suppFileId);
00200
00201 if ($submitForm->isLocaleResubmit()) {
00202 $submitForm->readInputData();
00203 } else {
00204 $submitForm->initData();
00205 }
00206 $submitForm->display();
00207 }
00208
00213 function saveSubmitSuppFile($args) {
00214 parent::validate();
00215 parent::setupTemplate(true);
00216
00217 $articleId = Request::getUserVar('articleId');
00218 $suppFileId = isset($args[0]) ? (int) $args[0] : 0;
00219
00220 list($journal, $article) = SubmitHandler::validate($articleId, 4);
00221
00222 import("author.form.submit.AuthorSubmitSuppFileForm");
00223 $submitForm = &new AuthorSubmitSuppFileForm($article, $suppFileId);
00224 $submitForm->readInputData();
00225
00226 if ($submitForm->validate()) {
00227 $submitForm->execute();
00228 Request::redirect(null, null, 'submit', '4', array('articleId' => $articleId));
00229 } else {
00230 $submitForm->display();
00231 }
00232 }
00233
00238 function deleteSubmitSuppFile($args) {
00239 import("file.ArticleFileManager");
00240
00241 parent::validate();
00242 parent::setupTemplate(true);
00243
00244 $articleId = Request::getUserVar('articleId');
00245 $suppFileId = isset($args[0]) ? (int) $args[0] : 0;
00246
00247 list($journal, $article) = SubmitHandler::validate($articleId, 4);
00248
00249 $suppFileDao = &DAORegistry::getDAO('SuppFileDAO');
00250 $suppFile = $suppFileDao->getSuppFile($suppFileId, $articleId);
00251 $suppFileDao->deleteSuppFileById($suppFileId, $articleId);
00252
00253 if ($suppFile->getFileId()) {
00254 $articleFileManager = &new ArticleFileManager($articleId);
00255 $articleFileManager->deleteFile($suppFile->getFileId());
00256 }
00257
00258 Request::redirect(null, null, 'submit', '4', array('articleId' => $articleId));
00259 }
00260
00261 function expediteSubmission() {
00262 $articleId = (int) Request::getUserVar('articleId');
00263 list($journal, $article) = SubmitHandler::validate($articleId);
00264
00265
00266 if (Validation::isEditor($journal->getJournalId()) && $article->getSubmissionFileId()) {
00267 import('submission.editor.EditorAction');
00268 EditorAction::expediteSubmission($article);
00269 Request::redirect(null, 'editor', 'submissionEditing', array($article->getArticleId()));
00270 }
00271
00272 Request::redirect(null, null, 'track');
00273 }
00274
00281 function validate($articleId = null, $step = false) {
00282 $articleDao = &DAORegistry::getDAO('ArticleDAO');
00283 $user = &Request::getUser();
00284 $journal = &Request::getJournal();
00285
00286 if ($step !== false && ($step < 1 || $step > 5 || (!isset($articleId) && $step != 1))) {
00287 Request::redirect(null, null, 'submit', array(1));
00288 }
00289
00290 $article = null;
00291
00292
00293 if (isset($articleId)) {
00294 $article =& $articleDao->getArticle((int) $articleId);
00295 if (!$article || $article->getUserId() !== $user->getUserId() || $article->getJournalId() !== $journal->getJournalId() || ($step !== false && $step > $article->getSubmissionProgress())) {
00296 Request::redirect(null, null, 'submit');
00297 }
00298 }
00299 return array(&$journal, &$article);
00300 }
00301 }
00302 ?>