Commit efd9248527b82859892e8553da916cce86f6a557

Authored by Eriksen Costa
1 parent e94353e5
Exists in master

Adicionado módulo Calendário:

 * Formulário de dia de calendário agora inclui quais turmas serão afetadas pelo dia letivo extra ou dia não letivo
 * Relatório de frequência escolar foi atualizado para não contabilizar como dia letivo uma turma que esteja marcada em um dia não letivo
   * Refactoring consideravelmente complicado, código confusíssimo!
 * Novo método em {{{App_Model_IedFinder}}}: {{{getTurmas()}}}
 * Novo arquivo javascript: {{{ied/forms.js}}}, com um Clojure com métodos de manipulação de formulários
 * Arquivo do {{{PHPJS}}} foi renomeado para {{{ied/phpjs.js}}}
ieducar/intranet/educar_calendario_ano_letivo_lst.php
... ... @@ -34,6 +34,9 @@ require_once 'include/clsBanco.inc.php';
34 34 require_once 'include/pmieducar/geral.inc.php';
35 35 require_once 'clsCalendario.inc.php';
36 36  
  37 +require_once 'Calendario/Model/TurmaDataMapper.php';
  38 +require_once 'App/Model/IedFinder.php';
  39 +
37 40 /**
38 41 * clsIndexBase class.
39 42 *
... ... @@ -246,6 +249,12 @@ class indice extends clsConfig
246 249 $inicio_ano = explode('/', dataFromPgToBr($inicio_ano));
247 250 $fim_ano = explode('/', dataFromPgToBr($fim_ano));
248 251  
  252 + // Turmas da escola
  253 + $turmas = App_Model_IedFinder::getTurmas($registro['ref_cod_escola']);
  254 +
  255 + // Mapper de Calendario_Model_TurmaDataMapper
  256 + $calendarioTurmaMapper = new Calendario_Model_TurmaDataMapper();
  257 +
249 258 $obj_calendario = new clsCalendario();
250 259 $obj_calendario->setLargura(600);
251 260 $obj_calendario->permite_trocar_ano = TRUE;
... ... @@ -292,9 +301,31 @@ class indice extends clsConfig
292 301 $tipo = strtoupper($det_motivo['tipo']) == 'E' ?
293 302 'Dia Extra-Letivo' : 'Dia Não Letivo';
294 303  
  304 + // Busca pelas turmas que estão marcadas para esse dia
  305 + $args = array(
  306 + 'calendarioAnoLetivo' => $registro['cod_calendario_ano_letivo'],
  307 + 'mes' => $dia['mes'],
  308 + 'dia' => $dia['dia'],
  309 + 'ano' => $this->ano
  310 + );
  311 +
  312 + $calendarioTurmas = $calendarioTurmaMapper->findAll(array(), $args);
  313 +
  314 + $nomeTurmas = array();
  315 + foreach ($calendarioTurmas as $calendarioTurma) {
  316 + $nomeTurmas[] = $turmas[$calendarioTurma->turma];
  317 + }
  318 +
  319 + if (0 == count($nomeTurmas)) {
  320 + $calendarioTurmas = '';
  321 + }
  322 + else {
  323 + $calendarioTurmas = 'Turmas: <ul><li>' . implode('</li><li>', $nomeTurmas) . '</li></ul>';
  324 + }
  325 +
295 326 $descricao = sprintf(
296   - '<div style="z-index: 0;">%s</div><div align="left" style="z-index: 0;">Motivo: %s<br />Descrição: %s</div>%s',
297   - $tipo, $det_motivo['nm_motivo'], $dia['descricao'], $botao_editar
  327 + '<div style="z-index: 0;">%s</div><div align="left" style="z-index: 0;">Motivo: %s<br />Descrição: %s<br />%s</div>%s',
  328 + $tipo, $det_motivo['nm_motivo'], $dia['descricao'], $calendarioTurmas, $botao_editar
298 329 );
299 330  
300 331 $array_descricao[$dia['dia']] = $descricao;
... ... @@ -306,16 +337,9 @@ class indice extends clsConfig
306 337 elseif (strtoupper($det_motivo['tipo']) == 'N') {
307 338 $obj_calendario->adicionarLegenda('Não Letivo', '#VERDE_ESCURO');
308 339 $obj_calendario->adicionarArrayDias('Não Letivo', array($dia['dia']));
309   -
310   - $descricao = sprintf(
311   - '<div style="z-index: 0;">Descrição: %s</div>%s',
312   - $dia['descricao'], $botao_editar
313   - );
314   -
315   - $array_descricao[$dia['dia']] = $descricao;
316   -
317   - $obj_calendario->diaDescricao($array_dias, $array_descricao);
318 340 }
  341 +
  342 + $obj_calendario->diaDescricao($array_dias, $array_descricao);
319 343 }
320 344 elseif ($dia['descricao']) {
321 345 $array_dias[$dia['dia']] = $dia['dia'];
... ...
ieducar/intranet/educar_calendario_dia_cad.php
... ... @@ -33,6 +33,9 @@ require_once &#39;include/clsCadastro.inc.php&#39;;
33 33 require_once 'include/clsBanco.inc.php';
34 34 require_once 'include/pmieducar/geral.inc.php';
35 35  
  36 +require_once 'App/Model/IedFinder.php';
  37 +require_once 'Calendario/Model/TurmaDataMapper.php';
  38 +
36 39 /**
37 40 * clsIndexBase class.
38 41 *
... ... @@ -79,6 +82,85 @@ class indice extends clsCadastro
79 82 var $ano;
80 83 var $ref_cod_escola;
81 84  
  85 + /**
  86 + * @var Calendario_Model_TurmaDataMapper
  87 + */
  88 + var $_calendarioTurmaDataMapper = NULL;
  89 +
  90 + /**
  91 + * Getter.
  92 + * @access protected
  93 + * @return Calendario_Model_TurmaDataMapper
  94 + */
  95 + function _getCalendarioTurmaDataMapper()
  96 + {
  97 + if (is_null($this->_calendarioTurmaDataMapper)) {
  98 + $this->_calendarioTurmaDataMapper = new Calendario_Model_TurmaDataMapper();
  99 + }
  100 + return $this->_calendarioTurmaDataMapper;
  101 + }
  102 +
  103 + /**
  104 + * Verifica se existe uma instância de Calendario_Model_Turma.
  105 + *
  106 + * @access protected
  107 + * @param int $codCalendarioAnoLetivo Código da chave primária pmieducar.calendario_ano_letivo
  108 + * @param int $mes
  109 + * @param int $dia
  110 + * @param int $ano
  111 + * @param int $codTurma Código da chave primária de pmieducar.turma
  112 + * @return bool
  113 + */
  114 + function _hasEntry($codCalendarioAnoLetivo, $mes, $dia, $ano, $codTurma)
  115 + {
  116 + $args = array(
  117 + 'calendarioAnoLetivo' => $codCalendarioAnoLetivo,
  118 + 'mes' => $mes,
  119 + 'dia' => $dia,
  120 + 'ano' => $ano,
  121 + 'turma' => $codTurma
  122 + );
  123 +
  124 + try {
  125 + $this->_getCalendarioTurmaDataMapper()->find($args);
  126 + return TRUE;
  127 + }
  128 + catch (Exception $e) {
  129 + }
  130 +
  131 + return FALSE;
  132 + }
  133 +
  134 + /**
  135 + * Retorna um array de instâncias de Calendario_Model_Turma para um dado
  136 + * calendário de ano letivo de escola em mês, dia e ano específicos.
  137 + *
  138 + * @access protected
  139 + * @param int $codCalendarioAnoLetivo Código de pmieducar.calendario_ano_letivo
  140 + * @param int $mes
  141 + * @param int $dia
  142 + * @param int $ano
  143 + * @return array (cod_turma => Calendario_Model_Turma)
  144 + */
  145 + function _getEntries($codCalendarioAnoLetivo, $mes, $dia, $ano)
  146 + {
  147 + $where = array(
  148 + 'calendarioAnoLetivo' => $codCalendarioAnoLetivo,
  149 + 'mes' => $mes,
  150 + 'dia' => $dia,
  151 + 'ano' => $ano
  152 + );
  153 +
  154 + $turmas = $this->_getCalendarioTurmaDataMapper()->findAll(array(), $where);
  155 +
  156 + $ret = array();
  157 + foreach ($turmas as $turma) {
  158 + $ret[$turma->turma] = $turma;
  159 + }
  160 +
  161 + return $ret;
  162 + }
  163 +
82 164 function Inicializar()
83 165 {
84 166 $retorno = 'Novo';
... ... @@ -168,27 +250,33 @@ class indice extends clsCadastro
168 250  
169 251 // Foreign keys
170 252 $opcoes = array('' => 'Selecione');
171   - if (class_exists('clsPmieducarCalendarioDiaMotivo')) {
172   - $objTemp = new clsPmieducarCalendarioDiaMotivo();
173   - $lista = $objTemp->lista(NULL, $ref_cod_escola, NULL, NULL, NULL, NULL,
174   - NULL, NULL, NULL, NULL, NULL, 1
175   - );
  253 + $objTemp = new clsPmieducarCalendarioDiaMotivo();
  254 + $lista = $objTemp->lista(NULL, $ref_cod_escola, NULL, NULL, NULL, NULL,
  255 + NULL, NULL, NULL, NULL, NULL, 1
  256 + );
176 257  
177   - if (is_array($lista) && count($lista)) {
178   - foreach ($lista as $registro) {
179   - $opcoes[$registro['cod_calendario_dia_motivo']] = $registro['nm_motivo'];
180   - }
  258 + if (is_array($lista) && count($lista)) {
  259 + foreach ($lista as $registro) {
  260 + $opcoes[$registro['cod_calendario_dia_motivo']] = $registro['nm_motivo'];
181 261 }
182 262 }
183   - else {
184   - $opcoes = array('' => 'Erro na geracao');
185   - }
186 263  
187 264 $this->campoLista(
188 265 'ref_cod_calendario_dia_motivo', 'Calendário Dia Motivo', $opcoes,
189 266 $this->ref_cod_calendario_dia_motivo, '', FALSE, '', '', FALSE, FALSE
190 267 );
191 268  
  269 + $seletor = '<label><input id="_turmas_sel" onclick="new ied_forms.checkAll(document, \'formcadastro\', \'turmas\')" type="checkbox" /> Selecionar todas</label>';
  270 + $this->campoRotulo('turmas_rotulo', 'Turmas', $seletor);
  271 + $turmas = App_Model_IedFinder::getTurmas($ref_cod_escola);
  272 +
  273 + foreach ($turmas as $codTurma => $nomeTurma) {
  274 + $checked = $this->_hasEntry($this->ref_cod_calendario_ano_letivo,
  275 + $this->mes, $this->dia, $this->ano, $codTurma);
  276 +
  277 + $this->campoCheck('turmas[' . $codTurma . ']', '', $checked, $nomeTurma, FALSE);
  278 + }
  279 +
192 280 $this->campoMemo('descricao', 'Descrição', $this->descricao, 30, 10, TRUE);
193 281 }
194 282  
... ... @@ -210,6 +298,17 @@ class indice extends clsCadastro
210 298  
211 299 $cadastrou = $obj->cadastra();
212 300  
  301 + foreach ($this->turmas as $codTurma => $turma) {
  302 + $calendarioTurma = new Calendario_Model_Turma(array(
  303 + 'calendarioAnoLetivo' => $this->ref_cod_calendario_ano_letivo,
  304 + 'ano' => $this->ano,
  305 + 'mes' => $this->mes,
  306 + 'dia' => $this->dia,
  307 + 'turma' => $codTurma
  308 + ));
  309 + $this->_getCalendarioTurmaDataMapper()->save($calendarioTurma);
  310 + }
  311 +
213 312 if ($cadastrou) {
214 313 $this->mensagem .= 'Cadastro efetuado com sucesso. <br />';
215 314 $url = sprintf(
... ... @@ -237,11 +336,48 @@ class indice extends clsCadastro
237 336 $obj = new clsPmieducarCalendarioDia(
238 337 $this->ref_cod_calendario_ano_letivo, $this->mes, $this->dia,
239 338 $this->pessoa_logada, $this->pessoa_logada, $this->ref_cod_calendario_dia_motivo,
240   - $this->descricao, $this->data_cadastro, $this->data_exclusao, $this->ativo
  339 + $this->descricao, $this->data_cadastro, $this->data_exclusao, 1
241 340 );
242 341  
243 342 $editou = $obj->edita();
244 343  
  344 + // Inicialização de arrays
  345 + $insert = $delete = $entries = $intersect = array();
  346 +
  347 + if (isset($this->turmas)) {
  348 + foreach ($this->turmas as $codTurma => $turma) {
  349 + $calendarioTurma = new Calendario_Model_Turma(array(
  350 + 'calendarioAnoLetivo' => $this->ref_cod_calendario_ano_letivo,
  351 + 'ano' => $this->ano,
  352 + 'mes' => $this->mes,
  353 + 'dia' => $this->dia,
  354 + 'turma' => $codTurma
  355 + ));
  356 + $insert[$codTurma] = $calendarioTurma;
  357 + }
  358 + }
  359 +
  360 + // Instâncias persistidas de Calendario_Model_Turma
  361 + $entries = $this->_getEntries($this->ref_cod_calendario_ano_letivo,
  362 + $this->mes, $this->dia, $this->ano);
  363 +
  364 + // Instâncias para apagar
  365 + $delete = array_diff(array_keys($entries), array_keys($insert));
  366 +
  367 + // Instâncias já persistidas
  368 + $intersect = array_intersect(array_keys($entries), array_keys($insert));
  369 +
  370 + foreach ($delete as $id) {
  371 + $this->_getCalendarioTurmaDataMapper()->delete($entries[$id]);
  372 + }
  373 +
  374 + foreach ($insert as $key => $entry) {
  375 + if (in_array($key, $intersect)) {
  376 + continue;
  377 + }
  378 + $this->_getCalendarioTurmaDataMapper()->save($entry);
  379 + }
  380 +
245 381 if ($editou) {
246 382 $this->mensagem .= 'Edição efetuada com sucesso. <br />';
247 383 $url = sprintf(
... ... @@ -269,10 +405,19 @@ class indice extends clsCadastro
269 405 $obj = new clsPmieducarCalendarioDia(
270 406 $this->ref_cod_calendario_ano_letivo, $this->mes, $this->dia,
271 407 $this->pessoa_logada, $this->pessoa_logada, NULL, NULL,
272   - $this->data_cadastro, $this->data_exclusao, 1
  408 + $this->data_cadastro, $this->data_exclusao, 0
273 409 );
274 410  
275 411 $excluiu = $obj->edita();
  412 +
  413 + $entries = $this->_getEntries(
  414 + $this->ref_cod_calendario_ano_letivo, $this->mes, $this->dia, $this->ano
  415 + );
  416 +
  417 + foreach ($entries as $entry) {
  418 + $this->_getCalendarioTurmaDataMapper()->delete($entry);
  419 + }
  420 +
276 421 if ($excluiu) {
277 422 $this->mensagem .= 'Exclusão efetuada com sucesso. <br />';
278 423 $url = sprintf(
... ...
ieducar/intranet/educar_relatorio_diario_classe_avaliacao_proc.php
... ... @@ -189,7 +189,7 @@ class indice extends clsCadastro
189 189 return TRUE;
190 190 }
191 191  
192   - $titlo = 'Diário de Classe - ' . $this->ano;
  192 + $titulo = 'Diário de Classe - ' . $this->ano;
193 193  
194 194 $prox_mes = $this->mes + 1;
195 195 $this->pdf = new clsPDF($titulo, $titulo, 'A4', '', FALSE, FALSE);
... ...
ieducar/intranet/educar_relatorio_diario_classe_proc.php
... ... @@ -247,7 +247,9 @@ class indice extends clsCadastro
247 247 $dia = 1;
248 248 }
249 249  
250   - $total_semanas += $this->getNumeroDiasMes($dia, $mes, $this->ano, $mes_final);
  250 + $total_semanas += $this->getNumeroDiasMes($this->ref_cod_turma, $dia, $mes,
  251 + $this->ano, $mes_final);
  252 + $total_semanas += $ndm;
251 253 }
252 254  
253 255 $this->pdf = new clsPDF('Diário de Classe - ' . $this->ano,
... ... @@ -340,7 +342,7 @@ class indice extends clsCadastro
340 342 if (FALSE == $lista_quadro_horarios && TRUE == $this->temporario) {
341 343 $this->indefinido = TRUE;
342 344  
343   - $total_semanas = $coreExt['Config']->get(
  345 + $total_semanas = $coreExt['Config']->get(
344 346 $coreExt['Config']->report->diario_classe->dias_temporarios, 30
345 347 );
346 348 }
... ... @@ -361,7 +363,7 @@ class indice extends clsCadastro
361 363 }
362 364  
363 365 $total_semanas += $this->getDiasSemanaMes(
364   - $dia, $mes_, $this->ano, $dia_semana, $mes_final
  366 + $this->ref_cod_turma, $dia, $mes_, $this->ano, $dia_semana, $mes_final
365 367 );
366 368 }
367 369 }
... ... @@ -681,8 +683,60 @@ class indice extends clsCadastro
681 683 $this->pdf->linha_relativa(660, 517, 130, 0);
682 684 }
683 685  
684   - function getNumeroDiasMes($dia, $mes, $ano, $mes_final = FALSE)
  686 + /**
  687 + * Retorna o número de dias de um mês a partir de certo dia descartando
  688 + * domingos, sábados e dias não letivos.
  689 + *
  690 + * @param int $codTurma
  691 + * @param int $dia
  692 + * @param int $mes
  693 + * @param int $ano
  694 + * @param bool $mes_final
  695 + * @return int
  696 + */
  697 + function getNumeroDiasMes($codTurma, $dia, $mes, $ano, $mes_final = FALSE)
  698 + {
  699 + return $this->_getNumeroDias($codTurma, $dia, $mes, $ano,
  700 + array($this, '_counterNumeroDiaMes'), $mes_final);
  701 + }
  702 +
  703 + /**
  704 + * Retorna o número de dias de um mês contabilizando apenas o dia da semana
  705 + * (domingo, segunda, ... sábado) desejado, descartando dias não letivos
  706 + * enquanto a data do dia da semana não for maior que a data final do
  707 + * período definido pelo módulo escolhido.
  708 + *
  709 + * @param int $codTurma
  710 + * @param int $dia
  711 + * @param int $mes
  712 + * @param int $ano
  713 + * @param int $dia_semana
  714 + * @param bool $mes_final
  715 + * @return int
  716 + */
  717 + function getDiasSemanaMes($codTurma, $dia, $mes, $ano, $dia_semana,
  718 + $mes_final = FALSE)
  719 + {
  720 + return $this->_getNumeroDias($codTurma, $dia, $mes, $ano,
  721 + array($this, '_counterDiasSemanaMes'), $mes_final, $dia_semana);
  722 + }
  723 +
  724 + /**
  725 + * @access protected
  726 + * @param int $codTurma
  727 + * @param int $dia
  728 + * @param int $mes
  729 + * @param int $ano
  730 + * @param array $counter
  731 + * @param int $dia_semana
  732 + * @param bool $mes_final
  733 + * @return int
  734 + */
  735 + function _getNumeroDias($codTurma, $dia, $mes, $ano, $counter,
  736 + $mes_final = FALSE, $dia_semana = NULL)
685 737 {
  738 + static $calendarioTurmaMapper = NULL;
  739 +
686 740 $year = $ano;
687 741 $month = $mes;
688 742  
... ... @@ -693,24 +747,44 @@ class indice extends clsCadastro
693 747  
694 748 $last_day_of_month = date('d', $last_day_of_month);
695 749  
696   - $numero_dias = 0;
697   -
698 750 $obj_calendario = new clsPmieducarCalendarioAnoLetivo();
699 751 $obj_calendario->setCamposLista('cod_calendario_ano_letivo');
700   - $lista = $obj_calendario->lista(NULL, $this->ref_cod_escola, NULL, NULL,
701   - $this->ano, NULL, NULL, NULL, NULL, 1);
  752 + $lista_calendario = $obj_calendario->lista(NULL, $this->ref_cod_escola,
  753 + NULL, NULL, $this->ano, NULL, NULL, NULL, NULL, 1);
702 754  
703   - if ($lista) {
704   - $lista_calendario = array_shift($lista);
705   - }
  755 + // Dias não letivos da turma
  756 + $diasNaoLetivosTurma = array();
  757 +
  758 + if (is_array($lista_calendario)) {
  759 + $lista_calendario = array_shift($lista_calendario);
  760 +
  761 + $obj_dia = new clsPmieducarCalendarioDia();
  762 + $obj_dia->setCamposLista('dia');
  763 + $dias_nao_letivo = $obj_dia->lista($lista_calendario, $mes, NULL, NULL,
  764 + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, "'n'");
  765 +
  766 + // Instancia o mapper apenas uma vez
  767 + if (is_null($calendarioTurmaMapper)) {
  768 + require_once 'Calendario/Model/TurmaDataMapper.php';
  769 + $calendarioTurmaMapper = new Calendario_Model_TurmaDataMapper();
  770 + }
706 771  
707   - $obj_dia = new clsPmieducarCalendarioDia();
708   - $obj_dia->setCamposLista('dia');
709   - $dias_nao_letivo = $obj_dia->lista($lista_calendario, $mes, NULL, NULL, NULL,
710   - NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, "'n'");
  772 + // Carrega os dias do mês da turma
  773 + $where = array(
  774 + 'calendarioAnoLetivo' => $lista_calendario,
  775 + 'ano' => $ano,
  776 + 'mes' => $mes,
  777 + 'turma' => $codTurma
  778 + );
  779 +
  780 + $diasTurma = $calendarioTurmaMapper->findAll(array(), $where);
711 781  
712   - if (!$dias_nao_letivo) {
713   - $dias_nao_letivo = array();
  782 + // Separa apenas os dias da turma que forem não-letivos
  783 + foreach ($diasTurma as $diaTurma) {
  784 + if (in_array($diaTurma->dia, $dias_nao_letivo)) {
  785 + $diasNaoLetivosTurma[] = $diaTurma->dia;
  786 + }
  787 + }
714 788 }
715 789  
716 790 if ($mes_final) {
... ... @@ -718,12 +792,39 @@ class indice extends clsCadastro
718 792 $dia = 1;
719 793 }
720 794  
  795 + // Argumentos para o callback $counter
  796 + $args = array(
  797 + 'dia' => $dia,
  798 + 'mes' => $mes,
  799 + 'ano' => $ano,
  800 + 'last_day_of_month' => $last_day_of_month,
  801 + 'diasNaoLetivosTurma' => $diasNaoLetivosTurma,
  802 + 'dia_semana' => $dia_semana
  803 + );
  804 +
  805 + return call_user_func_array($counter, $args);
  806 + }
  807 +
  808 + /**
  809 + * @access protected
  810 + * @param int $dia
  811 + * @param int $mes
  812 + * @param int $ano
  813 + * @param int $last_day_of_month
  814 + * @param array $diasNaoLetivosTurma
  815 + * @return int
  816 + */
  817 + function _counterNumeroDiaMes($dia, $mes, $ano, $last_day_of_month,
  818 + $diasNaoLetivosTurma)
  819 + {
  820 + $numero_dias = 0;
  821 +
721 822 for ($day = $dia; $day <= $last_day_of_month; $day++) {
722   - $date = mktime(1, 1, 1, $month, $day, $year);
  823 + $date = mktime(1, 1, 1, $mes, $day, $ano);
723 824 $dia_semana_corrente = getdate($date);
724 825 $dia_semana_corrente = $dia_semana_corrente['wday'] + 1;
725 826  
726   - if (($dia_semana_corrente != 1 && $dia_semana_corrente != 7) && (array_search($day, $dias_nao_letivo) === FALSE)) {
  827 + if (($dia_semana_corrente != 1 && $dia_semana_corrente != 7) && !in_array($day, $diasNaoLetivosTurma)) {
727 828 $numero_dias++;
728 829 }
729 830 }
... ... @@ -731,53 +832,32 @@ class indice extends clsCadastro
731 832 return $numero_dias;
732 833 }
733 834  
734   - function getDiasSemanaMes($dia, $mes, $ano, $dia_semana, $mes_final = FALSE)
  835 + /**
  836 + * @access protected
  837 + * @param int $dia
  838 + * @param int $mes
  839 + * @param int $ano
  840 + * @param int $last_day_of_month
  841 + * @param array $diasNaoLetivosTurma
  842 + * @return int
  843 + */
  844 + function _counterDiasSemanaMes($dia, $mes, $ano, $last_day_of_month,
  845 + $diasNaoLetivosTurma, $dia_semana)
735 846 {
736   - $year = $ano;
737   - $month = $mes;
738   -
739   - $date = mktime(1, 1, 1, $month, $dia, $year);
740   -
741   - $first_day_of_month = strtotime('-' . (date('d', $date) - 1) . ' days', $date);
742   - $last_day_of_month = strtotime('+' . (date('t', $first_day_of_month) - 1) . ' days', $first_day_of_month);
743   -
744   - $last_day_of_month = date('d', $last_day_of_month);
745   -
746 847 $numero_dias = 0;
747 848  
748   - $obj_calendario = new clsPmieducarCalendarioAnoLetivo();
749   - $obj_calendario->setCamposLista('cod_calendario_ano_letivo');
750   - $lista_calendario = $obj_calendario->lista(NULL, $this->ref_cod_escola, NULL,
751   - NULL, $this->ano, NULL, NULL, NULL, NULL, 1);
752   -
753   - if (is_array($lista_calendario)) {
754   - $lista_calendario = array_shift($lista_calendario);
755   - }
756   -
757   - $obj_dia = new clsPmieducarCalendarioDia();
758   - $obj_dia->setCamposLista('dia');
759   - $dias_nao_letivo = $obj_dia->lista($lista_calendario, $mes, NULL, NULL, NULL,
760   - NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, "'n'");
761   -
762   - if (!$dias_nao_letivo) {
763   - $dias_nao_letivo = array();
764   - }
765   -
766   - if ($mes_final) {
767   - $last_day_of_month = $dia;
768   - $dia = 1;
769   - }
770   -
771 849 for($day = $dia; $day <= $last_day_of_month; $day++) {
772   - $date = mktime(1, 1, 1, $month, $day, $year);
  850 + $date = mktime(1, 1, 1, $mes, $day, $ano);
773 851 $dia_semana_corrente = getdate($date);
774 852 $dia_semana_corrente = $dia_semana_corrente['wday'] + 1;
775 853  
776 854 $data_atual = sprintf('%s/%s/%s', $day, $mes, $ano);
777 855 $data_final = sprintf('%s/%s', $this->data_fim, $ano);
778 856  
779   - if (($dia_semana == $dia_semana_corrente) &&
780   - (array_search($day, $dias_nao_letivo) === FALSE) && data_maior($data_final, $data_atual)
  857 + if (
  858 + ($dia_semana == $dia_semana_corrente) &&
  859 + !in_array($day, $diasNaoLetivosTurma) &&
  860 + data_maior($data_final, $data_atual)
781 861 ) {
782 862 $numero_dias++;
783 863 }
... ...
ieducar/intranet/scripts/ied/forms.js 0 → 100644
... ... @@ -0,0 +1,61 @@
  1 +/**
  2 + * i-Educar - Sistema de gestão escolar
  3 + *
  4 + * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  5 + * <ctima@itajai.sc.gov.br>
  6 + *
  7 + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  8 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  9 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  10 + * qualquer versão posterior.
  11 + *
  12 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  13 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  14 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  15 + * do GNU para mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  18 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  19 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  20 + *
  21 + * @author Eriksen Costa <eriksen.paixao_bs@cobra.com.br>
  22 + * @license @@license@@
  23 + * @since Arquivo disponível desde a versão 2.0.0
  24 + * @version $Id$
  25 + */
  26 +
  27 +/**
  28 + * Closure com funções utilitárias para o manuseamento de formulários.
  29 + */
  30 +var ied_forms = new function() {
  31 + var checker = 0;
  32 +
  33 + /**
  34 + * Seleciona/deseleciona campos checkbox de um formulário. Cada chamada ao
  35 + * método executa uma ação de forma alternada: a primeira vez, altera a
  36 + * propriedade dos checkboxes para "checked", na segunda, remove a
  37 + * propriedade "checked" dos mesmos. Esse padrão segue nas chamadas
  38 + * subsequentes.
  39 + *
  40 + * @param document docObj
  41 + * @param string formId
  42 + * @param string fieldsName
  43 + */
  44 + this.checkAll = function(docObj, formId, fieldsName) {
  45 + if (checker === 0) {
  46 + checker = 1;
  47 + } else {
  48 + checker = 0;
  49 + }
  50 +
  51 + var regex = new RegExp(fieldsName);
  52 + var form = docObj.getElementById(formId);
  53 +
  54 + for (var i = 0; i < form.elements.length; i++) {
  55 + var elementName = form.elements[i].name;
  56 + if (null !== elementName.match(regex)) {
  57 + form.elements[i].checked = checker == 1 ? true : false;
  58 + }
  59 + }
  60 + };
  61 +};
0 62 \ No newline at end of file
... ...
ieducar/intranet/scripts/ied/phpjs.js 0 → 100644
... ... @@ -0,0 +1,174 @@
  1 +/**
  2 + * i-Educar - Sistema de gestão escolar
  3 + *
  4 + * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  5 + * <ctima@itajai.sc.gov.br>
  6 + *
  7 + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  8 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  9 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  10 + * qualquer versão posterior.
  11 + *
  12 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  13 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  14 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  15 + * do GNU para mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  18 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  19 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  20 + *
  21 + * Contém funções PHP portadas para o Javascript.
  22 + *
  23 + * Pacote PHPJS disponível em:
  24 + * <http://phpjs.org/packages/view/3063/name:933975c113578d0edd81fd2a76bcd480>
  25 + *
  26 + * Transliterado com iconv para ISO-8859-1.
  27 + * $ iconv -f UTF-8 -t ISO-8859-1//translit
  28 + *
  29 + * Contém as seguintes funções:
  30 + * - checkdate
  31 + *
  32 + * @author Eriksen Costa <eriksen.paixao_bs@cobra.com.br>
  33 + * @license @@license@@
  34 + * @since Arquivo disponível desde a versão 2.0.0
  35 + * @version $Id$
  36 + */
  37 +
  38 +/**
  39 + * Singleton para evitar múltipla instanciação de PHP_JS. Para obter o objeto,
  40 + * basta chamar o método getInstance():
  41 + *
  42 + * <code>
  43 + * phpjs = ied_phpjs.getInstance()
  44 + * phpjs.PHP_JS_FUNCTION(args, ...);
  45 + * </code>
  46 + *
  47 + * @return PHP_JS
  48 + */
  49 +var ied_phpjs = new function() {
  50 + var phpjs = new PHP_JS();
  51 + this.getInstance = function() {
  52 + return phpjs;
  53 + }
  54 +}
  55 +
  56 +
  57 + /*
  58 + * More info at: http://phpjs.org
  59 + *
  60 + * This is version: 3.17
  61 + * php.js is copyright 2010 Kevin van Zonneveld.
  62 + *
  63 + * Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld
  64 + * (http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White
  65 + * (http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jonas Raoni
  66 + * Soares Silva (http://www.jsfromhell.com), Jack, Philip Peterson, Legaev
  67 + * Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa,
  68 + * lmeyrick (https://sourceforge.net/projects/bcmath-js/), Nate, Philippe
  69 + * Baumann, Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/),
  70 + * Jani Hartikainen, Ash Searle (http://hexmen.com/blog/), travc, Ole
  71 + * Vrijenhoek, Carlos R. L. Rodrigues (http://www.jsfromhell.com),
  72 + * http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript,
  73 + * Michael Grier, Johnny Mast (http://www.phpvrouwen.nl), stag019, Rafal
  74 + * Kukawski (http://blog.kukawski.pl), pilus, T.Wild, Andrea Giammarchi
  75 + * (http://webreflection.blogspot.com), WebDevHobo
  76 + * (http://webdevhobo.blogspot.com/), GeekFG (http://geekfg.blogspot.com),
  77 + * d3x, Erkekjetter, marrtins, Steve Hilder, Martin
  78 + * (http://www.erlenwiese.de/), Robin, Oleg Eremeev, mdsjack
  79 + * (http://www.mdsjack.bo.it), majak, Mailfaker (http://www.weedem.fr/),
  80 + * David, felix, Mirek Slugen, KELAN, Paul Smith, Marc Palau, Chris, Josh
  81 + * Fraser
  82 + * (http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/),
  83 + * Breaking Par Consulting Inc
  84 + * (http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7),
  85 + * Tim de Koning (http://www.kingsquare.nl), Arpad Ray (mailto:arpad@php.net),
  86 + * Public Domain (http://www.json.org/json2.js), Michael White, Steven
  87 + * Levithan (http://blog.stevenlevithan.com), Joris, gettimeofday, Sakimori,
  88 + * Alfonso Jimenez (http://www.alfonsojimenez.com), Aman Gupta, Caio Ariede
  89 + * (http://caioariede.com), AJ, Diplom@t (http://difane.com/), saulius,
  90 + * Pellentesque Malesuada, Thunder.m, Tyler Akins (http://rumkin.com), Felix
  91 + * Geisendoerfer (http://www.debuggable.com/felix), gorthaur, Imgen Tata
  92 + * (http://www.myipdf.com/), Karol Kowalski, Kankrelune
  93 + * (http://www.webfaktory.info/), Lars Fischer, Subhasis Deb, josh, Frank
  94 + * Forte, Douglas Crockford (http://javascript.crockford.com), Adam Wallner
  95 + * (http://web2.bitbaro.hu/), Marco, paulo kuong, madipta, Gilbert, duncan,
  96 + * ger, mktime, Oskar Larsson Högfeldt (http://oskar-lh.name/), Arno, Nathan,
  97 + * Mateusz "loonquawl" Zalega, ReverseSyntax, Francois, Scott Cariss, Slawomir
  98 + * Kaniecki, Denny Wardhana, sankai, 0m3r, noname, john
  99 + * (http://www.jd-tech.net), Nick Kolosov (http://sammy.ru), Sanjoy Roy,
  100 + * Shingo, nobbler, Fox, marc andreu, T. Wild, class_exists, Jon Hohle,
  101 + * Pyerre, JT, Thiago Mata (http://thiagomata.blog.com), Linuxworld, Ozh,
  102 + * nord_ua, lmeyrick (https://sourceforge.net/projects/bcmath-js/this.),
  103 + * Thomas Beaucourt (http://www.webapp.fr), David Randall, merabi, T0bsn,
  104 + * Soren Hansen, Peter-Paul Koch (http://www.quirksmode.org/js/beat.html),
  105 + * MeEtc (http://yass.meetcweb.com), Bryan Elliott, Tim Wiel, Brad Touesnard,
  106 + * XoraX (http://www.xorax.info), djmix, Hyam Singer
  107 + * (http://www.impact-computing.com/), Paul, J A R, kenneth, Raphael (Ao
  108 + * RUDLER), David James, Steve Clay, Ole Vrijenhoek (http://www.nervous.nl/),
  109 + * Marc Jansen, Francesco, Der Simon (http://innerdom.sourceforge.net/), echo
  110 + * is bad, Lincoln Ramsay, Eugene Bulkin (http://doubleaw.com/), JB, Bayron
  111 + * Guevara, Stoyan Kyosev (http://www.svest.org/), LH, Matt Bradley, date,
  112 + * Kristof Coomans (SCK-CEN Belgian Nucleair Research Centre), Pierre-Luc
  113 + * Paour, Martin Pool, Brant Messenger (http://www.brantmessenger.com/), Kirk
  114 + * Strobeck, Saulo Vallory, Christoph, Wagner B. Soares, Artur Tchernychev,
  115 + * Valentina De Rosa, Jason Wong (http://carrot.org/), Daniel Esteban,
  116 + * strftime, Rick Waldron, Mick@el, Anton Ongson, Simon Willison
  117 + * (http://simonwillison.net), Gabriel Paderni, Philipp Lenssen, Marco van
  118 + * Oort, Bug?, Blues (http://tech.bluesmoon.info/), Tomasz Wesolowski, rezna,
  119 + * Eric Nagel, Bobby Drake, Luke Godfrey, Pul, uestla, Alan C, Zahlii, Ulrich,
  120 + * Yves Sucaet, hitwork, sowberry, johnrembo, Brian Tafoya
  121 + * (http://www.premasolutions.com/), Nick Callen, Steven Levithan
  122 + * (stevenlevithan.com), ejsanders, Scott Baker, Philippe Jausions
  123 + * (http://pear.php.net/user/jausions), Aidan Lister
  124 + * (http://aidanlister.com/), Norman "zEh" Fuchs, Rob, HKM, ChaosNo1, metjay,
  125 + * strcasecmp, strcmp, Taras Bogach, jpfle, Alexander Ermolaev
  126 + * (http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando,
  127 + * dptr1988, Le Torbi, Pedro Tainha (http://www.pedrotainha.com), James,
  128 + * penutbutterjelly, Christian Doebler, baris ozdil, Greg Frazier, Tod
  129 + * Gentille, Alexander M Beedie, Ryan W Tenney (http://ryan.10e.us),
  130 + * FGFEmperor, gabriel paderni, Atli Þór, Maximusya, daniel airton wermann
  131 + * (http://wermann.com.br), 3D-GRAF, Yannoo, jakes, Riddler
  132 + * (http://www.frontierwebdev.com/), T.J. Leahy, stensi, Matteo, Billy, vlado
  133 + * houba, Itsacon (http://www.itsacon.net/), Jalal Berrami, Victor, fearphage
  134 + * (http://http/my.opera.com/fearphage/), Luis Salazar
  135 + * (http://www.freaky-media.com/), FremyCompany, Tim de Koning, taith, Cord,
  136 + * Manish, davook, Benjamin Lupton, Garagoth, Andrej Pavlovic, Dino, William,
  137 + * rem, Russell Walker (http://www.nbill.co.uk/), Jamie Beck
  138 + * (http://www.terabit.ca/), setcookie, Michael, YUI Library:
  139 + * http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at
  140 + * http://hacks.bluesmoon.info/strftime/strftime.js, DtTvB
  141 + * (http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, meo,
  142 + * Greenseed, Luke Smith (http://lucassmith.name), Kheang Hok Chin
  143 + * (http://www.distantia.ca/), Rival, Diogo Resende, Allan Jensen
  144 + * (http://www.winternet.no), Howard Yeend, Jay Klehr, Amir Habibi
  145 + * (http://www.residence-mixte.com/), mk.keck, Yen-Wei Liu, Leslie Hoare, Ben
  146 + * Bryan, Cagri Ekin, booeyOH
  147 + *
  148 + * Dual licensed under the MIT (MIT-LICENSE.txt)
  149 + * and GPL (GPL-LICENSE.txt) licenses.
  150 + *
  151 + * Permission is hereby granted, free of charge, to any person obtaining a
  152 + * copy of this software and associated documentation files (the
  153 + * "Software"), to deal in the Software without restriction, including
  154 + * without limitation the rights to use, copy, modify, merge, publish,
  155 + * distribute, sublicense, and/or sell copies of the Software, and to
  156 + * permit persons to whom the Software is furnished to do so, subject to
  157 + * the following conditions:
  158 + *
  159 + * The above copyright notice and this permission notice shall be included
  160 + * in all copies or substantial portions of the Software.
  161 + *
  162 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  163 + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  164 + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  165 + * IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES
  166 + * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  167 + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  168 + * OTHER DEALINGS IN THE SOFTWARE.
  169 + */
  170 +
  171 + // Compression: minified
  172 + (function(){if(typeof(this.PHP_JS)==="undefined"){var PHP_JS=function(cfgObj){if(!(this instanceof PHP_JS)){return new PHP_JS(cfgObj);}
  173 + this.window=cfgObj&&cfgObj.window?cfgObj.window:window;this.php_js={};this.php_js.ini={};if(cfgObj){for(var ini in cfgObj.ini){this.php_js.ini[ini]={};this.php_js.ini[ini].local_value=cfgObj.ini[ini];this.php_js.ini[ini].global_value=cfgObj.ini[ini];}}};}
  174 + var php_js_shared={};PHP_JS.prototype={constructor:PHP_JS,checkdate:function(m,d,y){return m>0&&m<13&&y>0&&y<32768&&d>0&&d<=(new Date(y,m,0)).getDate();}};this.PHP_JS=PHP_JS;}());
0 175 \ No newline at end of file
... ...
ieducar/intranet/scripts/phpjs/ieducar.package.js
... ... @@ -1,174 +0,0 @@
1   -/**
2   - * i-Educar - Sistema de gestão escolar
3   - *
4   - * Copyright (C) 2006 Prefeitura Municipal de Itajaí
5   - * <ctima@itajai.sc.gov.br>
6   - *
7   - * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
8   - * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
9   - * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
10   - * qualquer versão posterior.
11   - *
12   - * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
13   - * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
14   - * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
15   - * do GNU para mais detalhes.
16   - *
17   - * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
18   - * com este programa; se não, escreva para a Free Software Foundation, Inc., no
19   - * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
20   - *
21   - * Contém funções PHP portadas para o Javascript.
22   - *
23   - * Pacote PHPJS disponível em:
24   - * <http://phpjs.org/packages/view/3063/name:933975c113578d0edd81fd2a76bcd480>
25   - *
26   - * Transliterado com iconv para ISO-8859-1.
27   - * $ iconv -f UTF-8 -t ISO-8859-1//translit
28   - *
29   - * Contém as seguintes funções:
30   - * - checkdate
31   - *
32   - * @author Eriksen Costa <eriksen.paixao_bs@cobra.com.br>
33   - * @license @@license@@
34   - * @since Arquivo disponível desde a versão 2.0.0
35   - * @version $Id$
36   - */
37   -
38   -/**
39   - * Singleton para evitar múltipla instanciação de PHP_JS. Para obter o objeto,
40   - * basta chamar o método getInstance():
41   - *
42   - * <code>
43   - * phpjs = ied_phpjs.getInstance()
44   - * phpjs.PHP_JS_FUNCTION(args, ...);
45   - * </code>
46   - *
47   - * @return PHP_JS
48   - */
49   -var ied_phpjs = new function() {
50   - var phpjs = new PHP_JS();
51   - this.getInstance = function() {
52   - return phpjs;
53   - }
54   -}
55   -
56   -
57   - /*
58   - * More info at: http://phpjs.org
59   - *
60   - * This is version: 3.17
61   - * php.js is copyright 2010 Kevin van Zonneveld.
62   - *
63   - * Portions copyright Brett Zamir (http://brett-zamir.me), Kevin van Zonneveld
64   - * (http://kevin.vanzonneveld.net), Onno Marsman, Theriault, Michael White
65   - * (http://getsprink.com), Waldo Malqui Silva, Paulo Freitas, Jonas Raoni
66   - * Soares Silva (http://www.jsfromhell.com), Jack, Philip Peterson, Legaev
67   - * Andrey, Ates Goral (http://magnetiq.com), Alex, Ratheous, Martijn Wieringa,
68   - * lmeyrick (https://sourceforge.net/projects/bcmath-js/), Nate, Philippe
69   - * Baumann, Enrique Gonzalez, Webtoolkit.info (http://www.webtoolkit.info/),
70   - * Jani Hartikainen, Ash Searle (http://hexmen.com/blog/), travc, Ole
71   - * Vrijenhoek, Carlos R. L. Rodrigues (http://www.jsfromhell.com),
72   - * http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript,
73   - * Michael Grier, Johnny Mast (http://www.phpvrouwen.nl), stag019, Rafal
74   - * Kukawski (http://blog.kukawski.pl), pilus, T.Wild, Andrea Giammarchi
75   - * (http://webreflection.blogspot.com), WebDevHobo
76   - * (http://webdevhobo.blogspot.com/), GeekFG (http://geekfg.blogspot.com),
77   - * d3x, Erkekjetter, marrtins, Steve Hilder, Martin
78   - * (http://www.erlenwiese.de/), Robin, Oleg Eremeev, mdsjack
79   - * (http://www.mdsjack.bo.it), majak, Mailfaker (http://www.weedem.fr/),
80   - * David, felix, Mirek Slugen, KELAN, Paul Smith, Marc Palau, Chris, Josh
81   - * Fraser
82   - * (http://onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/),
83   - * Breaking Par Consulting Inc
84   - * (http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256CFB006C45F7),
85   - * Tim de Koning (http://www.kingsquare.nl), Arpad Ray (mailto:arpad@php.net),
86   - * Public Domain (http://www.json.org/json2.js), Michael White, Steven
87   - * Levithan (http://blog.stevenlevithan.com), Joris, gettimeofday, Sakimori,
88   - * Alfonso Jimenez (http://www.alfonsojimenez.com), Aman Gupta, Caio Ariede
89   - * (http://caioariede.com), AJ, Diplom@t (http://difane.com/), saulius,
90   - * Pellentesque Malesuada, Thunder.m, Tyler Akins (http://rumkin.com), Felix
91   - * Geisendoerfer (http://www.debuggable.com/felix), gorthaur, Imgen Tata
92   - * (http://www.myipdf.com/), Karol Kowalski, Kankrelune
93   - * (http://www.webfaktory.info/), Lars Fischer, Subhasis Deb, josh, Frank
94   - * Forte, Douglas Crockford (http://javascript.crockford.com), Adam Wallner
95   - * (http://web2.bitbaro.hu/), Marco, paulo kuong, madipta, Gilbert, duncan,
96   - * ger, mktime, Oskar Larsson Högfeldt (http://oskar-lh.name/), Arno, Nathan,
97   - * Mateusz "loonquawl" Zalega, ReverseSyntax, Francois, Scott Cariss, Slawomir
98   - * Kaniecki, Denny Wardhana, sankai, 0m3r, noname, john
99   - * (http://www.jd-tech.net), Nick Kolosov (http://sammy.ru), Sanjoy Roy,
100   - * Shingo, nobbler, Fox, marc andreu, T. Wild, class_exists, Jon Hohle,
101   - * Pyerre, JT, Thiago Mata (http://thiagomata.blog.com), Linuxworld, Ozh,
102   - * nord_ua, lmeyrick (https://sourceforge.net/projects/bcmath-js/this.),
103   - * Thomas Beaucourt (http://www.webapp.fr), David Randall, merabi, T0bsn,
104   - * Soren Hansen, Peter-Paul Koch (http://www.quirksmode.org/js/beat.html),
105   - * MeEtc (http://yass.meetcweb.com), Bryan Elliott, Tim Wiel, Brad Touesnard,
106   - * XoraX (http://www.xorax.info), djmix, Hyam Singer
107   - * (http://www.impact-computing.com/), Paul, J A R, kenneth, Raphael (Ao
108   - * RUDLER), David James, Steve Clay, Ole Vrijenhoek (http://www.nervous.nl/),
109   - * Marc Jansen, Francesco, Der Simon (http://innerdom.sourceforge.net/), echo
110   - * is bad, Lincoln Ramsay, Eugene Bulkin (http://doubleaw.com/), JB, Bayron
111   - * Guevara, Stoyan Kyosev (http://www.svest.org/), LH, Matt Bradley, date,
112   - * Kristof Coomans (SCK-CEN Belgian Nucleair Research Centre), Pierre-Luc
113   - * Paour, Martin Pool, Brant Messenger (http://www.brantmessenger.com/), Kirk
114   - * Strobeck, Saulo Vallory, Christoph, Wagner B. Soares, Artur Tchernychev,
115   - * Valentina De Rosa, Jason Wong (http://carrot.org/), Daniel Esteban,
116   - * strftime, Rick Waldron, Mick@el, Anton Ongson, Simon Willison
117   - * (http://simonwillison.net), Gabriel Paderni, Philipp Lenssen, Marco van
118   - * Oort, Bug?, Blues (http://tech.bluesmoon.info/), Tomasz Wesolowski, rezna,
119   - * Eric Nagel, Bobby Drake, Luke Godfrey, Pul, uestla, Alan C, Zahlii, Ulrich,
120   - * Yves Sucaet, hitwork, sowberry, johnrembo, Brian Tafoya
121   - * (http://www.premasolutions.com/), Nick Callen, Steven Levithan
122   - * (stevenlevithan.com), ejsanders, Scott Baker, Philippe Jausions
123   - * (http://pear.php.net/user/jausions), Aidan Lister
124   - * (http://aidanlister.com/), Norman "zEh" Fuchs, Rob, HKM, ChaosNo1, metjay,
125   - * strcasecmp, strcmp, Taras Bogach, jpfle, Alexander Ermolaev
126   - * (http://snippets.dzone.com/user/AlexanderErmolaev), DxGx, kilops, Orlando,
127   - * dptr1988, Le Torbi, Pedro Tainha (http://www.pedrotainha.com), James,
128   - * penutbutterjelly, Christian Doebler, baris ozdil, Greg Frazier, Tod
129   - * Gentille, Alexander M Beedie, Ryan W Tenney (http://ryan.10e.us),
130   - * FGFEmperor, gabriel paderni, Atli Þór, Maximusya, daniel airton wermann
131   - * (http://wermann.com.br), 3D-GRAF, Yannoo, jakes, Riddler
132   - * (http://www.frontierwebdev.com/), T.J. Leahy, stensi, Matteo, Billy, vlado
133   - * houba, Itsacon (http://www.itsacon.net/), Jalal Berrami, Victor, fearphage
134   - * (http://http/my.opera.com/fearphage/), Luis Salazar
135   - * (http://www.freaky-media.com/), FremyCompany, Tim de Koning, taith, Cord,
136   - * Manish, davook, Benjamin Lupton, Garagoth, Andrej Pavlovic, Dino, William,
137   - * rem, Russell Walker (http://www.nbill.co.uk/), Jamie Beck
138   - * (http://www.terabit.ca/), setcookie, Michael, YUI Library:
139   - * http://developer.yahoo.com/yui/docs/YAHOO.util.DateLocale.html, Blues at
140   - * http://hacks.bluesmoon.info/strftime/strftime.js, DtTvB
141   - * (http://dt.in.th/2008-09-16.string-length-in-bytes.html), Andreas, meo,
142   - * Greenseed, Luke Smith (http://lucassmith.name), Kheang Hok Chin
143   - * (http://www.distantia.ca/), Rival, Diogo Resende, Allan Jensen
144   - * (http://www.winternet.no), Howard Yeend, Jay Klehr, Amir Habibi
145   - * (http://www.residence-mixte.com/), mk.keck, Yen-Wei Liu, Leslie Hoare, Ben
146   - * Bryan, Cagri Ekin, booeyOH
147   - *
148   - * Dual licensed under the MIT (MIT-LICENSE.txt)
149   - * and GPL (GPL-LICENSE.txt) licenses.
150   - *
151   - * Permission is hereby granted, free of charge, to any person obtaining a
152   - * copy of this software and associated documentation files (the
153   - * "Software"), to deal in the Software without restriction, including
154   - * without limitation the rights to use, copy, modify, merge, publish,
155   - * distribute, sublicense, and/or sell copies of the Software, and to
156   - * permit persons to whom the Software is furnished to do so, subject to
157   - * the following conditions:
158   - *
159   - * The above copyright notice and this permission notice shall be included
160   - * in all copies or substantial portions of the Software.
161   - *
162   - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
163   - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
164   - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
165   - * IN NO EVENT SHALL KEVIN VAN ZONNEVELD BE LIABLE FOR ANY CLAIM, DAMAGES
166   - * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
167   - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
168   - * OTHER DEALINGS IN THE SOFTWARE.
169   - */
170   -
171   - // Compression: minified
172   - (function(){if(typeof(this.PHP_JS)==="undefined"){var PHP_JS=function(cfgObj){if(!(this instanceof PHP_JS)){return new PHP_JS(cfgObj);}
173   - this.window=cfgObj&&cfgObj.window?cfgObj.window:window;this.php_js={};this.php_js.ini={};if(cfgObj){for(var ini in cfgObj.ini){this.php_js.ini[ini]={};this.php_js.ini[ini].local_value=cfgObj.ini[ini];this.php_js.ini[ini].global_value=cfgObj.ini[ini];}}};}
174   - var php_js_shared={};PHP_JS.prototype={constructor:PHP_JS,checkdate:function(m,d,y){return m>0&&m<13&&y>0&&y<32768&&d>0&&d<=(new Date(y,m,0)).getDate();}};this.PHP_JS=PHP_JS;}());
175 0 \ No newline at end of file
ieducar/intranet/templates/nvp_htmlhead.tpl
... ... @@ -20,9 +20,10 @@
20 20 <script type="text/javascript" src="scripts/novo.js?1"></script>
21 21 <script type="text/javascript" src="scripts/dom.js?1"></script>
22 22 <script type="text/javascript" src="scripts/menu.js?1"></script>
  23 + <script type="text/javascript" src="scripts/ied/forms.js?1"></script>
  24 + <script type="text/javascript" src="scripts/ied/phpjs.js?1"></script>
23 25 <script type="text/javascript" src="scripts/scriptaculous/prototype.js"></script>
24 26 <script type="text/javascript" src="scripts/scriptaculous/scriptaculous.js?load=effects"></script>
25   - <script type="text/javascript" src="scripts/phpjs/ieducar.package.js?1"></script>
26 27  
27 28 <script type="text/javascript">
28 29 var running = false;
... ...
ieducar/lib/App/Model/IedFinder.php
... ... @@ -453,6 +453,28 @@ class App_Model_IedFinder extends CoreExt_Entity
453 453 }
454 454  
455 455 /**
  456 + * Retorna as turmas de uma escola.
  457 + * @param int $escola
  458 + * @return array (cod_turma => nm_turma)
  459 + */
  460 + public static function getTurmas($escola)
  461 + {
  462 + $turma = self::addClassToStorage('clsPmieducarTurma', NULL,
  463 + 'include/pmieducar/clsPmieducarTurma.inc.php');
  464 +
  465 + // Carrega as turmas da escola
  466 + $turma->setOrderBy('nm_turma ASC');
  467 + $turmas = $turma->lista(NULL, NULL, NULL, NULL, $escola);
  468 +
  469 + $ret = array();
  470 + foreach ($turmas as $turma) {
  471 + $ret[$turma['cod_turma']] = $turma['nm_turma'];
  472 + }
  473 +
  474 + return $ret;
  475 + }
  476 +
  477 + /**
456 478 * @see CoreExt_Entity_Validatable#getDefaultValidatorCollection()
457 479 */
458 480 public function getDefaultValidatorCollection()
... ...
ieducar/misc/database/deltas/21_cria_tabelas_modulo_calendario.sql 0 → 100644
... ... @@ -0,0 +1,31 @@
  1 +-- //
  2 +
  3 +--
  4 +-- Cria as tabelas para o módulo Calendário.
  5 +--
  6 +-- @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  7 +-- @license @@license@@
  8 +-- @version $Id$
  9 +--
  10 +
  11 +CREATE TABLE "modules"."calendario_turma" (
  12 + "calendario_ano_letivo_id" int NOT NULL,
  13 + "ano" int NOT NULL,
  14 + "mes" int NOT NULL,
  15 + "dia" int NOT NULL,
  16 + "turma_id" int NOT NULL
  17 +);
  18 +ALTER TABLE "modules"."calendario_turma"
  19 + ADD CONSTRAINT "calendario_turma_calendario_dia_fk"
  20 + FOREIGN KEY("calendario_ano_letivo_id", "mes", "dia")
  21 + REFERENCES "pmieducar"."calendario_dia"("ref_cod_calendario_ano_letivo", "mes", "dia")
  22 + MATCH FULL
  23 + ON DELETE CASCADE
  24 + ON UPDATE NO ACTION;
  25 +
  26 +-- //@UNDO
  27 +
  28 +ALTER TABLE "modules"."calendario_turma" DROP CONSTRAINT "calendario_turma_calendario_dia_fk" CASCADE;
  29 +DROP TABLE "modules"."calendario_turma";
  30 +
  31 +-- //
0 32 \ No newline at end of file
... ...
ieducar/misc/database/ieducar.sql
... ... @@ -10273,6 +10273,19 @@ SELECT pg_catalog.setval(&#39;area_conhecimento_id_seq&#39;, 1, false);
10273 10273  
10274 10274  
10275 10275 --
  10276 +-- Name: calendario_turma; Type: TABLE; Schema: modules; Owner: -; Tablespace:
  10277 +--
  10278 +
  10279 +CREATE TABLE calendario_turma (
  10280 + calendario_ano_letivo_id integer NOT NULL,
  10281 + ano integer NOT NULL,
  10282 + mes integer NOT NULL,
  10283 + dia integer NOT NULL,
  10284 + turma_id integer NOT NULL
  10285 +);
  10286 +
  10287 +
  10288 +--
10276 10289 -- Name: componente_curricular; Type: TABLE; Schema: modules; Owner: -; Tablespace:
10277 10290 --
10278 10291  
... ... @@ -17687,6 +17700,12 @@ SET search_path = modules, pg_catalog;
17687 17700  
17688 17701  
17689 17702 --
  17703 +-- Data for Name: calendario_turma; Type: TABLE DATA; Schema: modules; Owner: -
  17704 +--
  17705 +
  17706 +
  17707 +
  17708 +--
17690 17709 -- Data for Name: componente_curricular; Type: TABLE DATA; Schema: modules; Owner: -
17691 17710 --
17692 17711  
... ... @@ -20094,6 +20113,7 @@ INSERT INTO changelog VALUES (17, &#39;Main&#39;, &#39;NOW()&#39;, &#39;NOW()&#39;, &#39;dbdeploy&#39;, &#39;17_adic
20094 20113 INSERT INTO changelog VALUES (18, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '18_cria_tabelas_de_parecer_descritivo.sql');
20095 20114 INSERT INTO changelog VALUES (19, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '19_atualiza_nome_de_relatorio_no_menu_e_permissoes.sql');
20096 20115 INSERT INTO changelog VALUES (20, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '20_remove_permissao_e_menu_diario_avaliacao_temp.sql');
  20116 +INSERT INTO changelog VALUES (21, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '21_cria_tabelas_modulo_calendario.sql');
20097 20117  
20098 20118  
20099 20119 --
... ... @@ -32757,6 +32777,14 @@ ALTER TABLE ONLY tipo_incoerencia
32757 32777 SET search_path = modules, pg_catalog;
32758 32778  
32759 32779 --
  32780 +-- Name: calendario_turma_calendario_dia_fk; Type: FK CONSTRAINT; Schema: modules; Owner: -
  32781 +--
  32782 +
  32783 +ALTER TABLE ONLY calendario_turma
  32784 + ADD CONSTRAINT calendario_turma_calendario_dia_fk FOREIGN KEY (calendario_ano_letivo_id, mes, dia) REFERENCES pmieducar.calendario_dia(ref_cod_calendario_ano_letivo, mes, dia) MATCH FULL ON DELETE CASCADE;
  32785 +
  32786 +
  32787 +--
32760 32788 -- Name: componente_curricular_ano_escolar_fk; Type: FK CONSTRAINT; Schema: modules; Owner: -
32761 32789 --
32762 32790  
... ...
ieducar/modules/Calendario/Model/Turma.php 0 → 100644
... ... @@ -0,0 +1,71 @@
  1 +<?php
  2 +
  3 +/**
  4 + * i-Educar - Sistema de gestão escolar
  5 + *
  6 + * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  7 + * <ctima@itajai.sc.gov.br>
  8 + *
  9 + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  10 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  11 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  12 + * qualquer versão posterior.
  13 + *
  14 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  15 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  16 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  17 + * do GNU para mais detalhes.
  18 + *
  19 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  20 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  21 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  22 + *
  23 + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  24 + * @category i-Educar
  25 + * @license @@license@@
  26 + * @package Calendario
  27 + * @subpackage Modules
  28 + * @since Arquivo disponível desde a versão 1.2.0
  29 + * @version $Id$
  30 + */
  31 +
  32 +require_once 'CoreExt/Entity.php';
  33 +
  34 +/**
  35 + * Calendario_Model_Turma class.
  36 + *
  37 + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  38 + * @category i-Educar
  39 + * @license @@license@@
  40 + * @package Calendario
  41 + * @subpackage Modules
  42 + * @since Classe disponível desde a versão 1.2.0
  43 + * @version @@package_version@@
  44 + */
  45 +class Calendario_Model_Turma extends CoreExt_Entity
  46 +{
  47 + protected $_data = array(
  48 + 'calendarioAnoLetivo' => NULL,
  49 + 'ano' => NULL,
  50 + 'mes' => NULL,
  51 + 'dia' => NULL,
  52 + 'turma' => NULL
  53 + );
  54 +
  55 + public function getDefaultValidatorCollection()
  56 + {
  57 + return array(
  58 + 'calendarioAnoLetivo' => new CoreExt_Validate_Numeric(array('min' => 0)),
  59 + 'ano' => new CoreExt_Validate_Numeric(array('min' => 0)),
  60 + 'mes' => new CoreExt_Validate_Numeric(array('min' => 0)),
  61 + 'dia' => new CoreExt_Validate_Numeric(array('min' => 0)),
  62 + 'turma' => new CoreExt_Validate_Numeric(array('min' => 0))
  63 + );
  64 + }
  65 +
  66 + public function __construct(array $options = array())
  67 + {
  68 + parent::__construct($options);
  69 + unset($this->_data['id']);
  70 + }
  71 +}
0 72 \ No newline at end of file
... ...
ieducar/modules/Calendario/Model/TurmaDataMapper.php 0 → 100644
... ... @@ -0,0 +1,60 @@
  1 +<?php
  2 +
  3 +/**
  4 + * i-Educar - Sistema de gestão escolar
  5 + *
  6 + * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  7 + * <ctima@itajai.sc.gov.br>
  8 + *
  9 + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  10 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  11 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  12 + * qualquer versão posterior.
  13 + *
  14 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  15 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  16 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  17 + * do GNU para mais detalhes.
  18 + *
  19 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  20 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  21 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  22 + *
  23 + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  24 + * @category i-Educar
  25 + * @license @@license@@
  26 + * @package Calendario
  27 + * @subpackage Modules
  28 + * @since Arquivo disponível desde a versão 1.2.0
  29 + * @version $Id$
  30 + */
  31 +
  32 +require_once 'CoreExt/DataMapper.php';
  33 +require_once 'Calendario/Model/Turma.php';
  34 +
  35 +/**
  36 + * Calendario_Model_TurmaDataMapper class.
  37 + *
  38 + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  39 + * @category i-Educar
  40 + * @license @@license@@
  41 + * @package Calendario
  42 + * @subpackage Modules
  43 + * @since Classe disponível desde a versão 1.2.0
  44 + * @version @@package_version@@
  45 + */
  46 +class Calendario_Model_TurmaDataMapper extends CoreExt_DataMapper
  47 +{
  48 + protected $_entityClass = 'Calendario_Model_Turma';
  49 + protected $_tableName = 'calendario_turma';
  50 + protected $_tableSchema = 'modules';
  51 +
  52 + protected $_attributeMap = array(
  53 + 'calendarioAnoLetivo' => 'calendario_ano_letivo_id',
  54 + 'turma' => 'turma_id'
  55 + );
  56 +
  57 + protected $_primaryKey = array(
  58 + 'calendarioAnoLetivo', 'mes', 'dia', 'ano', 'turma'
  59 + );
  60 +}
0 61 \ No newline at end of file
... ...
ieducar/modules/Calendario/TODO.txt 0 → 100644
... ... @@ -0,0 +1,16 @@
  1 +TODO
  2 +====
  3 +
  4 +1. Analisar a obrigatoriedade de selecionar alguma turma no cadastro de
  5 + Calendário Dia
  6 +
  7 +No momento em que é cadastrado um dia no calendário, pode-se selecionar as
  8 +turmas que serão afetadas (por ser um dia extra letivo ou não letivo). Deve-se
  9 +analisar qual é a melhor estratégia para tornar claro que a não seleção de
  10 +turma(s) afeta na contagem de dias letivos para a(s) turma(s).
  11 +
  12 +2. Verificar uma forma efetiva de remover registros quando uma turma for
  13 + removida do banco de dados (ou apenas "desativada")
  14 +
  15 +Existe apenas uma restrição referencial a pmieducar.calendario_dia. Testar
  16 +a inclusão de uma segunda restrição para pmieducar.turma.
0 17 \ No newline at end of file
... ...
ieducar/modules/Calendario/_data/install.sql 0 → 100644
... ... @@ -0,0 +1,31 @@
  1 +-- //
  2 +
  3 +--
  4 +-- Cria as tabelas para o módulo Calendário.
  5 +--
  6 +-- @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  7 +-- @license @@license@@
  8 +-- @version $Id$
  9 +--
  10 +
  11 +CREATE TABLE "modules"."calendario_turma" (
  12 + "calendario_ano_letivo_id" int NOT NULL,
  13 + "ano" int NOT NULL,
  14 + "mes" int NOT NULL,
  15 + "dia" int NOT NULL,
  16 + "turma_id" int NOT NULL
  17 +);
  18 +ALTER TABLE "modules"."calendario_turma"
  19 + ADD CONSTRAINT "calendario_turma_calendario_dia_fk"
  20 + FOREIGN KEY("calendario_ano_letivo_id", "mes", "dia")
  21 + REFERENCES "pmieducar"."calendario_dia"("ref_cod_calendario_ano_letivo", "mes", "dia")
  22 + MATCH FULL
  23 + ON DELETE CASCADE
  24 + ON UPDATE NO ACTION;
  25 +
  26 +-- //@UNDO
  27 +
  28 +ALTER TABLE "modules"."calendario_turma" DROP CONSTRAINT "calendario_turma_calendario_dia_fk" CASCADE;
  29 +DROP TABLE "modules"."calendario_turma";
  30 +
  31 +-- //
0 32 \ No newline at end of file
... ...
ieducar/modules/Calendario/_tests/TurmaTest.php 0 → 100644
... ... @@ -0,0 +1,63 @@
  1 +<?php
  2 +
  3 +/**
  4 + * i-Educar - Sistema de gestão escolar
  5 + *
  6 + * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  7 + * <ctima@itajai.sc.gov.br>
  8 + *
  9 + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  10 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  11 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  12 + * qualquer versão posterior.
  13 + *
  14 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  15 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  16 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  17 + * do GNU para mais detalhes.
  18 + *
  19 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  20 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  21 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  22 + *
  23 + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  24 + * @category i-Educar
  25 + * @license @@license@@
  26 + * @package Calendario
  27 + * @subpackage UnitTests
  28 + * @since Arquivo disponível desde a versão 1.2.0
  29 + * @version $Id$
  30 + */
  31 +
  32 +require_once 'Calendario/Model/Turma.php';
  33 +
  34 +/**
  35 + * TurmaTest class.
  36 + *
  37 + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  38 + * @category i-Educar
  39 + * @license @@license@@
  40 + * @package Calendario
  41 + * @subpackage UnitTests
  42 + * @since Classe disponível desde a versão 1.2.0
  43 + * @version @@package_version@@
  44 + */
  45 +class TurmaTest extends UnitBaseTest
  46 +{
  47 + protected $_entity = NULL;
  48 +
  49 + protected function setUp()
  50 + {
  51 + $this->_entity = new Calendario_Model_Turma();
  52 + }
  53 +
  54 + public function testEntityValidators()
  55 + {
  56 + $validators = $this->_entity->getDefaultValidatorCollection();
  57 + $this->assertType('CoreExt_Validate_Numeric', $validators['calendarioAnoLetivo']);
  58 + $this->assertType('CoreExt_Validate_Numeric', $validators['ano']);
  59 + $this->assertType('CoreExt_Validate_Numeric', $validators['mes']);
  60 + $this->assertType('CoreExt_Validate_Numeric', $validators['dia']);
  61 + $this->assertType('CoreExt_Validate_Numeric', $validators['turma']);
  62 + }
  63 +}
0 64 \ No newline at end of file
... ...
ieducar/tests/unit/App/Model/IedFinderTest.php
... ... @@ -37,6 +37,7 @@ require_once &#39;include/pmieducar/clsPmieducarMatriculaTurma.inc.php&#39;;
37 37 require_once 'include/pmieducar/clsPmieducarEscolaSerieDisciplina.inc.php';
38 38 require_once 'include/pmieducar/clsPmieducarEscolaAnoLetivo.inc.php';
39 39 require_once 'include/pmieducar/clsPmieducarAnoLetivoModulo.inc.php';
  40 +require_once 'include/pmieducar/clsPmieducarTurma.inc.php';
40 41 require_once 'RegraAvaliacao/Model/RegraDataMapper.php';
41 42 require_once 'FormulaMedia/Model/FormulaDataMapper.php';
42 43 require_once 'TabelaArredondamento/Model/TabelaDataMapper.php';
... ... @@ -154,6 +155,24 @@ class App_Model_IedFinderTest extends UnitBaseTest
154 155 $this->assertEquals($expected, $instituicoes);
155 156 }
156 157  
  158 + public function testCarregaTurmas()
  159 + {
  160 + $returnValue = array(1 => array('cod_turma' => 1, 'nm_turma' => 'Primeiro ano'));
  161 + $expected = array(1 => 'Primeiro ano');
  162 +
  163 + $mock = $this->getCleanMock('clsPmieducarTurma');
  164 + $mock->expects($this->once())
  165 + ->method('lista')
  166 + ->with(NULL, NULL, NULL, NULL, 1)
  167 + ->will($this->returnValue($returnValue));
  168 +
  169 + $instance = CoreExt_Entity::addClassToStorage(
  170 + 'clsPmieducarTurma', $mock, NULL, TRUE);
  171 +
  172 + $turmas = App_Model_IedFinder::getTurmas(1);
  173 + $this->assertEquals($expected, $turmas);
  174 + }
  175 +
157 176 public function testGetMatricula()
158 177 {
159 178 $expected = array(
... ...