Commit b37f02c3d115c694b091d6e407483f4e59016d28

Authored by Eriksen Costa
1 parent 9628e538
Exists in master

Refactoring para coding standards

Showing 1 changed file with 604 additions and 895 deletions   Show diff stats
ieducar/intranet/educar_serie_matricula_xml.php
1 1 <?php
2   -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
3   - * *
4   - * @author Prefeitura Municipal de Itajaí *
5   - * @updated 29/03/2007 *
6   - * Pacote: i-PLB Software Público Livre e Brasileiro *
7   - * *
8   - * Copyright (C) 2006 PMI - Prefeitura Municipal de Itajaí *
9   - * ctima@itajai.sc.gov.br *
10   - * *
11   - * Este programa é software livre, você pode redistribuí-lo e/ou *
12   - * modificá-lo sob os termos da Licença Pública Geral GNU, conforme *
13   - * publicada pela Free Software Foundation, tanto a versão 2 da *
14   - * Licença como (a seu critério) qualquer versão mais nova. *
15   - * *
16   - * Este programa é distribuído na expectativa de ser útil, mas SEM *
17   - * QUALQUER GARANTIA. Sem mesmo a garantia implícita de COMERCIALI- *
18   - * ZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM PARTICULAR. Con- *
19   - * sulte a Licença Pública Geral GNU para obter mais detalhes. *
20   - * *
21   - * Você deve ter recebido uma cópia da Licença Pública Geral GNU *
22   - * junto com este programa. Se não, escreva para a Free Software *
23   - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA *
24   - * 02111-1307, USA. *
25   - * *
26   - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
27   - header( 'Content-type: text/xml' );
28   -
29   - require_once( "include/clsBanco.inc.php" );
30   - require_once( "include/funcoes.inc.php" );
31   - echo "<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>\n<query xmlns=\"sugestoes\">\n";
32   -
33   - @session_start();
34   - $pessoa_logada = $_SESSION['id_pessoa'];
35   - @session_write_close();
36   -
37   - if( is_numeric( $_GET["alu"] ) && is_numeric( $_GET["ins"] ) && is_numeric( $_GET["cur"] ) && is_numeric( $_GET["esc"] ) )
38   - {
39   - $db = new clsBanco();
40   - $db->Consulta( "
41   - SELECT
42   - m.cod_matricula
43   - , m.ref_ref_cod_escola
44   - , m.ref_cod_curso
45   - , m.ref_ref_cod_serie
46   - , m.ano
47   - , eal.ano AS ano_letivo
48   - , c.padrao_ano_escolar
49   - , m.aprovado
50   - , COALESCE(
51   - (
52   - SELECT
53   - 1
54   - FROM
55   - pmieducar.transferencia_solicitacao ts
56   - WHERE
57   - m.cod_matricula = ts.ref_cod_matricula_saida
58   - AND ts.ativo = 1
59   - AND ts.data_transferencia IS NULL
60   - ), 0) AS transferencia_int
61   - , COALESCE(
62   - (
63   - SELECT
64   - 1
65   - FROM
66   - pmieducar.transferencia_solicitacao ts
67   - WHERE
68   - m.cod_matricula = ts.ref_cod_matricula_saida
69   - AND ts.ativo = 1
70   - AND ts.data_transferencia IS NOT NULL
71   - AND ts.ref_cod_matricula_entrada IS NULL
72   - ), 0) AS transferencia_ext
73   - FROM
74   - pmieducar.matricula m
75   - , pmieducar.escola_ano_letivo eal
76   - , pmieducar.curso c
77   - WHERE
78   - m.ref_cod_aluno = '{$_GET["alu"]}'
79   - AND m.ultima_matricula = 1
80   - AND m.ativo = 1
81   - AND m.ref_ref_cod_escola = eal.ref_cod_escola
82   - AND eal.andamento = 1
83   - AND eal.ativo = 1
84   - AND m.ref_cod_curso = c.cod_curso
85   - AND m.aprovado != 6
86   - AND c.ref_cod_instituicao = '{$_GET["ins"]}'
87   - ORDER BY
88   - m.cod_matricula ASC
89   - ");
90   -
91   - // caso o aluno nao tenha nenhuma matricula em determinada instituicao
92   - if (!$db->numLinhas())
93   - {
94   - $db->Consulta( "
95   - SELECT
96   - s.cod_serie
97   - , s.nm_serie
98   - FROM
99   - pmieducar.serie s
100   - , pmieducar.escola_serie es
101   - , pmieducar.curso c
102   - WHERE
103   - es.ref_cod_escola = '{$_GET["esc"]}'
104   - AND es.ref_cod_serie = s.cod_serie
105   - AND s.ativo = 1
106   - AND c.cod_curso = '{$_GET["cur"]}'
107   - AND s.ref_cod_curso = c.cod_curso
108   - AND c.ref_cod_instituicao = '{$_GET["ins"]}'
109   - ORDER BY
110   - s.nm_serie ASC
111   - ");
112   -
113   - if ($db->numLinhas())
114   - {
115   - while ( $db->ProximoRegistro() )
116   - {
117   - list( $cod, $nome ) = $db->Tupla();
118   - echo "<serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
119   - }
120   - }
121   - } // caso o aluno tenha matricula(s) em determinada instituicao
122   - else
123   - {
124   - $resultado = array();
125   -
126   - $db2 = new clsBanco();
127   - while ( $db->ProximoRegistro() )
128   - {
129   - unset($lst_serie);
130   - $lst_serie = array();
131   -
132   - list( $matricula, $escola, $curso, $serie, $ano, $ano_letivo, $padrao_ano_escolar, $aprovado, $transferencia_int, $transferencia_ext ) = $db->Tupla();
133   -// echo "<teste>matricula={$matricula}, escola={$escola}, curso={$curso}, serie={$serie}, ano={$ano}, ano_letivo={$ano_letivo}, padrao_escolar={$padrao_ano_escolar}, aprovado={$aprovado}, transf_int={$transferencia_int}, transf_ext={$transferencia_ext}</teste><br>\n";
134   -
135   - // CASO O ALUNO TENHA ALGUMA SOLICITACAO DE TRANSFERENCIA EXTERNA EM ABERTO,
136   - // LIBERA TODAS AS SERIES
137   -
138   - if( $transferencia_ext )
139   - {
140   - $db2->Consulta( "
141   - SELECT
142   - s.cod_serie
143   - , s.nm_serie
144   - FROM
145   - pmieducar.serie s
146   - , pmieducar.escola_serie es
147   - , pmieducar.curso c
148   - WHERE
149   - es.ref_cod_escola = '{$_GET["esc"]}'
150   - AND es.ref_cod_serie = s.cod_serie
151   - AND s.ativo = 1
152   - AND c.cod_curso = '{$_GET["cur"]}'
153   - AND s.ref_cod_curso = c.cod_curso
154   - AND c.ref_cod_instituicao = '{$_GET["ins"]}'
155   - ORDER BY
156   - s.nm_serie ASC
157   - ");
158   -
159   - if ($db2->numLinhas())
160   - {
161   - while ( $db2->ProximoRegistro() )
162   - {
163   - list( $cod, $nome ) = $db2->Tupla();
164   - $resultado[$cod] = $nome;
165   - }
166   - }
167   -
168   - break;
169   - }
170   -
171   - if ( ($escola == $_GET["esc"]) /*&& ( (($padrao_ano_escolar == 1) && ($ano_letivo > $ano)) || ($padrao_ano_escolar != 1) ) */)
172   - {
173   - // curso matriculado igual ao curso escolhido
174   - if ($curso == $_GET["cur"])
175   - {
176   - // situacao reprovado
177   - if ( ($aprovado == 2) && (($ano_letivo > $ano) || !$padrao_ano_escolar) )
178   - {
179   - // lista msm serie
180   - $db2->Consulta( "
181   - SELECT
182   - cod_serie
183   - , nm_serie
184   - FROM
185   - pmieducar.serie
186   - WHERE
187   - cod_serie = '{$serie}'
188   - AND ativo = 1
189   - ORDER BY
190   - nm_serie ASC
191   - ");
192   - if ($db2->numLinhas())
193   - {
194   - while ( $db2->ProximoRegistro() )
195   - {
196   - list( $cod, $nome ) = $db2->Tupla();
197   -// echo " <serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
198   - $lst_serie[$cod] = $nome;
199   - }
200   - }
201   -
202   - } // situacao aprovado
203   - else if ( ($aprovado == 1) && (($ano_letivo > $ano) || !$padrao_ano_escolar) )
204   - {
205   - // lista serie sequencia
206   - $db2->Consulta( "
207   - SELECT
208   - s.cod_serie
209   - , s.nm_serie
210   - FROM
211   - pmieducar.serie s
212   - , pmieducar.sequencia_serie ss
213   - WHERE
214   - ss.ref_serie_origem = '{$serie}'
215   - AND ss.ref_serie_destino = s.cod_serie
216   - AND ss.ativo = 1
217   - ORDER BY
218   - s.nm_serie ASC
219   - ");
220   -
221   - if ($db2->numLinhas())
222   - {
223   - while ( $db2->ProximoRegistro() )
224   - {
225   - list( $cod, $nome ) = $db2->Tupla();
226   -// echo " <serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
227   - $lst_serie[$cod] = $nome;
228   - }
229   - }
230   - }
231   - } // curso matriculado diferente do curso escolhido
232   - else
233   - {
234   - // curso eh diferente, + faz parte da sequencia
235   - // situacao aprovado
236   - if ( ($aprovado == 1) && (($ano_letivo > $ano) || !$padrao_ano_escolar) )
237   - {
238   - // lista serie sequencia
239   - $db2->Consulta( "
240   - SELECT
241   - s.cod_serie
242   - , s.nm_serie
243   - FROM
244   - pmieducar.serie s
245   - , pmieducar.sequencia_serie ss
246   - WHERE
247   - ss.ref_serie_origem = '{$serie}'
248   - AND ss.ref_serie_destino = s.cod_serie
249   - AND s.ref_cod_curso = '{$_GET["cur"]}'
250   - AND ss.ativo = 1
251   - ORDER BY
252   - s.nm_serie ASC
253   - ");
254   -
255   - if ($db2->numLinhas())
256   - {
257   - while ( $db2->ProximoRegistro() )
258   - {
259   - list( $cod, $nome ) = $db2->Tupla();
260   -// echo " <serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
261   - $lst_serie[$cod] = $nome;
262   - }
263   - }
264   -
265   - }
266   - // curso eh diferente, e nao faz parte da sequencia
267   - // situacao aprovado, reprovado ou em andamento
268   - if ( ($aprovado == 1) || ($aprovado == 2) || ($aprovado == 3) )
269   - {
270   - // lista somente a 1a serie do curso (sequencia)
271   - $db2->Consulta( "
272   - SELECT
273   - so.ref_cod_curso as curso_origem
274   - , ss.ref_serie_origem as serie_origem
275   - , sd.ref_cod_curso as curso_destino
276   - , ss.ref_serie_destino as serie_destino
277   - FROM
278   - pmieducar.sequencia_serie ss
279   - , pmieducar.serie so
280   - , pmieducar.serie sd
281   - WHERE
282   - ss.ativo = 1
283   - AND ref_serie_origem = so.cod_serie
284   - AND ref_serie_destino = sd.cod_serie
285   - ORDER BY
286   - ss.ref_serie_origem ASC
287   - ");
288   -
289   - if ($db2->numLinhas())
290   - {
291   - while ( $db2->ProximoRegistro() )
292   - {
293   - $sequencias[] = $db2->Tupla();
294   - }
295   - }
296   -
297   - $db2->Consulta( "
298   - SELECT
299   - distinct( o.ref_serie_origem )
300   - FROM
301   - pmieducar.sequencia_serie o
302   - , pmieducar.escola_serie es
303   - WHERE NOT EXISTS
304   - (
305   - SELECT
306   - 1
307   - FROM
308   - pmieducar.sequencia_serie d
309   - WHERE
310   - o.ref_serie_origem = d.ref_serie_destino
311   - )
312   - ");
313   -
314   - if ($db2->numLinhas())
315   - {
316   - $pertence_sequencia = false;
317   - $achou_serie = false;
318   - $reset = false;
319   -
320   - while ( $db2->ProximoRegistro() )
321   - {
322   - list( $ini_sequencia ) = $db2->Tupla();
323   -
324   - $ini_serie = $ini_sequencia;
325   - reset($sequencias);
326   -
327   - do
328   - {
329   - if( $reset )
330   - {
331   - reset($sequencias);
332   - $reset = false;
333   - }
334   -
335   - $sequencia = current($sequencias);
336   - $aux_serie = $sequencia['serie_origem'];
337   -
338   - if ($ini_serie == $aux_serie)
339   - {
340   - if ($serie == $aux_serie)
341   - {
342   - // achou serie da matricula
343   - $achou_serie = true;
344   - }
345   - /*if ($sequencia['curso_origem'] == $curso)
346   - {
347   - // curso pertence a sequencia
348   - $pertence_sequencia = true;
349   - $serie_sequencia[] = $sequencia['serie_origem'];
350   - }
351   - else */if ($sequencia['curso_destino'] == $curso)
352   - {
353   - // curso pertence a sequencia
354   - $pertence_sequencia = true;
355   - $serie_sequencia[] = $sequencia['serie_destino'];
356   - $ini_serie = $sequencia['serie_destino'];
357   -// reset($sequencias);
358   - $reset = true;
359   - }
360   - else
361   - {
362   - $ini_serie = $sequencia['serie_destino'];
363   -// reset($sequencias);
364   - $reset = true;
365   - }
366   - }
367   - } while ( each($sequencias) );
368   -
369   - if ($achou_serie && $pertence_sequencia)
370   - {
371   - // curso escolhido pertence a sequencia da serie da matricula
372   - break;
373   - }
374   - }
375   - if (/*$achou_serie && */!$pertence_sequencia)
376   - {
377   - $sql = "
378   - SELECT
379   - s.cod_serie
380   - , s.nm_serie
381   - FROM
382   - pmieducar.serie s
383   - , pmieducar.escola_serie es
384   - WHERE
385   - es.ref_cod_escola = '{$_GET["esc"]}'
386   - AND s.cod_serie = es.ref_cod_serie
387   - AND s.ref_cod_curso = '{$_GET["cur"]}'
388   - AND s.ativo = 1";
389   - if (is_array($serie_sequencia))
390   - {
391   - foreach ($serie_sequencia as $series)
392   - $sql .= " AND s.cod_serie != '{$series}' ";
393   - }
394   -
395   - $sql .= "
396   - ORDER BY
397   - s.nm_serie ASC
398   - ";
399   - $db2->Consulta( $sql );
400   - if ($db2->numLinhas())
401   - {
402   - while ( $db2->ProximoRegistro() )
403   - {
404   - list( $cod, $nome ) = $db2->Tupla();
405   -// echo " <serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
406   - $lst_serie[$cod] = $nome;
407   - }
408   - }
409   - }
410   - }
411   - }
412   - }
413   - }
414   - else if( ($escola != $_GET["esc"]) && ($transferencia_int == 1) )
415   - {
416   - // curso matriculado igual ao curso escolhido
417   - if ($curso == $_GET["cur"])
418   - {
419   - // situacao reprovado ou em andamento
420   - if ( ($aprovado == 2) || ($aprovado == 3) )
421   - {
422   - // lista msm serie
423   - $db2->Consulta( "
424   - SELECT
425   - cod_serie
426   - , nm_serie
427   - FROM
428   - pmieducar.serie
429   - WHERE
430   - cod_serie = '{$serie}'
431   - AND ativo = 1
432   - ORDER BY
433   - nm_serie ASC
434   - ");
435   -
436   - if ($db2->numLinhas())
437   - {
438   - while ( $db2->ProximoRegistro() )
439   - {
440   - list( $cod, $nome ) = $db2->Tupla();
441   -// echo " <serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
442   - $lst_serie[$cod] = $nome;
443   - }
444   - }
445   -
446   - } // situacao aprovado
447   - elseif ($aprovado == 1)
448   - {
449   - // lista serie sequencia
450   - $db2->Consulta( "
451   - SELECT
452   - s.cod_serie
453   - , s.nm_serie
454   - FROM
455   - pmieducar.serie s
456   - , pmieducar.sequencia_serie ss
457   - WHERE
458   - ss.ref_serie_origem = '{$serie}'
459   - AND ss.ref_serie_destino = s.cod_serie
460   - AND ss.ativo = 1
461   - ORDER BY
462   - s.nm_serie ASC
463   - ");
464   -
465   - if ($db2->numLinhas())
466   - {
467   - while ( $db2->ProximoRegistro() )
468   - {
469   - list( $cod, $nome ) = $db2->Tupla();
470   -// echo " <serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
471   - $lst_serie[$cod] = $nome;
472   - }
473   - }
474   -
475   - }
476   - } // curso matriculado diferente do curso escolhido
477   - else
478   - {
479   - // curso eh diferente, + faz parte da sequencia
480   - if ($aprovado == 1)
481   - {
482   - // lista serie sequencia
483   - $db2->Consulta( "
484   - SELECT
485   - s.cod_serie
486   - , s.nm_serie
487   - FROM
488   - pmieducar.serie s
489   - , pmieducar.sequencia_serie ss
490   - WHERE
491   - ss.ref_serie_origem = '{$serie}'
492   - AND ss.ref_serie_destino = s.cod_serie
493   - AND s.ref_cod_curso = '{$_GET["cur"]}'
494   - AND ss.ativo = 1
495   - ORDER BY
496   - s.nm_serie ASC
497   - ");
498   -
499   - if ($db2->numLinhas())
500   - {
501   - while ( $db2->ProximoRegistro() )
502   - {
503   - list( $cod, $nome ) = $db2->Tupla();
504   -// echo " <serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
505   - $lst_serie[$cod] = $nome;
506   - }
507   - }
508   - }
509   - // curso eh diferente, e nao faz parte da sequencia
510   - // situacao aprovado, reprovado ou em andamento
511   - if ( ($aprovado == 1) || ($aprovado == 2) || ($aprovado == 3) )
512   - {
513   - // lista somente a 1a serie do curso (sequencia)
514   - $db2->Consulta( "
515   - SELECT
516   - so.ref_cod_curso as curso_origem
517   - , ss.ref_serie_origem as serie_origem
518   - , sd.ref_cod_curso as curso_destino
519   - , ss.ref_serie_destino as serie_destino
520   - FROM
521   - pmieducar.sequencia_serie ss
522   - , pmieducar.serie so
523   - , pmieducar.serie sd
524   - WHERE
525   - ss.ativo = 1
526   - AND ref_serie_origem = so.cod_serie
527   - AND ref_serie_destino = sd.cod_serie
528   - ORDER BY
529   - ss.ref_serie_origem ASC
530   - ");
531   - if ($db2->numLinhas())
532   - {
533   - while ( $db2->ProximoRegistro() )
534   - {
535   - $sequencias[] = $db2->Tupla();
536   - }
537   - }
538   -
539   - $db2->Consulta( "
540   - SELECT
541   - distinct( o.ref_serie_origem )
542   - FROM
543   - pmieducar.sequencia_serie o
544   - , pmieducar.escola_serie es
545   - WHERE NOT EXISTS
546   - (
547   - SELECT
548   - 1
549   - FROM
550   - pmieducar.sequencia_serie d
551   - WHERE
552   - o.ref_serie_origem = d.ref_serie_destino
553   - )
554   - ");
555   -
556   - if ($db2->numLinhas())
557   - {
558   - $pertence_sequencia = false;
559   - $achou_serie = false;
560   - $reset = false;
561   -
562   - while ( $db2->ProximoRegistro() )
563   - {
564   - list( $ini_sequencia ) = $db2->Tupla();
565   -
566   - $ini_serie = $ini_sequencia;
567   - reset($sequencias);
568   -
569   - do
570   - {
571   - if( $reset )
572   - {
573   - reset($sequencias);
574   - $reset = false;
575   - }
576   -
577   - $sequencia = current($sequencias);
578   - $aux_serie = $sequencia['serie_origem'];
579   -
580   - if ($ini_serie == $aux_serie)
581   - {
582   - if ($serie == $aux_serie)
583   - {
584   - // achou serie da matricula
585   - $achou_serie = true;
586   - }
587   - /*if ($sequencia['curso_origem'] == $curso)
588   - {
589   - // curso pertence a sequencia
590   - $pertence_sequencia = true;
591   - $serie_sequencia[] = $sequencia['serie_origem'];
592   - }
593   - else */if ($sequencia['curso_destino'] == $curso)
594   - {
595   - // curso pertence a sequencia
596   - $pertence_sequencia = true;
597   - $serie_sequencia[] = $sequencia['serie_destino'];
598   - $ini_serie = $sequencia['serie_destino'];
599   -// reset($sequencias);
600   - $reset = true;
601   - }
602   - else
603   - {
604   - $ini_serie = $sequencia['serie_destino'];
605   -// reset($sequencias);
606   - $reset = true;
607   - }
608   - }
609   - } while ( each($sequencias) );
610   -
611   - if ($achou_serie && $pertence_sequencia)
612   - {
613   - // curso escolhido pertence a sequencia da serie da matricula
614   - break;
615   - }
616   - }
617   - if (/*$achou_serie && */!$pertence_sequencia)
618   - {
619   - $sql = "
620   - SELECT
621   - s.cod_serie
622   - , s.nm_serie
623   - FROM
624   - pmieducar.serie s
625   - , pmieducar.escola_serie es
626   - WHERE
627   - es.ref_cod_escola = '{$_GET["esc"]}'
628   - AND s.cod_serie = es.ref_cod_serie
629   - AND s.ref_cod_curso = '{$_GET["cur"]}'
630   - AND s.ativo = 1";
631   - if (is_array($serie_sequencia))
632   - {
633   - foreach ($serie_sequencia as $series)
634   - $sql .= " AND s.cod_serie != '{$series}' ";
635   - }
636   -
637   - $sql .= "
638   - ORDER BY
639   - s.nm_serie ASC
640   - ";
641   - $db2->Consulta( $sql );
642   - if ($db2->numLinhas())
643   - {
644   - while ( $db2->ProximoRegistro() )
645   - {
646   - list( $cod, $nome ) = $db2->Tupla();
647   -// echo " <serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
648   - $lst_serie[$cod] = $nome;
649   - }
650   - }
651   - }
652   - }
653   - }
654   - }
655   - }
656   - else if( ($escola != $_GET["esc"]) && (!$transferencia_int) )
657   - {
658   - // curso matriculado diferente do curso escolhido
659   - if ($curso != $_GET["cur"])
660   - {
661   - // situacao aprovado, reprovado ou em andamento
662   -
663   - if ( ($aprovado == 1) || ($aprovado == 2) )
664   - {
665   - // lista somente a 1a serie do curso (sequencia)
666   - $db2->Consulta( "
667   - SELECT
668   - so.ref_cod_curso as curso_origem
669   - , ss.ref_serie_origem as serie_origem
670   - , sd.ref_cod_curso as curso_destino
671   - , ss.ref_serie_destino as serie_destino
672   - FROM
673   - pmieducar.sequencia_serie ss
674   - , pmieducar.serie so
675   - , pmieducar.serie sd
676   - WHERE
677   - ss.ativo = 1
678   - AND ref_serie_origem = so.cod_serie
679   - AND ref_serie_destino = sd.cod_serie
680   - ORDER BY
681   - ss.ref_serie_origem ASC
682   - ");
683   -
684   - if ($db2->numLinhas())
685   - {
686   - while ( $db2->ProximoRegistro() )
687   - {
688   - $sequencias[] = $db2->Tupla();
689   - }
690   - }
691   -
692   - $db2->Consulta( "
693   - SELECT
694   - distinct( o.ref_serie_origem )
695   - FROM
696   - pmieducar.sequencia_serie o
697   - , pmieducar.escola_serie es
698   - WHERE NOT EXISTS
699   - (
700   - SELECT
701   - 1
702   - FROM
703   - pmieducar.sequencia_serie d
704   - WHERE
705   - o.ref_serie_origem = d.ref_serie_destino
706   - )
707   - ");
708   -
709   - if ($db2->numLinhas())
710   - {
711   - $pertence_sequencia = false;
712   - $achou_serie = false;
713   - $reset = false;
714   -
715   - while ( $db2->ProximoRegistro() )
716   - {
717   - list( $ini_sequencia ) = $db2->Tupla();
718   -
719   - $ini_serie = $ini_sequencia;
720   - reset($sequencias);
721   -
722   - do
723   - {
724   - if( $reset )
725   - {
726   - reset($sequencias);
727   - $reset = false;
728   - }
729   -
730   - $sequencia = current($sequencias);
731   - $aux_serie = $sequencia['serie_origem'];
732   -
733   - if ($ini_serie == $aux_serie)
734   - {
735   - if ($serie == $aux_serie)
736   - {
737   - // achou serie da matricula
738   - $achou_serie = true;
739   - }
740   - /*if ($sequencia['curso_origem'] == $curso)
741   - {
742   - // curso pertence a sequencia
743   - $pertence_sequencia = true;
744   - $serie_sequencia[] = $sequencia['serie_origem'];
745   - }
746   - else */if ($sequencia['curso_destino'] == $curso)
747   - {
748   - // curso pertence a sequencia
749   - $pertence_sequencia = true;
750   - $serie_sequencia[] = $sequencia['serie_destino'];
751   - $ini_serie = $sequencia['serie_destino'];
752   -// reset($sequencias);
753   - $reset = true;
754   - }
755   - else
756   - {
757   - $ini_serie = $sequencia['serie_destino'];
758   -// reset($sequencias);
759   - $reset = true;
760   - }
761   - }
762   - } while ( each($sequencias) );
763   -
764   - if ($achou_serie && $pertence_sequencia)
765   - {
766   - // curso escolhido pertence a sequencia da serie da matricula
767   - break;
768   - }
769   - }
770   - if (/*$achou_serie && */$pertence_sequencia)
771   - {
772   - $sql = "
773   - SELECT
774   - s.cod_serie
775   - , s.nm_serie
776   - FROM
777   - pmieducar.serie s
778   - , pmieducar.escola_serie es
779   - WHERE
780   - es.ref_cod_escola = '{$_GET["esc"]}'
781   - AND s.cod_serie = es.ref_cod_serie
782   - AND s.ref_cod_curso = '{$_GET["cur"]}'
783   - AND s.ativo = 1";
784   -
785   - if (is_array($serie_sequencia))
786   - {
787   - foreach ($serie_sequencia as $series)
788   - $sql .= " AND s.cod_serie != '{$series}' ";
789   - }
790   -
791   - $sql .= "
792   - ORDER BY
793   - s.nm_serie ASC
794   - ";
795   - $db2->Consulta( $sql );
796   - if ($db2->numLinhas())
797   - {
798   - while ( $db2->ProximoRegistro() )
799   - {
800   - list( $cod, $nome ) = $db2->Tupla();
801   -// echo " <serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
802   - $lst_serie[$cod] = $nome;
803   - }
804   - }
805   - }
806   - }
807   - }
808   - }
809   - else
810   - {
811   -
812   - // curso matriculado igual ao curso escolhido
813   - if ($curso == $_GET["cur"])
814   - {
815   -
816   - // situacao reprovado ou em andamento ou transferido
817   - if ( ($aprovado == 2) || ($transferencia_int == 1) )
818   - {
819   - // lista msm serie
820   - $db2->Consulta("SELECT
821   - cod_serie
822   - , nm_serie
823   - FROM
824   - pmieducar.serie
825   - WHERE
826   - cod_serie = '{$serie}'
827   - AND ativo = 1
828   - ORDER BY
829   - nm_serie ASC
830   - ");
831   -
832   - if ($db2->numLinhas())
833   - {
834   - while ( $db2->ProximoRegistro() )
835   - {
836   - list( $cod, $nome ) = $db2->Tupla();
837   - // echo " <serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
838   - $lst_serie[$cod] = $nome;
839   - }
840   - }
841   -
842   - } // situacao aprovado
843   - elseif ($aprovado == 1)
844   - {
845   - // lista serie sequencia
846   - $db2->Consulta( "
847   - SELECT
848   - s.cod_serie
849   - , s.nm_serie
850   - FROM
851   - pmieducar.serie s
852   - , pmieducar.sequencia_serie ss
853   - WHERE
854   - ss.ref_serie_origem = '{$serie}'
855   - AND ss.ref_serie_destino = s.cod_serie
856   - AND ss.ativo = 1
857   - ORDER BY
858   - s.nm_serie ASC
859   - ");
860   -
861   - if ($db2->numLinhas())
862   - {
863   - while ( $db2->ProximoRegistro() )
864   - {
865   - list( $cod, $nome ) = $db2->Tupla();
866   - // echo " <serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
867   - $lst_serie[$cod] = $nome;
868   - }
869   - }
870   -
871   - }
872   - }
873   - }
874   - }
875   -
876   - if ( empty($resultado) )
877   - {
878   - $resultado = $lst_serie;
879   - }
880   - else
881   - {
882   - $resultado = array_intersect_assoc($lst_serie,$resultado);
883   - }
884   - }
885   - if (!empty($resultado))
886   - {
887   - foreach ($resultado as $cod => $nome)
888   - {
889   - echo "<serie cod_serie=\"{$cod}\">{$nome}</serie>\n";
890   - }
891   - }
892   - }
893   - }
894   - echo "</query>";
895   -
896   -?>
897 2 \ No newline at end of file
  3 +
  4 +header('Content-type: text/xml');
  5 +
  6 +require_once 'include/clsBanco.inc.php';
  7 +require_once 'include/funcoes.inc.php';
  8 +
  9 +require_once 'App/Model/MatriculaSituacao.php';
  10 +
  11 +print '<?xml version="1.0" encoding="ISO-8859-1"?>' . "\n";
  12 +print '<query xmlns="sugestoes">' . "\n";
  13 +
  14 +@session_start();
  15 +$pessoa_logada = $_SESSION['id_pessoa'];
  16 +@session_write_close();
  17 +
  18 +/**
  19 + * Retorna o ano escolar de sequência do ano escolar no curso.
  20 + *
  21 + * @param clsBanco $db
  22 + * @param int $codSerie
  23 + * @param int $codCurso
  24 + * @return array (codSerie => nome)
  25 + * @todo Selecionar pelo curso é desnecessário pois a relação pmieducar.serie
  26 + * com pmieducar.curso é 1:1.
  27 + */
  28 +function _anosEscolaresSequenciaCurso(clsBanco $db, $codSerie, $codCurso)
  29 +{
  30 + $sql = sprintf('SELECT
  31 + s.cod_serie,
  32 + s.nm_serie
  33 + FROM
  34 + pmieducar.serie s,
  35 + pmieducar.sequencia_serie ss
  36 + WHERE
  37 + ss.ref_serie_origem = %d
  38 + AND ss.ref_serie_destino = s.cod_serie
  39 + AND s.ref_cod_curso = %d
  40 + AND ss.ativo = 1
  41 + ORDER BY
  42 + s.nm_serie ASC',
  43 + $codSerie, $codCurso
  44 + );
  45 +
  46 + $db->Consulta($sql);
  47 +
  48 + $lst_serie = array();
  49 + if ($db->numLinhas()) {
  50 + while ($db->ProximoRegistro()) {
  51 + list($cod, $nome) = $db->Tupla();
  52 + $lst_serie[$cod] = $nome;
  53 + }
  54 + }
  55 +
  56 + return $lst_serie;
  57 +}
  58 +
  59 +/**
  60 + * Seleciona um ano escolar/série.
  61 + *
  62 + * @param clsBanco $db
  63 + * @param int $codSerie Código do ano escolar/série.
  64 + * @return array (codSerie => nome)
  65 + */
  66 +function _mesmoAnoEscolar(clsBanco $db, $codSerie)
  67 +{
  68 + $sql = sprintf('SELECT
  69 + cod_serie,
  70 + nm_serie
  71 + FROM
  72 + pmieducar.serie
  73 + WHERE
  74 + cod_serie = %d
  75 + AND ativo = 1
  76 + ORDER BY
  77 + nm_serie ASC',
  78 + $codSerie
  79 + );
  80 +
  81 + $db->Consulta($sql);
  82 +
  83 + $lst_serie = array();
  84 + if ($db->numLinhas()) {
  85 + while ($db->ProximoRegistro()) {
  86 + list($cod, $nome) = $db->Tupla();
  87 + $lst_serie[$cod] = $nome;
  88 + }
  89 + }
  90 +
  91 + return $lst_serie;
  92 +}
  93 +
  94 +/**
  95 + * Retorna os anos escolares da sequência do ano escolar/série para a escola
  96 + * e o curso.
  97 + *
  98 + * @param clsBanco $db
  99 + * @param int $codSerie Código do ano escolar.
  100 + * @param int $codEscola Código da escola.
  101 + * @param int $codCurso Código do curso.
  102 + * @return array (codSerie => nome)
  103 + * @see _anosEscolaresEscolaCurso
  104 + */
  105 +function _sequencias(clsBanco $db, $codSerie, $codEscola, $codCurso)
  106 +{
  107 + $db->Consulta('SELECT
  108 + so.ref_cod_curso AS curso_origem,
  109 + ss.ref_serie_origem AS serie_origem,
  110 + sd.ref_cod_curso AS curso_destino,
  111 + ss.ref_serie_destino AS serie_destino
  112 + FROM
  113 + pmieducar.sequencia_serie ss,
  114 + pmieducar.serie so,
  115 + pmieducar.serie sd
  116 + WHERE
  117 + ss.ativo = 1
  118 + AND ref_serie_origem = so.cod_serie
  119 + AND ref_serie_destino = sd.cod_serie
  120 + ORDER BY
  121 + ss.ref_serie_origem ASC');
  122 +
  123 + $sequencias = array();
  124 + if ($db->numLinhas()) {
  125 + while ($db->ProximoRegistro()) {
  126 + $sequencias[] = $db->Tupla();
  127 + }
  128 + }
  129 +
  130 + // Seleciona todas as séries de origem de sequência de série que não sejam
  131 + // séries destino de alguma sequência.
  132 + $db->Consulta('SELECT
  133 + DISTINCT(o.ref_serie_origem)
  134 + FROM
  135 + pmieducar.sequencia_serie o,
  136 + pmieducar.escola_serie es
  137 + WHERE NOT EXISTS(
  138 + SELECT
  139 + 1
  140 + FROM
  141 + pmieducar.sequencia_serie d
  142 + WHERE
  143 + o.ref_serie_origem = d.ref_serie_destino
  144 + )');
  145 +
  146 + $lst_serie = array();
  147 + $serie_sequencia = array();
  148 +
  149 + if ($db->numLinhas()) {
  150 + $pertence_sequencia = FALSE;
  151 + $achou_serie = FALSE;
  152 + $reset = FALSE;
  153 +
  154 + while ($db->ProximoRegistro()) {
  155 + list($ini_sequencia) = $db->Tupla();
  156 +
  157 + $ini_serie = $ini_sequencia;
  158 + reset($sequencias);
  159 +
  160 + do {
  161 + if ($reset) {
  162 + reset($sequencias);
  163 + $reset = FALSE;
  164 + }
  165 +
  166 + $sequencia = current($sequencias);
  167 + $aux_serie = $sequencia['serie_origem'];
  168 +
  169 + if ($ini_serie == $aux_serie) {
  170 + // Achou a série da matrícula.
  171 + if ($codSerie == $aux_serie) {
  172 + $achou_serie = TRUE;
  173 + }
  174 +
  175 + // Curso escolhido é da sequência de série
  176 + if ($sequencia['curso_destino'] == $codCurso) {
  177 + $pertence_sequencia = TRUE;
  178 + $ini_serie = $sequencia['serie_destino'];
  179 + $reset = TRUE;
  180 +
  181 + // Armazena a série de destino no array de série sequencial
  182 + $serie_sequencia[] = $sequencia['serie_destino'];
  183 + }
  184 + else {
  185 + $ini_serie = $sequencia['serie_destino'];
  186 + $reset = TRUE;
  187 + }
  188 + }
  189 + } while (each($sequencias));
  190 +
  191 + if ($achou_serie && $pertence_sequencia) {
  192 + // Curso escolhido pertence a sequência da série da matrícula.
  193 + break;
  194 + }
  195 + }
  196 +
  197 + // @pertenceSequencia{
  198 + if (! $pertence_sequencia) {
  199 + $lst_serie = _anosEscolaresEscolaCurso($db, $serie_sequencia, $codEscola, $codCurso);
  200 + }
  201 + // }@pertenceSequencia
  202 + }
  203 +
  204 + return $lst_serie;
  205 +}
  206 +
  207 +/**
  208 + * Seleciona os anos escolares de um curso em uma escola, eliminando da seleção
  209 + * as séries identificadas no array $serie_sequencia.
  210 + *
  211 + * @param clsBanco $db
  212 + * @param array $serie_sequencia Códigos dos anos escolares/séries da
  213 + * sequência.
  214 + * @param int $codEscola Código da escola.
  215 + * @param int $codCurso Código do curso.
  216 + * @return array (codSerie => nome)
  217 + */
  218 +function _anosEscolaresEscolaCurso(clsBanco $db, array $serie_sequencia, $codEscola, $codCurso)
  219 +{
  220 + $sql = sprintf('SELECT
  221 + s.cod_serie,
  222 + s.nm_serie
  223 + FROM
  224 + pmieducar.serie s,
  225 + pmieducar.escola_serie es
  226 + WHERE
  227 + es.ref_cod_escola = %d
  228 + AND s.cod_serie = es.ref_cod_serie
  229 + AND s.ref_cod_curso = %d
  230 + AND s.ativo = 1',
  231 + $codEscola, $codCurso
  232 + );
  233 +
  234 + if (is_array($serie_sequencia)) {
  235 + foreach ($serie_sequencia as $series)
  236 + $sql .= sprintf(' AND s.cod_serie != %d ', $series);
  237 + }
  238 +
  239 + $sql .= '
  240 + ORDER BY
  241 + s.nm_serie ASC';
  242 +
  243 + $db->Consulta($sql);
  244 +
  245 + $lst_serie = array();
  246 + if ($db->numLinhas()) {
  247 + while ($db->ProximoRegistro()) {
  248 + list($cod, $nome) = $db->Tupla();
  249 + $lst_serie[$cod] = $nome;
  250 + }
  251 + }
  252 +
  253 + return $lst_serie;
  254 +}
  255 +
  256 +/**
  257 + * Retorna os anos escolares da sequência.
  258 + *
  259 + * @param clsBanco $db
  260 + * @param int $codSerie Código do ano escolar/série.
  261 + * @return array (codSerie => nome)
  262 + */
  263 +function _anoEscolarSequencia(clsBanco $db, $codSerie)
  264 +{
  265 + $sql = sprintf('SELECT
  266 + s.cod_serie,
  267 + s.nm_serie
  268 + FROM
  269 + pmieducar.serie s,
  270 + pmieducar.sequencia_serie ss
  271 + WHERE
  272 + ss.ref_serie_origem = %d
  273 + AND ss.ref_serie_destino = s.cod_serie
  274 + AND ss.ativo = 1
  275 + ORDER BY
  276 + s.nm_serie ASC',
  277 + $codSerie
  278 + );
  279 +
  280 + // Lista série sequência
  281 + $db->Consulta($sql);
  282 +
  283 + $lst_serie = array();
  284 + if ($db->numLinhas()) {
  285 + while ($db->ProximoRegistro()) {
  286 + list($cod, $nome) = $db->Tupla();
  287 + $lst_serie[$cod] = $nome;
  288 + }
  289 + }
  290 +
  291 + return $lst_serie;
  292 +}
  293 +
  294 +/**
  295 + * Retorna os anos escolares/série do curso de uma escola e instituição.
  296 + *
  297 + * @param clsBanco $db
  298 + * @param int $codEscola Código da escola.
  299 + * @param int $codCurso Código do curso.
  300 + * @param int $codInstituicao Código da instituição.
  301 + * @return array (codSerie => nome)
  302 + */
  303 +function _anoEscolarEscolaCurso(clsBanco $db, $codEscola, $codCurso, $codInstituicao)
  304 +{
  305 + $sql = sprintf('SELECT
  306 + s.cod_serie,
  307 + s.nm_serie
  308 + FROM
  309 + pmieducar.serie s,
  310 + pmieducar.escola_serie es,
  311 + pmieducar.curso c
  312 + WHERE
  313 + es.ref_cod_escola = %d
  314 + AND es.ref_cod_serie = s.cod_serie
  315 + AND s.ativo = 1
  316 + AND c.cod_curso = %d
  317 + AND s.ref_cod_curso = c.cod_curso
  318 + AND c.ref_cod_instituicao = %d
  319 + ORDER BY
  320 + s.nm_serie ASC',
  321 + $codEscola, $codCurso, $codInstituicao
  322 + );
  323 +
  324 + $db->Consulta($sql);
  325 +
  326 + $resultado = array();
  327 + if ($db->numLinhas()) {
  328 + while ($db->ProximoRegistro()) {
  329 + list($cod, $nome) = $db->Tupla();
  330 + $resultado[$cod] = $nome;
  331 + }
  332 + }
  333 +
  334 + return $resultado;
  335 +}
  336 +
  337 +if (is_numeric($_GET['alu']) && is_numeric($_GET['ins']) &&
  338 + is_numeric($_GET['cur']) && is_numeric( $_GET['esc'])) {
  339 +
  340 + $sql = sprintf('SELECT
  341 + m.cod_matricula,
  342 + m.ref_ref_cod_escola,
  343 + m.ref_cod_curso,
  344 + m.ref_ref_cod_serie,
  345 + m.ano,
  346 + eal.ano AS ano_letivo,
  347 + c.padrao_ano_escolar,
  348 + m.aprovado,
  349 + COALESCE((
  350 + SELECT
  351 + 1
  352 + FROM
  353 + pmieducar.transferencia_solicitacao ts
  354 + WHERE
  355 + m.cod_matricula = ts.ref_cod_matricula_saida
  356 + AND ts.ativo = 1
  357 + AND ts.data_transferencia IS NULL
  358 + ), 0) AS transferencia_int,
  359 + COALESCE((
  360 + SELECT
  361 + 1
  362 + FROM
  363 + pmieducar.transferencia_solicitacao ts
  364 + WHERE
  365 + m.cod_matricula = ts.ref_cod_matricula_saida
  366 + AND ts.ativo = 1
  367 + AND ts.data_transferencia IS NOT NULL
  368 + AND ts.ref_cod_matricula_entrada IS NULL
  369 + ), 0) AS transferencia_ext
  370 + FROM
  371 + pmieducar.matricula m,
  372 + pmieducar.escola_ano_letivo eal,
  373 + pmieducar.curso c
  374 + WHERE
  375 + m.ref_cod_aluno = %d
  376 + AND m.ultima_matricula = 1
  377 + AND m.ativo = 1
  378 + AND m.ref_ref_cod_escola = eal.ref_cod_escola
  379 + AND eal.andamento = 1
  380 + AND eal.ativo = 1
  381 + AND m.ref_cod_curso = c.cod_curso
  382 + AND m.aprovado != 6
  383 + AND c.ref_cod_instituicao = %d
  384 + ORDER BY
  385 + m.cod_matricula ASC',
  386 + $_GET['alu'], $_GET['ins']
  387 + );
  388 +
  389 + $db = new clsBanco();
  390 + $db->Consulta($sql);
  391 +
  392 + $resultado = array();
  393 +
  394 + // caso o aluno nao tenha nenhuma matricula em determinada instituicao
  395 + if (! $db->numLinhas()) {
  396 + $resultado = _anoEscolarEscolaCurso($db, $_GET['esc'], $_GET['cur'], $_GET['ins']);
  397 + }
  398 + // Caso o aluno tenha matrícula(s) em determinada Instituição
  399 + else {
  400 + $db2 = new clsBanco();
  401 +
  402 + while ($db->ProximoRegistro()) {
  403 + $lst_serie = array();
  404 +
  405 + list($matricula, $escola, $curso, $serie, $ano, $ano_letivo,
  406 + $padrao_ano_escolar, $aprovado, $transferencia_int,
  407 + $transferencia_ext) = $db->Tupla();
  408 +
  409 + // Caso o aluno tenha alguma solicitação de transferência externa em
  410 + // aberto, libera todas as séries.
  411 + // @transferencia{
  412 + if ($transferencia_ext) {
  413 + $resultado = _anoEscolarEscolaCurso($db2, $_GET['esc'], $_GET['cur'], $_GET['ins']);
  414 + break;
  415 + }
  416 + // }@transferencia
  417 +
  418 + // @escola{
  419 + if ($escola == $_GET['esc']) {
  420 +
  421 + // @curso{
  422 + // Curso ao qual está matriculado é igual ao escolhido.
  423 + if ($curso == $_GET['cur']) {
  424 +
  425 + // @reprovado{
  426 + // Situação reprovado.
  427 + // Ano letivo da escola maior que ano da matrícula OU não padrão.
  428 + if (App_Model_MatriculaSituacao::REPROVADO == $aprovado &&
  429 + ($ano_letivo > $ano || !$padrao_ano_escolar)) {
  430 + $lst_serie = _mesmoAnoEscolar($db2, $serie);
  431 + }
  432 + // }@reprovado
  433 +
  434 + // @aprovado{
  435 + // Situação aprovado.
  436 + // Ano letivo da escola maior que ano da matrícula OU não padrão.
  437 + elseif (App_Model_MatriculaSituacao::APROVADO == $aprovado &&
  438 + ($ano_letivo > $ano || !$padrao_ano_escolar)) {
  439 + $lst_serie = _anoEscolarSequencia($db2, $serie);
  440 + }
  441 + // }@aprovado
  442 + }
  443 + // }@curso
  444 +
  445 + // @curso-diferente{
  446 + // Curso matriculado diferente do curso escolhido.
  447 + else {
  448 + // O curso é diferente mas o ano escolar/série faz parte da sequência.
  449 + // Isso se torna verdadeiro caso as séries sejam listadas no primeiro
  450 + // IF @aprovado.
  451 +
  452 + // @aprovado{
  453 + // Ano letivo da escola maior que ano da matrícula OU curso não padrão.
  454 + if (App_Model_MatriculaSituacao::APROVADO == $aprovado &&
  455 + ($ano_letivo > $ano || !$padrao_ano_escolar)) {
  456 + // Lista anos escolares (séries) da sequência.
  457 + $lst_serie = _anosEscolaresSequenciaCurso($db2, $serie, $_GET['cur']);
  458 + }
  459 + // }@aprovado
  460 +
  461 + $situacoes = array(
  462 + App_Model_MatriculaSituacao::APROVADO,
  463 + App_Model_MatriculaSituacao::REPROVADO,
  464 + App_Model_MatriculaSituacao::EM_ANDAMENTO
  465 + );
  466 +
  467 + // O curso é diferente e não faz parte da sequência.
  468 + // @emAndamento{
  469 + if (in_array($aprovado, $situacoes)) {
  470 + // Lista os anos escolares/séries da sequência.
  471 + $lst_serie = _sequencias($db2, $serie, $_GET['esc'], $_GET['cur']);
  472 + }
  473 + // }@emAndamento
  474 + }
  475 + // }@curso-diferente
  476 + }
  477 + // }@escola
  478 +
  479 + // @escolaDiferente{
  480 + elseif (($escola != $_GET['esc']) && ($transferencia_int == 1)) {
  481 +
  482 + // Curso matriculado igual ao curso escolhido.
  483 + // @curso{
  484 + if ($curso == $_GET['cur']) {
  485 +
  486 + // Reprovado ou em andamento.
  487 + $situacoes = array(
  488 + App_Model_MatriculaSituacao::REPROVADO,
  489 + App_Model_MatriculaSituacao::EM_ANDAMENTO
  490 + );
  491 +
  492 + // @emAndamento{
  493 + if (in_array($aprovado, $situacoes)) {
  494 + // Lista a mesma série.
  495 + $lst_serie = _mesmoAnoEscolar($db2, $serie);
  496 + }
  497 + // }@emAndamento
  498 +
  499 + // @aprovado{
  500 + elseif (App_Model_MatriculaSituacao::APROVADO == $aprovado) {
  501 + // Lista série sequência
  502 + $lst_serie = _anoEscolarSequencia($db2, $serie);
  503 + }
  504 + // }@aprovado
  505 + }
  506 + // }@curso
  507 +
  508 + // Curso matriculado diferente do curso escolhido.
  509 + // @cursoDiferente{
  510 + else {
  511 +
  512 + // Curso é diferente mas faz parte da sequência.
  513 + // @aprovado{
  514 + if ($aprovado == 1) {
  515 + // Lista anos escolares (séries) da sequência.
  516 + $lst_serie = _anosEscolaresSequenciaCurso($db2, $serie, $_GET['cur']);
  517 + }
  518 + // }@aprovado
  519 +
  520 + $situacoes = array(
  521 + App_Model_MatriculaSituacao::APROVADO,
  522 + App_Model_MatriculaSituacao::REPROVADO,
  523 + App_Model_MatriculaSituacao::EM_ANDAMENTO
  524 + );
  525 +
  526 + // Curso é diferente e não faz parte da sequência.
  527 + // @emAndamento{
  528 + if (in_array($aprovado, $situacoes)) {
  529 + // Lista os anos escolares/séries da sequência.
  530 + $lst_serie = _sequencias($db2, $serie, $_GET['esc'], $_GET['cur']);
  531 + }
  532 + // }@emAndamento
  533 +
  534 + }
  535 + // }@cursoDiferente
  536 + }
  537 + // }@escolaDiferente
  538 +
  539 + // @escolaDiferenteNaoTransferencia
  540 + elseif ($escola != $_GET['esc'] && !$transferencia_int) {
  541 +
  542 + // @cursoDiferente
  543 + // Curso matriculado diferente do curso escolhido.
  544 + if ($curso != $_GET['cur']) {
  545 +
  546 + // Situações aprovado e reprovado.
  547 + $situacoes = array(
  548 + App_Model_MatriculaSituacao::APROVADO,
  549 + App_Model_MatriculaSituacao::REPROVADO
  550 + );
  551 +
  552 + // @aprovado{
  553 + if (in_array($aprovado, $situacoes)) {
  554 + // Lista os anos escolares/séries da sequência.
  555 + $lst_serie = _sequencias($db2, $serie, $_GET['esc'], $_GET['cur']);
  556 + }
  557 + // }@aprovado
  558 +
  559 + }
  560 + // }@cursoDiferente
  561 +
  562 + // @cursoIgual{
  563 + else {
  564 +
  565 + // Curso matriculado igual ao curso escolhido.
  566 + if ($curso == $_GET['cur']) {
  567 +
  568 + // Situação reprovado ou tranferência.
  569 + // @reprovado{
  570 + if ($aprovado == 2 || $transferencia_int == 1) {
  571 + // Lista a mesma série.
  572 + $lst_serie = _mesmoAnoEscolar($db2, $serie);
  573 + }
  574 + // }@reprovado
  575 +
  576 + // Situação aprovado
  577 + // @aprovado{
  578 + elseif ($aprovado == 1) {
  579 + // Lista ano escolar/série da sequência.
  580 + $lst_serie = _anoEscolarSequencia($db2, $serie);
  581 + }
  582 + // }@aprovado
  583 +
  584 + }
  585 + }
  586 + // }@cursoIgual
  587 + }
  588 +
  589 + if (empty($resultado)) {
  590 + $resultado = $lst_serie;
  591 + }
  592 + else {
  593 + $resultado = array_intersect_assoc($lst_serie,$resultado);
  594 + }
  595 +
  596 + }
  597 + }
  598 +}
  599 +
  600 +if (! empty($resultado)) {
  601 + foreach ($resultado as $cod => $nome) {
  602 + print sprintf('<serie cod_serie="%d">%s</serie>' . "\n", $cod, $nome);
  603 + }
  604 +}
  605 +
  606 +print '</query>';
898 607 \ No newline at end of file
... ...