/**
  * 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);
     }
 }