public static function todosNiveisCategorias(ProdutoCategoria $cate) { $lC = new ListaProdutoCategorias(); if (!($cat = $lC->condicoes('', $cate->getId(), ListaProdutoCategorias::ID)->listar())) { $cat = new ProdutoCategoria(); } if ($cat->disponivel) { if (!empty(self::$condicao)) { $cat->getProdutos()->condicoes('', '', '', '', "SELECT * FROM " . Sistema::$BDPrefixo . "relacionamento_produtos_categorias rpc INNER JOIN " . Sistema::$BDPrefixo . "produtos p ON p.id = rpc.produto WHERE rpc.categoria = '" . $cat->getId() . "' " . self::$condicao)->setGroup(ListaProdutos::ID); } while ($prod = $cat->getProdutos()->listar()) { $adicionar = true; if (!empty($a)) { foreach ($a as $p) { if ($p->getId() == $prod->getId()) { $adicionar = false; break; } } } if ($adicionar) { $a[count($a)] = $prod; } } while ($cats = $cat->getSubCategorias()->listar("ASC")) { $b = self::todosNiveisCategorias($cats); if (!empty($a) && !empty($b)) { foreach ($b as $prod) { $adicionar = true; foreach ($a as $p) { if ($prod->getId() == $p->getId()) { $adicionar = false; break; } } if ($adicionar) { $a[count($a)] = $prod; } } } elseif (!empty($b)) { $a = $b; } } } if (empty($a)) { $a = array(); } return $a; }
function navigateToCategory(ProdutoCategoria $pC) { $array['navegador'] = $pC->getNavegador(); if ($pC->getSubCategorias()->getTotal() > 0) { $array['filhos'] = new ArrayObject(); while ($sPC = $pC->getSubCategorias()->listar('ASC', ListaProdutoCategorias::NOME)) { $array['filhos']->append(navigateToCategory($sPC)); } } else { $array['produtos'] = new ArrayObject(); while ($p = $pC->getProdutos()->listar("ASC", ListaProdutos::NOME)) { $array['produtos']->append($p); } } return $array; }