コード例 #1
0
 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()));
         }
     }
 }