public function saveTopicPosition(Topic $node, $params)
{
if (isset($params['parent']) && $params['parent']) {
$repository = $this->getTopicRepository();
$parent = $repository->findOneBy(array('id' => $params['parent']));
if (!$parent) {
return false;
}
$node->setOrder(null);
foreach ($params as $key => $isSet) {
switch ($key) {
case 'first':
if ($isSet) {
$repository->persistAsFirstChildOf($node, $parent);
}
break;
case 'last':
if ($isSet) {
$repository->persistAsLastChildOf($node, $parent);
}
break;
case 'middle':
if ($isSet) {
$repository->persistAsNextSiblingOf($node, $parent);
}
break;
default:
break;
}
}
}
// when dragging children to roots
if (isset($params['asRoot']) && $params['asRoot']) {
$node->setParent(null);
}
$metadata = $this->em->getClassMetaData(get_class($node));
$metadata->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_NONE);
$this->em->flush();
return true;
}