/** * Save changes to a review form element. */ function updateReviewFormElement() { parent::validate(); $reviewFormId = Request::getUserVar('reviewFormId') === null ? null : (int) Request::getUserVar('reviewFormId'); $reviewFormElementId = Request::getUserVar('reviewFormElementId') === null ? null : (int) Request::getUserVar('reviewFormElementId'); $journal =& Request::getJournal(); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO'); if (!$reviewFormDao->unusedReviewFormExists($reviewFormId, $journal->getJournalId()) || $reviewFormElementId != null && !$reviewFormElementDao->reviewFormElementExists($reviewFormElementId, $reviewFormId)) { Request::redirect(null, null, 'reviewFormElements', array($reviewFormId)); } import('manager.form.ReviewFormElementForm'); $reviewFormElementForm =& new ReviewFormElementForm($reviewFormId, $reviewFormElementId); $reviewFormElementForm->readInputData(); $formLocale = $reviewFormElementForm->getFormLocale(); // Reorder response items $response = $reviewFormElementForm->getData('possibleResponses'); if (isset($response[$formLocale]) && is_array($response[$formLocale])) { usort($response[$formLocale], create_function('$a,$b', 'return $a[\'order\'] == $b[\'order\'] ? 0 : ($a[\'order\'] < $b[\'order\'] ? -1 : 1);')); } $reviewFormElementForm->setData('possibleResponses', $response); if (Request::getUserVar('addResponse')) { // Add a response item $editData = true; $response = $reviewFormElementForm->getData('possibleResponses'); if (!isset($response[$formLocale]) || !is_array($response[$formLocale])) { $response[$formLocale] = array(); $lastOrder = 0; } else { $lastOrder = $response[$formLocale][count($response[$formLocale]) - 1]['order']; } array_push($response[$formLocale], array('order' => $lastOrder + 1)); $reviewFormElementForm->setData('possibleResponses', $response); } else { if (($delResponse = Request::getUserVar('delResponse')) && count($delResponse) == 1) { // Delete a response item $editData = true; list($delResponse) = array_keys($delResponse); $delResponse = (int) $delResponse; $response = $reviewFormElementForm->getData('possibleResponses'); if (!isset($response[$formLocale])) { $response[$formLocale] = array(); } array_splice($response[$formLocale], $delResponse, 1); $reviewFormElementForm->setData('possibleResponses', $response); } } if (!isset($editData) && $reviewFormElementForm->validate()) { $reviewFormElementForm->execute(); Request::redirect(null, null, 'reviewFormElements', array($reviewFormId)); } else { $journal =& Request::getJournal(); $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO'); $reviewForm =& $reviewFormDao->getReviewForm($reviewFormId, $journal->getJournalId()); ReviewFormHandler::setupTemplate(true, $reviewForm); $templateMgr =& TemplateManager::getManager(); if ($reviewFormElementId == null) { $templateMgr->assign('pageTitle', 'manager.reviewFormElements.create'); } else { $templateMgr->assign('pageTitle', 'manager.reviewFormElements.edit'); } $reviewFormElementForm->display(); } }
function copyReviewFormElement() { import('pages.manager.ReviewFormHandler'); ReviewFormHandler::copyReviewFormElement(); }