protected function loadMatriculasAluno($alunoId, $escolaId)
 {
     // #TODO mostrar o nome da situação da matricula
     // seleciona somente matriculas em andamento, aprovado, reprovado, em exame, aprovado apos exame e retido faltas
     $sql = "select cod_matricula as id, ano, ref_cod_instituicao as instituicao_id, ref_ref_cod_escola as\n            escola_id, ref_cod_curso as curso_id, ref_ref_cod_serie as serie_id from pmieducar.matricula,\n            pmieducar.escola where cod_escola = ref_ref_cod_escola and ref_cod_aluno = \$1 and ref_ref_cod_escola =\n            \$2 and matricula.ativo = 1 and matricula.aprovado in (1, 2, 3, 7, 8, 9) order by ano desc, id";
     $params = array($alunoId, $escolaId);
     $matriculas = $this->fetchPreparedQuery($sql, $params, false);
     if (is_array($matriculas) && count($matriculas) > 0) {
         $attrs = array('id', 'ano', 'instituicao_id', 'escola_id', 'curso_id', 'serie_id');
         $matriculas = Portabilis_Array_Utils::filterSet($matriculas, $attrs);
         foreach ($matriculas as $key => $matricula) {
             $matriculas[$key]['nome_curso'] = $this->loadNameFor('curso', $matricula['curso_id']);
             $matriculas[$key]['nome_escola'] = $this->loadNomeEscola($this->getRequest()->escola_id);
             $matriculas[$key]['nome_serie'] = $this->loadNameFor('serie', $matricula['serie_id']);
             $matriculas[$key]['situacao'] = '#TODO';
             $turma = $this->tryLoadMatriculaTurma($matricula['id']);
             if (is_array($turma) and count($turma) > 0) {
                 $matriculas[$key]['turma_id'] = $turma['turma_id'];
                 $matriculas[$key]['nome_turma'] = $turma['nome_turma'];
                 $matriculas[$key]['report_boletim_template'] = $turma['report_boletim_template'];
             }
         }
     }
     return $matriculas;
 }
 protected function getMatriculas()
 {
     if ($this->canGetMatriculas()) {
         $matriculas = new clsPmieducarMatricula();
         $matriculas->setOrderby('ano DESC, ref_ref_cod_serie DESC, cod_matricula DESC, aprovado');
         $matriculas = $matriculas->lista(null, null, null, null, null, null, $this->getRequest()->aluno_id, null, null, null, null, null, 1);
         $attrs = array('cod_matricula' => 'id', 'ref_cod_instituicao' => 'instituicao_id', 'ref_ref_cod_escola' => 'escola_id', 'ref_cod_curso' => 'curso_id', 'ref_ref_cod_serie' => 'serie_id', 'ref_cod_aluno' => 'aluno_id', 'nome' => 'aluno_nome', 'aprovado' => 'situacao', 'ano');
         $matriculas = Portabilis_Array_Utils::filterSet($matriculas, $attrs);
         foreach ($matriculas as $index => $matricula) {
             $turma = $this->loadTurmaByMatriculaId($matricula['id']);
             $matriculas[$index]['aluno_nome'] = $this->toUtf8($matricula['aluno_nome'], array('transform' => true));
             $matriculas[$index]['turma_id'] = $turma['id'];
             $matriculas[$index]['turma_nome'] = $turma['nome'];
             $matriculas[$index]['escola_nome'] = $this->loadEscolaNome($matricula['escola_id']);
             $matriculas[$index]['curso_nome'] = $this->loadCursoNome($matricula['curso_id']);
             $matriculas[$index]['serie_nome'] = $this->loadSerieNome($matricula['serie_id']);
             $matriculas[$index]['ultima_enturmacao'] = $this->loadNomeTurmaOrigem($matricula['id']);
             $matriculas[$index]['data_entrada'] = $this->loadTransferenciaDataEntrada($matricula['id']);
             $matriculas[$index]['data_saida'] = $this->loadTransferenciaDataSaida($matricula['id']);
             $matriculas[$index]['situacao'] = App_Model_MatriculaSituacao::getInstance()->getValue($matricula['situacao']);
             $matriculas[$index]['user_can_access'] = Portabilis_Utils_User::canAccessEscola($matricula['escola_id']);
             $matriculas[$index]['transferencia_em_aberto'] = $this->possuiTransferenciaEmAberto($matricula['id']);
         }
         return array('matriculas' => $matriculas);
     }
 }
 protected function loadExemplares($reload = false, $id = null)
 {
     if ($reload || !isset($this->_exemplares)) {
         $exemplares = new clsPmieducarExemplar();
         // filtra por acervo_id e/ou tombo_exemplar (caso tenha recebido tais parametros)
         $exemplares = $exemplares->lista($id, null, null, $this->getRequest()->acervo_id, null, null, null, null, null, null, null, null, null, 1, null, null, null, null, $this->getRequest()->biblioteca_id, null, $this->getRequest()->instituicao_id, $this->getRequest()->escola_id, $this->getRequest()->tombo_exemplar);
         if ($exemplares) {
             $exemplares = Portabilis_Array_Utils::filterSet($exemplares, array('cod_exemplar' => 'id', 'ref_cod_fonte' => 'fonte_id', 'ref_cod_motivo_baixa' => 'motivo_baixa_id', 'ref_cod_acervo' => 'acervo_id', 'ref_cod_biblioteca' => 'biblioteca_id', 'ref_cod_situacao' => 'situacao_id', 'permite_emprestimo', 'tombo'));
             // adiciona situacao e pendencias de cada exemplar
             foreach ($exemplares as $index => $exemplar) {
                 $acervo = $this->loadAcervo($exemplar['acervo_id']);
                 $exemplares[$index]['acervo'] = array();
                 $exemplares[$index]['acervo']['id'] = $exemplar['acervo_id'];
                 $exemplares[$index]['acervo']['titulo'] = $acervo['titulo'];
                 $exemplares[$index]['acervo']['exemplar_tipo_id'] = $acervo['exemplar_tipo_id'];
                 $exemplares[$index]['exemplar_tipo_id'] = $acervo['exemplar_tipo_id'];
                 $exemplares[$index]['situacao'] = $this->loadSituacaoForExemplar($exemplares[$index]);
                 $exemplares[$index]['pendencias'] = $this->getPendenciasForExemplar($exemplares[$index]);
             }
         }
         $this->_exemplares = $exemplares;
     }
     return $this->_exemplares;
 }