Commit 6b85cbc0cc1c884faec0855583ea74de201e6865

Authored by Eriksen Costa
1 parent 4393a922
Exists in master

Adicionado novo método em {{{clsPmieducarServidor}}}:

 * {{{getHorariosServidor()}}}: retorna um array com todos os horários de aula de um servidor
 * Página de visualização do cadastro de Servidor foi atualizada para exibir todos os horários de aula do servidor (caso o tenha em Quadro de horários)
ieducar/intranet/educar_servidor_det.php
... ... @@ -359,6 +359,54 @@ class indice extends clsDetalhe
359 359 "<a href='javascript:trocaDisplay(\"det_pree\");' >Mostrar detalhe</a><div id='det_pree' name='det_pree' style='display:none;'>".$tabela."</div>"));
360 360 }
361 361  
  362 + // Horários do professor
  363 + $horarios = $tmp_obj->getHorariosServidor($registro['cod_servidor'],
  364 + $this->ref_cod_instituicao);
  365 +
  366 + if ($horarios) {
  367 + $tabela = "
  368 + <table cellspacing='0' cellpadding='0' border='0'>
  369 + <tr bgcolor='#A1B3BD' align='center'>
  370 + <td width='150'>Escola</td>
  371 + <td width='100'>Curso</td>
  372 + <td width='70'>Série</td>
  373 + <td width='70'>Turma</td>
  374 + <td width='100'>Componente curricular</td>
  375 + <td width='70'>Dia da semana</td>
  376 + <td width='70'>Hora inicial</td>
  377 + <td width='70'>Hora final</td>
  378 + </tr>";
  379 +
  380 + foreach ($horarios as $horario) {
  381 + $class = $class == 'formlttd' ? 'formmdtd' : 'formlttd';
  382 +
  383 + $tabela .= sprintf('
  384 + <tr class="%s" align="center">
  385 + <td>%s</td>
  386 + <td>%s</td>
  387 + <td>%s</td>
  388 + <td>%s</td>
  389 + <td>%s</td>
  390 + <td>%s</td>
  391 + <td>%s</td>
  392 + <td>%s</td>
  393 + </tr>',
  394 + $class,
  395 + $horario['nm_escola'], $horario['nm_curso'], $horario['nm_serie'],
  396 + $horario['nm_turma'], $horario['nome'], $dias_da_semana[$horario['dia_semana']],
  397 + $horario['hora_inicial'], $horario['hora_final']
  398 + );
  399 + }
  400 +
  401 + $tabela .= "</table>";
  402 +
  403 + $this->addDetalhe(array(
  404 + 'Horários de aula',
  405 + "<a href='javascript:trocaDisplay(\"horarios\");' >Mostrar detalhes</a>" .
  406 + "<div id='horarios' name='det_pree' style='display:none;'>" . $tabela . "</div>"
  407 + ));
  408 + }
  409 +
362 410 $obj_permissoes = new clsPermissoes();
363 411  
364 412 if ($obj_permissoes->permissao_cadastra(635, $this->pessoa_logada, 7)) {
... ...
ieducar/intranet/include/pmieducar/clsPmieducarServidor.inc.php
... ... @@ -974,6 +974,34 @@ class clsPmieducarServidor
974 974 return FALSE;
975 975 }
976 976  
  977 + /**
  978 + * Retorna um array com os códigos de servidor e instituição, usando os
  979 + * valores dos parâmetros ou das propriedades da instância atual.
  980 + *
  981 + * @since Método disponível desde a versão 1.2.0
  982 + * @param int $codServidor Código do servidor, caso não seja informado,
  983 + * usa o código disponível no objeto atual
  984 + * @param int $codInstituicao Código da instituição, caso não seja
  985 + * informado, usa o código disponível no objeto atual
  986 + * @return array|bool (codServidor => (int), codInstituicao => (int))
  987 + */
  988 + function _getCodServidorInstituicao($codServidor = NULL, $codInstituicao = NULL)
  989 + {
  990 + $codServidor = $codServidor != NULL ? $codServidor : $this->cod_servidor;
  991 + $codInstituicao = $codInstituicao != NULL ? $codInstituicao : $this->ref_cod_instituicao;
  992 +
  993 + // Se códigos não forem fornecidos, nem pela classe nem pelo código cliente,
  994 + // retorna FALSE
  995 + if ($codServidor == NULL || $codInstituicao == NULL) {
  996 + return FALSE;
  997 + }
  998 +
  999 + return array(
  1000 + 'codServidor' => $codServidor,
  1001 + 'codInstituicao' => $codInstituicao
  1002 + );
  1003 + }
  1004 +
977 1005 /**
978 1006 * Retorna um array com os códigos das disciplinas do servidor
979 1007 *
... ... @@ -988,8 +1016,10 @@ class clsPmieducarServidor
988 1016 function getServidorDisciplinas($codServidor = NULL,
989 1017 $codInstituicao = NULL)
990 1018 {
991   - $codServidor = $codServidor != NULL ? $codServidor : $this->cod_servidor;
992   - $codInstituicao = $codInstituicao != NULL ? $codInstituicao : $this->ref_cod_instituicao;
  1019 + $codigos = $this->_getCodServidorInstituicao($codServidor, $codInstituicao);
  1020 + if (! $codigos) {
  1021 + return FALSE;
  1022 + }
993 1023  
994 1024 // Se códigos não forem fornecidos, nem pela classe nem pelo código cliente,
995 1025 // retorna FALSE
... ... @@ -1002,7 +1032,7 @@ class clsPmieducarServidor
1002 1032 $sql .= 'WHERE sd.ref_cod_servidor = s.cod_servidor AND ';
1003 1033 $sql .= 'sd.ref_cod_servidor = \'%d\' AND sd.ref_ref_cod_instituicao = \'%d\'';
1004 1034  
1005   - $sql = sprintf($sql, $codServidor, $codInstituicao);
  1035 + $sql = sprintf($sql, $codigos['codServidor'], $codigos['codInstituicao']);
1006 1036  
1007 1037 $db = new clsBanco();
1008 1038 $db->Consulta($sql);
... ... @@ -1022,6 +1052,78 @@ class clsPmieducarServidor
1022 1052 }
1023 1053  
1024 1054 /**
  1055 + * Retorna os horários de aula do servidor na instituição.
  1056 + *
  1057 + * @since Método disponível desde a versão 1.0.2
  1058 + * @param int $codServidor Código do servidor, caso não seja informado,
  1059 + * usa o código disponível no objeto atual
  1060 + * @param int $codInstituicao Código da instituição, caso não seja
  1061 + * informado, usa o código disponível no objeto atual
  1062 + * @return array|bool Array associativo com os índices nm_escola, nm_curso,
  1063 + * nm_serie, nm_turma, nome (componente curricular), dia_semana,
  1064 + * hora_inicial e hora_final.
  1065 + */
  1066 + function getHorariosServidor($codServidor = NULL, $codInstituicao = NULL)
  1067 + {
  1068 + $codigos = $this->_getCodServidorInstituicao($codServidor, $codInstituicao);
  1069 + if (! $codigos) {
  1070 + return FALSE;
  1071 + }
  1072 +
  1073 + $sql = 'SELECT
  1074 + ec.nm_escola,
  1075 + c.nm_curso,
  1076 + s.nm_serie,
  1077 + t.nm_turma,
  1078 + cc.nome,
  1079 + qhh.dia_semana,
  1080 + qhh.hora_inicial,
  1081 + qhh.hora_final
  1082 + FROM
  1083 + pmieducar.quadro_horario_horarios qhh,
  1084 + pmieducar.quadro_horario qh,
  1085 + pmieducar.turma t,
  1086 + pmieducar.serie s,
  1087 + pmieducar.curso c,
  1088 + pmieducar.escola_complemento ec,
  1089 + modules.componente_curricular cc
  1090 + WHERE
  1091 + qh.cod_quadro_horario = qhh.ref_cod_quadro_horario
  1092 + AND qh.ref_cod_turma = t.cod_turma
  1093 + AND t.ref_ref_cod_serie = s.cod_serie
  1094 + AND s.ref_cod_curso = c.cod_curso
  1095 + AND qhh.ref_cod_escola = ec.ref_cod_escola
  1096 + AND qhh.ref_cod_disciplina = cc.id
  1097 + AND qh.ativo = 1
  1098 + AND qhh.ativo = 1
  1099 + AND t.ativo = 1
  1100 + AND qhh.ref_servidor = %d
  1101 + AND qhh.ref_cod_instituicao_servidor = %d
  1102 + ORDER BY
  1103 + nm_escola,
  1104 + dia_semana,
  1105 + hora_inicial';
  1106 +
  1107 + $sql = sprintf($sql, $codigos['codServidor'], $codigos['codInstituicao']);
  1108 +
  1109 + $db = new clsBanco();
  1110 + $db->Consulta($sql);
  1111 +
  1112 + $horarios = array();
  1113 +
  1114 + while ($db->ProximoRegistro() != FALSE) {
  1115 + $row = $db->Tupla();
  1116 + $horarios[] = $row;
  1117 + }
  1118 +
  1119 + if (count($horarios)) {
  1120 + return $horarios;
  1121 + }
  1122 +
  1123 + return FALSE;
  1124 + }
  1125 +
  1126 + /**
1025 1127 * Verifica se um servidor desempenha a função de professor.
1026 1128 *
1027 1129 * Primeiro, recuperamos todas as funções do servidor e procuramos
... ...