/** * Creates a draft from a published or archived version. * * If no version is given, the current published version is used. * 4.x: The draft is created with the initialLanguage code of the source version or if not present with the main language. * It can be changed on updating the version. * * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to create the draft * * @param \eZ\Publish\API\Repository\Values\Content\ContentInfo $contentInfo * @param \eZ\Publish\API\Repository\Values\Content\VersionInfo $versionInfo * @param \eZ\Publish\API\Repository\Values\User\User $user if set given user is used to create the draft - otherwise the current user is used * * @return \eZ\Publish\API\Repository\Values\Content\Content - the newly created content draft */ public function createContentDraft( ContentInfo $contentInfo, VersionInfo $versionInfo = null, User $user = null ) { $returnValue = $this->service->createContentDraft( $contentInfo, $versionInfo, $user ); $this->signalDispatcher->emit( new CreateContentDraftSignal( array( 'contentId' => $contentInfo->id, 'versionNo' => ( $versionInfo !== null ? $versionInfo->versionNo : null ), 'userId' => ( $user !== null ? $user->id : null ), ) ) ); return $returnValue; }