Пример #1
0
 /**
  * Getter para a opção de configuração baseurl.
  *
  * Caso a opção não esteja configurada, determina um valor baseado na
  * variável $_SERVER['REQUEST_URI'] da requisição, usando apenas os
  * componentes scheme e path da URL. Veja {@link http://php.net/parse_url}
  * para mais informações sobre os componentes de uma URL.
  *
  * @return string
  */
 public function getBaseurl()
 {
     if (is_null($this->_getOption('baseurl'))) {
         require_once 'CoreExt/View/Helper/UrlHelper.php';
         $url = CoreExt_View_Helper_UrlHelper::url($this->get('REQUEST_URI'), array('absolute' => TRUE, 'components' => CoreExt_View_Helper_UrlHelper::URL_HOST));
         $this->setBaseurl($url);
     }
     return $this->_getOption('baseurl');
 }
Пример #2
0
 /**
  * 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;
 }
Пример #3
0
 /**
  * Configura a URL padrão para a ação Cancelar da tela de Edição de um
  * registro.
  *
  * Por padrão, cria uma URL "index".
  *
  * @param CoreExt_Entity $entry A instância atual recuperada
  *   ViewController::Gerar().
  */
 public function setUrlCancelar(CoreExt_Entity $entry)
 {
     $this->url_cancelar = CoreExt_View_Helper_UrlHelper::url('index');
 }
Пример #4
0
 public function setUrlCancelar(CoreExt_Entity $entry)
 {
     $this->url_cancelar = CoreExt_View_Helper_UrlHelper::url('index', array('query' => array('id' => $entry->id, 'servidor' => $entry->servidor, 'instituicao' => $this->getRequest()->instituicao)));
 }
Пример #5
0
 /**
  * Configura botões padrão de clsCadastro
  * @return Core_Controller_Page_Abstract Provê interface fluída
  */
 public function configurarBotoes()
 {
     // Botão Cancelar (clsDetalhe e clsCadastro)
     if ($this->_hasOption('url_cancelar')) {
         $config = $this->getOption('url_cancelar');
         if (is_string($config)) {
             $this->url_cancelar = $config;
         } elseif (is_array($config)) {
             $this->url_cancelar = CoreExt_View_Helper_UrlHelper::url($config['path'], $config['options']);
         }
     }
     return $this;
 }
Пример #6
0
 function MakeMenu($linhaTemplate, $categoriaTemplate)
 {
     // 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)));
     $this->aberto = 0;
     $saida = '';
     $linha_nova = $linhaTemplate;
     $linha_nova_subtitulo = $categoriaTemplate;
     $super_usuario = '';
     $itens_menu = array();
     $autorizado_menu = array();
     @session_start();
     $id_usuario = $_SESSION['id_pessoa'];
     $opcoes_menu = $_SESSION['menu_opt'];
     $dba = new clsBanco();
     $dba->Consulta('
   SELECT
     ref_cod_menu_submenu
   FROM
     menu_funcionario
   WHERE
     ref_ref_cod_pessoa_fj = ' . $id_usuario);
     while ($dba->ProximoRegistro()) {
         list($aut) = $dba->Tupla();
         $autorizado_menu[] = $aut;
         if ($aut == 0) {
             $super_usuario = TRUE;
         }
     }
     $strAutorizado = implode(', ', $autorizado_menu);
     if (@$_SESSION['convidado']) {
         $strAutorizado = '999999';
     }
     session_write_close();
     $db = new clsBanco();
     if ($strAutorizado == '0' || $super_usuario) {
         if ($_GET['suspenso'] == 1 || $_SESSION['suspenso'] == 1 || $_SESSION['tipo_menu'] == 1) {
             $sql = "\n          SELECT\n            pai.nm_menu,\n            nome_menu.nm_menu AS nm_menu_pai,\n            pai.title AS title_pai,\n            sub.nm_submenu,\n            sub.arquivo,\n            sub.title,\n            pai.cod_menu_menu,\n            CASE\n              WHEN pai.ref_cod_menu_pai IS NULL\n                THEN 0\n              ELSE\n                1\n            END AS ref_menu_pai\n          FROM\n            menu_menu AS pai LEFT OUTER JOIN\n              menu_menu AS filho ON (filho.ref_cod_menu_pai = pai.cod_menu_menu AND pai.ref_cod_menu_pai = NULL),\n            menu_submenu AS sub,\n            menu_menu as nome_menu\n          WHERE\n            nome_menu.cod_menu_menu = COALESCE(pai.ref_cod_menu_pai,pai.cod_menu_menu)\n            AND sub.cod_sistema = '2'\n            AND pai.cod_menu_menu = sub.ref_cod_menu_menu\n            AND sub.cod_menu_submenu NOT IN (\n              SELECT\n                ref_cod_menu_submenu\n              FROM\n                pmicontrolesis.menu\n              WHERE\n                suprime_menu = 1\n                AND ref_cod_menu_submenu IS NOT NULL\n            )\n          ORDER BY\n            upper(nome_menu.nm_menu), ref_menu_pai, UPPER(pai.nm_menu), sub.nm_submenu";
         } else {
             $sql = "\n          SELECT\n            DISTINCT pai.nm_menu,\n            nome_menu.nm_menu AS nm_menu_pai,\n            pai.title AS title_pai,\n            sub.nm_submenu,\n            sub.arquivo,\n            sub.title,\n            pai.cod_menu_menu,\n            CASE\n              WHEN pai.ref_cod_menu_pai IS NULL\n                THEN 0\n              ELSE\n                1\n            END AS ref_menu_pai,\n            UPPER(nome_menu.nm_menu), UPPER(pai.nm_menu), sub.nm_submenu\n          FROM\n            menu_menu AS pai LEFT OUTER JOIN\n              menu_menu AS filho ON (filho.ref_cod_menu_pai = pai.cod_menu_menu),\n            menu_submenu AS sub,\n            menu_menu AS nome_menu\n          WHERE\n            nome_menu.cod_menu_menu = COALESCE(pai.ref_cod_menu_pai, pai.cod_menu_menu)\n            AND sub.cod_sistema = '2'\n            AND pai.cod_menu_menu = sub.ref_cod_menu_menu\n          ORDER BY\n            UPPER(nome_menu.nm_menu), ref_menu_pai, UPPER(pai.nm_menu), sub.nm_submenu";
         }
     } else {
         $query_lista = '';
         if ($strAutorizado) {
             $query_lista = "sub.cod_menu_submenu in ({$strAutorizado}) OR ";
         }
         $suspenso = '';
         if ($_GET['suspenso'] == 1 || $_SESSION['suspenso'] == 1 || $_SESSION['tipo_menu'] == 1) {
             $suspenso = " AND sub.cod_menu_submenu not in (select ref_cod_menu_submenu FROM pmicontrolesis.menu WHERE suprime_menu = 1 AND ref_cod_menu_submenu IS NOT NULL)";
         }
         if ($strAutorizado == '999999') {
             $sql = "\n          SELECT\n            pai.nm_menu,\n            nome_menu.nm_menu AS nm_menu_pai,\n            pai.title AS title_pai,\n            sub.nm_submenu,\n            sub.arquivo,\n            sub.title,\n            pai.cod_menu_menu,\n            CASE\n              WHEN pai.ref_cod_menu_pai IS NULL\n                THEN 0\n              ELSE\n               1\n            END AS ref_menu_pai\n          FROM\n            menu_menu AS pai LEFT OUTER JOIN menu_menu as filho ON (filho.ref_cod_menu_pai = pai.cod_menu_menu),\n            menu_submenu AS sub,\n            menu_menu AS nome_menu\n          WHERE\n            nome_menu.cod_menu_menu = COALESCE(pai.ref_cod_menu_pai, pai.cod_menu_menu)\n            AND sub.cod_sistema = '2'\n            AND pai.cod_menu_menu = sub.ref_cod_menu_menu\n            AND ({$query_lista}\n              sub.cod_menu_submenu IN (\n                SELECT\n                  sub2.cod_menu_submenu\n                FROM\n                  menu_submenu sub2\n                WHERE\n                  sub2.nivel='1'\n              )\n            )\n          ORDER BY\n            UPPER(nome_menu.nm_menu), ref_menu_pai, UPPER(pai.nm_menu), sub.nm_submenu";
         } else {
             $sql = "\n          SELECT\n            DISTINCT pai.nm_menu,\n            nome_menu.nm_menu AS nm_menu_pai,\n            pai.title AS title_pai,\n            sub.nm_submenu,\n            sub.arquivo,\n            sub.title,\n            pai.cod_menu_menu,\n            CASE\n              WHEN pai.ref_cod_menu_pai IS NULL\n                THEN 0\n              ELSE\n                1\n            END AS ref_menu_pai,\n            UPPER(nome_menu.nm_menu),\n            UPPER(pai.nm_menu)\n          FROM\n            menu_menu AS pai\n            LEFT OUTER JOIN menu_menu AS filho ON (filho.ref_cod_menu_pai = pai.cod_menu_menu),\n            menu_submenu AS sub,\n            menu_menu AS nome_menu\n          WHERE\n            nome_menu.cod_menu_menu = COALESCE(pai.ref_cod_menu_pai, pai.cod_menu_menu)\n            AND sub.cod_sistema = '2'\n            AND pai.cod_menu_menu = sub.ref_cod_menu_menu\n            AND ({$query_lista}\n              sub.cod_menu_submenu IN (\n                SELECT\n                  sub2.cod_menu_submenu\n                FROM\n                  menu_submenu sub2\n                WHERE\n                  sub2.nivel='2')\n            )\n            {$suspenso}\n          ORDER BY\n            UPPER(nome_menu.nm_menu), ref_menu_pai, UPPER(pai.nm_menu), sub.nm_submenu\n        ";
         }
     }
     $db->Consulta($sql);
     while ($db->ProximoRegistro()) {
         list($nome, $nomepai, $titlepai, $nomesub, $arquivo, $titlesub, $cod_submenu, $ref_menu_pai) = $db->Tupla();
         $itens_menu[] = array($nome, $nomepai, $titlepai, $nomesub, $arquivo, $titlesub, $cod_submenu, $ref_menu_pai);
     }
     $saida = '';
     $menuPaiAtual = '';
     foreach ($itens_menu as $item) {
         if ($item[0] != $menuPaiAtual) {
             $estilo_linha = 'nvp_cor_sim';
             $this->aberto = 0;
             $menuPaiId = $item[6];
             if (isset($_COOKIE['menu_' . $menuPaiId])) {
                 if ($_COOKIE['menu_' . $menuPaiId] == 'V') {
                     $this->aberto = 1;
                 }
             }
             // Define a ação para ser contrária ao status atual
             if ($this->aberto) {
                 $imagem = 'up2';
                 $acao = 0;
                 $simbolo = '-';
                 $title_acao = 'Fechar a categoria';
             } else {
                 $imagem = 'down2';
                 $acao = 1;
                 $simbolo = '+';
                 $title_acao = 'Abrir a categoria';
             }
             $saida = str_replace('<!-- #&MENUS&# -->', $submenus, $saida);
             $submenus = '';
             // Adiciona um menu pai
             $aux_temp = $linha_nova_subtitulo;
             $aux_temp = str_replace('<!-- #&NOME&# -->', $item[0], $aux_temp);
             $aux_temp = str_replace('<!-- #&ALT&# -->', $item[3], $aux_temp);
             $aux_temp = str_replace('<!-- #&ID&# -->', $item[6], $aux_temp);
             $aux_temp = str_replace('<!-- #&ACAO&# -->', $acao, $aux_temp);
             $aux_temp = str_replace('<!-- #&SIMBOLO&# -->', $simbolo, $aux_temp);
             $aux_temp = str_replace('<!-- #&TITLE_ACAO&# -->', $title_acao, $aux_temp);
             $aux_temp = str_replace('<!-- #&MENUPAI&# -->', $item[0], $aux_temp);
             $aux_temp = str_replace('<!-- #&IMAGEM&# -->', $imagem, $aux_temp);
             $aux_temp = str_replace('<!-- #&IDMENUPAI&# -->', $menuPaiId, $aux_temp);
             $style = $this->aberto == 1 ? '' : 'style="display:none;"';
             $aux_temp = str_replace('<!-- #&STYLE&# -->', $style, $aux_temp);
             $saida .= $aux_temp;
             // Define que este é o menu pai atual
             $menuPaiAtual = $item[0];
         }
         $aux_temp = $linha_nova;
         if (substr($item[4], 0, 5) == 'http:') {
             $target = '_blank';
         } else {
             $target = '_top';
         }
         $estilo_linha = $estilo_linha == 'nvp_cor_sim' ? 'nvp_cor_nao' : 'nvp_cor_sim';
         // Path do item de menu
         $path = $item[4];
         // 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($path, 'module')) {
                 $path = '../../' . $path;
             } else {
                 $path = '../../intranet/' . $path;
             }
         } elseif (0 === strpos($path, 'module')) {
             $path = '../../' . $path;
         }
         $aux_temp = str_replace('<!-- #&CLASS&# -->', $estilo_linha, $aux_temp);
         $aux_temp = str_replace('<!-- #&NOME&# -->', $item[3], $aux_temp);
         $aux_temp = str_replace('<!-- #&LINK&# -->', $path, $aux_temp);
         $aux_temp = str_replace('<!-- #&ALT&# -->', $item[3], $aux_temp);
         $aux_temp = str_replace('<!-- #&TARGET&# -->', $target, $aux_temp);
         $submenus .= $aux_temp;
     }
     $saida = str_replace('<!-- #&MENUS&# -->', $submenus, $saida);
     return $saida;
 }
Пример #7
0
 public function testUrlRetornaComPath()
 {
     $expected = 'http://www.example.com/controller';
     $this->assertEquals($expected, CoreExt_View_Helper_UrlHelper::url('http://www.example.com/controller', array('absolute' => TRUE, 'components' => CoreExt_View_Helper_UrlHelper::URL_PATH)));
 }