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,11 +25,19 @@
25 * @license @@license@@ 25 * @license @@license@@
26 * @package iEd_Include 26 * @package iEd_Include
27 * @since Arquivo disponível desde a versão 1.0.0 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 // Inclui arquivo de bootstrapping 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 require_once 'include/clsCronometro.inc.php'; 42 require_once 'include/clsCronometro.inc.php';
35 require_once 'clsConfigItajai.inc.php'; 43 require_once 'clsConfigItajai.inc.php';
@@ -41,6 +49,11 @@ require_once 'include/Geral.inc.php'; @@ -41,6 +49,11 @@ require_once 'include/Geral.inc.php';
41 require_once 'include/pmicontrolesis/geral.inc.php'; 49 require_once 'include/pmicontrolesis/geral.inc.php';
42 require_once 'include/funcoes.inc.php'; 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 * clsBase class. 58 * clsBase class.
46 * 59 *
@@ -199,10 +212,6 @@ class clsBase extends clsConfig @@ -199,10 +212,6 @@ class clsBase extends clsConfig
199 function VerificaPermicaoNumerico($processo_ap) 212 function VerificaPermicaoNumerico($processo_ap)
200 { 213 {
201 if (is_numeric($processo_ap)) { 214 if (is_numeric($processo_ap)) {
202 - @session_start();  
203 - $id_usuario = $_SESSION['id_pessoa'];  
204 - session_write_close();  
205 -  
206 $sempermissao = TRUE; 215 $sempermissao = TRUE;
207 216
208 if ($processo_ap == 0) { 217 if ($processo_ap == 0) {
@@ -210,11 +219,9 @@ class clsBase extends clsConfig @@ -210,11 +219,9 @@ class clsBase extends clsConfig
210 } 219 }
211 220
212 if ($processo_ap != 0) { 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 $sempermissao = FALSE; 225 $sempermissao = FALSE;
219 } 226 }
220 227
@@ -222,9 +229,9 @@ class clsBase extends clsConfig @@ -222,9 +229,9 @@ class clsBase extends clsConfig
222 // permissão de acesso ao processo. Já a segunda, não existe 229 // permissão de acesso ao processo. Já a segunda, não existe
223 // sentido para nivel = 2 já que processoAp pode ser de níveis 230 // sentido para nivel = 2 já que processoAp pode ser de níveis
224 // maiores que 2. 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 $sempermissao = FALSE; 235 $sempermissao = FALSE;
229 } 236 }
230 237
@@ -250,11 +257,11 @@ class clsBase extends clsConfig @@ -250,11 +257,11 @@ class clsBase extends clsConfig
250 257
251 $variaveis = "POST\n{$posts}GET\n{$gets}SESSION\n{$sessions}"; 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 else { 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 return FALSE; 267 return FALSE;
@@ -298,35 +305,33 @@ class clsBase extends clsConfig @@ -298,35 +305,33 @@ class clsBase extends clsConfig
298 $menu_tutor = ''; 305 $menu_tutor = '';
299 306
300 if ($this->processoAp) { 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 if ($menu_atual) { 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 $submenu[] = $tupla['cod_menu_submenu']; 314 $submenu[] = $tupla['cod_menu_submenu'];
309 } 315 }
310 $where = implode(" OR ref_cod_menu_submenu = ", $submenu); 316 $where = implode(" OR ref_cod_menu_submenu = ", $submenu);
311 $where = "ref_cod_menu_submenu = $where"; 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 else { 320 else {
315 $this->prog_alert .= "O menu pai do processo AP {$this->processoAp} está voltando vazio (cod_menu inexistente?).<br>"; 321 $this->prog_alert .= "O menu pai do processo AP {$this->processoAp} está voltando vazio (cod_menu inexistente?).<br>";
316 } 322 }
317 } 323 }
318 elseif ($_SESSION['menu_atual']) { 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 $submenu[] = $tupla['cod_menu_submenu']; 329 $submenu[] = $tupla['cod_menu_submenu'];
325 } 330 }
326 331
327 $where = implode(" OR ref_cod_menu_submenu = ", $submenu); 332 $where = implode(" OR ref_cod_menu_submenu = ", $submenu);
328 $where = "ref_cod_menu_submenu = $where"; 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 if ($menu_tutor) { 337 if ($menu_tutor) {
@@ -353,15 +358,13 @@ class clsBase extends clsConfig @@ -353,15 +358,13 @@ class clsBase extends clsConfig
353 $saida = '<script type="text/javascript">'; 358 $saida = '<script type="text/javascript">';
354 $saida .= 'array_menu = new Array(); array_id = new Array();'; 359 $saida .= 'array_menu = new Array(); array_id = new Array();';
355 360
356 - $banco = new clsBanco();  
357 foreach ($lista_menu as $menu_suspenso) { 361 foreach ($lista_menu as $menu_suspenso) {
358 $ico_menu = ''; 362 $ico_menu = '';
359 363
360 if (is_numeric($menu_suspenso['ref_cod_ico'])) { 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 $ico_menu = "imagens/banco_imagens/$ico_menu"; 368 $ico_menu = "imagens/banco_imagens/$ico_menu";
366 } 369 }
367 } 370 }
@@ -540,61 +543,12 @@ class clsBase extends clsConfig @@ -540,61 +543,12 @@ class clsBase extends clsConfig
540 543
541 $menu_dinamico = $this->makeBanner(); 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 $notificacao = ""; 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 $titulo = ($url) ? "<a href=\"{$url}\">{$titulo}</a>": $titulo; 553 $titulo = ($url) ? "<a href=\"{$url}\">{$titulo}</a>": $titulo;
600 554
@@ -606,14 +560,29 @@ class clsBase extends clsConfig @@ -606,14 +560,29 @@ class clsBase extends clsConfig
606 </div>"; 560 </div>";
607 } 561 }
608 $saida = str_replace( "<!-- #&NOTIFICACOES&# -->", $notificacao, $saida ); 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 // Pega o endereço IP do host, primeiro com HTTP_X_FORWARDED_FOR (para pegar o IP real 587 // Pega o endereço IP do host, primeiro com HTTP_X_FORWARDED_FOR (para pegar o IP real
619 // caso o host esteja atrás de um proxy) 588 // caso o host esteja atrás de um proxy)
@@ -626,9 +595,8 @@ class clsBase extends clsConfig @@ -626,9 +595,8 @@ class clsBase extends clsConfig
626 $ip_maquina = $_SERVER['REMOTE_ADDR']; 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 return $saida; 601 return $saida;
634 } 602 }
@@ -652,11 +620,10 @@ class clsBase extends clsConfig @@ -652,11 +620,10 @@ class clsBase extends clsConfig
652 { 620 {
653 $retorno = ''; 621 $retorno = '';
654 $listaBanners = array(); 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 $listaBanners[] = array("titulo"=>$title, "caminho"=>$caminho, "prioridade"=>$prioridade, "link"=>$link, "controle_inicio"=>0, "controle_fim"=>0); 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,111 +694,128 @@ class clsBase extends clsConfig
727 694
728 function MakeAll () 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 $saida_geral .= $this->MakeFootHtml(); 745 $saida_geral .= $this->MakeFootHtml();
788 } 746 }
789 else { 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,4 +825,26 @@ class clsBase extends clsConfig
841 $this->prog_alert = $string; 825 $this->prog_alert = $string;
842 } 826 }
843 } 827 }
844 -}  
845 \ No newline at end of file 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 +}