/**
  * Save review form element.
  */
 function execute()
 {
     $reviewFormElementDao =& DAORegistry::getDAO('ReviewFormElementDAO');
     if ($this->reviewFormElementId != null) {
         $reviewFormElement =& $reviewFormElementDao->getReviewFormElement($this->reviewFormElementId);
     }
     if (!isset($reviewFormElement)) {
         $reviewFormElement = new ReviewFormElement();
         $reviewFormElement->setReviewFormId($this->reviewFormId);
         $reviewFormElement->setSequence(REALLY_BIG_NUMBER);
     }
     $reviewFormElement->setQuestion($this->getData('question'), null);
     // Localized
     $reviewFormElement->setRequired($this->getData('required') ? 1 : 0);
     $reviewFormElement->setIncluded($this->getData('included') ? 1 : 0);
     $reviewFormElement->setElementType($this->getData('elementType'));
     if (in_array($this->getData('elementType'), ReviewFormElement::getMultipleResponsesElementTypes())) {
         $reviewFormElement->setPossibleResponses($this->getData('possibleResponses'), null);
         // Localized
     } else {
         $reviewFormElement->setPossibleResponses(null, null);
     }
     if ($reviewFormElement->getId() != null) {
         $reviewFormElementDao->deleteSetting($reviewFormElement->getId(), 'possibleResponses');
         $reviewFormElementDao->updateObject($reviewFormElement);
         $this->reviewFormElementId = $reviewFormElement->getId();
     } else {
         $this->reviewFormElementId = $reviewFormElementDao->insertObject($reviewFormElement);
         $reviewFormElementDao->resequenceReviewFormElements($this->reviewFormId);
     }
 }
 /**
  * Save review form element.
  * @param $request PKPRequest
  * @return int Review form element ID
  */
 function execute($request)
 {
     $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO');
     if ($this->reviewFormElementId) {
         $context = $request->getContext();
         $reviewFormElement = $reviewFormElementDao->getById($this->reviewFormElementId);
         $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO');
         $reviewForm = $reviewFormDao->getById($reviewFormElement->getReviewFormId(), Application::getContextAssocType(), $context->getId());
         if (!$reviewForm) {
             fatalError('Invalid review form element ID!');
         }
     } else {
         $reviewFormElement = $reviewFormElementDao->newDataObject();
         $reviewFormElement->setReviewFormId($this->reviewFormId);
         $reviewFormElement->setSequence(REALLY_BIG_NUMBER);
     }
     $reviewFormElement->setQuestion($this->getData('question'), null);
     // Localized
     $reviewFormElement->setRequired($this->getData('required') ? 1 : 0);
     $reviewFormElement->setIncluded($this->getData('included') ? 1 : 0);
     $reviewFormElement->setElementType($this->getData('elementType'));
     if (in_array($this->getData('elementType'), ReviewFormElement::getMultipleResponsesElementTypes())) {
         $this->setData('possibleResponsesProcessed', $reviewFormElement->getPossibleResponses(null));
         ListbuilderHandler::unpack($request, $this->getData('possibleResponses'), array($this, 'deleteEntry'), array($this, 'insertEntry'), array($this, 'updateEntry'));
         $reviewFormElement->setPossibleResponses($this->getData('possibleResponsesProcessed'), null);
     } else {
         $reviewFormElement->setPossibleResponses(null, null);
     }
     if ($reviewFormElement->getId()) {
         $reviewFormElementDao->deleteSetting($reviewFormElement->getId(), 'possibleResponses');
         $reviewFormElementDao->updateObject($reviewFormElement);
     } else {
         $this->reviewFormElementId = $reviewFormElementDao->insertObject($reviewFormElement);
         $reviewFormElementDao->resequenceReviewFormElements($this->reviewFormId);
     }
     return $this->reviewFormElementId;
 }