/** * Update object for review. * @param $args array * @param $request PKPRequest */ function updateObjectForReview($args, &$request) { $objectId = (int) $request->getUserVar('objectId'); $reviewObjectTypeId = (int) $request->getUserVar('reviewObjectTypeId'); $journal =& $request->getJournal(); $journalId = $journal->getId(); if ($objectId && !$this->_ensureObjectExists($objectId, $journalId, $reviewObjectTypeId)) { $request->redirect(null, 'editor', 'objectsForReview'); } $ofrPlugin =& $this->_getObjectsForReviewPlugin(); $ofrPlugin->import('classes.form.ObjectForReviewForm'); $ofrForm = new ObjectForReviewForm($ofrPlugin->getName(), $objectId, $reviewObjectTypeId); $ofrForm->readInputData(); // Add a role block if ($request->getUserVar('addPerson')) { $editData = true; $persons = $ofrForm->getData('persons'); array_push($persons, array()); $ofrForm->setData('persons', $persons); // Delete persons } else { if (($delPerson = $request->getUserVar('delPerson')) && count($delPerson) == 1) { $editData = true; list($delPerson) = array_keys($delPerson); $delPerson = (int) $delPerson; $persons = $ofrForm->getData('persons'); if (isset($persons[$delPerson]['personId']) && !empty($persons[$delPerson]['personId'])) { $deletedPersons = explode(':', $ofrForm->getData('deletedPersons')); array_push($deletedPersons, $persons[$delPerson]['personId']); $ofrForm->setData('deletedPersons', join(':', $deletedPersons)); } array_splice($persons, $delPerson, 1); $ofrForm->setData('persons', $persons); // Change person order } else { if ($request->getUserVar('movePerson')) { $editData = true; $movePersonDir = $request->getUserVar('movePersonDir'); $movePersonDir = $movePersonDir == 'u' ? 'u' : 'd'; $movePersonIndex = (int) $request->getUserVar('movePersonIndex'); $persons = $ofrForm->getData('persons'); if (!($movePersonDir == 'u' && $movePersonIndex <= 0 || $movePersonDir == 'd' && $movePersonIndex >= count($persons) - 1)) { $tmpPerson = $persons[$movePersonIndex]; if ($movePersonDir == 'u') { $persons[$movePersonIndex] = $persons[$movePersonIndex - 1]; $persons[$movePersonIndex - 1] = $tmpPerson; } else { $persons[$movePersonIndex] = $persons[$movePersonIndex + 1]; $persons[$movePersonIndex + 1] = $tmpPerson; } } $ofrForm->setData('persons', $persons); } } } if (!isset($editData) && $ofrForm->validate()) { $ofrForm->execute(); // Notification if ($objectId) { $notificationType = NOTIFICATION_TYPE_OFR_UPDATED; } else { $notificationType = NOTIFICATION_TYPE_OFR_CREATED; } $this->_createTrivialNotification($notificationType, $request); if ($request->getUserVar('createAnother')) { $request->redirect(null, 'editor', 'createObjectForReview'); } elseif ($request->getUserVar('addPerson') || $request->getUserVar('delPerson') || $request->getUserVar('movePerson')) { $request->redirect(null, 'editor', 'editObjectForReview', $objectId, array('reviewObjectTypeId' => $reviewObjectTypeId)); } else { $request->redirect(null, 'editor', 'objectsForReview'); } } else { $this->setupTemplate($request, true); $templateMgr =& TemplateManager::getManager($request); if ($objectId) { $templateMgr->assign('pageTitle', 'plugins.generic.objectsForReview.editor.edit'); } else { $templateMgr->assign('pageTitle', 'plugins.generic.objectsForReview.editor.create'); } $ofrForm->display($request); } }