Commit 2c3f5b4a37fd39ad7ae7ad9b649221750769cad5

Authored by Lucas D'Avila
1 parent 8daba028
Exists in master

Refatorado verificação de expiração de conta de usuário, incluido lógica para re…

…direcionar requisições, conforme url configurada.
Showing 1 changed file with 191 additions and 185 deletions   Show diff stats
ieducar/intranet/include/clsBase.inc.php
... ... @@ -25,11 +25,19 @@
25 25 * @license @@license@@
26 26 * @package iEd_Include
27 27 * @since Arquivo disponível desde a versão 1.0.0
28   - * @version $Id$
  28 + * @version $Id: clsBase.inc.php 773 2010-12-19 20:46:49Z eriksencosta@gmail.com $
29 29 */
30 30  
31 31 // Inclui arquivo de bootstrapping
32   -require_once '../includes/bootstrap.php';
  32 +require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/bootstrap.php';
  33 +
  34 +// redireciona requisições, caso configurado
  35 +if ($GLOBALS['coreExt']['Config']->app->routes &&
  36 + $GLOBALS['coreExt']['Config']->app->routes->redirect_to) {
  37 +
  38 + header('HTTP/1.1 503 Service Temporarily Unavailable');
  39 + header("Location: {$GLOBALS['coreExt']['Config']->app->routes->redirect_to}");
  40 +}
33 41  
34 42 require_once 'include/clsCronometro.inc.php';
35 43 require_once 'clsConfigItajai.inc.php';
... ... @@ -41,6 +49,11 @@ require_once 'include/Geral.inc.php';
41 49 require_once 'include/pmicontrolesis/geral.inc.php';
42 50 require_once 'include/funcoes.inc.php';
43 51  
  52 +require_once 'lib/Portabilis/Utils/Database.php';
  53 +require_once 'lib/Portabilis/Utils/User.php';
  54 +
  55 +require_once 'modules/Error/Mailers/NotificationMailer.php';
  56 +
44 57 /**
45 58 * clsBase class.
46 59 *
... ... @@ -199,10 +212,6 @@ class clsBase extends clsConfig
199 212 function VerificaPermicaoNumerico($processo_ap)
200 213 {
201 214 if (is_numeric($processo_ap)) {
202   - @session_start();
203   - $id_usuario = $_SESSION['id_pessoa'];
204   - session_write_close();
205   -
206 215 $sempermissao = TRUE;
207 216  
208 217 if ($processo_ap == 0) {
... ... @@ -210,11 +219,9 @@ class clsBase extends clsConfig
210 219 }
211 220  
212 221 if ($processo_ap != 0) {
213   - $db = new clsBanco();
214   -
215   - $db->Consulta("SELECT 1 FROM menu_funcionario WHERE ref_cod_menu_submenu = 0 AND ref_ref_cod_pessoa_fj = {$id_usuario}");
216   - if ($db->ProximoRegistro()) {
217   - list($aui) = $db->Tupla();
  222 + $this->db()->Consulta("SELECT 1 FROM menu_funcionario WHERE ref_cod_menu_submenu = 0 AND ref_ref_cod_pessoa_fj = {$this->_currentUserId()}");
  223 + if ($this->db()->ProximoRegistro()) {
  224 + list($aui) = $this->db()->Tupla();
218 225 $sempermissao = FALSE;
219 226 }
220 227  
... ... @@ -222,9 +229,9 @@ class clsBase extends clsConfig
222 229 // permissão de acesso ao processo. Já a segunda, não existe
223 230 // sentido para nivel = 2 já que processoAp pode ser de níveis
224 231 // maiores que 2.
225   - $db->Consulta("SELECT 1 FROM menu_funcionario WHERE (ref_cod_menu_submenu = {$processo_ap} AND ref_ref_cod_pessoa_fj = {$id_usuario}) OR (SELECT true FROM menu_submenu WHERE cod_menu_submenu = {$processo_ap} AND nivel = 2)");
226   - if ($db->ProximoRegistro()) {
227   - list($aui) = $db->Tupla();
  232 + $this->db()->Consulta("SELECT 1 FROM menu_funcionario WHERE (ref_cod_menu_submenu = {$processo_ap} AND ref_ref_cod_pessoa_fj = {$this->_currentUserId()}) OR (SELECT true FROM menu_submenu WHERE cod_menu_submenu = {$processo_ap} AND nivel = 2)");
  233 + if ($this->db()->ProximoRegistro()) {
  234 + list($aui) = $this->db()->Tupla();
228 235 $sempermissao = FALSE;
229 236 }
230 237  
... ... @@ -250,11 +257,11 @@ class clsBase extends clsConfig
250 257  
251 258 $variaveis = "POST\n{$posts}GET\n{$gets}SESSION\n{$sessions}";
252 259  
253   - if ($id_usuario) {
254   - $db->Consulta("INSERT INTO intranet_segur_permissao_negada (ref_ref_cod_pessoa_fj, ip_externo, ip_interno, data_hora, pagina, variaveis) VALUES('$id_usuario', '$ip', '$ip_de_rede', NOW(), '$pagina', '$variaveis')");
  260 + if ($this->_currentUserId()) {
  261 + $this->db()->Consulta("INSERT INTO intranet_segur_permissao_negada (ref_ref_cod_pessoa_fj, ip_externo, ip_interno, data_hora, pagina, variaveis) VALUES('{$this->_currentUserId()}', '$ip', '$ip_de_rede', NOW(), '$pagina', '$variaveis')");
255 262 }
256 263 else {
257   - $db->Consulta("INSERT INTO intranet_segur_permissao_negada (ref_ref_cod_pessoa_fj, ip_externo, ip_interno, data_hora, pagina, variaveis) VALUES(NULL, '$ip', '$ip_de_rede', NOW(), '$pagina', '$variaveis')");
  264 + $this->db()->Consulta("INSERT INTO intranet_segur_permissao_negada (ref_ref_cod_pessoa_fj, ip_externo, ip_interno, data_hora, pagina, variaveis) VALUES(NULL, '$ip', '$ip_de_rede', NOW(), '$pagina', '$variaveis')");
258 265 }
259 266  
260 267 return FALSE;
... ... @@ -298,35 +305,33 @@ class clsBase extends clsConfig
298 305 $menu_tutor = '';
299 306  
300 307 if ($this->processoAp) {
301   - $db = new clsBanco();
302   - $menu_atual = $db->UnicoCampo("SELECT ref_cod_menu_menu FROM menu_submenu WHERE cod_menu_submenu = '{$this->processoAp}'");
  308 + $menu_atual = $this->db()->UnicoCampo("SELECT ref_cod_menu_menu FROM menu_submenu WHERE cod_menu_submenu = '{$this->processoAp}'");
303 309  
304 310 if ($menu_atual) {
305   - $db->Consulta("SELECT cod_menu_submenu FROM menu_submenu WHERE ref_cod_menu_menu = '{$menu_atual}'");
306   - while ($db->ProximoRegistro()) {
307   - $tupla = $db->Tupla();
  311 + $this->db()->Consulta("SELECT cod_menu_submenu FROM menu_submenu WHERE ref_cod_menu_menu = '{$menu_atual}'");
  312 + while ($this->db()->ProximoRegistro()) {
  313 + $tupla = $this->db()->Tupla();
308 314 $submenu[] = $tupla['cod_menu_submenu'];
309 315 }
310 316 $where = implode(" OR ref_cod_menu_submenu = ", $submenu);
311 317 $where = "ref_cod_menu_submenu = $where";
312   - $menu_tutor = $db->UnicoCampo("SELECT ref_cod_tutormenu FROM pmicontrolesis.menu WHERE $where LIMIT 1 OFFSET 0");
  318 + $menu_tutor = $this->db()->UnicoCampo("SELECT ref_cod_tutormenu FROM pmicontrolesis.menu WHERE $where LIMIT 1 OFFSET 0");
313 319 }
314 320 else {
315 321 $this->prog_alert .= "O menu pai do processo AP {$this->processoAp} está voltando vazio (cod_menu inexistente?).<br>";
316 322 }
317 323 }
318 324 elseif ($_SESSION['menu_atual']) {
319   - $db = new clsBanco();
320   - $db->Consulta("SELECT cod_menu_submenu FROM menu_submenu WHERE ref_cod_menu_menu = '{$_SESSION['menu_atual']}'");
  325 + $this->db()->Consulta("SELECT cod_menu_submenu FROM menu_submenu WHERE ref_cod_menu_menu = '{$_SESSION['menu_atual']}'");
321 326  
322   - while ($db->ProximoRegistro()) {
323   - $tupla = $db->Tupla();
  327 + while ($this->db()->ProximoRegistro()) {
  328 + $tupla = $this->db()->Tupla();
324 329 $submenu[] = $tupla['cod_menu_submenu'];
325 330 }
326 331  
327 332 $where = implode(" OR ref_cod_menu_submenu = ", $submenu);
328 333 $where = "ref_cod_menu_submenu = $where";
329   - $menu_tutor = $db->UnicoCampo("SELECT ref_cod_tutormenu FROM pmicontrolesis.menu WHERE $where LIMIT 1 OFFSET 0");
  334 + $menu_tutor = $this->db()->UnicoCampo("SELECT ref_cod_tutormenu FROM pmicontrolesis.menu WHERE $where LIMIT 1 OFFSET 0");
330 335 }
331 336  
332 337 if ($menu_tutor) {
... ... @@ -353,15 +358,13 @@ class clsBase extends clsConfig
353 358 $saida = '<script type="text/javascript">';
354 359 $saida .= 'array_menu = new Array(); array_id = new Array();';
355 360  
356   - $banco = new clsBanco();
357 361 foreach ($lista_menu as $menu_suspenso) {
358 362 $ico_menu = '';
359 363  
360 364 if (is_numeric($menu_suspenso['ref_cod_ico'])) {
361   - $db = new clsBanco();
362   - $db->Consulta("SELECT caminho FROM portal.imagem WHERE cod_imagem = {$menu_suspenso['ref_cod_ico']} ");
363   - if ($db->ProximoRegistro()) {
364   - list($ico_menu) = $db->Tupla();
  365 + $this->db()->Consulta("SELECT caminho FROM portal.imagem WHERE cod_imagem = {$menu_suspenso['ref_cod_ico']} ");
  366 + if ($this->db()->ProximoRegistro()) {
  367 + list($ico_menu) = $this->db()->Tupla();
365 368 $ico_menu = "imagens/banco_imagens/$ico_menu";
366 369 }
367 370 }
... ... @@ -540,61 +543,12 @@ class clsBase extends clsConfig
540 543  
541 544 $menu_dinamico = $this->makeBanner();
542 545  
543   - @session_start();
544   - $id_usuario = $_SESSION['id_pessoa'];
545   - session_write_close();
546   - $db = new clsBanco();
547   -
548   - $objPessoa = new clsPessoaFisica();
549   - list($nome_user) = $objPessoa->queryRapida($id_usuario, "nome");
550   -
551   - $ultimoAcesso = $db->UnicoCampo("SELECT data_hora FROM acesso WHERE cod_pessoa = $id_usuario ORDER BY data_hora DESC LIMIT 1,1");
552   - $nome_user = ($nome_user) ? $nome_user : "<span style='color: #DD0000; '>Convidado</span>";
553   -
554   - if($ultimoAcesso) {
555   - $ultimoAcesso = date("d/m/Y H:i", strtotime(substr($ultimoAcesso,0,19)));
556   - }
557   -
558   - /***********************/
559   - //Verificar se senha expira dentro de 5 dias.
560   - $expirando = FALSE;
561   - $mensagem_expirar = '';
562   - $db = new clsBanco();
563   - $db->Consulta("SELECT tempo_expira_senha, data_troca_senha FROM funcionario WHERE ref_cod_pessoa_fj = '{$id_usuario}' ");
564   - if ($db->ProximoRegistro()) {
565   - list($tempo_senha, $data_senha) = $db->Tupla();
566   -
567   - if (!empty($tempo_senha) && !empty($data_senha)) {
568   - if (time() - strtotime($data_senha) > ($tempo_senha-10) * 60 * 60 * 24) {
569   - // senha vai expirar dentro de 10 dias
570   - $expirando = TRUE;
571   - $days_left = $tempo_senha - (int)((time() - strtotime( $data_senha )) / 86400);
572   - $mensagem_expirar = "Sua senha expirará em $days_left dias, atualize sua senha em 'Meus dados' no menu 'Principal' !";
573   - $mensagem_expirar .= "<script>showExpansivelIframe(800, 270, 'troca_senha_pop.php', 1);</script>";
574   - }
575   - }
576   - }
577   -
578   - // somente para programadores
579   - // @todo Essa linha pode afetar o uso de usuários comuns?
580   - if (($id_usuario == 49659 || $id_usuario == 2151 || $id_usuario == 4637 || $id_usuario == 21330|| $id_usuario == 21317|| $id_usuario == 25109|| $id_usuario == 4702)) {
581   - if($expirando || $this->prog_alert) {
582   - $mensagem = $expirando ? "<b style='color:red'>$mensagem_expirar</b><br />" : "";
583   - $mensagem .= $this->prog_alert ? $this->prog_alert : "";
584   - $saida = str_replace("<!-- #&PROG_ALERT&# -->", "<div class=\"prog_alert\" align=\"center\">$mensagem</div>", $saida);
585   - }
586   - }
587   - elseif($expirando) {
588   - $saida = str_replace("<!-- #&PROG_ALERT&# -->", "<div class=\"prog_alert\" align=\"center\" style='color: red; font-weight:bold;'>{$mensagem_expirar}</div>", $saida);
589   - }
590   -
591 546 $notificacao = "";
592   - $db = new clsBanco();
593   - $db->Consulta("SELECT cod_notificacao, titulo, conteudo, url FROM portal.notificacao WHERE ref_cod_funcionario = '{$id_usuario}' AND data_hora_ativa < NOW()");
  547 + $this->db()->Consulta("SELECT cod_notificacao, titulo, conteudo, url FROM portal.notificacao WHERE ref_cod_funcionario = '{$this->_currentUserId()}' AND data_hora_ativa < NOW()");
594 548  
595   - if ($db->numLinhas()) {
596   - while ($db->ProximoRegistro()) {
597   - list($cod_notificacao, $titulo, $conteudo, $url) = $db->Tupla();
  549 + if ($this->db()->numLinhas()) {
  550 + while ($this->db()->ProximoRegistro()) {
  551 + list($cod_notificacao, $titulo, $conteudo, $url) = $this->db()->Tupla();
598 552  
599 553 $titulo = ($url) ? "<a href=\"{$url}\">{$titulo}</a>": $titulo;
600 554  
... ... @@ -606,14 +560,29 @@ class clsBase extends clsConfig
606 560 </div>";
607 561 }
608 562 $saida = str_replace( "<!-- #&NOTIFICACOES&# -->", $notificacao, $saida );
609   - $db->Consulta("UPDATE portal.notificacao SET visualizacoes = visualizacoes + 1 WHERE ref_cod_funcionario = '{$id_usuario}' AND data_hora_ativa < NOW()");
610   - $db->Consulta("DELETE FROM portal.notificacao WHERE visualizacoes > 10");
  563 + $this->db()->Consulta("UPDATE portal.notificacao SET visualizacoes = visualizacoes + 1 WHERE ref_cod_funcionario = '{$this->_currentUserId()}' AND data_hora_ativa < NOW()");
  564 + $this->db()->Consulta("DELETE FROM portal.notificacao WHERE visualizacoes > 10");
611 565 }
612 566  
613   - $saida = str_replace("<!-- #&ULTIMOACESSO&# -->", $ultimoAcesso, $saida);
614   - $saida = str_replace("<!-- #&USERLOGADO&# -->", $nome_user, $saida);
615   - $saida = str_replace("<!-- #&CORPO&# -->", $corpo, $saida);
616   - $saida = str_replace("<!-- #&ANUNCIO&# -->", $menu_dinamico, $saida);
  567 + // nome completo usuario
  568 + $nomePessoa = new clsPessoaFisica();
  569 + list($nomePessoa) = $nomePessoa->queryRapida($this->_currentUserId(), "nome");
  570 + $nomePessoa = ($nomePessoa) ? $nomePessoa : "<span style='color: #DD0000; '>Convidado</span>";
  571 +
  572 +
  573 + // data ultimo acesso
  574 + $ultimoAcesso = $this->db()->UnicoCampo("SELECT data_hora FROM acesso WHERE cod_pessoa = {$this->_currentUserId()} ORDER BY data_hora DESC LIMIT 1,1");
  575 +
  576 + if($ultimoAcesso)
  577 + $ultimoAcesso = date("d/m/Y H:i", strtotime(substr($ultimoAcesso,0,19)));
  578 +
  579 + $this->checkUserExpirations();
  580 +
  581 + // substitui valores no template
  582 + $saida = str_replace("<!-- #&ULTIMOACESSO&# -->", $ultimoAcesso, $saida);
  583 + $saida = str_replace("<!-- #&USERLOGADO&# -->", $nomePessoa, $saida);
  584 + $saida = str_replace("<!-- #&CORPO&# -->", $corpo, $saida);
  585 + $saida = str_replace("<!-- #&ANUNCIO&# -->", $menu_dinamico, $saida);
617 586  
618 587 // Pega o endereço IP do host, primeiro com HTTP_X_FORWARDED_FOR (para pegar o IP real
619 588 // caso o host esteja atrás de um proxy)
... ... @@ -626,9 +595,8 @@ class clsBase extends clsConfig
626 595 $ip_maquina = $_SERVER['REMOTE_ADDR'];
627 596 }
628 597  
629   - $sql = "UPDATE funcionario SET ip_logado = '$ip_maquina' , data_login = NOW() WHERE ref_cod_pessoa_fj = {$id_usuario}";
630   - $db2 = new clsBanco();
631   - $db2->Consulta($sql);
  598 + $sql = "UPDATE funcionario SET ip_logado = '$ip_maquina' , data_login = NOW() WHERE ref_cod_pessoa_fj = {$this->_currentUserId()}";
  599 + $this->db()->Consulta($sql);
632 600  
633 601 return $saida;
634 602 }
... ... @@ -652,11 +620,10 @@ class clsBase extends clsConfig
652 620 {
653 621 $retorno = '';
654 622 $listaBanners = array();
655   - $db = new clsBanco();
656   - $db->Consulta("SELECT caminho, title, prioridade, link FROM portal_banner WHERE lateral=1 ORDER BY prioridade, title");
  623 + $this->db()->Consulta("SELECT caminho, title, prioridade, link FROM portal_banner WHERE lateral=1 ORDER BY prioridade, title");
657 624  
658   - while ($db->ProximoRegistro()) {
659   - list($caminho, $title, $prioridade, $link) = $db->Tupla();
  625 + while ($this->db()->ProximoRegistro()) {
  626 + list($caminho, $title, $prioridade, $link) = $this->db()->Tupla();
660 627 $listaBanners[] = array("titulo"=>$title, "caminho"=>$caminho, "prioridade"=>$prioridade, "link"=>$link, "controle_inicio"=>0, "controle_fim"=>0);
661 628 }
662 629  
... ... @@ -727,111 +694,128 @@ class clsBase extends clsConfig
727 694  
728 695 function MakeAll ()
729 696 {
730   - $cronometro = new clsCronometro();
731   - $cronometro->marca('inicio');
732   - $liberado = TRUE;
733   -
734   - $saida_geral = '';
735   -
736   - if ($this->convidado) {
737   - @session_start();
738   - $_SESSION['convidado'] = TRUE;
739   - $_SESSION['id_pessoa'] = '0';
740   - session_write_close();
741   - }
  697 + try {
  698 + $cronometro = new clsCronometro();
  699 + $cronometro->marca('inicio');
  700 + $liberado = TRUE;
  701 +
  702 + $saida_geral = '';
  703 +
  704 + if ($this->convidado) {
  705 + @session_start();
  706 + $_SESSION['convidado'] = TRUE;
  707 + $_SESSION['id_pessoa'] = '0';
  708 + session_write_close();
  709 + }
742 710  
743   - $controlador = new clsControlador();
744   - if ($controlador->Logado() && $liberado || $this->convidado) {
745   - $this->Formular();
746   - $this->VerificaPermicao();
747   - $this->CadastraAcesso();
748   - $saida_geral = $this->MakeHeadHtml();
  711 + $controlador = new clsControlador();
  712 + if ($controlador->Logado() && $liberado || $this->convidado) {
  713 + $this->Formular();
  714 + $this->VerificaPermicao();
  715 + $this->CadastraAcesso();
  716 + $saida_geral = $this->MakeHeadHtml();
749 717  
750   - // @todo else ruim, colocar abre e fecha colchetes ao redor de foreach.
751   - if ($this->renderMenu) {
752   - $saida_geral .= $this->MakeBody();
753   - }
754   - else {
755   - foreach ($this->clsForm as $form) {
756   - $saida_geral .= $form->RenderHTML();
  718 + // @todo else ruim, colocar abre e fecha colchetes ao redor de foreach.
  719 + if ($this->renderMenu) {
  720 + $saida_geral .= $this->MakeBody();
  721 + }
  722 + else {
  723 + foreach ($this->clsForm as $form) {
  724 + $saida_geral .= $form->RenderHTML();
  725 + }
757 726 }
758   - }
759 727  
760   - $saida_geral .= $this->MakeFootHtml();
  728 + $saida_geral .= $this->MakeFootHtml();
761 729  
762   - if ($_GET['suspenso'] == 1 || $_SESSION['suspenso'] == 1 || $_SESSION["tipo_menu"] == 1) {
763   - if ($this->renderMenuSuspenso) {
764   - $saida_geral = str_replace("<!-- #&MENUSUSPENSO&# -->", $this->makeMenuSuspenso(), $saida_geral);
765   - }
  730 + if ($_GET['suspenso'] == 1 || $_SESSION['suspenso'] == 1 || $_SESSION["tipo_menu"] == 1) {
  731 + if ($this->renderMenuSuspenso) {
  732 + $saida_geral = str_replace("<!-- #&MENUSUSPENSO&# -->", $this->makeMenuSuspenso(), $saida_geral);
  733 + }
766 734  
767   - if ($_GET['suspenso'] == 1) {
768   - @session_start();
769   - $_SESSION['suspenso'] = 1;
770   - @session_write_close();
  735 + if ($_GET['suspenso'] == 1) {
  736 + @session_start();
  737 + $_SESSION['suspenso'] = 1;
  738 + @session_write_close();
  739 + }
771 740 }
772 741 }
773   - }
774   - elseif ((empty($_POST['login'])) || (empty($_POST['senha'])) && $liberado) {
775   - $saida_geral .= $this->MakeHeadHtml();
776   - $controlador->Logar(FALSE);
777   - $saida_geral .= $this->MakeFootHtml();
778   - }
779   - else {
780   - $controlador->Logar(TRUE);
781   - if ($controlador->Logado() && $liberado) {
782   - $this->Formular();
783   - $this->VerificaPermicao();
784   - $this->CadastraAcesso();
785   - $saida_geral = $this->MakeHeadHtml();
786   - $saida_geral .= $this->MakeBody();
  742 + elseif ((empty($_POST['login'])) || (empty($_POST['senha'])) && $liberado) {
  743 + $saida_geral .= $this->MakeHeadHtml();
  744 + $controlador->Logar(FALSE);
787 745 $saida_geral .= $this->MakeFootHtml();
788 746 }
789 747 else {
790   - $saida_geral = $this->MakeHeadHtml();
791   - $controlador->Logar (false);
792   - $saida_geral .= $this->MakeFootHtml();
  748 + $controlador->Logar(TRUE);
  749 + if ($controlador->Logado() && $liberado) {
  750 + $this->Formular();
  751 + $this->VerificaPermicao();
  752 + $this->CadastraAcesso();
  753 + $saida_geral = $this->MakeHeadHtml();
  754 + $saida_geral .= $this->MakeBody();
  755 + $saida_geral .= $this->MakeFootHtml();
  756 + }
  757 + else {
  758 + $saida_geral = $this->MakeHeadHtml();
  759 + $controlador->Logar (false);
  760 + $saida_geral .= $this->MakeFootHtml();
  761 + }
793 762 }
794   - }
795 763  
796   - echo $saida_geral;
  764 + echo $saida_geral;
  765 +
  766 + $cronometro->marca('fim');
  767 + $tempoTotal = $cronometro->getTempoTotal();
  768 + $tempoTotal += 0;
  769 + $objConfig = new clsConfig();
  770 +
  771 + if ($tempoTotal > $objConfig->arrayConfig["intSegundosProcessaPagina"]) {
  772 + $conteudo = "<table border=\"1\" width=\"100%\">";
  773 + $conteudo .= "<tr><td><b>Data</b>:</td><td>" . date( "d/m/Y H:i:s", time() ) . "</td></tr>";
  774 + $conteudo .= "<tr><td><b>Script</b>:</td><td>{$_SERVER["PHP_SELF"]}</td></tr>";
  775 + $conteudo .= "<tr><td><b>Tempo de processamento</b>:</td><td>{$tempoTotal} segundos</td></tr>";
  776 + $conteudo .= "<tr><td><b>Tempo max permitido</b>:</td><td>{$objConfig->arrayConfig["intSegundosProcessaPagina"]} segundos</td></tr>";
  777 + $conteudo .= "<tr><td><b>URL get</b>:</td><td>{$_SERVER['QUERY_STRING']}</td></tr>";
  778 + $conteudo .= "<tr><td><b>Metodo</b>:</td><td>{$_SERVER["REQUEST_METHOD"]}</td></tr>";
  779 +
  780 + if ($_SERVER["REQUEST_METHOD"] == "POST") {
  781 + $conteudo .= "<tr><td><b>POST vars</b>:</td><td>";
  782 + foreach ($_POST as $var => $val) {
  783 + $conteudo .= "{$var} => {$val}<br>";
  784 + }
  785 + $conteudo .= "</td></tr>";
  786 + }
  787 + elseif ($_SERVER["REQUEST_METHOD"] == "GET") {
  788 + $conteudo .= "<tr><td><b>GET vars</b>:</td><td>";
  789 + foreach ($_GET as $var => $val) {
  790 + $conteudo .= "{$var} => {$val}<br>";
  791 + }
  792 + $conteudo .= "</td></tr>";
  793 + }
797 794  
798   - $cronometro->marca('fim');
799   - $tempoTotal = $cronometro->getTempoTotal();
800   - $tempoTotal += 0;
801   - $objConfig = new clsConfig();
  795 + if ($_SERVER['HTTP_REFERER']) {
  796 + $conteudo .= "<tr><td><b>Referrer</b>:</td><td>{$_SERVER["HTTP_REFERER"]}</td></tr>";
  797 + }
802 798  
803   - if ($tempoTotal > $objConfig->arrayConfig["intSegundosProcessaPagina"]) {
804   - $conteudo = "<table border=\"1\" width=\"100%\">";
805   - $conteudo .= "<tr><td><b>Data</b>:</td><td>" . date( "d/m/Y H:i:s", time() ) . "</td></tr>";
806   - $conteudo .= "<tr><td><b>Script</b>:</td><td>{$_SERVER["PHP_SELF"]}</td></tr>";
807   - $conteudo .= "<tr><td><b>Tempo de processamento</b>:</td><td>{$tempoTotal} segundos</td></tr>";
808   - $conteudo .= "<tr><td><b>Tempo max permitido</b>:</td><td>{$objConfig->arrayConfig["intSegundosProcessaPagina"]} segundos</td></tr>";
809   - $conteudo .= "<tr><td><b>URL get</b>:</td><td>{$_SERVER['QUERY_STRING']}</td></tr>";
810   - $conteudo .= "<tr><td><b>Metodo</b>:</td><td>{$_SERVER["REQUEST_METHOD"]}</td></tr>";
  799 + $conteudo .= "</table>";
811 800  
812   - if ($_SERVER["REQUEST_METHOD"] == "POST") {
813   - $conteudo .= "<tr><td><b>POST vars</b>:</td><td>";
814   - foreach ($_POST as $var => $val) {
815   - $conteudo .= "{$var} => {$val}<br>";
816   - }
817   - $conteudo .= "</td></tr>";
818   - }
819   - elseif ($_SERVER["REQUEST_METHOD"] == "GET") {
820   - $conteudo .= "<tr><td><b>GET vars</b>:</td><td>";
821   - foreach ($_GET as $var => $val) {
822   - $conteudo .= "{$var} => {$val}<br>";
823   - }
824   - $conteudo .= "</td></tr>";
  801 + $objMail = new clsEmail($objConfig->arrayConfig['ArrStrEmailsAdministradores'], "[INTRANET - PMI] Desempenho de pagina", $conteudo);
  802 + $objMail->envia();
825 803 }
  804 + }
  805 + catch (Exception $e) {
  806 + $lastError = error_get_last();
826 807  
827   - if ($_SERVER['HTTP_REFERER']) {
828   - $conteudo .= "<tr><td><b>Referrer</b>:</td><td>{$_SERVER["HTTP_REFERER"]}</td></tr>";
829   - }
  808 + @session_start();
  809 + $_SESSION['last_error_message'] = $e->getMessage();
  810 + $_SESSION['last_php_error_message'] = $lastError['message'];
  811 + $_SESSION['last_php_error_line'] = $lastError['line'];
  812 + $_SESSION['last_php_error_file'] = $lastError['file'];
  813 + @session_write_close();
830 814  
831   - $conteudo .= "</table>";
  815 + error_log("Erro inesperado (pego em clsBase): " . $e->getMessage());
  816 + NotificationMailer::unexpectedError($e->getMessage());
832 817  
833   - $objMail = new clsEmail($objConfig->arrayConfig['ArrStrEmailsAdministradores'], "[INTRANET - PMI] Desempenho de pagina", $conteudo);
834   - $objMail->envia();
  818 + die("<script>document.location.href = '/module/Error/unexpected';</script>");
835 819 }
836 820 }
837 821  
... ... @@ -841,4 +825,26 @@ class clsBase extends clsConfig
841 825 $this->prog_alert = $string;
842 826 }
843 827 }
844   -}
845 828 \ No newline at end of file
  829 +
  830 + protected function checkUserExpirations() {
  831 + $user = Portabilis_Utils_User::load('current_user');
  832 + $uri = $_SERVER['REQUEST_URI'];
  833 + $forcePasswordUpdate = $GLOBALS['coreExt']['Config']->app->user_accounts->force_password_update == true;
  834 +
  835 + if($user['expired_account'] || $user['proibido'] != '0' || $user['ativo'] != '1')
  836 + header("Location: /intranet/logof.php");
  837 +
  838 + elseif($user['expired_password'] && $forcePasswordUpdate && $uri != '/module/Usuario/AlterarSenha')
  839 + header("Location: /module/Usuario/AlterarSenha");
  840 + }
  841 +
  842 + // wrappers for Portabilis_*Utils*
  843 +
  844 + protected function db() {
  845 + return Portabilis_Utils_Database::db();
  846 + }
  847 +
  848 + function _currentUserId() {
  849 + return Portabilis_Utils_User::currentUserId();
  850 + }
  851 +}
... ...