/** * Deletes raw content data. * * @param int $contentId */ public function removeRawContent($contentId) { $this->locationGateway->removeElementFromTrash($this->loadContentInfo($contentId)->mainLocationId); foreach ($this->listVersions($contentId) as $versionInfo) { $this->fieldHandler->deleteFields($contentId, $versionInfo); } // Must be called before deleteRelations() $this->contentGateway->removeReverseFieldRelations($contentId); $this->contentGateway->deleteRelations($contentId); $this->contentGateway->deleteVersions($contentId); $this->contentGateway->deleteNames($contentId); $this->contentGateway->deleteContent($contentId); }
/** * Copy Content with Fields and Versions from $contentId in $version. * * Copies all fields from $contentId in $versionNo (or all versions if null) * to a new object which is returned. Version numbers are maintained. * * @todo Should relations be copied? Which ones? * * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException If content or version is not found * * @param mixed $contentId * @param mixed|null $versionNo Copy all versions if left null * * @return \eZ\Publish\SPI\Persistence\Content */ public function copy($contentId, $versionNo = null) { $currentVersionNo = isset($versionNo) ? $versionNo : $this->loadContentInfo($contentId)->currentVersionNo; // Copy content in given version or current version $createStruct = $this->mapper->createCreateStructFromContent($this->load($contentId, $currentVersionNo)); $content = $this->internalCreate($createStruct, $currentVersionNo); $contentType = $this->contentTypeHandler->load($createStruct->typeId); // If version was not passed also copy other versions if (!isset($versionNo)) { foreach ($this->listVersions($contentId) as $versionInfo) { if ($versionInfo->versionNo === $currentVersionNo) { continue; } $versionContent = $this->load($contentId, $versionInfo->versionNo); $versionContent->versionInfo->contentInfo->id = $content->versionInfo->contentInfo->id; $versionContent->versionInfo->modificationDate = $createStruct->modified; $versionContent->versionInfo->creationDate = $createStruct->modified; $versionContent->versionInfo->id = $this->contentGateway->insertVersion($versionContent->versionInfo, $versionContent->fields); $this->fieldHandler->createNewFields($versionContent, $contentType); // Create names foreach ($versionContent->versionInfo->names as $language => $name) { $this->contentGateway->setName($content->versionInfo->contentInfo->id, $versionInfo->versionNo, $name, $language); } } } return $content; }