Ejemplo n.º 1
0
 public function navigation($idsegm)
 {
     $dbtree = new dbtree(_DB_PREFIX_ . 'category', 'category', $this->db);
     //Достаем категории 1-го уровня
     $navigation = $dbtree->GetCategories(array('id_category', 'category_level', 'name', 'translit', 'pid'), 1);
     //Перебираем категории 2-го и 3-го уровня, отсекая ненужные
     $needed = $dbtree->GetCatSegmentation($idsegm);
     foreach ($navigation as $key1 => &$l1) {
         $level2 = $dbtree->GetSubCats($l1['id_category'], 'all');
         foreach ($level2 as $key2 => &$l2) {
             $level3 = $dbtree->GetSubCats($l2['id_category'], 'all');
             foreach ($level3 as $key3 => &$l3) {
                 if (!in_array($l3['id_category'], $needed)) {
                     unset($level3[$key3]);
                 }
             }
             if (in_array($l2['id_category'], $needed) || !empty($level3)) {
                 $l2['subcats'] = $level3;
             } else {
                 unset($level2[$key2]);
             }
         }
         if (in_array($l1['id_category'], $needed) || !empty($level2)) {
             $l1['subcats'] = $level2;
         } else {
             unset($navigation[$key1]);
         }
     }
     return $navigation;
 }