public function updateVersion($contentId, $versionNumber, Request $request)
{
$contentUpdateStruct = $this->inputDispatcher->parse(new Message(array('Content-Type' => $request->headers->get('Content-Type'), 'Url' => $this->router->generate('ezpublish_rest_updateVersion', array('contentId' => $contentId, 'versionNumber' => $versionNumber))), $request->getContent()));
$versionInfo = $this->repository->getContentService()->loadVersionInfo($this->repository->getContentService()->loadContentInfo($contentId), $versionNumber);
if ($versionInfo->status !== VersionInfo::STATUS_DRAFT) {
throw new ForbiddenException('Only version in status DRAFT can be updated');
}
try {
$this->repository->getContentService()->updateContent($versionInfo, $contentUpdateStruct);
} catch (ContentValidationException $e) {
throw new BadRequestException($e->getMessage());
} catch (ContentFieldValidationException $e) {
throw new RESTContentFieldValidationException($e);
}
$languages = null;
if ($request->query->has('languages')) {
$languages = explode(',', $request->query->get('languages'));
}
// Reload the content to handle languages GET parameter
$content = $this->repository->getContentService()->loadContent($contentId, $languages, $versionInfo->versionNo);
$contentType = $this->repository->getContentTypeService()->loadContentType($content->getVersionInfo()->getContentInfo()->contentTypeId);
return new Values\Version($content, $contentType, $this->repository->getContentService()->loadRelations($content->getVersionInfo()), $request->getPathInfo());
}