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;
}