コード例 #1
0
 function renderHTML()
 {
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     $_SESSION['calendario']['ultimo_valido'] = 0;
     $obj_permissoes = new clsPermissoes();
     if ($obj_permissoes->nivel_acesso($this->pessoa_logada) > 7) {
         $retorno .= '
     <table width="100%" height="40%" cellspacing="1" cellpadding="2" border="0" class="tablelistagem">
       <tbody>';
         $retorno .= '
       <tr>
         <td colspan="2" valig="center" height="50">
           <center class="formdktd">Usuário sem permissão para acessar esta página</center>
         </td>
       </tr>';
         $retorno .= '
       </tbody>
     </table>';
         return $retorno;
     }
     $retorno .= '
   <table width="100%" cellspacing="1" cellpadding="2" border="0" class="tablelistagem">
     <tbody>';
     if ($_POST) {
         $this->ref_cod_escola = $_POST['ref_cod_escola'] ? $_POST['ref_cod_escola'] : $_SESSION['calendario']['ref_cod_escola'];
         $this->ref_cod_instituicao = $_POST['ref_cod_instituicao'] ? $_POST['ref_cod_instituicao'] : $_SESSION['calendario']['ref_cod_instituicao'];
         if ($_POST['mes']) {
             $this->mes = $_POST['mes'];
         }
         if ($_POST['ano']) {
             $this->ano = $_POST['ano'];
         }
         if ($_POST['cod_calendario_ano_letivo']) {
             $this->cod_calendario_ano_letivo = $_POST['cod_calendario_ano_letivo'];
         }
     } elseif (isset($_SESSION['calendario'])) {
         // passa todos os valores em SESSION para atributos do objeto
         foreach ($_SESSION['calendario'] as $var => $val) {
             $this->{$var} = $val === '' ? NULL : $val;
         }
     }
     if ($_GET) {
         header('Location: educar_calendario_ano_letivo_lst.php');
     }
     if (!$this->mes) {
         $this->mes = date('n');
     }
     if (!$this->ano) {
         $this->ano = date('Y');
     }
     $nivel_usuario = $obj_permissoes->nivel_acesso($this->pessoa_logada);
     if (!$this->ref_cod_escola) {
         $this->ref_cod_escola = $obj_permissoes->getEscola($this->pessoa_logada);
     }
     if (!$this->ref_cod_instituicao) {
         $this->ref_cod_instituicao = $obj_permissoes->getInstituicao($this->pessoa_logada);
     }
     $get_escola = 1;
     $obrigatorio = FALSE;
     include 'educar_calendario_pesquisas.php';
     $obj_calendario_ano_letivo = new clsPmieducarCalendarioAnoLetivo();
     $obj_calendario_ano_letivo->setOrderby('ano ASC');
     $obj_calendario_ano_letivo->setLimite($this->limite, $this->offset);
     $lista = array();
     $obj_calendario_ano_letivo->setOrderby('ano');
     switch ($nivel_usuario) {
         // Poli-institucional
         case 1:
         case 2:
         case 4:
             if (!isset($this->ref_cod_escola)) {
                 break;
             }
             $lista = $obj_calendario_ano_letivo->lista($this->cod_calendario_ano_letivo, $this->ref_cod_escola, NULL, NULL, !isset($this->cod_calendario_ano_letivo) ? $this->ano : NULL, NULL, NULL, 1);
             break;
     }
     $total = $obj_calendario_ano_letivo->_total;
     if (empty($lista)) {
         if ($nivel_usuario == 4) {
             $retorno .= '<tr><td colspan="2" align="center" class="formdktd">Sem Calendário Letivo</td></tr>';
         } else {
             if ($_POST) {
                 $retorno .= '<tr><td colspan="2" align="center" class="formdktd">Sem Calendário para o ano selecionado</td></tr>';
             } else {
                 $retorno .= '<tr><td colspan="2" align="center" class="formdktd">Selecione uma escola para exibir o calendário</td></tr>';
             }
         }
     }
     // Monta a lista
     if (is_array($lista) && count($lista)) {
         foreach ($lista as $key => $registro) {
             // Guarda dados na $_SESSION
             $_SESSION['calendario'] = array('cod_calendario_ano_letivo' => $registro['cod_calendario_ano_letivo'], 'ref_cod_instituicao' => $this->ref_cod_instituicao, 'ref_cod_escola' => $this->ref_cod_escola, 'ano' => $this->ano, 'mes' => $this->mes);
             // Nome da escola
             $obj_ref_cod_escola = new clsPmieducarEscola($registro['ref_cod_escola']);
             $det_ref_cod_escola = $obj_ref_cod_escola->detalhe();
             $registro['nm_escola'] = $det_ref_cod_escola['nome'];
             // Início e término do ano letivo.
             $obj_ano_letivo_modulo = new clsPmieducarAnoLetivoModulo();
             $inicio_ano = $obj_ano_letivo_modulo->menorData($registro['ano'], $this->ref_cod_escola);
             $fim_ano = $obj_ano_letivo_modulo->maiorData($registro['ano'], $this->ref_cod_escola);
             $inicio_ano = explode('/', dataFromPgToBr($inicio_ano));
             $fim_ano = explode('/', dataFromPgToBr($fim_ano));
             // Turmas da escola
             $turmas = App_Model_IedFinder::getTurmas($registro['ref_cod_escola']);
             // Mapper de Calendario_Model_TurmaDataMapper
             $calendarioTurmaMapper = new Calendario_Model_TurmaDataMapper();
             $obj_calendario = new clsCalendario();
             $obj_calendario->setLargura(600);
             $obj_calendario->permite_trocar_ano = TRUE;
             $obj_calendario->setCorDiaSemana(array(0, 6), 'ROSA');
             $obj_dia_calendario = new clsPmieducarCalendarioDia($registro['cod_calendario_ano_letivo'], $this->mes, NULL, NULL, NULL, NULL, NULL);
             $lista_dia = $obj_dia_calendario->lista($registro['cod_calendario_ano_letivo'], $this->mes, NULL, NULL, NULL, NULL);
             if ($lista_dia) {
                 $array_dias = array();
                 $array_descricao = array();
                 foreach ($lista_dia as $dia) {
                     $descricao = '';
                     $url = sprintf('educar_calendario_anotacao_lst.php?ref_cod_calendario_ano_letivo=%s&ref_cod_escola=%s&dia=%s&mes=%s&ano=%s', $registro['cod_calendario_ano_letivo'], $this->ref_cod_escola, $dia['dia'], $dia['mes'], $this->ano);
                     $botao_editar = sprintf('
           <div style="z-index: 0;">
             <br />
             <input type="button" value="Anotações" onclick="window.location=\'%s\';" class="botaolistagem"/>
           </div>', $url);
                     if ($dia['ref_cod_calendario_dia_motivo']) {
                         $array_dias[$dia['dia']] = $dia['dia'];
                         $obj_motivo = new clsPmieducarCalendarioDiaMotivo($dia['ref_cod_calendario_dia_motivo']);
                         $det_motivo = $obj_motivo->detalhe();
                         /**
                          * @todo CoreExt_Enum?
                          */
                         $tipo = strtoupper($det_motivo['tipo']) == 'E' ? 'Dia Extra-Letivo' : 'Dia Não Letivo';
                         // Busca pelas turmas que estão marcadas para esse dia
                         $args = array('calendarioAnoLetivo' => $registro['cod_calendario_ano_letivo'], 'mes' => $dia['mes'], 'dia' => $dia['dia'], 'ano' => $this->ano);
                         $calendarioTurmas = $calendarioTurmaMapper->findAll(array(), $args);
                         $nomeTurmas = array();
                         foreach ($calendarioTurmas as $calendarioTurma) {
                             $nomeTurmas[] = $turmas[$calendarioTurma->turma];
                         }
                         if (0 == count($nomeTurmas)) {
                             $calendarioTurmas = '';
                         } else {
                             $calendarioTurmas = 'Turmas: <ul><li>' . implode('</li><li>', $nomeTurmas) . '</li></ul>';
                         }
                         $descricao = sprintf('<div style="z-index: 0;">%s</div><div align="left" style="z-index: 0;">Motivo: %s<br />Descrição: %s<br />%s</div>%s', $tipo, $det_motivo['nm_motivo'], $dia['descricao'], $calendarioTurmas, $botao_editar);
                         $array_descricao[$dia['dia']] = $descricao;
                         if (strtoupper($det_motivo['tipo']) == 'E') {
                             $obj_calendario->adicionarLegenda('Extra Letivo', 'LARANJA_ESCURO');
                             $obj_calendario->adicionarArrayDias('Extra Letivo', array($dia['dia']));
                         } elseif (strtoupper($det_motivo['tipo']) == 'N') {
                             $obj_calendario->adicionarLegenda('Não Letivo', '#VERDE_ESCURO');
                             $obj_calendario->adicionarArrayDias('Não Letivo', array($dia['dia']));
                         }
                         $obj_calendario->diaDescricao($array_dias, $array_descricao);
                     } elseif ($dia['descricao']) {
                         $array_dias[$dia['dia']] = $dia['dia'];
                         $descricao = sprintf('<div style="z-index: 0;">Descrição: %s</div>%s', $dia['descricao'], $botao_editar);
                         $array_descricao[$dia['dia']] = $descricao;
                     }
                 }
                 if (!empty($array_dias)) {
                     $obj_calendario->diaDescricao($array_dias, $array_descricao);
                 }
             }
             if ($this->mes <= (int) $inicio_ano[1] && $this->ano == (int) $inicio_ano[2]) {
                 if ($this->mes == (int) $inicio_ano[1]) {
                     $obj_calendario->adicionarLegenda('Início Ano Letivo', 'AMARELO');
                     $obj_calendario->adicionarArrayDias('Início Ano Letivo', array($inicio_ano[0]));
                 }
                 $dia_inicio = (int) $inicio_ano[0];
                 $dias = array();
                 if ($this->mes < (int) $inicio_ano[1]) {
                     $NumeroDiasMes = (int) date('t', $this->mes);
                     for ($d = 1; $d <= $NumeroDiasMes; $d++) {
                         $dias[] = $d;
                     }
                     $obj_calendario->setLegendaPadrao('Não Letivo');
                     if (!empty($dias)) {
                         $obj_calendario->adicionarArrayDias('Não Letivo', $dias);
                     }
                 } else {
                     $dia_inicio;
                     for ($d = 1; $d < $dia_inicio; $d++) {
                         $dias[] = $d;
                     }
                     $obj_calendario->setLegendaPadrao('Dias Letivos', 'AZUL_CLARO');
                     if (!empty($dias)) {
                         $obj_calendario->adicionarLegenda('Não Letivo', '#F7F7F7');
                         $obj_calendario->adicionarArrayDias('Não Letivo', $dias);
                     }
                 }
             } elseif ($this->mes >= (int) $fim_ano[1] && $this->ano == (int) $fim_ano[2]) {
                 $dia_inicio = (int) $fim_ano[0];
                 $dias = array();
                 if ($this->mes > (int) $fim_ano[1]) {
                     $NumeroDiasMes = (int) date('t', $this->mes);
                     for ($d = 1; $d <= $NumeroDiasMes; $d++) {
                         $dias[] = $d;
                     }
                     $obj_calendario->setLegendaPadrao('Não Letivo');
                     if (!empty($dias)) {
                         $obj_calendario->adicionarArrayDias('Não Letivo', $dias);
                     }
                 } else {
                     $NumeroDiasMes = (int) date('t', $this->mes);
                     for ($d = $fim_ano[0]; $d <= $NumeroDiasMes; $d++) {
                         $dias[] = $d;
                     }
                     $obj_calendario->setLegendaPadrao('Dias Letivos', 'AZUL_CLARO');
                     if (!empty($dias)) {
                         $obj_calendario->adicionarLegenda('Não Letivo', '#F7F7F7');
                         $obj_calendario->adicionarArrayDias('Não Letivo', $dias);
                     }
                 }
                 if ($this->mes == (int) $fim_ano[1]) {
                     $obj_calendario->adicionarLegenda('Término Ano Letivo', 'AMARELO');
                     $obj_calendario->adicionarArrayDias('Término Ano Letivo', array($fim_ano[0]));
                 }
             } else {
                 $obj_calendario->setLegendaPadrao('Dias Letivos', 'AZUL_CLARO');
             }
             $obj_calendario->setCorDiaSemana(array(0, 6), 'ROSA');
             $obj_anotacao = new clsPmieducarCalendarioDiaAnotacao();
             $lista_anotacoes = $obj_anotacao->lista(NULL, $this->mes, $registro['cod_calendario_ano_letivo'], NULL, 1);
             if ($lista_anotacoes) {
                 $dia_anotacao = array();
                 foreach ($lista_anotacoes as $anotacao) {
                     if ($this->mes == (int) $anotacao['ref_mes']) {
                         $dia_anotacao[$anotacao['ref_dia']] = $anotacao['ref_dia'];
                     }
                 }
                 $obj_calendario->adicionarIconeDias($dia_anotacao, 'A');
             }
             $obj_calendario->all_days_url = sprintf('educar_calendario_anotacao_lst.php?ref_cod_calendario_ano_letivo=%s', $registro['cod_calendario_ano_letivo']);
             // Gera código HTML do calendário
             $calendario = $obj_calendario->getCalendario($this->mes, $this->ano, 'mes_corrente', $_GET, array('cod_calendario_ano_letivo' => $registro['cod_calendario_ano_letivo']));
             $retorno .= sprintf('<tr><td colspan="2"><center><b>%s</b>%s</center></td></tr>', $registro['nm_escola'], $calendario);
         }
     }
     if ($obj_permissoes->permissao_cadastra(620, $this->pessoa_logada, 7)) {
         if ($_POST && empty($lista) && $_SESSION['calendario']['ultimo_valido']) {
             $url = sprintf('educar_calendario_ano_letivo_lst.php?ref_cod_instituicao=%s&ref_cod_escola=%s&ano=%s', $this->ref_cod_instituicao, $this->ref_cod_escola, $_SESSION['calendario']['ano']);
             $bt_voltar = sprintf('<input type="button" value="Voltar" onclick="window.location=\'%s\';" class="botaolistagem" />', $url);
         }
         $url = sprintf('educar_calendario_ano_letivo_cad.php?ref_cod_instituicao=%s&ref_cod_escola=%s', $this->ref_cod_instituicao, $this->ref_cod_escola);
         $retorno .= sprintf('
     <tr>
       <td>&nbsp;</td>
     </tr>
     <tr>
       <td align="center" colspan="2">
         %s
         <input type="button" value="Novo Calendário Letivo" onclick="window.location=\'%s\';" class="botaolistagem" />
       </td>
     </tr>', $bt_voltar, $url);
     }
     $retorno .= '
     </tbody>
   </table>';
     $localizacao = new LocalizacaoSistema();
     $localizacao->entradaCaminhos(array($_SERVER['SERVER_NAME'] . "/intranet" => "In&iacute;cio", "educar_index.php" => "i-Educar - Escola", "" => "Calend&aacute;rio do ano letivo"));
     $this->enviaLocalizacao($localizacao->montar());
     return $retorno;
 }
コード例 #2
0
 /**
  * @access  protected
  * @param   int   $codTurma
  * @param   int   $dia
  * @param   int   $mes
  * @param   int   $ano
  * @param   array $counter
  * @param   int   $dia_semana
  * @param   bool  $mes_final
  * @return  int
  */
 function _getNumeroDias($codTurma, $dia, $mes, $ano, $counter, $mes_final = FALSE, $dia_semana = NULL)
 {
     static $calendarioTurmaMapper = NULL;
     $year = $ano;
     $month = $mes;
     $date = mktime(1, 1, 1, $month, $dia, $year);
     $first_day_of_month = strtotime('-' . (date('d', $date) - 1) . ' days', $date);
     $last_day_of_month = strtotime('+' . (date('t', $first_day_of_month) - 1) . ' days', $first_day_of_month);
     $last_day_of_month = date('d', $last_day_of_month);
     $obj_calendario = new clsPmieducarCalendarioAnoLetivo();
     $obj_calendario->setCamposLista('cod_calendario_ano_letivo');
     $lista_calendario = $obj_calendario->lista(NULL, $this->ref_cod_escola, NULL, NULL, $this->ano, NULL, NULL, NULL, NULL, 1);
     // Dias não letivos da turma
     $diasNaoLetivosTurma = array();
     if (is_array($lista_calendario)) {
         $lista_calendario = array_shift($lista_calendario);
         $obj_dia = new clsPmieducarCalendarioDia();
         $obj_dia->setCamposLista('dia');
         $dias_nao_letivo = $obj_dia->lista($lista_calendario, $mes, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, "'n'");
         // Instancia o mapper apenas uma vez
         if (is_null($calendarioTurmaMapper)) {
             require_once 'Calendario/Model/TurmaDataMapper.php';
             $calendarioTurmaMapper = new Calendario_Model_TurmaDataMapper();
         }
         // Carrega os dias do mês da turma
         $where = array('calendarioAnoLetivo' => $lista_calendario, 'ano' => $ano, 'mes' => $mes, 'turma' => $codTurma);
         $diasTurma = $calendarioTurmaMapper->findAll(array(), $where);
         // Separa apenas os dias da turma que forem não-letivos
         foreach ($diasTurma as $diaTurma) {
             if (in_array($diaTurma->dia, $dias_nao_letivo)) {
                 $diasNaoLetivosTurma[] = $diaTurma->dia;
             }
         }
     }
     if ($mes_final) {
         $last_day_of_month = $dia;
         $dia = 1;
     }
     // Argumentos para o callback $counter
     $args = array('dia' => $dia, 'mes' => $mes, 'ano' => $ano, 'last_day_of_month' => $last_day_of_month, 'diasNaoLetivosTurma' => $diasNaoLetivosTurma, 'dia_semana' => $dia_semana);
     return call_user_func_array($counter, $args);
 }