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 <?php 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 \ No newline at end of file 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 \ No newline at end of file 607 \ No newline at end of file