ReviewFormElementForm::execute PHP Method

execute() public method

Save review form element.
public execute ( $request ) : integer
$request PKPRequest
return integer 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;
    }

Usage Example

 /**
  * Save changes to a review form element.
  * @param $args array
  * @param $request PKPRequest
  * @return JSONMessage JSON object
  */
 function updateReviewFormElement($args, $request)
 {
     $reviewFormElementId = (int) $request->getUserVar('reviewFormElementId');
     $context = $request->getContext();
     $reviewFormDao = DAORegistry::getDAO('ReviewFormDAO');
     $reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO');
     $reviewForm = $reviewFormDao->getById($this->reviewFormId, Application::getContextAssocType(), $context->getId());
     if (!$reviewFormDao->unusedReviewFormExists($this->reviewFormId, Application::getContextAssocType(), $context->getId()) || $reviewFormElementId && !$reviewFormElementDao->reviewFormElementExists($reviewFormElementId, $this->reviewFormId)) {
         fatalError('Invalid review form information!');
     }
     import('lib.pkp.controllers.grid.settings.reviewForms.form.ReviewFormElementForm');
     $reviewFormElementForm = new ReviewFormElementForm($this->reviewFormId, $reviewFormElementId);
     $reviewFormElementForm->readInputData();
     if ($reviewFormElementForm->validate()) {
         $reviewFormElementId = $reviewFormElementForm->execute($request);
         // Create the notification.
         $notificationMgr = new NotificationManager();
         $user = $request->getUser();
         $notificationMgr->createTrivialNotification($user->getId());
         return DAO::getDataChangedEvent($reviewFormElementId);
     }
     return new JSONMessage(false);
 }
All Usage Examples Of ReviewFormElementForm::execute