private function patchSiblingAndParentOperation(MediaFolder $mediaFolder, &$operations) { $sibling_operation = null; $parent_operation = null; foreach ($operations as $key => $operation) { $op = array('key' => $key, 'op' => $operation); if ('/sibling_uid' === $operation['path']) { $sibling_operation = $op; } elseif ('/parent_uid' === $operation['path']) { $parent_operation = $op; } } if (null !== $sibling_operation || null !== $parent_operation) { if ($mediaFolder->isRoot()) { throw new BadRequestHttpException('Cannot move root node of a site.'); } try { if (null !== $sibling_operation) { unset($operations[$sibling_operation['key']]); $sibling = $this->getMediaFolderByUid($sibling_operation['op']['value']); $this->getMediaFolderRepository()->moveAsPrevSiblingOf($mediaFolder, $sibling); } elseif (null !== $parent_operation) { unset($operations[$parent_operation['key']]); $parent = $this->getMediaFolderByUid($parent_operation['op']['value']); $this->getMediaFolderRepository()->moveAsLastChildOf($mediaFolder, $parent); } } catch (InvalidArgumentException $e) { throw new BadRequestHttpException(sprintf('Invalid node move action: %s', $e->getMessage())); } } }