/**
  * Creating sorted array of nodes
  *
  * @param array $children
  * @param string $path
  * @param Varien_Object $parent
  */
 public function addChildNodes($children, $path, $parent)
 {
     if (isset($children[$path])) {
         foreach ($children[$path] as $child) {
             $childrenNodes = $parent->getChildrenNodes();
             if ($childrenNodes && isset($childrenNodes[$child->getId()])) {
                 $childrenNodes[$child['entity_id']]->setChildrenNodes(array($child->getId() => $child));
             } else {
                 if ($childrenNodes) {
                     $childrenNodes[$child->getId()] = $child;
                 } else {
                     $childrenNodes = array($child->getId() => $child);
                 }
                 $parent->setChildrenNodes($childrenNodes);
             }
             if ($path) {
                 $childrenPath = explode('/', $path);
             } else {
                 $childrenPath = array();
             }
             $childrenPath[] = $child->getId();
             $childrenPath = implode('/', $childrenPath);
             $this->addChildNodes($children, $childrenPath, $child);
         }
     }
 }
Example #2
0
 /**
  * Retrives frame object
  * @param Varien_Object $object Category Tree Node
  * @return Varien_Object
  */
 protected function _getFrame(Varien_Object $object, $level = 1)
 {
     $frame = new Varien_Object();
     $frame->setFrameId('category' . $object->getId());
     $frame->setFrameCategoryId($object->getId());
     $frame->setHeader($object->getName());
     $frame->setLevel($level + 1);
     if (Mage::getStoreConfig('catalog/frontend/flat_catalog_category')) {
         $frame->setChildren($object->getChildrenNodes());
     } else {
         $frame->setChildren($object->getChildren());
     }
     $frame->setChildrenCount($this->__getChildrenCount($object));
     if (Mage::getStoreConfig('catalog/frontend/flat_catalog_category')) {
         if (is_array($frame->getChildrenNodes()) || is_object($frame->getChildrenNodes()) && get_class($frame->getChildrenNodes()) == 'Varien_Data_Tree_Node_Collection') {
             foreach ($frame->getChildrenNodes() as $child) {
                 $this->_frames[] = $this->_getFrame($child, $level + 1);
             }
         }
     } else {
         if (is_array($frame->getChildren()) || is_object($frame->getChildren()) && get_class($frame->getChildren()) == 'Varien_Data_Tree_Node_Collection') {
             foreach ($frame->getChildren() as $child) {
                 $this->_frames[] = $this->_getFrame($child, $level + 1);
             }
         }
     }
     return $frame;
 }