public static function buscaTodasCategorias($a = '')
 {
     self::$condicao = $a;
     $lC = new ListaProdutoCategorias();
     $lC->condicoes(array(1 => array('campo' => ListaProdutoCategorias::CATEGORIAPAI, 'valor' => '')));
     while ($cat = $lC->listar()) {
         if (empty($prods)) {
             $prods = self::todosNiveisCategorias($cat);
         } else {
             $array = self::todosNiveisCategorias($cat);
             foreach ($array as $prod) {
                 $adicionar = true;
                 foreach ($prods as $p) {
                     if ($prod->getId() == $p->getId()) {
                         $adicionar = false;
                         break;
                     }
                 }
                 if ($adicionar) {
                     $prods[count($prods)] = $prod;
                 }
             }
         }
     }
     return $prods;
 }
function menu_produtos($ref = "", $subref = 0, $nivel = 0)
{
    $con = BDConexao::__Abrir();
    $con2 = BDConexao::__Abrir();
    if ($ref == "") {
        $con->executar("SELECT * FROM `grupos` WHERE grp_classif LIKE '1.01.01.05.001%' OR grp_classif LIKE '1.01.01.03.001.004%' GROUP BY grp_classif ORDER BY grp_classif ASC");
    }
    $ordem = 0;
    $idPai = str_replace(".", "", str_replace(" ", "", $ref));
    $lPC = new ListaProdutoCategorias();
    while ($row = $con->getRegistro()) {
        $ordem++;
        $id = str_replace(".", "", str_replace(" ", "", $row['grp_classif']));
        $lPC->condicoes("", $id, ListaProdutoCategorias::ID);
        if ($lPC->getTotal() > 0) {
            $pC = $lPC->listar();
            $pC->nome = Strings::__PrimeirasLetrasMaiusculas($row['grp_descricao']);
            $pC->getURL()->setURL(URL::cleanURL($pC->nome));
            $pC->ordem = $ordem;
            $pC->subreferencia = $row['grp_classif'];
            $lPC->alterar($pC);
        } else {
            $con2->executar("INSERT INTO " . Sistema::$BDPrefixo . "produtos_categorias (id, categoriapai) VALUES('" . $id . "','" . $idPai . "')");
            $lPC->condicoes("", $id, ListaProdutoCategorias::ID);
            $pC = $lPC->listar();
            $pC->nome = Strings::__PrimeirasLetrasMaiusculas($row['grp_descricao']);
            $pC->getURL()->setURL(URL::cleanURL($pC->nome));
            $pC->ordem = $ordem;
            $pC->disponivel = 1;
            $pC->subreferencia = $row['grp_classif'];
            $lPC->alterar($pC);
        }
        //if($nivel == 0){
        //	menu_produtos($row['grp_classif'], 0, $nivel+1);
        //}
    }
}
         $t->conteudo = $p->tipoUnidade;
         $t->traducao = $_POST['itipoUnidade'][$i->getId()];
         $i->getTraducoes()->alterar($t);
     } else {
         $t = new Traducao();
         $t->conteudo = $p->tipoUnidade;
         $t->traducao = $_POST['itipoUnidade'][$i->getId()];
         $t->setIdConteudo($p->getId());
         $t->setCampoConteudo(ListaProdutos::TIPOUNIDADE);
         $t->setTabelaConteudo($lP->getTabela());
         $i->addTraducao($t);
     }
 }
 $con = BDConexao::__Abrir();
 $con->deletar(Sistema::$BDPrefixo . "relacionamento_produtos_categorias", "WHERE produto = '" . $p->getId() . "'");
 $lPC = new ListaProdutoCategorias();
 if (!empty($_POST['categoriasSelecionadas'])) {
     foreach ($_POST['categoriasSelecionadas'] as $valor) {
         $lPC->condicoes('', $valor, ListaProdutoCategorias::ID);
         if ($lPC->getTotal() > 0) {
             $pC = $lPC->listar();
             $p->addCategoria($pC);
         }
     }
 }
 if (!empty($_POST['remover'])) {
     $lI = new ListaImagens();
     $lI->caminhoEscrita = Sistema::$caminhoDiretorio . Sistema::$caminhoDataProdutos;
     $lI->caminhoLeitura = $lI->caminhoEscrita;
     foreach ($_POST['remover'] as $id) {
         $lI->condicoes('', $id, ListaImagens::ID);
 public function getIdAllSubCategoria()
 {
     $a = array();
     $a[' ' . $this->getId()] = true;
     $subC = new ListaProdutoCategorias();
     $aPC[1] = array('campo' => ListaProdutoCategorias::CATEGORIAPAI, 'valor' => $this->getId());
     $subC->condicoes($aPC);
     while ($sub = $subC->listar()) {
         $a[' ' . $sub->getId()] = true;
         $b = $sub->getIdAllSubCategoria();
         if (count($b) > 0) {
             $a = array_merge($a, $b);
         }
     }
     return $a;
 }
     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;
 }
 if ($cond) {
     $rsT = new ArrayObject();
     $lPC = new ListaProdutoCategorias();
     $lPC->condicoes($cond);
     while ($pC = $lPC->listar("ASC", ListaProdutoCategorias::NOME)) {
         $rsT->append(navigateToCategory($pC));
     }
 } else {
     $rsT = new ArrayObject();
     $pCP = new ProdutoCategoria();
     while ($pC = $pCP->getSubCategorias()->listar("ASC", ListaProdutoCategorias::NOME)) {
         $rsT->append(navigateToCategory($pC));
     }
 }
 $rs = $rsT;
 //$rs = Arrays::ArrayOrderBy($rsT, 'nome', SORT_ASC);
 //unset($rsT);
 $iGR = new IFAdmin(new Arquivos(Sistema::$adminLayoutCaminhoDiretorio . "/SistemaRelatorios/relatorioProduto.html"));
$iLPC = new IFAdmin(new Arquivos(Sistema::$adminLayoutCaminhoDiretorio . "/SistemaProdutos/listarProdutoCategorias.html"));
$iLPC->trocar("linkDeletar.ProdutoCategoria", "?p=" . $_GET['p'] . "&a=" . $_GET['a'] . "&");
$iLPC->trocar("linkBuscar.ProdutoCategoria", "?p=" . $_GET['p'] . "&");
if (!empty($_GET['deletar'])) {
    $lPC = new ListaProdutoCategorias();
    $lPC->condicoes('', $_GET['deletar'], ListaProdutoCategorias::ID);
    if ($lPC->getTotal() > 0) {
        try {
            $lPC->deletar($lPC->listar());
            $javaScript .= Aviso::criar("Categoria removida com sucesso!");
        } catch (Exception $e) {
            $javaScript .= Aviso::criar($e->getMessage());
        }
    }
}
$lPC = new ListaProdutoCategorias();
$iLPC->createRepeticao("repetir->ProdutoCategorias");
if (!empty($_GET['busca'])) {
    $lPC->condicoes('', "%" . $_GET['busca'] . "%", 'empresa', 'LIKE');
}
$iLPC->condicao("condicaoBusca", !empty($_SESSION['nivel']));
if (!empty($_GET['categoria'])) {
    $lPC->condicoes('', $_GET['categoria'], ListaProdutoCategorias::ID);
    if ($lPC->getTotal() > 0) {
        $cP = $lPC->listar();
    } else {
        $cP = new ProdutoCategoria();
    }
} else {
    $cP = new ProdutoCategoria();
}
                $t = new Traducao();
                $t->conteudo = $pC->descricao;
                $t->traducao = $_POST['idescricao'][$i->getId()];
                $t->setIdConteudo($pC->getId());
                $t->setCampoConteudo(ListaProdutoCategorias::DESCRICAO);
                $t->setTabelaConteudo($lCP->getTabela());
                $i->addTraducao($t);
            }
        }
        $lI->setParametros(0);
        $javaScript .= Aviso::criar("Categoria salva com sucesso!");
    } else {
        $javaScript .= Aviso::criar($erro);
    }
}
$lPC = new ListaProdutoCategorias();
$pC = $lPC->condicoes('', $_GET['categoria'], ListaProdutoCategorias::ID)->listar();
$iAPC->trocar("nome", $pC->nome);
$iAPC->trocar("url", $pC->getURL()->getURL());
$iAPC->trocar("ordem", $pC->ordem);
$iAPC->trocar("subreferencia", $pC->subreferencia);
$iAPC->trocar("disponivel", $pC->disponivel ? ListaProdutoCategorias::VALOR_DISPONIVEL_TRUE : ListaProdutoCategorias::VALOR_DISPONIVEL_FALSE);
$iAPC->trocar("visaoUnica", $pC->visaoUnica ? ListaProdutoCategorias::VALOR_VISAOUNICA_TRUE : ListaProdutoCategorias::VALOR_VISAOUNICA_FALSE);
$iAPC->trocar("descricaoPequena", $pC->descricaoPequena);
$iAPC->trocar("descricao", $pC->descricao);
$sub = "repetir->nome.ProdutoCategorias.Idiomas";
$sub2 = "repetir->descricao.ProdutoCategorias.Idiomas";
$sub3 = "repetir->descricaoPequena.ProdutoCategorias.Idiomas";
$iAPC->createRepeticao($sub);
$iAPC->createRepeticao($sub2);
$iAPC->createRepeticao($sub3);
            $i->addTraducao($t);
            $t->setCampoConteudo(ListaProdutoCategorias::DESCRICAO);
            $t->conteudo = $pC->descricao;
            $t->traducao = $_POST['idescricao'][$i->getId()];
            $i->addTraducao($t);
        }
        $lI->resetCondicoes();
        $lI->setParametros(0);
        $_POST = '';
        $javaScript .= Aviso::criar("Categoria salva com sucesso!");
    } else {
        $javaScript .= Aviso::criar($erro);
    }
}
if (!empty($_GET['categoria'])) {
    $lCP = new ListaProdutoCategorias();
    $lCP->condicoes('', $_GET['categoria'], ListaProdutoCategorias::ID);
    $cP = $lCP->listar();
} else {
    $cP = new ProdutoCategoria();
}
$iCPC->trocar("linkVoltar", "?p=" . $_GET['p'] . "&a=listarProdutoCategorias&categoria=" . $cP->getId());
$iCPC->trocar("nome", $_POST['nome']);
$iCPC->trocar("url", $_POST['url']);
$iCPC->trocar("ordem", $_POST['ordem']);
$iCPC->trocar("subreferencia", $_POST['subreferencia']);
$iCPC->trocar("disponivel", $_POST['disponivel']);
$iCPC->trocar("visaoUnica", $_POST['visaoUnica']);
$iCPC->trocar("descricaoPequena", $_POST['descricaoPequena']);
$iCPC->trocar("descricao", $_POST['descricao']);
$iCPC->trocar("id.ProdutoCategoria", $cP->getId());