/** * Cria o menu suspenso dos subsistemas Escola e Biblioteca. * * @todo Refatorar lógica do primeiro par if/else, duplicação * @return bool|string Retorna FALSE em caso de erro */ function makeMenuSuspenso() { // Usa helper de Url para pegar o path da requisição require_once 'CoreExt/View/Helper/UrlHelper.php'; $uri = explode('/', CoreExt_View_Helper_UrlHelper::url($_SERVER['REQUEST_URI'], array('components' => CoreExt_View_Helper_UrlHelper::URL_PATH))); @session_start(); $idpes = $_SESSION['id_pessoa']; @session_write_close(); $submenu = array(); $menu_tutor = ''; if ($this->processoAp) { $menu_atual = $this->db()->UnicoCampo("SELECT ref_cod_menu_menu FROM menu_submenu WHERE cod_menu_submenu = '{$this->processoAp}'"); if ($menu_atual) { $this->db()->Consulta("SELECT cod_menu_submenu FROM menu_submenu WHERE ref_cod_menu_menu = '{$menu_atual}'"); while ($this->db()->ProximoRegistro()) { $tupla = $this->db()->Tupla(); $submenu[] = $tupla['cod_menu_submenu']; } $where = implode(" OR ref_cod_menu_submenu = ", $submenu); $where = "ref_cod_menu_submenu = {$where}"; $menu_tutor = $this->db()->UnicoCampo("SELECT ref_cod_tutormenu FROM pmicontrolesis.menu WHERE {$where} LIMIT 1 OFFSET 0"); } else { $this->prog_alert .= "O menu pai do processo AP {$this->processoAp} está voltando vazio (cod_menu inexistente?).<br>"; } } elseif ($_SESSION['menu_atual']) { $this->db()->Consulta("SELECT cod_menu_submenu FROM menu_submenu WHERE ref_cod_menu_menu = '{$_SESSION['menu_atual']}'"); while ($this->db()->ProximoRegistro()) { $tupla = $this->db()->Tupla(); $submenu[] = $tupla['cod_menu_submenu']; } $where = implode(" OR ref_cod_menu_submenu = ", $submenu); $where = "ref_cod_menu_submenu = {$where}"; $menu_tutor = $this->db()->UnicoCampo("SELECT ref_cod_tutormenu FROM pmicontrolesis.menu WHERE {$where} LIMIT 1 OFFSET 0"); } if ($menu_tutor) { $obj_menu_suspenso = new clsMenuSuspenso(); $lista_menu = $obj_menu_suspenso->listaNivel($menu_tutor, $idpes); $lista_menu_suspenso = $lista_menu; if ($lista_menu_suspenso) { for ($i = 0, $loop = count($lista_menu_suspenso); $i < $loop; $i++) { $achou = FALSE; if (!$lista_menu_suspenso[$i]['ref_cod_menu_submenu']) { foreach ($lista_menu as $id => $menu) { if ($menu['ref_cod_menu_pai'] == $lista_menu_suspenso[$i]['cod_menu']) { $achou = TRUE; } } if (!$achou) { unset($lista_menu[$i]); } } } $saida = '<script type="text/javascript">'; $saida .= 'array_menu = new Array(); array_id = new Array();'; foreach ($lista_menu as $menu_suspenso) { $ico_menu = ''; if (is_numeric($menu_suspenso['ref_cod_ico'])) { $this->db()->Consulta("SELECT caminho FROM portal.imagem WHERE cod_imagem = {$menu_suspenso['ref_cod_ico']} "); if ($this->db()->ProximoRegistro()) { list($ico_menu) = $this->db()->Tupla(); $ico_menu = "imagens/banco_imagens/{$ico_menu}"; } } $alvo = $menu_suspenso['alvo'] ? $menu_suspenso['alvo'] : '_self'; // Corrige o path usando caminhos relativos para permitir a inclusão // de itens no menu que apontem para um módulo if ($uri[1] == 'module') { if (0 === strpos($menu_suspenso['caminho'], 'module')) { $menu_suspenso['caminho'] = '../../' . $menu_suspenso['caminho']; } else { $menu_suspenso['caminho'] = '../../intranet/' . $menu_suspenso['caminho']; } } elseif (0 === strpos($menu_suspenso['caminho'], 'module')) { $menu_suspenso['caminho'] = '../../' . $menu_suspenso['caminho']; } $saida .= "array_menu[array_menu.length] = new Array(\"{$menu_suspenso['tt_menu']}\",{$menu_suspenso['cod_menu']},'{$menu_suspenso['ref_cod_menu_pai']}','', '{$ico_menu}', '{$menu_suspenso['caminho']}', '{$alvo}');"; if (!$menu_suspenso['ref_cod_menu_pai']) { $saida .= "array_id[array_id.length] = {$menu_suspenso['cod_menu']};"; } } $saida .= "</script>"; } $saida .= "<script type=\"text/javascript\">\n setTimeout(\"setXY();\",150);\n MontaMenu();\n </script>"; return $saida; } return FALSE; }
function Inicializar() { $retorno = "Editar"; @session_start(); $this->id_pessoa = $_SESSION['id_pessoa']; @session_write_close(); $this->cod_menu = $_GET['cod_menu']; if ($this->cod_menu && !$_POST) { @session_start(); unset($_SESSION['menu_suspenso']); $obj = new clsMenuSuspenso(); $lista = $obj->listaNivel($this->cod_menu, $this->id_pessoa); if ($lista) { foreach ($lista as $menu) { $_SESSION['menu_suspenso'][] = array('ref_cod_menu_pai' => $menu['ref_cod_menu_pai'], 'cod_menu' => $menu['cod_menu'], 'ref_cod_menu_submenu' => $menu['ref_cod_menu_submenu'], 'tt_menu' => $menu['tt_menu'], 'ico_menu' => $menu['ref_cod_ico'], 'ord_menu' => $menu['ord_menu'], 'caminho' => $menu['caminho'], 'alvo' => $menu['alvo'], 'suprime_menu' => $menu['suprime_menu'], 'ref_cod_tutor_menu' => $_GET['cod_menu'], 'menu_menu_pai' => $menu['menu_menu_pai']); } } if ($_SESSION['menu_suspenso']) { foreach ($_SESSION['menu_suspenso'] as $id => $valor) { foreach ($_SESSION['menu_suspenso'] as $id2 => $valor2) { if ($valor2['ref_cod_menu_pai'] == $valor['cod_menu']) { $_SESSION['menu_suspenso'][$id2]['ref_cod_menu_pai'] = $id; } } } } @session_write_close(); } if ($_FILES['ico_menu']['name']) { $caminho = "imagens/banco_imagens/"; $nome_do_arquivo = $_FILES['ico_menu']['name']; $extensao = substr($_FILES['ico_menu']['name'], -3); $objImagem = new clsPortalImagem(FALSE, 1, 'ico_menu', FALSE, $extensao, FALSE, FALSE, FALSE, $this->id_pessoa); if ($cod_imagem = $objImagem->cadastra()) { $this->ico_menu = $cod_imagem; echo '<script>alert("Ícone inserido!");</script>'; } } if (isset($_POST['id_deletar']) && $_POST['id_deletar'] != "" && $_POST['editando'] == 2) { @session_start(); foreach ($_SESSION['menu_suspenso'] as $id => $ref_pai) { if ($ref_pai['ref_cod_menu_pai'] == $_POST['id_deletar']) { $arr_del[] = $id; } } if ($arr_del) { foreach ($arr_del as $indice) { unset($_SESSION['menu_suspenso'][$indice]); } } if ($_POST['id_deletar'] == 0) { unset($_SESSION['menu_suspenso'][0]); } else { unset($_SESSION['menu_suspenso'][$_POST['id_deletar']]); } } elseif (!$_POST['lista'] && $_POST) { @session_start(); if ($_POST['ref_cod_menu_submenu']) { $db1 = new clsBanco(); $cod_submenu = @$_POST['ref_cod_menu_submenu']; $db1->Consulta("SELECT arquivo FROM menu_submenu WHERE cod_sistema = 2 AND cod_menu_submenu = {$cod_submenu} "); while ($db1->ProximoRegistro()) { list($caminho) = $db1->Tupla(); } } if ($_POST['editando'] == 1) { if ($_POST['tt_menu'] != '' && $_POST['ord_menu'] != '' || $_POST['ord_menu'] == '0' && $_POST['tt_menu'] != '' || $_POST['tt_menu'] != '' && $_POST['ord_menu'] == '0') { $db1 = new clsBanco(); if ($_POST['ref_cod_menu_submenu']) { $menu_menu_pai = $db1->CampoUnico("SELECT ref_cod_menu_pai FROM menu_menu mm, menu_submenu ms WHERE mm.cod_menu_menu = ms.ref_cod_menu_menu and ms.cod_menu_submenu = {$_POST['ref_cod_menu_submenu']}"); } $icone = $_POST['img_banco'] ? @$_POST['img_banco'] : $cod_imagem; $_SESSION['menu_suspenso'][$_POST['editar']] = array('ref_cod_menu_pai' => $_POST['ref_cod_menu_pai'], 'cod_menu' => $this->cod_menu, 'ref_cod_menu_submenu' => $_POST['ref_cod_menu_submenu'], 'tt_menu' => $_POST['tt_menu'], 'ico_menu' => $icone, 'ord_menu' => $_POST['ord_menu'], 'caminho' => $caminho, 'alvo' => $_POST['alvo'], 'suprime_menu' => $_POST['suprime_menu'], 'ref_cod_tutor_menu' => $_GET['cod_menu'], 'menu_menu_pai' => $menu_menu_pai); } else { echo '<script>alert("Os campos Ordem e Título são obrigatórios!");</script>'; } } else { if ($_POST['tt_menu'] != '' && $_POST['ord_menu'] != '' || $_POST['ord_menu'] == '0' && $_POST['tt_menu'] != '' || $_POST['tt_menu'] != '' && $_POST['ord_menu'] == '0') { $db1 = new clsBanco(); if ($_POST['ref_cod_menu_submenu']) { $menu_menu_pai = $db1->CampoUnico("SELECT ref_cod_menu_pai FROM menu_menu mm, menu_submenu ms WHERE mm.cod_menu_menu = ms.ref_cod_menu_menu and ms.cod_menu_submenu = {$_POST['ref_cod_menu_submenu']}"); } $icone = $_POST['img_banco'] ? @$_POST['img_banco'] : $cod_imagem; $_SESSION['menu_suspenso'][] = array('ref_cod_menu_pai' => $_POST['ref_cod_menu_pai'], 'cod_menu' => $this->cod_menu, 'ref_cod_menu_submenu' => $_POST['ref_cod_menu_submenu'], 'tt_menu' => $_POST['tt_menu'], 'ico_menu' => $icone, 'ord_menu' => $_POST['ord_menu'], 'caminho' => $caminho, 'alvo' => $_POST['alvo'], 'suprime_menu' => $_POST['suprime_menu'], 'ref_cod_tutor_menu' => $_GET['cod_menu'], 'menu_menu_pai' => $menu_menu_pai); } else { echo '<script>alert("Os campos Ordem e Título são obrigatórios!");</script>'; } } @session_write_close(); } if ($_SESSION['menu_suspenso']) { $this->saida = "<script>"; foreach ($_SESSION['menu_suspenso'] as $key => $detalhe) { $ico_menu = ''; if (is_numeric($detalhe['ico_menu'])) { $db = new clsBanco(); $db->Consulta("SELECT caminho FROM portal.imagem WHERE cod_imagem = {$detalhe['ico_menu']} "); if ($db->ProximoRegistro()) { list($ico_menu) = $db->Tupla(); $ico_menu = 'imagens/banco_imagens/' . $ico_menu; } } $this->saida .= "array_menu[array_menu.length] = new Array(\"{$detalhe['tt_menu']}\",{$key},'{$detalhe['ref_cod_menu_pai']}','', '{$ico_menu}', '', '','MenuCarregaDados({$key},\\'{$detalhe['ord_menu']}\\',\\'{$detalhe['ref_cod_menu_pai']}\\',\\'{$detalhe['ref_cod_menu']}\\',\\'{$detalhe['ref_cod_menu_submenu']}\\',\\'{$detalhe['tt_menu']}\\',\\'{$detalhe['ico_menu']}\\',\\'{$detalhe['alvo']}\\',\\'{$detalhe['suprime_menu']}\\');');"; if (empty($detalhe['ref_cod_menu_pai']) && $detalhe['ref_cod_menu_pai'] != '0') { $this->saida .= "array_id[array_id.length] = {$key};"; } } $this->saida .= "</script>"; } return $retorno; }