On gists
Delete recursively from child to parent
PHP
AW
delete-recursively-from-child.ph
Raw
#
<?php
private function deleteDuplicateRecursive(Tables\Navigation $duplicateItem)
{
/*
// OLD
$findDescendants = function(Tables\Navigation $parent, array $stack = [], $level = 1) use (&$findDescendants) {
$children = $this->navigation->getAdjacencyList($parent->domain_id)->getChildren($parent->id);
foreach ($children as $child) {
$stack[$level][] = $child;
$stack = $findDescendants($child, $stack, $level + 1);
}
return $stack;
};
// mazeme deti odspoda nahoru
$descendants = $findDescendants($duplicateItem);
foreach (array_reverse($descendants, true) as $level => $descendantArr) {
foreach ($descendantArr as $descendant) {
$this->deleteDuplicate($descendant);
}
}
*/
// NEW, better, shorter
$children = $this->navigation->getAdjacencyList($duplicateItem->domain_id)->getChildren($duplicateItem->id);
foreach ($children as $child) {
$this->deleteDuplicateRecursive($child);
}
// na zaver i roota
$this->deleteDuplicate($duplicateItem);
}