/** * Copies a subtree to a new destination. * * @param string $locationPath * * @return \eZ\Publish\Core\REST\Server\Values\ResourceCreated */ public function copySubtree($locationPath, Request $request) { $location = $this->locationService->loadLocation($this->extractLocationIdFromPath($locationPath)); $destinationLocation = $this->locationService->loadLocation($this->extractLocationIdFromPath($this->requestParser->parseHref($request->headers->get('Destination'), 'locationPath'))); $newLocation = $this->locationService->copySubtree($location, $destinationLocation); return new Values\ResourceCreated($this->router->generate('ezpublish_rest_loadLocation', array('locationPath' => trim($newLocation->pathString, '/')))); }
/** * Copies the subtree starting from $subtree as a new subtree of $targetLocation * * Only the items on which the user has read access are copied. * * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If the current user user is not allowed copy the subtree to the given parent location * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If the current user user does not have read access to the whole source subtree * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if the target location is a sub location of the given location * * @param \eZ\Publish\API\Repository\Values\Content\Location $subtree - the subtree denoted by the location to copy * @param \eZ\Publish\API\Repository\Values\Content\Location $targetParentLocation - the target parent location for the copy operation * * @return \eZ\Publish\API\Repository\Values\Content\Location The newly created location of the copied subtree */ public function copySubtree(Location $subtree, Location $targetParentLocation) { $returnValue = $this->service->copySubtree($subtree, $targetParentLocation); $this->signalDispatcher->emit(new CopySubtreeSignal(array('subtreeId' => $subtree->id, 'targetParentLocationId' => $targetParentLocation->id, 'targetNewSubtreeId' => $returnValue->id))); return $returnValue; }