Commit 22bad1ee84c8efbf07040c58bc607dd2f69a2ba6
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['id_pessoa']; | @@ -15,206 +43,49 @@ $pessoa_logada = $_SESSION['id_pessoa']; | ||
| 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['alu']) && is_numeric($_GET['ins']) && | @@ -388,218 +228,58 @@ if (is_numeric($_GET['alu']) && is_numeric($_GET['ins']) && | ||
| 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 |