/** * Resolves nested child dependencies. * * @param Dependency\ElementEntity $parent * @param int $collection * @param string $nextParentIdentifier * @param int $collectionLevel */ protected function resolveDataArrayChildDependencies(Dependency\ElementEntity $parent, $collection, $nextParentIdentifier = '', $collectionLevel = 0) { $parentIdentifier = $parent->__toString(); $parentIsSet = isset($this->dataArray[$parentIdentifier]); if ($parentIsSet) { $this->dataArray[$parentIdentifier][GridDataService::GridColumn_Collection] = $collection; $this->dataArray[$parentIdentifier][GridDataService::GridColumn_CollectionLevel] = $collectionLevel; $this->dataArray[$parentIdentifier][GridDataService::GridColumn_CollectionCurrent] = md5($parentIdentifier); $this->dataArray[$parentIdentifier][GridDataService::GridColumn_CollectionChildren] = count($parent->getChildren()); $nextParentIdentifier = $parentIdentifier; $collectionLevel++; } foreach ($parent->getChildren() as $child) { $this->resolveDataArrayChildDependencies($child->getElement(), $collection, $nextParentIdentifier, $collectionLevel); $childIdentifier = $child->getElement()->__toString(); if (!empty($nextParentIdentifier) && isset($this->dataArray[$childIdentifier])) { // Remove from dataArray, but collect to process later // and add it just next to the accordant parent element $this->dataArray[$childIdentifier][GridDataService::GridColumn_CollectionParent] = md5($nextParentIdentifier); $this->nestedDataArray[$nextParentIdentifier][] = $this->dataArray[$childIdentifier]; unset($this->dataArray[$childIdentifier]); } } }