This query can likely be optimized to use some more advanced string
operations, which then depend on the respective database.
abstract public moveSubtreeNodes ( array $fromPathString, array $toPathString ) | ||
$fromPathString | array | |
$toPathString | array |
/** * Moves location identified by $sourceId into new parent identified by $destinationParentId. * * Performs a full move of the location identified by $sourceId to a new * destination, identified by $destinationParentId. Relations do not need * to be updated, since they refer to Content. URLs are not touched. * * @param mixed $sourceId * @param mixed $destinationParentId * * @return boolean */ public function move($sourceId, $destinationParentId) { $sourceNodeData = $this->locationGateway->getBasicNodeData($sourceId); $destinationNodeData = $this->locationGateway->getBasicNodeData($destinationParentId); $this->locationGateway->moveSubtreeNodes($sourceNodeData, $destinationNodeData); $this->locationGateway->updateNodeAssignment($sourceNodeData['contentobject_id'], $sourceNodeData['parent_node_id'], $destinationParentId, Gateway::NODE_ASSIGNMENT_OP_CODE_MOVE); }
/** * Update path strings to move nodes in the ezcontentobject_tree table * * This query can likely be optimized to use some more advanced string * operations, which then depend on the respective database. * * @todo optimize * @param array $fromPathString * @param array $toPathString * * @return void */ public function moveSubtreeNodes(array $fromPathString, array $toPathString) { try { return $this->innerGateway->moveSubtreeNodes($fromPathString, $toPathString); } catch (DBALException $e) { throw new RuntimeException('Database error', 0, $e); } catch (PDOException $e) { throw new RuntimeException('Database error', 0, $e); } }