00001 <?php
00002
00015
00016
00017
00018 class IssueManagementHandler extends EditorHandler {
00019
00023 function futureIssues() {
00024 IssueManagementHandler::validate(null, true);
00025 IssueManagementHandler::setupTemplate(EDITOR_SECTION_ISSUES);
00026
00027 $journal = &Request::getJournal();
00028 $issueDao = &DAORegistry::getDAO('IssueDAO');
00029 $rangeInfo = Handler::getRangeInfo('issues');
00030 $templateMgr = &TemplateManager::getManager();
00031 $templateMgr->assign_by_ref('issues', $issueDao->getUnpublishedIssues($journal->getJournalId(), $rangeInfo));
00032 $templateMgr->assign('helpTopicId', 'publishing.index');
00033 $templateMgr->display('editor/issues/futureIssues.tpl');
00034 }
00035
00039 function backIssues() {
00040 IssueManagementHandler::validate();
00041 IssueManagementHandler::setupTemplate(EDITOR_SECTION_ISSUES);
00042
00043 $journal = &Request::getJournal();
00044 $issueDao = &DAORegistry::getDAO('IssueDAO');
00045
00046 $rangeInfo = Handler::getRangeInfo('issues');
00047
00048 $templateMgr = &TemplateManager::getManager();
00049 $templateMgr->assign_by_ref('issues', $issueDao->getPublishedIssues($journal->getJournalId(), $rangeInfo));
00050
00051 $allIssuesIterator = $issueDao->getPublishedIssues($journal->getJournalId());
00052 $issueMap = array();
00053 while ($issue =& $allIssuesIterator->next()) {
00054 $issueMap[$issue->getIssueId()] = $issue->getIssueIdentification();
00055 unset($issue);
00056 }
00057 $templateMgr->assign('allIssues', $issueMap);
00058
00059 $currentIssue =& $issueDao->getCurrentIssue($journal->getJournalId());
00060 $currentIssueId = $currentIssue?$currentIssue->getIssueId():null;
00061 $templateMgr->assign('currentIssueId', $currentIssueId);
00062
00063 $templateMgr->assign('helpTopicId', 'publishing.index');
00064 $templateMgr->assign('usesCustomOrdering', $issueDao->customIssueOrderingExists($journal->getJournalId()));
00065 $templateMgr->display('editor/issues/backIssues.tpl');
00066 }
00067
00071 function removeIssue($args) {
00072 $issueId = isset($args[0]) ? (int) $args[0] : 0;
00073 $issue = IssueManagementHandler::validate($issueId);
00074
00075
00076 $articleDao = &DAORegistry::getDAO('ArticleDAO');
00077 $publishedArticleDao = &DAORegistry::getDAO('PublishedArticleDAO');
00078 $publishedArticles = $publishedArticleDao->getPublishedArticles($issueId);
00079 if (isset($publishedArticles) && !empty($publishedArticles)) {
00080 foreach ($publishedArticles as $article) {
00081 $articleDao->changeArticleStatus($article->getArticleId(),STATUS_QUEUED);
00082 $publishedArticleDao->deletePublishedArticleById($article->getPubId());
00083 }
00084 }
00085
00086 $issueDao = &DAORegistry::getDAO('IssueDAO');
00087 $issueDao->deleteIssue($issue);
00088 if ($issue->getCurrent()) {
00089 $journal = &Request::getJournal();
00090 $issues = $issueDao->getPublishedIssues($journal->getJournalId());
00091 if (!$issues->eof()) {
00092 $issue = &$issues->next();
00093 $issue->setCurrent(1);
00094 $issueDao->updateIssue($issue);
00095 }
00096 }
00097
00098 Request::redirect(null, null, 'backIssues');
00099 }
00100
00104 function createIssue() {
00105 IssueManagementHandler::validate();
00106 IssueManagementHandler::setupTemplate(EDITOR_SECTION_ISSUES);
00107
00108 import('issue.form.IssueForm');
00109
00110 $templateMgr = &TemplateManager::getManager();
00111 import('issue.IssueAction');
00112 $templateMgr->assign('issueOptions', IssueAction::getIssueOptions());
00113 $templateMgr->assign('helpTopicId', 'publishing.createIssue');
00114
00115 $issueForm = &new IssueForm('editor/issues/createIssue.tpl');
00116
00117 if ($issueForm->isLocaleResubmit()) {
00118 $issueForm->readInputData();
00119 } else {
00120 $issueForm->initData();
00121 }
00122 $issueForm->display();
00123 }
00124
00128 function saveIssue() {
00129 IssueManagementHandler::validate();
00130 IssueManagementHandler::setupTemplate(EDITOR_SECTION_ISSUES);
00131
00132 import('issue.form.IssueForm');
00133 $issueForm = &new IssueForm('editor/issues/createIssue.tpl');
00134 $issueForm->readInputData();
00135
00136 if ($issueForm->validate()) {
00137 $issueForm->execute();
00138 EditorHandler::backIssues();
00139 } else {
00140 $templateMgr = &TemplateManager::getManager();
00141 import('issue.IssueAction');
00142 $templateMgr->assign('issueOptions', IssueAction::getIssueOptions());
00143 $templateMgr->assign('helpTopicId', 'publishing.createIssue');
00144 $issueForm->display();
00145 }
00146 }
00147
00151 function issueData($args) {
00152 $issueId = isset($args[0]) ? $args[0] : 0;
00153 $issue = IssueManagementHandler::validate($issueId, true);
00154 IssueManagementHandler::setupTemplate(EDITOR_SECTION_ISSUES);
00155
00156 $templateMgr = &TemplateManager::getManager();
00157 import('issue.IssueAction');
00158 $templateMgr->assign('issueOptions', IssueAction::getIssueOptions());
00159
00160 import('issue.form.IssueForm');
00161 $issueForm = &new IssueForm('editor/issues/issueData.tpl');
00162
00163 if ($issueForm->isLocaleResubmit()) {
00164 $issueForm->readInputData();
00165 } else {
00166 $issueId = $issueForm->initData($issueId);
00167 }
00168 $templateMgr->assign('issueId', $issueId);
00169
00170 $templateMgr->assign_by_ref('issue', $issue);
00171 $templateMgr->assign('unpublished',!$issue->getPublished());
00172 $templateMgr->assign('helpTopicId', 'publishing.index');
00173 $issueForm->display();
00174 }
00175
00179 function editIssue($args) {
00180 $issueId = isset($args[0]) ? (int) $args[0] : 0;
00181 $issue = IssueManagementHandler::validate($issueId, true);
00182 IssueManagementHandler::setupTemplate(EDITOR_SECTION_ISSUES);
00183
00184 $templateMgr = &TemplateManager::getManager();
00185 $templateMgr->assign('issueId', $issueId);
00186
00187 $journal = &Request::getJournal();
00188 $journalId = $journal->getJournalId();
00189
00190 import('issue.IssueAction');
00191 $templateMgr->assign('issueOptions', IssueAction::getIssueOptions());
00192
00193 import('issue.form.IssueForm');
00194 $issueForm = &new IssueForm('editor/issues/issueData.tpl');
00195 $issueForm->readInputData();
00196
00197 if ($issueForm->validate($issueId)) {
00198 $issueForm->execute($issueId);
00199 $issueForm->initData($issueId);
00200 }
00201
00202 $templateMgr->assign_by_ref('issue', $issue);
00203 $templateMgr->assign('unpublished',!$issue->getPublished());
00204
00205 $issueForm->display();
00206 }
00207
00211 function removeCoverPage($args) {
00212 $issueId = isset($args[0]) ? (int)$args[0] : 0;
00213 $formLocale = $args[1];
00214 $issue = IssueManagementHandler::validate($issueId, true);
00215
00216 import('file.PublicFileManager');
00217 $journal = &Request::getJournal();
00218 $publicFileManager = &new PublicFileManager();
00219 $publicFileManager->removeJournalFile($journal->getJournalId(),$issue->getFileName($formLocale));
00220 $issue->setFileName('', $formLocale);
00221 $issue->setOriginalFileName('', $formLocale);
00222 $issue->setWidth('', $formLocale);
00223 $issue->setHeight('', $formLocale);
00224
00225 $issueDao = &DAORegistry::getDAO('IssueDAO');
00226 $issueDao->updateIssue($issue);
00227
00228 Request::redirect(null, null, 'issueData', $issueId);
00229 }
00230
00234 function removeStyleFile($args) {
00235 $issueId = isset($args[0]) ? (int)$args[0] : 0;
00236 $issue = IssueManagementHandler::validate($issueId, true);
00237
00238 import('file.PublicFileManager');
00239 $journal = &Request::getJournal();
00240 $publicFileManager = &new PublicFileManager();
00241 $publicFileManager->removeJournalFile($journal->getJournalId(),$issue->getStyleFileName());
00242 $issue->setStyleFileName('');
00243 $issue->setOriginalStyleFileName('');
00244
00245 $issueDao = &DAORegistry::getDAO('IssueDAO');
00246 $issueDao->updateIssue($issue);
00247
00248 Request::redirect(null, null, 'issueData', $issueId);
00249 }
00250
00254 function issueToc($args) {
00255 $issueId = isset($args[0]) ? $args[0] : 0;
00256 $issue = IssueManagementHandler::validate($issueId, true);
00257 IssueManagementHandler::setupTemplate(EDITOR_SECTION_ISSUES);
00258
00259 $templateMgr = &TemplateManager::getManager();
00260
00261 $journal = &Request::getJournal();
00262 $journalId = $journal->getJournalId();
00263
00264 $journalSettingsDao = &DAORegistry::getDAO('JournalSettingsDAO');
00265 $sectionDao =& DAORegistry::getDAO('SectionDAO');
00266
00267 $enablePublicArticleId = $journalSettingsDao->getSetting($journalId,'enablePublicArticleId');
00268 $templateMgr->assign('enablePublicArticleId', $enablePublicArticleId);
00269 $enableSubscriptions = $journalSettingsDao->getSetting($journalId,'enableSubscriptions');
00270 $templateMgr->assign('enableSubscriptions', $enableSubscriptions);
00271 $enablePageNumber = $journalSettingsDao->getSetting($journalId, 'enablePageNumber');
00272 $templateMgr->assign('enablePageNumber', $enablePageNumber);
00273 $templateMgr->assign('customSectionOrderingExists', $customSectionOrderingExists = $sectionDao->customSectionOrderingExists($issueId));
00274
00275 $templateMgr->assign('issueId', $issueId);
00276 $templateMgr->assign_by_ref('issue', $issue);
00277 $templateMgr->assign('unpublished', !$issue->getPublished());
00278 $templateMgr->assign('issueAccess',$issue->getAccessStatus());
00279
00280
00281 $publishedArticleDao = &DAORegistry::getDAO('PublishedArticleDAO');
00282 $publishedArticles = $publishedArticleDao->getPublishedArticles($issueId);
00283
00284 $layoutAssignmentDao =& DAORegistry::getDAO('LayoutAssignmentDAO');
00285 $proofedArticleIds = $layoutAssignmentDao->getProofedArticlesByIssueId($issueId);
00286 $templateMgr->assign('proofedArticleIds', $proofedArticleIds);
00287
00288 $currSection = 0;
00289 $counter = 0;
00290 $sections = array();
00291 $sectionCount = 0;
00292 $sectionDao =& DAORegistry::getDAO('SectionDAO');
00293 foreach ($publishedArticles as $article) {
00294 $sectionId = $article->getSectionId();
00295 if ($currSection != $sectionId) {
00296 $lastSectionId = $currSection;
00297 $sectionCount++;
00298 if ($lastSectionId !== 0) $sections[$lastSectionId][5] = $customSectionOrderingExists?$sectionDao->getCustomSectionOrder($issueId, $sectionId):$sectionCount;
00299 $currSection = $sectionId;
00300 $counter++;
00301 $sections[$sectionId] = array(
00302 $sectionId,
00303 $article->getSectionTitle(),
00304 array($article),
00305 $counter,
00306 $customSectionOrderingExists?
00307 $sectionDao->getCustomSectionOrder($issueId, $lastSectionId):
00308 ($sectionCount-1),
00309 null
00310 );
00311 } else {
00312 $sections[$article->getSectionId()][2][] = $article;
00313 }
00314 }
00315 $templateMgr->assign_by_ref('sections', $sections);
00316
00317 $accessOptions[ISSUE_DEFAULT] = Locale::Translate('editor.issues.default');
00318 $accessOptions[OPEN_ACCESS] = Locale::Translate('editor.issues.open');
00319 $templateMgr->assign('accessOptions',$accessOptions);
00320
00321 import('issue.IssueAction');
00322 $templateMgr->assign('issueOptions', IssueAction::getIssueOptions());
00323 $templateMgr->assign('helpTopicId', 'publishing.tableOfContents');
00324 $templateMgr->display('editor/issues/issueToc.tpl');
00325 }
00326
00330 function updateIssueToc($args) {
00331 $issueId = isset($args[0]) ? $args[0] : 0;
00332 IssueManagementHandler::validate($issueId, true);
00333
00334 $journal = &Request::getJournal();
00335
00336 $removedPublishedArticles = array();
00337
00338 $publishedArticles = Request::getUserVar('publishedArticles');
00339 $removedArticles = Request::getUserVar('remove');
00340 $accessStatus = Request::getUserVar('accessStatus');
00341 $pages = Request::getUserVar('pages');
00342
00343 $articleDao = &DAORegistry::getDAO('ArticleDAO');
00344 $publishedArticleDao = &DAORegistry::getDAO('PublishedArticleDAO');
00345
00346 $articles = $publishedArticleDao->getPublishedArticles($issueId);
00347
00348 foreach($articles as $article) {
00349 $articleId = $article->getArticleId();
00350 $pubId = $article->getPubId();
00351 if (!isset($removedArticles[$articleId])) {
00352 if (isset($pages[$articleId])) {
00353 $article->setPages($pages[$articleId]);
00354 }
00355 if (isset($publishedArticles[$articleId])) {
00356 $publicArticleId = $publishedArticles[$articleId];
00357 if (!$publicArticleId || !$publishedArticleDao->publicArticleIdExists($publicArticleId, $articleId, $journal->getJournalId())) {
00358 $publishedArticleDao->updatePublishedArticleField($pubId, 'public_article_id', $publicArticleId);
00359 }
00360 }
00361 if (isset($accessStatus[$pubId])) {
00362 $publishedArticleDao->updatePublishedArticleField($pubId, 'access_status', $accessStatus[$pubId]);
00363 }
00364 } else {
00365 $article->setStatus(STATUS_QUEUED);
00366 $article->stampStatusModified();
00367 $publishedArticleDao->deletePublishedArticleById($pubId);
00368 $publishedArticleDao->resequencePublishedArticles($article->getSectionId(), $issueId);
00369 }
00370 $articleDao->updateArticle($article);
00371 }
00372
00373 Request::redirect(null, null, 'issueToc', $issueId);
00374 }
00375
00379 function setCurrentIssue($args) {
00380 $issueId = Request::getUserVar('issueId');
00381 $journal = &Request::getJournal();
00382 $issueDao = &DAORegistry::getDAO('IssueDAO');
00383 if ($issueId) {
00384 $issue = IssueManagementHandler::validate($issueId);
00385 $issue->setCurrent(1);
00386 $issueDao->updateCurrentIssue($journal->getJournalId(), $issue);
00387 } else {
00388 IssueManagementHandler::validate();
00389 $issueDao->updateCurrentIssue($journal->getJournalId());
00390 }
00391 Request::redirect(null, null, 'backIssues');
00392 }
00393
00397 function moveIssue($args) {
00398 $issueId = isset($args[0]) ? $args[0] : 0;
00399 $issue = IssueManagementHandler::validate($issueId);
00400 $journal = &Request::getJournal();
00401
00402 $issueDao = &DAORegistry::getDAO('IssueDAO');
00403
00404
00405 if (!$issueDao->customIssueOrderingExists($journal->getJournalId())) {
00406 $issueDao->setDefaultCustomIssueOrders($journal->getJournalId());
00407 }
00408
00409 $issueDao->moveCustomIssueOrder($journal->getJournalId(), $issue->getIssueId(), Request::getUserVar('newPos'), Request::getUserVar('d') == 'u');
00410
00411 Request::redirect(null, null, 'backIssues');
00412 }
00413
00417 function resetIssueOrder($args) {
00418 IssueManagementHandler::validate();
00419
00420 $journal =& Request::getJournal();
00421
00422 $issueDao =& DAORegistry::getDAO('IssueDAO');
00423 $issueDao->deleteCustomIssueOrdering($journal->getJournalId());
00424
00425 Request::redirect(null, null, 'backIssues');
00426 }
00427
00431 function moveSectionToc($args) {
00432 $issueId = isset($args[0]) ? $args[0] : 0;
00433 $issue = IssueManagementHandler::validate($issueId, true);
00434 $journal = &Request::getJournal();
00435
00436 $sectionDao = &DAORegistry::getDAO('SectionDAO');
00437 $section = &$sectionDao->getSection(Request::getUserVar('sectionId'), $journal->getJournalId());
00438
00439 if ($section != null) {
00440
00441 if (!$sectionDao->customSectionOrderingExists($issueId)) {
00442 $sectionDao->setDefaultCustomSectionOrders($issueId);
00443 }
00444
00445 $sectionDao->moveCustomSectionOrder($issueId, $section->getSectionId(), Request::getUserVar('newPos'), Request::getUserVar('d') == 'u');
00446 }
00447
00448 Request::redirect(null, null, 'issueToc', $issueId);
00449 }
00450
00454 function resetSectionOrder($args) {
00455 $issueId = isset($args[0]) ? $args[0] : 0;
00456 $issue = IssueManagementHandler::validate($issueId, true);
00457
00458 $sectionDao =& DAORegistry::getDAO('SectionDAO');
00459 $sectionDao->deleteCustomSectionOrdering($issueId);
00460
00461 Request::redirect(null, null, 'issueToc', $issue->getIssueId());
00462 }
00463
00467 function moveArticleToc($args) {
00468 $issueId = isset($args[0]) ? $args[0] : 0;
00469 $issue = IssueManagementHandler::validate($issueId, true);
00470
00471 $journal = &Request::getJournal();
00472
00473 $publishedArticleDao = &DAORegistry::getDAO('PublishedArticleDAO');
00474 $publishedArticle = &$publishedArticleDao->getPublishedArticleById(Request::getUserVar('pubId'));
00475
00476 if ($publishedArticle != null && $publishedArticle->getIssueId() == $issue->getIssueId() && $issue->getJournalId() == $journal->getJournalId()) {
00477 $publishedArticle->setSeq($publishedArticle->getSeq() + (Request::getUserVar('d') == 'u' ? -1.5 : 1.5));
00478 $publishedArticleDao->updatePublishedArticle($publishedArticle);
00479 $publishedArticleDao->resequencePublishedArticles(Request::getUserVar('sectionId'),$issueId);
00480 }
00481
00482 Request::redirect(null, null, 'issueToc', $issueId);
00483 }
00484
00488 function publishIssue($args) {
00489 $issueId = isset($args[0]) ? (int) $args[0] : 0;
00490 $issue = IssueManagementHandler::validate($issueId);
00491
00492 $journal = &Request::getJournal();
00493 $journalId = $journal->getJournalId();
00494
00495 if (!$issue->getPublished()) {
00496
00497 $publishedArticleDao =& DAORegistry::getDAO('PublishedArticleDAO');
00498 $articleDao =& DAORegistry::getDAO('ArticleDAO');
00499 $publishedArticles =& $publishedArticleDao->getPublishedArticles($issueId, null, true);
00500 foreach ($publishedArticles as $publishedArticle) {
00501 $article =& $articleDao->getArticle($publishedArticle->getArticleId());
00502 if ($article && $article->getStatus() == STATUS_QUEUED) {
00503 $article->setStatus(STATUS_PUBLISHED);
00504 $article->stampStatusModified();
00505 $articleDao->updateArticle($article);
00506 }
00507 unset($article);
00508 }
00509 }
00510
00511 $issue->setCurrent(1);
00512 $issue->setPublished(1);
00513 $issue->setDatePublished(Core::getCurrentDate());
00514
00515
00516
00517 if ($journal->getSetting('enableSubscriptions') && $journal->getSetting('enableDelayedOpenAccess')) {
00518
00519 $delayDuration = $journal->getSetting('delayedOpenAccessDuration');
00520 $delayYears = (int)floor($delayDuration/12);
00521 $delayMonths = (int)fmod($delayDuration,12);
00522
00523 $curYear = date('Y');
00524 $curMonth = date('n');
00525 $curDay = date('j');
00526
00527 $delayOpenAccessYear = $curYear + $delayYears + (int)floor(($curMonth+$delayMonths)/12);
00528 $delayOpenAccessMonth = (int)fmod($curMonth+$delayMonths,12);
00529
00530 $issue->setAccessStatus(SUBSCRIPTION);
00531 $issue->setOpenAccessDate(date('Y-m-d H:i:s',mktime(0,0,0,$delayOpenAccessMonth,$curDay,$delayOpenAccessYear)));
00532 }
00533
00534 $issueDao = &DAORegistry::getDAO('IssueDAO');
00535 $issueDao->updateCurrentIssue($journalId,$issue);
00536
00537 Request::redirect(null, null, 'issueToc', $issue->getIssueId());
00538 }
00539
00543 function notifyUsers($args) {
00544 $issue = IssueManagementHandler::validate(Request::getUserVar('issue'));
00545 IssueManagementHandler::setupTemplate(EDITOR_SECTION_ISSUES);
00546
00547 $userDao = &DAORegistry::getDAO('UserDAO');
00548 $issueDao = &DAORegistry::getDAO('IssueDAO');
00549 $notificationStatusDao = &DAORegistry::getDAO('NotificationStatusDAO');
00550 $roleDao = &DAORegistry::getDAO('RoleDAO');
00551
00552 $journal = &Request::getJournal();
00553 $user = &Request::getUser();
00554 $templateMgr = &TemplateManager::getManager();
00555
00556 import('mail.MassMail');
00557 $email = &new MassMail('PUBLISH_NOTIFY');
00558
00559 if (Request::getUserVar('send') && !$email->hasErrors()) {
00560 $email->addRecipient($user->getEmail(), $user->getFullName());
00561
00562 if (Request::getUserVar('whichUsers') == 'allUsers') {
00563 $recipients = $roleDao->getUsersByJournalId($journal->getJournalId());
00564 } else {
00565 $recipients = $notificationStatusDao->getNotifiableUsersByJournalId($journal->getJournalId());
00566 }
00567 while (!$recipients->eof()) {
00568 $recipient = &$recipients->next();
00569 $email->addRecipient($recipient->getEmail(), $recipient->getFullName());
00570 unset($recipient);
00571 }
00572
00573 if (Request::getUserVar('includeToc')=='1' && isset($issue)) {
00574 $issue = $issueDao->getIssueById(Request::getUserVar('issue'));
00575
00576 $publishedArticleDao = &DAORegistry::getDAO('PublishedArticleDAO');
00577 $publishedArticles = &$publishedArticleDao->getPublishedArticlesInSections($issue->getIssueId());
00578
00579 $templateMgr->assign_by_ref('journal', $journal);
00580 $templateMgr->assign_by_ref('issue', $issue);
00581 $templateMgr->assign('body', $email->getBody());
00582 $templateMgr->assign_by_ref('publishedArticles', $publishedArticles);
00583
00584 $email->setBody($templateMgr->fetch('editor/notifyUsersEmail.tpl'));
00585
00586
00587 $issue->setDateNotified(Core::getCurrentDate());
00588 $issueDao->updateIssue($issue);
00589 }
00590
00591 $callback = array(&$email, 'send');
00592 $templateMgr->setProgressFunction($callback);
00593 unset($callback);
00594
00595 $email->setFrequency(10);
00596 $callback = array(&$templateMgr, 'updateProgressBar');
00597 $email->setCallback($callback);
00598 unset($callback);
00599
00600 $templateMgr->assign('message', 'editor.notifyUsers.inProgress');
00601 $templateMgr->display('common/progress.tpl');
00602 echo '<script type="text/javascript">window.location = "' . Request::url(null, 'editor') . '";</script>';
00603 } else {
00604 if (!Request::getUserVar('continued')) {
00605 $email->assignParams(array(
00606 'editorialContactSignature' => $user->getContactSignature()
00607 ));
00608 }
00609 $notifiableCount = $notificationStatusDao->getNotifiableUsersCount($journal->getJournalId());
00610 $allUsersCount = $roleDao->getJournalUsersCount($journal->getJournalId());
00611
00612 $issuesIterator = &$issueDao->getIssues($journal->getJournalId());
00613
00614 $email->displayEditForm(
00615 Request::url(null, null, 'notifyUsers'),
00616 array(),
00617 'editor/notifyUsers.tpl',
00618 array(
00619 'issues' => $issuesIterator,
00620 'notifiableCount' => $notifiableCount,
00621 'allUsersCount' => $allUsersCount
00622 )
00623 );
00624 }
00625 }
00626
00632 function validate($issueId = null, $allowLayoutEditor = false) {
00633 $issue = null;
00634 $journal =& Request::getJournal();
00635
00636 if (!isset($journal)) Validation::redirectLogin();
00637
00638 if (isset($issueId)) {
00639 $issueDao = &DAORegistry::getDAO('IssueDAO');
00640 $issue = $issueDao->getIssueById($issueId, $journal->getJournalId());
00641
00642 if (!$issue) {
00643 Request::redirect(null, null, 'createIssue');
00644 }
00645 }
00646
00647 if (!Validation::isEditor($journal->getJournalId())) {
00648 if (isset($journal) && $allowLayoutEditor && Validation::isLayoutEditor($journal->getJournalId())) {
00649
00650 if ($issue && !$issue->getPublished()) {
00651 Validation::redirectLogin();
00652 }
00653 } else {
00654 Validation::redirectLogin();
00655 }
00656 }
00657
00658 return $issue;
00659 }
00660
00665 function setupTemplate($level) {
00666 $templateMgr =& TemplateManager::getManager();
00667 $templateMgr->assign('isLayoutEditor', Request::getRequestedPage() == 'layoutEditor');
00668 EditorHandler::setupTemplate($level);
00669 }
00670 }