/**
  * Saves content draft corresponding to $data.
  * Depending on the nature of $data (create or update data), the draft will either be created or simply updated.
  *
  * @param ContentStruct|\EzSystems\RepositoryForms\Data\Content\ContentCreateData|\EzSystems\RepositoryForms\Data\Content\ContentUpdateData $data
  * @param $languageCode
  * @return \eZ\Publish\API\Repository\Values\Content\Content
  */
 private function saveDraft(ContentStruct $data, $languageCode)
 {
     foreach ($data->fieldsData as $fieldDefIdentifier => $fieldData) {
         $data->setField($fieldDefIdentifier, $fieldData->value, $languageCode);
     }
     if ($data->isNew()) {
         $contentDraft = $this->contentService->createContent($data, $data->getLocationStructs());
     } else {
         $contentDraft = $this->contentService->updateContent($data->contentDraft->getVersionInfo(), $data);
     }
     return $contentDraft;
 }
Ejemplo n.º 2
0
 /**
  * Updates the fields of a draft.
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to update this version
  * @throws \eZ\Publish\API\Repository\Exceptions\BadStateException if the version is not a draft
  * @throws \eZ\Publish\API\Repository\Exceptions\ContentFieldValidationException if a field in the $contentUpdateStruct is not valid
  * @throws \eZ\Publish\API\Repository\Exceptions\ContentValidationException if a required field is set to an empty value
  * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if a field value is not accepted by the field type
  *
  * @param \eZ\Publish\API\Repository\Values\Content\VersionInfo $versionInfo
  * @param \eZ\Publish\API\Repository\Values\Content\ContentUpdateStruct $contentUpdateStruct
  *
  * @return \eZ\Publish\API\Repository\Values\Content\Content the content draft with the updated fields
  */
 public function updateContent( VersionInfo $versionInfo, ContentUpdateStruct $contentUpdateStruct )
 {
     $returnValue = $this->service->updateContent( $versionInfo, $contentUpdateStruct );
     $this->signalDispatcher->emit(
         new UpdateContentSignal(
             array(
                 'contentId' => $versionInfo->getContentInfo()->id,
                 'versionNo' => $versionInfo->versionNo,
             )
         )
     );
     return $returnValue;
 }