protected function internalPublishVersion(APIVersionInfo $versionInfo, $publicationDate = null)
{
if ($versionInfo->status !== APIVersionInfo::STATUS_DRAFT) {
throw new BadStateException('$versionInfo', 'Only versions in draft status can be published.');
}
$currentTime = time();
if ($publicationDate === null && $versionInfo->versionNo === 1) {
$publicationDate = $currentTime;
}
$metadataUpdateStruct = new SPIMetadataUpdateStruct();
$metadataUpdateStruct->publicationDate = $publicationDate;
$metadataUpdateStruct->modificationDate = $currentTime;
$spiContent = $this->persistenceHandler->contentHandler()->publish($versionInfo->getContentInfo()->id, $versionInfo->versionNo, $metadataUpdateStruct);
$content = $this->domainMapper->buildContentDomainObject($spiContent);
$this->publishUrlAliasesForContent($content);
return $content;
}