Commit 22bad1ee84c8efbf07040c58bc607dd2f69a2ba6

Authored by Eriksen Costa
1 parent b37f02c3
Exists in master

#77 by Eriksen Costa: Simplificação de código, redução de condicionais

Showing 1 changed file with 118 additions and 438 deletions   Show diff stats
ieducar/intranet/educar_serie_matricula_xml.php
1 <?php 1 <?php
2 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 Prefeitura Municipal de Itajaí <ctima@itajai.sc.gov.br>
  24 + * @category i-Educar
  25 + * @license @@license@@
  26 + * @package iEd_Pmieducar
  27 + * @since Arquivo disponível desde a versão 1.0.0
  28 + * @version $Id$
  29 + */
  30 +
3 header('Content-type: text/xml'); 31 header('Content-type: text/xml');
4 32
5 require_once 'include/clsBanco.inc.php'; 33 require_once 'include/clsBanco.inc.php';
@@ -15,206 +43,49 @@ $pessoa_logada = $_SESSION[&#39;id_pessoa&#39;]; @@ -15,206 +43,49 @@ $pessoa_logada = $_SESSION[&#39;id_pessoa&#39;];
15 @session_write_close(); 43 @session_write_close();
16 44
17 /** 45 /**
18 - * Retorna o ano escolar de sequência do ano escolar no curso.  
19 - *  
20 - * @param clsBanco $db  
21 - * @param int $codSerie  
22 - * @param int $codCurso  
23 - * @return array (codSerie => nome)  
24 - * @todo Selecionar pelo curso é desnecessário pois a relação pmieducar.serie  
25 - * com pmieducar.curso é 1:1. 46 + * @param array $data
  47 + * @param string $index
  48 + * @return array $data[$index] => key($data)
26 */ 49 */
27 -function _anosEscolaresSequenciaCurso(clsBanco $db, $codSerie, $codCurso) 50 +function _createArrayFromIndex(array $data, $index)
28 { 51 {
29 - $sql = sprintf('SELECT  
30 - s.cod_serie,  
31 - s.nm_serie  
32 - FROM  
33 - pmieducar.serie s,  
34 - pmieducar.sequencia_serie ss  
35 - WHERE  
36 - ss.ref_serie_origem = %d  
37 - AND ss.ref_serie_destino = s.cod_serie  
38 - AND s.ref_cod_curso = %d  
39 - AND ss.ativo = 1  
40 - ORDER BY  
41 - s.nm_serie ASC',  
42 - $codSerie, $codCurso  
43 - );  
44 -  
45 - $db->Consulta($sql);  
46 -  
47 - $lst_serie = array();  
48 - if ($db->numLinhas()) {  
49 - while ($db->ProximoRegistro()) {  
50 - list($cod, $nome) = $db->Tupla();  
51 - $lst_serie[$cod] = $nome; 52 + $ret = array();
  53 + foreach ($data as $key => $entry) {
  54 + if (isset($entry[$index])) {
  55 + $ret[$entry[$index]] = $key;
52 } 56 }
53 } 57 }
54 -  
55 - return $lst_serie; 58 + return $ret;
56 } 59 }
57 60
58 /** 61 /**
59 - * Seleciona um ano escolar/série.  
60 - *  
61 * @param clsBanco $db 62 * @param clsBanco $db
62 - * @param int $codSerie Código do ano escolar/série. 63 + * @param string $sql
63 * @return array (codSerie => nome) 64 * @return array (codSerie => nome)
64 */ 65 */
65 -function _mesmoAnoEscolar(clsBanco $db, $codSerie) 66 +function _getAnoEscolar(clsBanco $db, $sql)
66 { 67 {
67 - $sql = sprintf('SELECT  
68 - cod_serie,  
69 - nm_serie  
70 - FROM  
71 - pmieducar.serie  
72 - WHERE  
73 - cod_serie = %d  
74 - AND ativo = 1  
75 - ORDER BY  
76 - nm_serie ASC',  
77 - $codSerie  
78 - );  
79 -  
80 $db->Consulta($sql); 68 $db->Consulta($sql);
81 69
82 - $lst_serie = array(); 70 + $resultado = array();
83 if ($db->numLinhas()) { 71 if ($db->numLinhas()) {
84 while ($db->ProximoRegistro()) { 72 while ($db->ProximoRegistro()) {
85 list($cod, $nome) = $db->Tupla(); 73 list($cod, $nome) = $db->Tupla();
86 - $lst_serie[$cod] = $nome;  
87 - }  
88 - }  
89 -  
90 - return $lst_serie;  
91 -}  
92 -  
93 -/**  
94 - * Retorna os anos escolares da sequência do ano escolar/série para a escola  
95 - * e o curso.  
96 - *  
97 - * @param clsBanco $db  
98 - * @param int $codSerie Código do ano escolar.  
99 - * @param int $codEscola Código da escola.  
100 - * @param int $codCurso Código do curso.  
101 - * @return array (codSerie => nome)  
102 - * @see _anosEscolaresEscolaCurso  
103 - */  
104 -function _sequencias(clsBanco $db, $codSerie, $codEscola, $codCurso)  
105 -{  
106 - $db->Consulta('SELECT  
107 - so.ref_cod_curso AS curso_origem,  
108 - ss.ref_serie_origem AS serie_origem,  
109 - sd.ref_cod_curso AS curso_destino,  
110 - ss.ref_serie_destino AS serie_destino  
111 - FROM  
112 - pmieducar.sequencia_serie ss,  
113 - pmieducar.serie so,  
114 - pmieducar.serie sd  
115 - WHERE  
116 - ss.ativo = 1  
117 - AND ref_serie_origem = so.cod_serie  
118 - AND ref_serie_destino = sd.cod_serie  
119 - ORDER BY  
120 - ss.ref_serie_origem ASC');  
121 -  
122 - $sequencias = array();  
123 - if ($db->numLinhas()) {  
124 - while ($db->ProximoRegistro()) {  
125 - $sequencias[] = $db->Tupla();  
126 - }  
127 - }  
128 -  
129 - // Seleciona todas as séries de origem de sequência de série que não sejam  
130 - // séries destino de alguma sequência.  
131 - $db->Consulta('SELECT  
132 - DISTINCT(o.ref_serie_origem)  
133 - FROM  
134 - pmieducar.sequencia_serie o,  
135 - pmieducar.escola_serie es  
136 - WHERE NOT EXISTS(  
137 - SELECT  
138 - 1  
139 - FROM  
140 - pmieducar.sequencia_serie d  
141 - WHERE  
142 - o.ref_serie_origem = d.ref_serie_destino  
143 - )');  
144 -  
145 - $lst_serie = array();  
146 - $serie_sequencia = array();  
147 -  
148 - if ($db->numLinhas()) {  
149 - $pertence_sequencia = FALSE;  
150 - $achou_serie = FALSE;  
151 - $reset = FALSE;  
152 -  
153 - while ($db->ProximoRegistro()) {  
154 - list($ini_sequencia) = $db->Tupla();  
155 -  
156 - $ini_serie = $ini_sequencia;  
157 - reset($sequencias);  
158 -  
159 - do {  
160 - if ($reset) {  
161 - reset($sequencias);  
162 - $reset = FALSE;  
163 - }  
164 -  
165 - $sequencia = current($sequencias);  
166 - $aux_serie = $sequencia['serie_origem'];  
167 -  
168 - if ($ini_serie == $aux_serie) {  
169 - // Achou a série da matrícula.  
170 - if ($codSerie == $aux_serie) {  
171 - $achou_serie = TRUE;  
172 - }  
173 -  
174 - // Curso escolhido é da sequência de série  
175 - if ($sequencia['curso_destino'] == $codCurso) {  
176 - $pertence_sequencia = TRUE;  
177 - $ini_serie = $sequencia['serie_destino'];  
178 - $reset = TRUE;  
179 -  
180 - // Armazena a série de destino no array de série sequencial  
181 - $serie_sequencia[] = $sequencia['serie_destino'];  
182 - }  
183 - else {  
184 - $ini_serie = $sequencia['serie_destino'];  
185 - $reset = TRUE;  
186 - }  
187 - }  
188 - } while (each($sequencias));  
189 -  
190 - if ($achou_serie && $pertence_sequencia) {  
191 - // Curso escolhido pertence a sequência da série da matrícula.  
192 - break;  
193 - }  
194 - }  
195 -  
196 - // @pertenceSequencia{  
197 - if (! $pertence_sequencia) {  
198 - $lst_serie = _anosEscolaresEscolaCurso($db, $serie_sequencia, $codEscola, $codCurso); 74 + $resultado[$cod] = $nome;
199 } 75 }
200 - // }@pertenceSequencia  
201 } 76 }
202 77
203 - return $lst_serie; 78 + return $resultado;
204 } 79 }
205 80
206 /** 81 /**
207 - * Seleciona os anos escolares de um curso em uma escola, eliminando da seleção  
208 - * as séries identificadas no array $serie_sequencia. 82 + * Retorna o ano escolar/série de uma escola.
209 * 83 *
210 * @param clsBanco $db 84 * @param clsBanco $db
211 - * @param array $serie_sequencia Códigos dos anos escolares/séries da  
212 - * sequência.  
213 - * @param int $codEscola Código da escola.  
214 - * @param int $codCurso Código do curso. 85 + * @param int $codSerie Código do ano escolar/série.
215 * @return array (codSerie => nome) 86 * @return array (codSerie => nome)
216 */ 87 */
217 -function _anosEscolaresEscolaCurso(clsBanco $db, array $serie_sequencia, $codEscola, $codCurso) 88 +function _mesmoAnoEscolar(clsBanco $db, $codEscola, $codSerie)
218 { 89 {
219 $sql = sprintf('SELECT 90 $sql = sprintf('SELECT
220 s.cod_serie, 91 s.cod_serie,
@@ -223,83 +94,60 @@ function _anosEscolaresEscolaCurso(clsBanco $db, array $serie_sequencia, $codEsc @@ -223,83 +94,60 @@ function _anosEscolaresEscolaCurso(clsBanco $db, array $serie_sequencia, $codEsc
223 pmieducar.serie s, 94 pmieducar.serie s,
224 pmieducar.escola_serie es 95 pmieducar.escola_serie es
225 WHERE 96 WHERE
226 - es.ref_cod_escola = %d  
227 - AND s.cod_serie = es.ref_cod_serie  
228 - AND s.ref_cod_curso = %d  
229 - AND s.ativo = 1',  
230 - $codEscola, $codCurso  
231 - );  
232 -  
233 - if (is_array($serie_sequencia)) {  
234 - foreach ($serie_sequencia as $series)  
235 - $sql .= sprintf(' AND s.cod_serie != %d ', $series);  
236 - }  
237 -  
238 - $sql .= ' 97 + s.cod_serie = es.ref_cod_serie
  98 + AND es.ref_cod_escola = %d
  99 + AND es.ativo = 1
  100 + AND s.cod_serie = %d
  101 + AND s.ativo = 1
239 ORDER BY 102 ORDER BY
240 - s.nm_serie ASC';  
241 -  
242 - $db->Consulta($sql);  
243 -  
244 - $lst_serie = array();  
245 - if ($db->numLinhas()) {  
246 - while ($db->ProximoRegistro()) {  
247 - list($cod, $nome) = $db->Tupla();  
248 - $lst_serie[$cod] = $nome;  
249 - }  
250 - } 103 + s.nm_serie ASC',
  104 + $codEscola, $codSerie
  105 + );
251 106
252 - return $lst_serie; 107 + return _getAnoEscolar($db, $sql);
253 } 108 }
254 109
255 /** 110 /**
256 - * Retorna os anos escolares da sequência. 111 + * Retorna os anos escolares/séries da sequência de série de uma escola.
257 * 112 *
258 * @param clsBanco $db 113 * @param clsBanco $db
259 - * @param int $codSerie Código do ano escolar/série. 114 + * @param int $codEscola Código da escola.
  115 + * @param int $codSerie Código do ano escolar/série.
260 * @return array (codSerie => nome) 116 * @return array (codSerie => nome)
261 */ 117 */
262 -function _anoEscolarSequencia(clsBanco $db, $codSerie) 118 +function _anoEscolarSequencia(clsBanco $db, $codEscola, $codSerie)
263 { 119 {
264 $sql = sprintf('SELECT 120 $sql = sprintf('SELECT
265 s.cod_serie, 121 s.cod_serie,
266 s.nm_serie 122 s.nm_serie
267 FROM 123 FROM
268 pmieducar.serie s, 124 pmieducar.serie s,
269 - pmieducar.sequencia_serie ss 125 + pmieducar.sequencia_serie ss,
  126 + pmieducar.escola_serie es
270 WHERE 127 WHERE
271 - ss.ref_serie_origem = %d  
272 - AND ss.ref_serie_destino = s.cod_serie 128 + ss.ref_serie_destino = s.cod_serie
  129 + AND s.cod_serie = es.ref_cod_serie
  130 + AND es.ref_cod_escola = %d
  131 + AND es.ativo = 1
  132 + AND ss.ref_serie_origem = %d
273 AND ss.ativo = 1 133 AND ss.ativo = 1
274 ORDER BY 134 ORDER BY
275 s.nm_serie ASC', 135 s.nm_serie ASC',
276 - $codSerie 136 + $codEscola, $codSerie
277 ); 137 );
278 138
279 - // Lista série sequência  
280 - $db->Consulta($sql);  
281 -  
282 - $lst_serie = array();  
283 - if ($db->numLinhas()) {  
284 - while ($db->ProximoRegistro()) {  
285 - list($cod, $nome) = $db->Tupla();  
286 - $lst_serie[$cod] = $nome;  
287 - }  
288 - }  
289 -  
290 - return $lst_serie; 139 + return _getAnoEscolar($db, $sql);
291 } 140 }
292 141
293 /** 142 /**
294 - * Retorna os anos escolares/série do curso de uma escola e instituição. 143 + * Retorna os anos escolares/série do curso de uma escola.
295 * 144 *
296 - * @param clsBanco $db  
297 - * @param int $codEscola Código da escola.  
298 - * @param int $codCurso Código do curso.  
299 - * @param int $codInstituicao Código da instituição.  
300 - * @return array (codSerie => nome) 145 + * @param clsBanco $db
  146 + * @param int $codEscola Código da escola.
  147 + * @param int $codCurso Código do curso.
  148 + * @return array (codSerie => nome)
301 */ 149 */
302 -function _anoEscolarEscolaCurso(clsBanco $db, $codEscola, $codCurso, $codInstituicao) 150 +function _anoEscolarEscolaCurso(clsBanco $db, $codEscola, $codCurso)
303 { 151 {
304 $sql = sprintf('SELECT 152 $sql = sprintf('SELECT
305 s.cod_serie, 153 s.cod_serie,
@@ -311,36 +159,28 @@ function _anoEscolarEscolaCurso(clsBanco $db, $codEscola, $codCurso, $codInstitu @@ -311,36 +159,28 @@ function _anoEscolarEscolaCurso(clsBanco $db, $codEscola, $codCurso, $codInstitu
311 WHERE 159 WHERE
312 es.ref_cod_escola = %d 160 es.ref_cod_escola = %d
313 AND es.ref_cod_serie = s.cod_serie 161 AND es.ref_cod_serie = s.cod_serie
  162 + AND es.ativo = 1
  163 + AND s.ref_cod_curso = c.cod_curso
314 AND s.ativo = 1 164 AND s.ativo = 1
315 AND c.cod_curso = %d 165 AND c.cod_curso = %d
316 - AND s.ref_cod_curso = c.cod_curso  
317 - AND c.ref_cod_instituicao = %d  
318 ORDER BY 166 ORDER BY
319 s.nm_serie ASC', 167 s.nm_serie ASC',
320 - $codEscola, $codCurso, $codInstituicao 168 + $codEscola, $codCurso
321 ); 169 );
322 170
323 - $db->Consulta($sql);  
324 -  
325 - $resultado = array();  
326 - if ($db->numLinhas()) {  
327 - while ($db->ProximoRegistro()) {  
328 - list($cod, $nome) = $db->Tupla();  
329 - $resultado[$cod] = $nome;  
330 - }  
331 - }  
332 -  
333 - return $resultado; 171 + return _getAnoEscolar($db, $sql);
334 } 172 }
335 173
  174 +$resultado = array();
  175 +
336 if (is_numeric($_GET['alu']) && is_numeric($_GET['ins']) && 176 if (is_numeric($_GET['alu']) && is_numeric($_GET['ins']) &&
337 is_numeric($_GET['cur']) && is_numeric( $_GET['esc'])) { 177 is_numeric($_GET['cur']) && is_numeric( $_GET['esc'])) {
338 178
339 $sql = sprintf('SELECT 179 $sql = sprintf('SELECT
340 - m.cod_matricula,  
341 - m.ref_ref_cod_escola,  
342 - m.ref_cod_curso,  
343 - m.ref_ref_cod_serie, 180 + m.cod_matricula AS cod_matricula,
  181 + m.ref_ref_cod_escola AS cod_escola,
  182 + m.ref_cod_curso AS cod_curso,
  183 + m.ref_ref_cod_serie AS cod_serie,
344 m.ano, 184 m.ano,
345 eal.ano AS ano_letivo, 185 eal.ano AS ano_letivo,
346 c.padrao_ano_escolar, 186 c.padrao_ano_escolar,
@@ -388,218 +228,58 @@ if (is_numeric($_GET[&#39;alu&#39;]) &amp;&amp; is_numeric($_GET[&#39;ins&#39;]) &amp;&amp; @@ -388,218 +228,58 @@ if (is_numeric($_GET[&#39;alu&#39;]) &amp;&amp; is_numeric($_GET[&#39;ins&#39;]) &amp;&amp;
388 $db = new clsBanco(); 228 $db = new clsBanco();
389 $db->Consulta($sql); 229 $db->Consulta($sql);
390 230
391 - $resultado = array();  
392 -  
393 - // caso o aluno nao tenha nenhuma matricula em determinada instituicao  
394 - if (! $db->numLinhas()) {  
395 - $resultado = _anoEscolarEscolaCurso($db, $_GET['esc'], $_GET['cur'], $_GET['ins']); 231 + $matriculas = array();
  232 + while ($db->ProximoRegistro()) {
  233 + $tupla = $db->Tupla();
  234 + $matriculas[$tupla['cod_matricula']] = $tupla;
396 } 235 }
397 - // Caso o aluno tenha matrícula(s) em determinada Instituição  
398 - else {  
399 - $db2 = new clsBanco();  
400 236
401 - while ($db->ProximoRegistro()) {  
402 - $lst_serie = array(); 237 + $codEscola = $_GET['esc'];
  238 + $codCurso = $_GET['cur'];
403 239
404 - list($matricula, $escola, $curso, $serie, $ano, $ano_letivo,  
405 - $padrao_ano_escolar, $aprovado, $transferencia_int,  
406 - $transferencia_ext) = $db->Tupla(); 240 + if (count($matriculas)) {
  241 + $cursos = _createArrayFromIndex($matriculas, 'cod_curso');
407 242
408 - // Caso o aluno tenha alguma solicitação de transferência externa em  
409 - // aberto, libera todas as séries.  
410 - // @transferencia{  
411 - if ($transferencia_ext) {  
412 - $resultado = _anoEscolarEscolaCurso($db2, $_GET['esc'], $_GET['cur'], $_GET['ins']);  
413 - break;  
414 - }  
415 - // }@transferencia  
416 -  
417 - // @escola{  
418 - if ($escola == $_GET['esc']) {  
419 -  
420 - // @curso{  
421 - // Curso ao qual está matriculado é igual ao escolhido.  
422 - if ($curso == $_GET['cur']) {  
423 -  
424 - // @reprovado{  
425 - // Situação reprovado.  
426 - // Ano letivo da escola maior que ano da matrícula OU não padrão.  
427 - if (App_Model_MatriculaSituacao::REPROVADO == $aprovado &&  
428 - ($ano_letivo > $ano || !$padrao_ano_escolar)) {  
429 - $lst_serie = _mesmoAnoEscolar($db2, $serie);  
430 - }  
431 - // }@reprovado  
432 -  
433 - // @aprovado{  
434 - // Situação aprovado.  
435 - // Ano letivo da escola maior que ano da matrícula OU não padrão.  
436 - elseif (App_Model_MatriculaSituacao::APROVADO == $aprovado &&  
437 - ($ano_letivo > $ano || !$padrao_ano_escolar)) {  
438 - $lst_serie = _anoEscolarSequencia($db2, $serie);  
439 - }  
440 - // }@aprovado  
441 - }  
442 - // }@curso 243 + // Mesmo curso?
  244 + if (in_array($codCurso, array_keys($cursos))) {
  245 + // Matrícula do curso.
  246 + $matricula = $matriculas[$cursos[$codCurso]];
443 247
444 - // @curso-diferente{  
445 - // Curso matriculado diferente do curso escolhido.  
446 - else {  
447 - // O curso é diferente mas o ano escolar/série faz parte da sequência.  
448 - // Isso se torna verdadeiro caso as séries sejam listadas no primeiro  
449 - // IF @aprovado.  
450 -  
451 - // @aprovado{  
452 - // Ano letivo da escola maior que ano da matrícula OU curso não padrão.  
453 - if (App_Model_MatriculaSituacao::APROVADO == $aprovado &&  
454 - ($ano_letivo > $ano || !$padrao_ano_escolar)) {  
455 - // Lista anos escolares (séries) da sequência.  
456 - $lst_serie = _anosEscolaresSequenciaCurso($db2, $serie, $_GET['cur']);  
457 - }  
458 - // }@aprovado  
459 -  
460 - $situacoes = array(  
461 - App_Model_MatriculaSituacao::APROVADO,  
462 - App_Model_MatriculaSituacao::REPROVADO,  
463 - App_Model_MatriculaSituacao::EM_ANDAMENTO  
464 - );  
465 -  
466 - // O curso é diferente e não faz parte da sequência.  
467 - // @emAndamento{  
468 - if (in_array($aprovado, $situacoes)) {  
469 - // Lista os anos escolares/séries da sequência.  
470 - $lst_serie = _sequencias($db2, $serie, $_GET['esc'], $_GET['cur']);  
471 - }  
472 - // }@emAndamento  
473 - }  
474 - // }@curso-diferente 248 + // Matrícula reprovada, retorna o mesmo ano escolar da matrícula para a escola selecionada.
  249 + if (App_Model_MatriculaSituacao::REPROVADO == $matricula['aprovado']) {
  250 + $resultado = _mesmoAnoEscolar($db, $codEscola, $matricula['cod_serie']);
475 } 251 }
476 - // }@escola  
477 -  
478 - // @escolaDiferente{  
479 - elseif (($escola != $_GET['esc']) && ($transferencia_int == 1)) {  
480 -  
481 - // Curso matriculado igual ao curso escolhido.  
482 - // @curso{  
483 - if ($curso == $_GET['cur']) {  
484 -  
485 - // Reprovado ou em andamento.  
486 - $situacoes = array(  
487 - App_Model_MatriculaSituacao::REPROVADO,  
488 - App_Model_MatriculaSituacao::EM_ANDAMENTO  
489 - );  
490 -  
491 - // @emAndamento{  
492 - if (in_array($aprovado, $situacoes)) {  
493 - // Lista a mesma série.  
494 - $lst_serie = _mesmoAnoEscolar($db2, $serie);  
495 - }  
496 - // }@emAndamento  
497 -  
498 - // @aprovado{  
499 - elseif (App_Model_MatriculaSituacao::APROVADO == $aprovado) {  
500 - // Lista série sequência  
501 - $lst_serie = _anoEscolarSequencia($db2, $serie);  
502 - }  
503 - // }@aprovado  
504 - }  
505 - // }@curso  
506 252
507 - // Curso matriculado diferente do curso escolhido.  
508 - // @cursoDiferente{  
509 - else {  
510 -  
511 - // Curso é diferente mas faz parte da sequência.  
512 - // @aprovado{  
513 - if ($aprovado == 1) {  
514 - // Lista anos escolares (séries) da sequência.  
515 - $lst_serie = _anosEscolaresSequenciaCurso($db2, $serie, $_GET['cur']);  
516 - }  
517 - // }@aprovado  
518 -  
519 - $situacoes = array(  
520 - App_Model_MatriculaSituacao::APROVADO,  
521 - App_Model_MatriculaSituacao::REPROVADO,  
522 - App_Model_MatriculaSituacao::EM_ANDAMENTO  
523 - );  
524 -  
525 - // Curso é diferente e não faz parte da sequência.  
526 - // @emAndamento{  
527 - if (in_array($aprovado, $situacoes)) {  
528 - // Lista os anos escolares/séries da sequência.  
529 - $lst_serie = _sequencias($db2, $serie, $_GET['esc'], $_GET['cur']);  
530 - }  
531 - // }@emAndamento  
532 -  
533 - }  
534 - // }@cursoDiferente 253 + // Matrícula aprovada, retorna os anos escolares da sequência de série para a escola selecionada.
  254 + elseif (App_Model_MatriculaSituacao::APROVADO == $matricula['aprovado']) {
  255 + $resultado = _anoEscolarSequencia($db, $codEscola, $matricula['cod_serie']);
535 } 256 }
536 - // }@escolaDiferente  
537 -  
538 - // @escolaDiferenteNaoTransferencia  
539 - elseif ($escola != $_GET['esc'] && !$transferencia_int) {  
540 -  
541 - // @cursoDiferente  
542 - // Curso matriculado diferente do curso escolhido.  
543 - if ($curso != $_GET['cur']) {  
544 -  
545 - // Situações aprovado e reprovado.  
546 - $situacoes = array(  
547 - App_Model_MatriculaSituacao::APROVADO,  
548 - App_Model_MatriculaSituacao::REPROVADO  
549 - );  
550 -  
551 - // @aprovado{  
552 - if (in_array($aprovado, $situacoes)) {  
553 - // Lista os anos escolares/séries da sequência.  
554 - $lst_serie = _sequencias($db2, $serie, $_GET['esc'], $_GET['cur']);  
555 - }  
556 - // }@aprovado  
557 257
  258 + // Matrícula em andamento
  259 + elseif (App_Model_MatriculaSituacao::EM_ANDAMENTO == $matricula['aprovado']) {
  260 + // Transferência interna, retorna o mesmo ano escolar da matrícula para a escola selecionada.
  261 + if (1 == $matricula['transferencia_int']) {
  262 + $resultado = _mesmoAnoEscolar($db, $codEscola, $matricula['cod_serie']);
558 } 263 }
559 - // }@cursoDiferente  
560 -  
561 - // @cursoIgual{  
562 - else {  
563 -  
564 - // Curso matriculado igual ao curso escolhido.  
565 - if ($curso == $_GET['cur']) {  
566 264
567 - // Situação reprovado ou tranferência.  
568 - // @reprovado{  
569 - if ($aprovado == 2 || $transferencia_int == 1) {  
570 - // Lista a mesma série.  
571 - $lst_serie = _mesmoAnoEscolar($db2, $serie);  
572 - }  
573 - // }@reprovado  
574 -  
575 - // Situação aprovado  
576 - // @aprovado{  
577 - elseif ($aprovado == 1) {  
578 - // Lista ano escolar/série da sequência.  
579 - $lst_serie = _anoEscolarSequencia($db2, $serie);  
580 - }  
581 - // }@aprovado  
582 -  
583 - } 265 + // Transferência externa, retorna os anos escolares da sequência de série para a escola selecionada.
  266 + elseif (1 == $matricula['transferencia_ext']) {
  267 + $retultado = _anoEscolarSequencia($db, $codEscola, $matricula['cod_serie']);
584 } 268 }
585 - // }@cursoIgual  
586 - }  
587 -  
588 - if (empty($resultado)) {  
589 - $resultado = $lst_serie;  
590 - }  
591 - else {  
592 - $resultado = array_intersect_assoc($lst_serie,$resultado);  
593 } 269 }
594 - 270 + }
  271 + else {
  272 + // Retorna todos os anos escolares para o curso em uma escola.
  273 + $resultado = _anoEscolarEscolaCurso($db, $codEscola, $codCurso);
595 } 274 }
596 } 275 }
  276 + else {
  277 + $resultado = _anoEscolarEscolaCurso($db, $codEscola, $codCurso);
  278 + }
597 } 279 }
598 280
599 -if (! empty($resultado)) {  
600 - foreach ($resultado as $cod => $nome) {  
601 - print sprintf('<serie cod_serie="%d">%s</serie>' . "\n", $cod, $nome);  
602 - } 281 +foreach ($resultado as $cod => $nome) {
  282 + print sprintf('<serie cod_serie="%d">%s</serie>' . "\n", $cod, $nome);
603 } 283 }
604 284
605 print '</query>'; 285 print '</query>';
606 \ No newline at end of file 286 \ No newline at end of file