00001 <?php
00002
00016 class ReviewFormHandler extends ManagerHandler {
00017
00021 function reviewForms() {
00022 parent::validate();
00023 ReviewFormHandler::setupTemplate();
00024
00025 $journal =& Request::getJournal();
00026 $rangeInfo =& Handler::getRangeInfo('reviewForms');
00027 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00028 $reviewForms =& $reviewFormDao->getJournalReviewForms($journal->getJournalId(), $rangeInfo);
00029 $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO');
00030
00031 $templateMgr =& TemplateManager::getManager();
00032 $templateMgr->assign_by_ref('reviewForms', $reviewForms);
00033 $templateMgr->assign('helpTopicId','journal.managementPages.reviewForms');
00034 $templateMgr->display('manager/reviewForms/reviewForms.tpl');
00035 }
00036
00040 function createReviewForm() {
00041 ReviewFormHandler::editReviewForm();
00042 }
00043
00048 function editReviewForm($args = array()) {
00049 parent::validate();
00050
00051 $reviewFormId = isset($args[0]) ? (int)$args[0] : null;
00052
00053 $journal =& Request::getJournal();
00054 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00055 $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, $journal->getJournalId());
00056
00057 if ($reviewFormId != null && (!isset($reviewForm) || $reviewForm->getCompleteCount() != 0 || $reviewForm->getIncompleteCount() != 0)) {
00058 Request::redirect(null, null, 'reviewForms');
00059 } else {
00060 ReviewFormHandler::setupTemplate(true, $reviewForm);
00061 $templateMgr =& TemplateManager::getManager();
00062
00063 if ($reviewFormId == null) {
00064 $templateMgr->assign('pageTitle', 'manager.reviewForms.create');
00065 } else {
00066 $templateMgr->assign('pageTitle', 'manager.reviewForms.edit');
00067 }
00068
00069 import('manager.form.ReviewFormForm');
00070 $reviewFormForm =& new ReviewFormForm($reviewFormId);
00071
00072 if ($reviewFormForm->isLocaleResubmit()) {
00073 $reviewFormForm->readInputData();
00074 } else {
00075 $reviewFormForm->initData();
00076 }
00077 $reviewFormForm->display();
00078 }
00079 }
00080
00084 function updateReviewForm() {
00085 parent::validate();
00086
00087 $reviewFormId = Request::getUserVar('reviewFormId') === null? null : (int) Request::getUserVar('reviewFormId');
00088
00089 $journal =& Request::getJournal();
00090 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00091 $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, $journal->getJournalId());
00092
00093 if ($reviewFormId != null && (!isset($reviewForm) || $reviewForm->getCompleteCount() != 0 || $reviewForm->getIncompleteCount() != 0)) {
00094 Request::redirect(null, null, 'reviewForms');
00095 }
00096
00097 import('manager.form.ReviewFormForm');
00098 $reviewFormForm =& new ReviewFormForm($reviewFormId);
00099 $reviewFormForm->readInputData();
00100
00101 if ($reviewFormForm->validate()) {
00102 $reviewFormForm->execute();
00103 Request::redirect(null, null, 'reviewForms');
00104 } else {
00105 ReviewFormHandler::setupTemplate(true, $reviewForm);
00106 $templateMgr =& TemplateManager::getManager();
00107
00108 if ($reviewFormId == null) {
00109 $templateMgr->assign('pageTitle', 'manager.reviewForms.create');
00110 } else {
00111 $templateMgr->assign('pageTitle', 'manager.reviewForms.edit');
00112 }
00113
00114 $reviewFormForm->display();
00115 }
00116 }
00117
00122 function previewReviewForm($args) {
00123 parent::validate();
00124
00125 $reviewFormId = isset($args[0]) ? (int)$args[0] : null;
00126
00127 $journal =& Request::getJournal();
00128 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00129 $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, $journal->getJournalId());
00130 $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
00131 $reviewFormElements =& $reviewFormElementDao->getReviewFormElements($reviewFormId);
00132
00133 if (!isset($reviewForm)) {
00134 Request::redirect(null, null, 'reviewForms');
00135 }
00136
00137 if ($reviewForm->getCompleteCount() != 0 || $reviewForm->getIncompleteCount() != 0) {
00138 ReviewFormHandler::setupTemplate(true);
00139 } else {
00140 ReviewFormHandler::setupTemplate(true, $reviewForm);
00141 }
00142
00143 $templateMgr =& TemplateManager::getManager();
00144
00145 $templateMgr->assign('pageTitle', 'manager.reviewForms.preview');
00146 $templateMgr->assign_by_ref('reviewForm', $reviewForm);
00147 $templateMgr->assign('reviewFormElements', $reviewFormElements);
00148 $templateMgr->register_function('form_language_chooser', array('ReviewFormHandler', 'smartyFormLanguageChooser'));
00149 $templateMgr->assign('helpTopicId','journal.managementPages.reviewForms');
00150 $templateMgr->display('manager/reviewForms/previewReviewForm.tpl');
00151 }
00152
00157 function deleteReviewForm($args) {
00158 parent::validate();
00159
00160 $reviewFormId = isset($args[0]) ? (int)$args[0] : null;
00161
00162 $journal =& Request::getJournal();
00163 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00164 $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, $journal->getJournalId());
00165
00166 if (isset($reviewForm) && $reviewForm->getCompleteCount() == 0 && $reviewForm->getIncompleteCount() == 0) {
00167 $reviewAssignmentDao =& DAORegistry::getDAO('ReviewAssignmentDAO');
00168 $reviewAssignments =& $reviewAssignmentDao->getReviewAssignmentsByReviewFormId($reviewFormId);
00169
00170 foreach ($reviewAssignments as $reviewAssignment) {
00171 $reviewAssignment->setReviewFormId('');
00172 $reviewAssignmentDao->updateReviewAssignment($reviewAssignment);
00173 }
00174
00175 $reviewFormDao->deleteReviewFormById($reviewFormId, $journal->getJournalId());
00176 }
00177
00178 Request::redirect(null, null, 'reviewForms');
00179 }
00180
00185 function activateReviewForm($args) {
00186 parent::validate();
00187
00188 $reviewFormId = isset($args[0]) ? (int)$args[0] : null;
00189
00190 $journal =& Request::getJournal();
00191 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00192 $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, $journal->getJournalId());
00193
00194 if (isset($reviewForm) && !$reviewForm->getActive()) {
00195 $reviewForm->setActive(1);
00196 $reviewFormDao->updateReviewForm($reviewForm);
00197 }
00198
00199 Request::redirect(null, null, 'reviewForms');
00200 }
00201
00206 function deactivateReviewForm($args) {
00207 parent::validate();
00208
00209 $reviewFormId = isset($args[0]) ? (int)$args[0] : null;
00210
00211 $journal =& Request::getJournal();
00212 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00213 $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, $journal->getJournalId());
00214
00215 if (isset($reviewForm) && $reviewForm->getActive()) {
00216 $reviewForm->setActive(0);
00217 $reviewFormDao->updateReviewForm($reviewForm);
00218 }
00219
00220 Request::redirect(null, null, 'reviewForms');
00221 }
00222
00226 function copyReviewForm($args) {
00227 parent::validate();
00228
00229 $reviewFormId = isset($args[0]) ? (int)$args[0] : null;
00230
00231 $journal =& Request::getJournal();
00232 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00233 $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, $journal->getJournalId());
00234
00235 if (isset($reviewForm)) {
00236 $reviewForm->setActive(0);
00237 $reviewForm->setSequence(REALLY_BIG_NUMBER);
00238 $newReviewFormId = $reviewFormDao->insertReviewForm($reviewForm);
00239 $reviewFormDao->resequenceReviewForms($journal->getJournalId());
00240
00241 $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
00242 $reviewFormElements =& $reviewFormElementDao->getReviewFormElements($reviewFormId);
00243 foreach ($reviewFormElements as $reviewFormElement) {
00244 $reviewFormElement->setReviewFormId($newReviewFormId);
00245 $reviewFormElement->setSequence(REALLY_BIG_NUMBER);
00246 $reviewFormElementDao->insertReviewFormElement($reviewFormElement);
00247 $reviewFormElementDao->resequenceReviewFormElements($newReviewFormId);
00248 }
00249
00250 }
00251
00252 Request::redirect(null, null, 'reviewForms');
00253 }
00254
00258 function moveReviewForm() {
00259 parent::validate();
00260
00261 $journal =& Request::getJournal();
00262 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00263 $reviewForm =& $reviewFormDao->getReviewForm(Request::getUserVar('reviewFormId'), $journal->getJournalId());
00264
00265 if (isset($reviewForm)) {
00266 $reviewForm->setSequence($reviewForm->getSequence() + (Request::getUserVar('d') == 'u' ? -1.5 : 1.5));
00267 $reviewFormDao->updateReviewForm($reviewForm);
00268 $reviewFormDao->resequenceReviewForms($journal->getJournalId());
00269 }
00270
00271 Request::redirect(null, null, 'reviewForms');
00272 }
00273
00277 function reviewFormElements($args) {
00278 parent::validate();
00279
00280 $reviewFormId = isset($args[0]) ? $args[0] : null;
00281
00282 $journal =& Request::getJournal();
00283 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00284 $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, $journal->getJournalId());
00285
00286 if (!isset($reviewForm) || $reviewForm->getCompleteCount() != 0 || $reviewForm->getIncompleteCount() != 0) {
00287 Request::redirect(null, null, 'reviewForms');
00288 }
00289
00290 $rangeInfo =& Handler::getRangeInfo('reviewFormElements');
00291 $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
00292 $reviewFormElements =& $reviewFormElementDao->getReviewFormElementsByReviewForm($reviewFormId, $rangeInfo);
00293
00294 $unusedReviewFormTitles =& $reviewFormDao->getJournalReviewFormTitles($journal->getJournalId(), 0);
00295
00296 ReviewFormHandler::setupTemplate(true, $reviewForm);
00297 $templateMgr =& TemplateManager::getManager();
00298
00299 $templateMgr->assign_by_ref('unusedReviewFormTitles', $unusedReviewFormTitles);
00300 $templateMgr->assign_by_ref('reviewFormElements', $reviewFormElements);
00301 $templateMgr->assign('reviewFormId', $reviewFormId);
00302 import('reviewForm.ReviewFormElement');
00303 $templateMgr->assign_by_ref('reviewFormElementTypeOptions', ReviewFormElement::getReviewFormElementTypeOptions());
00304 $templateMgr->assign('helpTopicId','journal.managementPages.reviewForms');
00305 $templateMgr->display('manager/reviewForms/reviewFormElements.tpl');
00306 }
00307
00311 function createReviewFormElement($args) {
00312 ReviewFormHandler::editReviewFormElement($args);
00313 }
00314
00319 function editReviewFormElement($args) {
00320 parent::validate();
00321
00322 $reviewFormId = isset($args[0]) ? (int)$args[0] : null;
00323 $reviewFormElementId = isset($args[1]) ? (int) $args[1] : null;
00324
00325 $journal =& Request::getJournal();
00326 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00327 $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, $journal->getJournalId());
00328 $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
00329
00330 if (!isset($reviewForm) || $reviewForm->getCompleteCount() != 0 || $reviewForm->getIncompleteCount() != 0 || ($reviewFormElementId != null && !$reviewFormElementDao->reviewFormElementExists($reviewFormElementId, $reviewFormId))) {
00331 Request::redirect(null, null, 'reviewFormElements', array($reviewFormId));
00332 }
00333
00334 ReviewFormHandler::setupTemplate(true, $reviewForm);
00335 $templateMgr =& TemplateManager::getManager();
00336
00337 if ($reviewFormElementId == null) {
00338 $templateMgr->assign('pageTitle', 'manager.reviewFormElements.create');
00339 } else {
00340 $templateMgr->assign('pageTitle', 'manager.reviewFormElements.edit');
00341 }
00342
00343 import('manager.form.ReviewFormElementForm');
00344 $reviewFormElementForm =& new ReviewFormElementForm($reviewFormId, $reviewFormElementId);
00345 if ($reviewFormElementForm->isLocaleResubmit()) {
00346 $reviewFormElementForm->readInputData();
00347 } else {
00348 $reviewFormElementForm->initData();
00349 }
00350
00351 $reviewFormElementForm->display();
00352 }
00353
00357 function updateReviewFormElement() {
00358 parent::validate();
00359
00360 $reviewFormId = Request::getUserVar('reviewFormId') === null? null : (int) Request::getUserVar('reviewFormId');
00361 $reviewFormElementId = Request::getUserVar('reviewFormElementId') === null? null : (int) Request::getUserVar('reviewFormElementId');
00362
00363 $journal =& Request::getJournal();
00364 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00365 $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
00366
00367 if (!$reviewFormDao->unusedReviewFormExists($reviewFormId, $journal->getJournalId()) || ($reviewFormElementId != null && !$reviewFormElementDao->reviewFormElementExists($reviewFormElementId, $reviewFormId))) {
00368 Request::redirect(null, null, 'reviewFormElements', array($reviewFormId));
00369 }
00370
00371 import('manager.form.ReviewFormElementForm');
00372 $reviewFormElementForm =& new ReviewFormElementForm($reviewFormId, $reviewFormElementId);
00373 $reviewFormElementForm->readInputData();
00374 $formLocale = $reviewFormElementForm->getFormLocale();
00375
00376
00377 $response = $reviewFormElementForm->getData('possibleResponses');
00378 if (isset($response[$formLocale]) && is_array($response[$formLocale])) {
00379 usort($response[$formLocale], create_function('$a,$b','return $a[\'order\'] == $b[\'order\'] ? 0 : ($a[\'order\'] < $b[\'order\'] ? -1 : 1);'));
00380 }
00381 $reviewFormElementForm->setData('possibleResponses', $response);
00382
00383 if (Request::getUserVar('addResponse')) {
00384
00385 $editData = true;
00386 $response = $reviewFormElementForm->getData('possibleResponses');
00387 if (!isset($response[$formLocale]) || !is_array($response[$formLocale])) {
00388 $response[$formLocale] = array();
00389 $lastOrder = 0;
00390 } else {
00391 $lastOrder = $response[$formLocale][count($response[$formLocale])-1]['order'];
00392 }
00393 array_push($response[$formLocale], array('order' => $lastOrder+1));
00394 $reviewFormElementForm->setData('possibleResponses', $response);
00395
00396 } else if (($delResponse = Request::getUserVar('delResponse')) && count($delResponse) == 1) {
00397
00398 $editData = true;
00399 list($delResponse) = array_keys($delResponse);
00400 $delResponse = (int) $delResponse;
00401 $response = $reviewFormElementForm->getData('possibleResponses');
00402 if (!isset($response[$formLocale])) $response[$formLocale] = array();
00403 array_splice($response[$formLocale], $delResponse, 1);
00404 $reviewFormElementForm->setData('possibleResponses', $response);
00405 }
00406
00407 if (!isset($editData) && $reviewFormElementForm->validate()) {
00408 $reviewFormElementForm->execute();
00409 Request::redirect(null, null, 'reviewFormElements', array($reviewFormId));
00410 } else {
00411 $journal =& Request::getJournal();
00412 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00413 $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, $journal->getJournalId());
00414
00415 ReviewFormHandler::setupTemplate(true, $reviewForm);
00416 $templateMgr =& TemplateManager::getManager();
00417 if ($reviewFormElementId == null) {
00418 $templateMgr->assign('pageTitle', 'manager.reviewFormElements.create');
00419 } else {
00420 $templateMgr->assign('pageTitle', 'manager.reviewFormElements.edit');
00421 }
00422
00423 $reviewFormElementForm->display();
00424 }
00425 }
00426
00431 function deleteReviewFormElement($args) {
00432 parent::validate();
00433
00434 $reviewFormId = isset($args[0]) ? (int)$args[0] : null;
00435 $reviewFormElementId = isset($args[1]) ? (int) $args[1] : null;
00436
00437 $journal =& Request::getJournal();
00438 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00439
00440 if ($reviewFormDao->unusedReviewFormExists($reviewFormId, $journal->getJournalId())) {
00441 $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
00442 $reviewFormElementDao->deleteReviewFormElementById($reviewFormElementId);
00443 }
00444 Request::redirect(null, null, 'reviewFormElements', array($reviewFormId));
00445 }
00446
00450 function moveReviewFormElement() {
00451 parent::validate();
00452
00453 $journal =& Request::getJournal();
00454 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00455 $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
00456 $reviewFormElement =& $reviewFormElementDao->getReviewFormElement(Request::getUserVar('reviewFormElementId'));
00457
00458 if (isset($reviewFormElement) && $reviewFormDao->unusedReviewFormExists($reviewFormElement->getReviewFormId(), $journal->getJournalId())) {
00459 $reviewFormElement->setSequence($reviewFormElement->getSequence() + (Request::getUserVar('d') == 'u' ? -1.5 : 1.5));
00460 $reviewFormElementDao->updateReviewFormElement($reviewFormElement);
00461 $reviewFormElementDao->resequenceReviewFormElements($reviewFormElement->getReviewFormId());
00462 }
00463
00464 Request::redirect(null, null, 'reviewFormElements', array($reviewFormElement->getReviewFormId()));
00465 }
00466
00470 function copyReviewFormElement() {
00471 parent::validate();
00472
00473 $copy = Request::getUserVar('copy');
00474 $targetReviewFormId = Request::getUserVar('targetReviewForm');
00475
00476 $journal =& Request::getJournal();
00477 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00478
00479 if ($reviewFormDao->unusedReviewFormExists($targetReviewFormId, $journal->getJournalId())) {
00480 $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
00481 foreach ($copy as $reviewFormElementId) {
00482 $reviewFormElement =& $reviewFormElementDao->getReviewFormElement($reviewFormElementId);
00483 if (isset($reviewFormElement) && $reviewFormDao->unusedReviewFormExists($reviewFormElement->getReviewFormId(), $journal->getJournalId())) {
00484 $reviewFormElement->setReviewFormId($targetReviewFormId);
00485 $reviewFormElement->setSequence(REALLY_BIG_NUMBER);
00486 $reviewFormElementDao->insertReviewFormElement($reviewFormElement);
00487 $reviewFormElementDao->resequenceReviewFormElements($targetReviewFormId);
00488 }
00489 unset($reviewFormElement);
00490 }
00491 }
00492
00493 Request::redirect(null, null, 'reviewFormElements', array($targetReviewFormId));
00494 }
00495
00496 function setupTemplate($subclass = false, $reviewForm = null) {
00497 parent::setupTemplate(true);
00498 if ($subclass) {
00499 $templateMgr =& TemplateManager::getManager();
00500 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'reviewForms'), 'manager.reviewForms'));
00501 }
00502 if ($reviewForm) {
00503 $templateMgr->append('pageHierarchy', array(Request::url(null, 'manager', 'editReviewForm', $reviewForm->getReviewFormId()), $reviewForm->getReviewFormTitle(), true));
00504 }
00505 }
00506 }
00507
00508 ?>