/** * Construtor */ public function __construct($tabela) { parent::__construct(); $this->tabela = $tabela; $this->ano = (int) Loader::data("config", "site", "ano_letivo"); $this->nota = 0.0; }
/** * Método que lista as unidades cadastradas de acordo com o código de vinculo informado * @param FiltrosSistema $filtrosSistema Objeto contendo os filtros do sistema de filtros * @param Kernel_Models_Usuario|NULL $usuario Objeto que permite sobrescrever o controle de acesso e listar * as turmas de um determinado usuário * @return PDOStatement|boolean Objeto contendo toda a resposta ou FALSE em caso de erro */ public function listarTodas(FiltrosSistema $filtrosSistema = NULL, Kernel_Models_Usuario $usuario = NULL) { $ano = Loader::data("config", "site", "ano_letivo"); //Controlle de acesso if (is_null($usuario)) { $id = $this->usuarioLogado->get_idUsuario(); $tipo = $this->usuarioLogado->get_tipoUsuarioAtivo()->get_idTipoUsuario(); } else { //Sobreescrevendo o controle de acesso $id = $usuario->getId(); $tipo = $usuario->getTipo(); } switch ($tipo) { case Kernel_Models_TiposUsuario::TIPO_COORDENADOR: //Coordenador(a) $inner = "inner join public.coordenacao on pk_unidade=fk_unidade "; $inner .= "inner join public.coordenacao_vin on pk_coordenacao=fk_coordenacao "; $inner .= "inner join public.usuario_tipo_vin on pk_usuario_tipo_vin=fk_usuario_tipo_vin "; $where = "public.usuario_tipo_vin.fk_usuario={$id} "; break; case Kernel_Models_TiposUsuario::TIPO_ALUNO: //Aluno(a) $where = "public.turma.ano={$ano} "; $inner = "inner join public.turma on public.turma.fk_unidade=pk_unidade "; ///// $where .= "and fk_usuario={$id} "; $inner .= "inner join public.usuario_aluno on " . "public.usuario_aluno.fk_turma=pk_turma"; break; case Kernel_Models_TiposUsuario::TIPO_RESPONSAVEL: //Responsável $where = "public.turma.ano={$ano} "; $inner = "inner join public.turma on public.turma.fk_unidade=pk_unidade "; ///// $and = 0; foreach ($this->usuarioLogado->get_tipoUsuarioAtivo()->get_personalizacoes() as $row) { foreach ($row->get_dependentes() as $aluno) { $where .= !$and++ ? "and " : ""; $where .= "pk_usuario_aluno=" . $aluno->get_dep_pk_usuario_aluno() . " or "; } } if (substr($where, -4) == " or ") { $where = substr($where, 0, -4) . " "; } $inner .= "inner join public.usuario_aluno on " . "public.usuario_aluno.fk_turma=pk_turma "; break; case Kernel_Models_TiposUsuario::TIPO_PROFESSOR: //Professor(a) $where = "public.turma.ano={$ano} "; $inner = "inner join public.turma on public.turma.fk_unidade=pk_unidade "; ///// $where .= "and public.usuario_professor.fk_usuario={$id} "; $inner .= "inner join public.grade on " . "public.grade.fk_turma=" . "public.turma.pk_turma "; $inner .= "inner join public.usuario_professor on " . "public.usuario_professor.pk_usuario_professor=" . "public.grade.fk_usuario_professor "; break; default: $where = $inner = ""; break; } return $this->select($where, array("public.unidade.*"), $inner, array(), array("public.unidade.pk_unidade")); }
/** * Método que retorna todas as materias com aulas amanhã * @param Turma $turma A turma a ser consultada * @return array Um array contendo as matérias com aulas amanhã */ public function turmaAulasAmanha(Turma $turma) { $tableGatway = new TableGatway(new Disciplina(), "public.turma"); $ano = Loader::data("config", "site", "ano_letivo"); $dia = date("N", strtotime("+1 day")); $query = "select distinct on(fk_materia) * " . "from public.turma " . "inner join public.grade_horario on fk_turma=public.turma.pk_turma " . "inner join public.grade on pk_grade_horario=fk_grade_horario " . "inner join public.materia_vin on pk_materia_vin=fk_materia_vin " . "inner join public.materia on pk_materia=fk_materia " . "where public.turma.ano={$ano} " . "and dia={$dia} " . "and pk_turma={$turma->getId()}"; return $tableGatway->querySelect($query); }
/** * Construtor. */ public function __construct($use = INPUT_GET) { $this->use = $use; $this->initGets = array(); $this->initPosts = array(); $this->getsSetados = array(); $this->tipos = Loader::data('config', 'filtros_sistema', 'tipos'); $this->instances = array(); }
/** * Método que retorna a série em que o aluno estuda * @param Aluno $aluno O aluno usado como filtro * @return Serie A série em que o aluno informado estuda */ public function deAluno(Aluno $aluno) { $select = new Select(); $serie = $this->tableGatway->selectObj($select->distinct("pk_serie")->join("public.turma", array("fk_serie" => "pk_serie"))->join("public.usuario_aluno", array("pk_turma" => "fk_turma"))->join("public.ensinos", array("ensino" => "pk_ensino"))->join("public.curso", array("pk_curso" => "fk_curso"))->where(array("fk_usuario" => $aluno->getId(), "ano" => \GGE\Lib\Controller\Loader::data("config", "site", "ano_letivo")))->limit(1)); if (!$serie->rowCount()) { throw new Exception("Não foi encontrada nenhuma série para o aluno informado"); } return $serie->fetch(); }
/** * Construtor * @param string $pdf Caso seja informado, inicializa o objeto com o arquivo PDF já definido * @param string $destino Define a pasta de destino do resultado da conversão. Opcional */ public function __construct($pdf = false, $destino = false) { if (is_string($pdf)) { $this->setPdf($pdf); } if (is_string($destino)) { $this->setDestino($destino); } $this->mashapeKey = \GGE\Lib\Controller\Loader::data("config", "pdf2jpg", "X-Mashape-Key"); }
/** * Método que retorna a turma que o aluno estuda * @param Aluno $aluno * @return Turma Um objeto do tipo turma contendo o resultado da consulta * @throws Exception */ public function deALuno(Aluno $aluno) { $ano = \GGE\Lib\Controller\Loader::data("config", "site", "ano_letivo"); $select = new Select(); $this->tableGatway->defineColuna("fk_usuario", new ResultSetMap(Column::INTEGER)); $this->tableGatway->defineColuna("ano", new ResultSetMap(Column::VARCHAR)); $turmaResultSet = $this->tableGatway->selectObj($select->join("public.usuario_aluno", array("pk_turma" => "fk_turma"))->where("fk_usuario={$aluno->getId()} " . "and ano={$ano} " . "and public.usuario_aluno.status=" . \GGE\Lib\Models\Status::ATIVO . " " . "and public.turma.status=" . \GGE\Lib\Models\Status::ATIVO)->limit(1)); if (!$turmaResultSet->rowCount()) { throw new TurmaException("Não foi encontrada nenhuma turma associada ao aluno informado"); } return $turmaResultSet->fetch(); }
/** * Método que retorna o código de associação do aluno com uma turma avançada * @param public_usuario_aluno $aluno Objeto referente ao aluno * @return int|boolean O código de associação do aluno com a turma avançada ou FALSE caso não encontre * @throws Exception Caso o aluno não esteja devidamente instanciado */ public function pkAlunoTurmaAvancada() { $query = "SELECT distinct on(fk_usuario_aluno) " . "turmas_extras.te_alunos_vin.fk_usuario_aluno " . "FROM turmas_extras.te_alunos_vin, turmas_extras.te_aulas, alunos_view " . "WHERE turmas_extras.te_alunos_vin.fk_usuario_aluno=alunos_view.pk_usuario_aluno " . "and turmas_extras.te_alunos_vin.fk_turma=turmas_extras.te_aulas.fk_turma " . "and alunos_view.ano_mat='" . Loader::data("config", "site", "ano_letivo") . "' " . "and fk_te_tipo=" . Kernel_Models_Turma::EXTRA_COD_METAS_AVA . " " . "and alunos_view.pk_usuario=" . $this->getId(); $retorno = FALSE; $ret = $this->queryStatement($query); if ($ret) { if ($ret->rowCount()) { $ret = $ret->fetchObject(); $retorno = (int) $ret->fk_usuario_aluno; } } return $retorno; }
/** * Método que retorna uma string para facilitar a filtragem de periodos * para o método "distribuicaoDeRegistros" * @param FiltrosSistema $filtrosSistema * @return string Uma string contedo os dados para afiltragem dos * registros */ private function stringFiltroPeriodo(FiltrosSistema $filtrosSistema) { $ret = " "; if ($filtrosSistema->validar(array("de")) || $filtrosSistema->validar(array("ate"))) { if ($filtrosSistema->validar(array("de"))) { $ret .= "and data_evento>='" . $filtrosSistema->getDe() . "' "; } if ($filtrosSistema->validar(array("ate"))) { $ret .= "and data_evento<='" . $filtrosSistema->getAte() . "' "; } } else { $ret .= "and extract(year from data_evento)=" . Loader::data("config", "site", "ano_letivo") . " "; } return $ret; }
/** * Método que retorna um array contendo os dados resultantes da consulta ao banco organizados em um array * @param int $nivel Variavel que determina qual o nível buscar, 0 para fundamental e 1 para nivél médio * @param bootean|int $unidade O indice da unidade a ser usada como filtro * @param DateTime O ano referente a filtragem * @return array Um array contendo todas as séries organizadas em um array com os scores e os subtipos */ public function buscarAvaliacoes($nivel = FALSE, $unidade = FALSE, $ano = FALSE) { ini_set('date.timezone', 'America/Recife'); $anoFiltro = is_int($ano) ? $ano : Loader::data("config", "site", "ano_letivo"); $data1 = new DateTime("{$anoFiltro}-02-01"); $resposta = $this->buscar_avaiacoes($nivel, $unidade, $ano); if (!$resposta) { return FALSE; } $arrayRet = array(); while ($row = $resposta->fetchObject()) { $arrayRet[$row->pk_serie]['qt'] = isset($arrayRet[$row->pk_serie]['qt']) ? $arrayRet[$row->pk_serie]['qt'] + 1 : 1; $this->listarAvaliacoesPreencheArray($arrayRet, $row, $data1); $arrayRet[$row->pk_serie]['serie_nome'] = $row->serie_nome; } return $arrayRet; }
/** * Método que lista todas as matérias cadastradas de acordo com os filtros definidos * @param FiltrosSistema $filtrosSistema Objeto do sistema de filtros * @return array Um array contedo todas as matérias retornadas pela consulta */ public function listarTodas(FiltrosSistema $filtrosSistema = null) { $order = array('"public".materia.materia_nome'); $distinct = array('"public".materia.materia_nome'); $where = '"public".turma.ano=' . Loader::data("config", "site", "ano_letivo"); $where .= ' and "public".materia.fk_materia_mae is not null'; $where .= is_int($unidade) ? ' and "public".turma.fk_unidade=' . $unidade : ''; $where .= is_int($serie) ? ' and "public".turma.fk_serie=' . $serie : ''; $where .= is_int($turma) ? ' and "public".turma.pk_turma=' . $turma : ''; $where .= is_int($ensino) ? ' and "public".serie.ensino=' . $ensino : ''; $where .= is_int($frente) ? ' and "public".materia.fk_materia_mae=' . $frente : ''; $where .= is_int($area) ? ' and "public".materia_mae.area=' . $area : ''; $inner = 'inner join "public".materia_vin on "public".materia.pk_materia="public".materia_vin.fk_materia '; $inner .= 'inner join "public".turma on "public".turma.fk_serie="public".materia_vin.fk_serie '; $inner .= 'inner join "public".serie on "public".turma.fk_serie="public".serie.pk_serie '; $inner .= 'inner join "public".materia_mae on "public".materia.fk_materia_mae="public".materia_mae.pk_materia_mae '; return $this->select($where, array("*"), $inner, $order, $distinct)->fetchAll(PDO::FETCH_CLASS, "Kernel_Models_Materia"); }
/** * Construtor. * * @param Model $model O modelo para retorno das consultas * @param string $tabela A tabela das consultas * @param string|bool $sequencia A sequência de retorno do comando insert */ public function __construct(Model $model, $tabela, $sequencia = false) { $this->colInt = new ResultSetMap(Column::INTEGER); $this->colVarchar = new ResultSetMap(Column::VARCHAR); $this->anoLetivo = (int) Loader::data('config', 'site', 'ano_letivo'); $this->tabela = $tabela; $this->tg = new TableGatway($model, $tabela, $sequencia); //Definindo o usuário logado para uso interno dos métodos $this->usuario = new Usuario(); $sessaoId = Loader::data('config', 'session', 'id_usuario'); if (isset($_SESSION[$sessaoId])) { $tmp = unserialize($_SESSION[$sessaoId]); if ($tmp instanceof \Usuario) { $perfil = $tmp->get_tipoUsuarioAtivo()->get_idTipoUsuario(); $this->usuario->setId((int) $tmp->get_idUsuario()); $this->usuario->setPerfil(new Perfil((int) $perfil)); } } }
/** * Método que lista os professores de acordo com os filtros informados e adiciona o número total de faltas de cada um * @param int $unidade * @param int $ensino * @param int $serie * @param int $turma * @param int $area * @param int $frente * @param int $disciplina * @param int $periodoDe * @param int $periodoAte * @return PDOStatement */ public function listarPorUnidadeEnsinoSerieTurmaFrente($unidade = FALSE, $ensino = FALSE, $serie = FALSE, $turma = FALSE, $area = FALSE, $frente = FALSE, $disciplina = FALSE, $periodoDe = FALSE, $periodoAte = FALSE) { $anoLetivo = Loader::data("config", "site", "ano_letivo"); $where = "public.usuario_professor.status=1 and public.turma.ano='{$anoLetivo}'"; $where .= " and public.usuario.nome!='Integral'"; $where .= $unidade ? ' and public.turma.fk_unidade=' . $unidade : ''; $where .= is_int($ensino) ? ' and "public".serie.ensino = ' . $ensino : ''; $where .= $serie ? ' and public.turma.fk_serie=' . $serie : ''; $where .= $turma ? ' and public.turma.pk_turma=' . $turma : ''; $where .= $frente ? ' and "public".materia.fk_materia_mae=' . $frente : ''; $where .= $area ? ' and "public".materia_mae.area=' . $area : ''; $where .= $disciplina ? ' and "public".materia.pk_materia=' . $disciplina : ''; $inner = 'inner join "public".usuario on "public".usuario.pk_usuario="public".usuario_professor.fk_usuario '; $inner .= 'inner join "public".grade on "public".grade.fk_usuario_professor="public".usuario_professor.pk_usuario_professor '; $inner .= 'inner join "public".turma on "public".turma.pk_turma="public".grade.fk_turma '; $inner .= 'inner join "public".materia_vin on "public".materia_vin.pk_materia_vin="public".grade.fk_materia_vin '; $inner .= 'inner join "public".materia on "public".materia.pk_materia="public".materia_vin.fk_materia '; $inner .= 'inner join "public".materia_mae on "public".materia.fk_materia_mae="public".materia_mae.pk_materia_mae '; $inner .= 'inner join "public".serie on "public".turma.fk_serie="public".serie.pk_serie'; $outrasColunas = '(select count(public.aula.pk_aula) from "public".aula ' . 'WHERE "public".aula.fk_usuario_professor="public".usuario_professor.pk_usuario_professor ' . 'and extract (year from "public".aula.data_aula)=\'' . $anoLetivo . '\'' . (Data::validar($periodoDe, 'd/m/Y') && Data::validar($periodoAte, 'd/m/Y') ? ' and "public".aula.data_aula >= \'' . Data::brasilParaSql($periodoDe) . '\' and "public".aula.data_aula <= \'' . Data::brasilParaSql($periodoAte) . '\'' : '') . ') as totalaulas '; $distinct = array('"public".usuario.pk_usuario'); return $this->usuarioProfessor->select($where, array('*', $outrasColunas), $inner, array(), $distinct); }
/** * Método que lista os responsáveis ligados ao coordendaor informado * @param Kernel_Models_Coordenador $coordenador * @return PDOStatement Um objeto contendo a resposta da consulta */ public function responsaveis(Kernel_Models_Coordenador $coordenador) { $query = "SELECT distinct on(pk_usuario)responsavel, " . "pk_usuario as aluno_pk " . "from public.usuario_coordenador " . "inner join public.usuario_tipo_vin on " . "public.usuario_tipo_vin.fk_usuario=public.usuario_coordenador.fk_usuario " . "inner join public.coordenacao_vin on pk_usuario_tipo_vin=fk_usuario_tipo_vin " . "inner join public.turma_vin on " . "public.turma_vin.fk_coordenacao=public.coordenacao_vin.fk_coordenacao " . "inner join public.usuario_aluno on public.usuario_aluno.fk_turma=public.turma_vin.fk_turma " . "inner join public.usuario on pk_usuario=public.usuario_aluno.fk_usuario " . "WHERE public.usuario_coordenador.fk_usuario=" . $coordenador->getId() . " " . "and ano_mat='" . Loader::data("config", "site", "ano_letivo") . "'"; return $this->queryStatement($query); }
/** * Método que retorna todas as anotações feitas pelo professor informado * @param Kernel_Models_Professor $professor * @param int|array|boolean O código do tipo do registro ou array de códigos. Informe FALSE para ignorar * @param int|array|boolean O código do subtipo do registro ou array de códigos. Informe FALSE para ignorar * @param FiltrosSistema $filtrosSistema Objeto contendo os filtros do sistema de filtros * @return PDOStatement|boolean Objeto contendo a resposta da consulta ou FALSE em caso de erro * @throws Exception Gera uma exceção ao introduzir dados inválidos, * como um professor não instanciado e etc */ public function getAfaDeProfessor(Kernel_Models_Professor $professor, $tipo = FALSE, $subTipo = FALSE, FiltrosSistema $filtrosSistema = NULL) { $query = "select distinct on(afa.afa_conceito_aluno.pk_afa_conceito_aluno)" . "afa.afa_conceito_aluno.*, afa.afa_tipo_anotacao.*, " . "afa.afa_subtipo_anotacao.*, pk_turma, " . "public.usuario.pk_usuario as pk_aluno, " . "public.usuario_aluno.pk_usuario_aluno, " . "public.usuario.nome as aluno_nome, " . "public.turma.turma_nome " . "from afa.afa_conceito_aluno " . "inner join afa.afa_subtipo_anotacao on " . "pk_afa_subtipo_anotacao=fk_afa_subtipo_anotacao " . "inner join afa.afa_tipo_anotacao on " . "pk_afa_tipo_anotacao=fk_afa_tipo_anotacao " . "inner join public.aula on " . "public.aula.pk_aula=fk_aula " . "inner join public.usuario_professor on " . "pk_usuario_professor=public.aula.fk_usuario_professor " . "left join public.usuario_aluno on " . "pk_usuario_aluno=afa.afa_conceito_aluno.fk_usuario_aluno " . "left join public.usuario on " . "pk_usuario=public.usuario_aluno.fk_usuario " . "left join public.turma on " . "pk_turma=public.usuario_aluno.fk_turma " . "where public.usuario_professor.fk_usuario=" . $professor->getId() . " "; //Filtrando por tipo e subtipo if (is_int($tipo)) { $query .= "and pk_afa_tipo_anotacao={$tipo} "; } elseif (is_array($tipo)) { if (Arrays::checarValores($tipo, FILTER_VALIDATE_INT)) { $query .= "and (pk_afa_tipo_anotacao=" . implode(" or pk_afa_tipo_anotacao=", $tipo) . ") "; } } if (is_int($subTipo)) { $query .= "and pk_afa_subtipo_anotacao={$subTipo} "; } elseif (is_array($subTipo)) { if (Arrays::checarValores($subTipo, FILTER_VALIDATE_INT)) { $query .= "and (pk_afa_subtipo_anotacao=" . implode(" or pk_afa_subtipo_anotacao=", $subTipo) . ") "; } } //Aplicando os filtros if ($filtrosSistema instanceof FiltrosSistema) { if ($filtrosSistema->validar(array("de")) || $filtrosSistema->validar(array("ate"))) { $query .= $filtrosSistema->validar(array("de")) ? "and afa.afa_conceito_aluno.data_evento>='" . $filtrosSistema->getDe() . "' " : ""; $query .= $filtrosSistema->validar(array("ate")) ? "and afa.afa_conceito_aluno.data_evento>='" . $filtrosSistema->getAte() . "' " : ""; } else { $query .= "extract(year from afa.afa_conceito_aluno.data_evento)=" . Loader::data("config", "site", "ano_letivo") . " "; } } //Ordenando $query .= "order by(afa.afa_conceito_aluno.pk_afa_conceito_aluno) desc"; return $this->queryStatement($query); }
/** * Método que gera a URL da página de apresentação da disciplina. * * @return string Uma URL apontando para a página de apresentação da disciplina */ public function urlApresentacao() { $urlBase = Loader::data("config", "urls", "sisGGE"); return "{$urlBase}apresentacao_da_disciplina/{$this->disciplina->getId()}" . "/{$this->serie->getId()}"; }
/** * Lista todos os dias que a turma informada tem aula * @param Turma $turma * @return array Um array de objetos contendo os dias que a turma tem aula */ public function turmasAulas(Turma $turma) { $ano = Loader::data("config", "site", "ano_letivo"); $query = "select distinct on (dia) *, public.turma.status as turma_status, " . "public.turma.ano as turma_ano " . "from public.turma " . "inner join public.grade_horario on fk_turma=public.turma.pk_turma " . "where public.turma.ano={$ano} and pk_turma={$turma->getId()}"; return $this->tableGatway->querySelect($query); }
/** * Método que retorna os conteúdos do livro informado com o seu andamento * @param Livro $livro O livro alvo da busca * @param Disciplina $disciplina A disciplina referente ao conteúdo * @throws \GGE\Lib\Base\Exception */ public function deLivroComAcompanhamento(Livro $livro, Disciplina $disciplina) { $select = new Select(); return $this->tableGatway->selectObj($select->distinct("sequencial_topico")->columns("*, apostilas.acompanhamento.status as topico_status, " . "data_aula as topico_data_aula ")->join("apostilas.capitulo", array("pk_capitulo" => "fk_capitulo"))->join("public.materia_vin", array("fk_materia_vin" => "pk_materia_vin"))->join("public.materia", array("pk_materia" => "fk_materia"))->join("public.materia_mae", array("pk_materia_mae" => "fk_materia_mae"))->join("public.area", array("pk_area" => "fk_area"))->join("apostilas.acompanhamento", array("pk_conteudo" => "fk_conteudo"))->where("fk_livro={$livro->getId()} " . "and pk_materia={$disciplina->getId()} " . "and (status=" . \Kernel\Modelo\Livro\Topico::STATUS_EM_ANDAMENTO . " " . "or status=" . \Kernel\Modelo\Livro\Topico::STATUS_CONCLUIDO . ") " . "and id=(select max(id) from apostilas.acompanhamento " . "where fk_conteudo=pk_conteudo and status!=" . \Kernel\Modelo\Livro\Topico::STATUS_REVISADO . ") " . "and extract(year from data_aula)=" . Loader::data("config", "site", "ano_letivo"))->order("sequencial_topico")); }
/** * Método que gera a url para uma imagem do QR code referente ao anexo instanciado * @return string A url do QR code */ public function getQr() { if ($this->getId()) { $paginaInterna = Loader::data("config", "urls", "sisGGE") . "conteudos_extras_do_livro/{$this->getId()}"; $url = "http://chart.apis.google.com/chart?" . "cht=qr&chl={$paginaInterna}&chld=l&chs=300x300"; } else { $url = ""; } return $url; }
/** * Método que lista todos os registros exceto os iniciais cadastrados * de acorod com os filtros informados * @param FiltrosSistema $filtrosSistema Filtros do sistema de filtros * @param int|array|boolean $tipo Define como filtro o tipo do registro * @param int|array|boolean $subTipo Define como filtro o subtipo * @return PDOStatement|boolean Objeto contendo a resposta da consulta ou FALSE em caso de erro */ public function listarTodos(FiltrosSistema $filtrosSistema = NULL, $tipo = FALSE, $subTipo = FALSE) { //removendo o registro inicial da listagem $inner = ""; $where = "where fap.fap_tipo.pk_fap_tipo!=0 "; //Filtrando os valores por tipo e subtipo if (is_int($tipo)) { $where .= "and pk_fap_tipo={$tipo} "; } elseif (is_array($tipo)) { if (Arrays::checarValores($tipo, FILTER_VALIDATE_INT)) { $where .= "and (pk_fap_tipo=" . implode(" or pk_fap_tipo=", $tipo) . ") "; } } if (is_int($subTipo)) { $where .= "and fk_fap_subtipo={$subTipo} "; } elseif (is_array($subTipo)) { if (Arrays::checarValores($subTipo, FILTER_VALIDATE_INT)) { $where .= "and (fk_fap_subtipo=" . implode(" or fk_fap_subtipo=", $subTipo) . ") "; } } //Fintrando os registros if ($filtrosSistema instanceof FiltrosSistema) { //Filtrando por data if ($filtrosSistema->validar(array("de")) || $filtrosSistema->validar(array("ate"))) { $where .= $filtrosSistema->validar(array("de")) ? "and data_evento>='" . $filtrosSistema->getDe() . "' " : ""; $where .= $filtrosSistema->validar(array("ate")) ? "and data_evento<='" . $filtrosSistema->getAte() . "' " : ""; } else { $where .= "and extract(year from data_evento)=" . Loader::data("config", "site", "ano_letivo") . " "; } //Filtrando por unidade, ensino, série, turma, equipe e etc if ($filtrosSistema->validar(array("unidade")) || $filtrosSistema->validar(array("ensino")) || $filtrosSistema->validar(array("serie")) || $filtrosSistema->validar(array("turma")) || $filtrosSistema->validar(array("areasDaNatureza")) || $filtrosSistema->validar(array("equipe"))) { $inner .= "inner join public.aula on pk_aula=fk_aula "; $inner .= "inner join public.grade on pk_grade=fk_grade "; $inner .= "inner join public.turma on pk_turma=fk_turma "; $inner .= "inner join public.serie on pk_serie=fk_serie "; } if ($filtrosSistema->validar(array("unidade"))) { $where .= "and fk_unidade=" . $filtrosSistema->getUnidade() . " "; } if ($filtrosSistema->validar(array("ensino"))) { $where .= "and ensino=" . $filtrosSistema->getEnsino() . " "; } if ($filtrosSistema->validar(array("serie"))) { $where .= "and pk_serie=" . $filtrosSistema->getSerie() . " "; } if ($filtrosSistema->validar(array("turma"))) { $where .= "and pk_turma=" . $filtrosSistema->getTurma() . " "; } if ($filtrosSistema->validar(array("areasDaNatureza")) || $filtrosSistema->validar(array("equipe"))) { $inner .= "inner join public.materia_vin on public.turma.fk_serie=public.materia_vin.fk_serie "; $inner .= "inner join public.materia on pk_materia=fk_materia "; $inner .= "inner join public.materia_mae on fk_materia_mae=pk_materia_mae "; } if ($filtrosSistema->validar(array("areasDaNatureza"))) { $inner .= "inner join public.area on pk_area=fk_area "; $where .= "and pk_area=" . $filtrosSistema->getAreasDaNatureza() . " "; } if ($filtrosSistema->validar(array("equipe"))) { $where .= "and pk_materia_mae=" . $filtrosSistema->getEquipe() . " "; } } $query = "select fap.fap_registro.*, fap.fap_subtipo.*, fap.fap_tipo.* " . "from fap.fap_registro " . "inner join fap.fap_subtipo on " . "fap.fap_subtipo.pk_fap_subtipo=fap.fap_registro.fk_fap_subtipo " . "inner join fap.fap_tipo on " . "fap.fap_tipo.pk_fap_tipo=fap.fap_subtipo.fk_fap_tipo " . "inner join public.usuario on " . "public.usuario.pk_usuario=fap.fap_registro.fk_usuario_inc " . "{$inner} " . "{$where} "; return $this->queryStatement($query); }
/** * Método que faz a tradução da resposta das consultas para o objeto * @param array $dados */ public function exchangeArray(array $dados) { $this->id = (int) (empty($dados["pk_turma"]) ? 0 : $dados["pk_turma"]); $this->status = (bool) (empty($dados["turma_status"]) ? false : $dados["turma_status"]); $this->nome = empty($dados["turma_nome"]) ? "" : $dados["turma_nome"]; $this->ano = (int) (empty($dados["turma_ano"]) ? Loader::data("config", "site", "ano_letivo") : $dados["turma_ano"]); $this->serie->exchangeArray($dados); $this->unidade->exchangeArray($dados); }
/** * Método que lista todos os vídeos cadastrados como anexos dos conteúdos * para o aluno informado * @param Aluno $aluno O aluno relacionado ao matérial * @param int $limit Define o máximo de vídeos a serem retornados * @return ResultSetHydrator Um objeto contendo os anexos busacdos */ public function videosAcompanahemto(Aluno $aluno, $limit = 3) { $tableGatway = new TableGatway(new Anexos(), "apostilas.anexos"); $sqlAnexos = new SqlAnexos(); return $tableGatway->selectObj($sqlAnexos->select()->join("apostilas.anexos_vin", array("fk_anexo" => "pk_anexo"))->join("apostilas.acompanhamento", array("fk_conteudo" => "apostilas.anexos_vin.fk_conteudo"))->join("public.usuario_aluno", array("fk_turma" => "apostilas.acompanhamento.fk_turma"))->where("pk_usuario_aluno={$aluno->getIdEspecifico()} " . "and extract(year from data_aula)=" . Loader::data("config", "site", "ano_letivo") . " " . "and apostilas.anexos.tipo=" . Anexos::TIPO_VIDEO)->order("data_aula", Order::DSC)->limit($limit)); }
/** * Método que lista os conceitos do professor * @param int $pkUsuarioProfessor * @param int $unidade * @param int $ensino * @param int $serie * @param int $turma * @param int $area * @param int $frente * @param int $disciplina * @param DateInterval $periodoDe * @param DateTime $periodoAte * @param int $ano */ public function listarConceitos($pkUsuarioProfessor, $unidade = FALSE, $ensino = FALSE, $serie = FALSE, $turma = FALSE, $area = FALSE, $frente = FALSE, $disciplina = FALSE, $periodoDe = FALSE, $periodoAte = FALSE, $ano = FALSE, $tipoFap = FALSE, array $order = array('fap.fap_registro.pk_fap_registro'), $oderAsc = FALSE) { if (!$this->fapRegistros instanceof fap_fap_registro) { throw new Exception('Invalid object: o objeto informado é inválido'); } $where = 'fap.fap_registro.fk_usuario_professor=' . $pkUsuarioProfessor; $where .= ' and "public".usuario_tipo_vin.fk_tipo_usuario!=11'; $where .= is_int($unidade) ? ' and "public".turma.fk_unidade=' . $unidade : ''; $where .= is_int($ensino) ? ' and "public".serie.ensino=' . $ensino : ''; $where .= is_int($serie) ? ' and "public".serie.pk_serie=' . $serie : ''; $where .= is_int($turma) ? ' and "public".turma.pk_turma=' . $turma : ''; $where .= is_int($area) ? ' and "public".materia_mae.are=' . $area : ''; $where .= is_int($disciplina) ? ' and "public".materia.pk_materia=' . $disciplina : ''; $where .= Data::validar($periodoDe, "d/m/Y") ? ' and fap.fap_registro.data_evento>\'' . Data::brasilParaSql($periodoDe) . '\'' : ''; $where .= Data::validar($periodoAte, "d/m/Y") ? ' and fap.fap_registro.data_evento<\'' . Data::brasilParaSql($periodoAte) . '\'' : ''; $where .= !Data::validar($periodoDe, "d/m/Y") && !Data::validar($periodoAte, "d/m/Y") ? ' and extract(year from fap.fap_registro.data_evento)=' . (Data::validar($ano, "Y") ? $ano : Loader::data("config", "site", "ano_letivo")) : ''; $where .= is_int($tipoFap) ? ' and fap.fap_tipo.pk_fap_tipo=' . $tipoFap : ''; $inner = 'inner join fap.fap_subtipo on fap.fap_subtipo.pk_fap_subtipo=fap.fap_registro.fk_fap_subtipo '; $inner .= 'inner join fap.fap_tipo on fap.fap_tipo.pk_fap_tipo=fap.fap_subtipo.fk_fap_tipo '; $inner .= 'inner join "public".usuario on "public".usuario.pk_usuario=fap.fap_registro.fk_usuario_inc '; $inner .= 'inner join "public".usuario_tipo_vin on "public".usuario_tipo_vin.fk_usuario="public".usuario.pk_usuario '; $inner .= 'inner join "public".tipo_usuario on "public".tipo_usuario.pk_tipo_usuario="public".usuario_tipo_vin.fk_tipo_usuario '; ///////////////////////// $inner .= 'left join "public".coordenacao_vin on "public".coordenacao_vin.fk_usuario_tipo_vin="public".usuario_tipo_vin.pk_usuario_tipo_vin '; $inner .= 'left join "public".coordenacao on "public".coordenacao.pk_coordenacao="public".coordenacao_vin.fk_coordenacao '; /////////////////////Tabelas usadas para filtragem de conteúdo $inner .= 'left join "public".aula on "public".aula.pk_aula=fap.fap_registro.fk_aula '; $inner .= 'left join "public".grade on "public".grade.pk_grade="public".aula.fk_grade '; $inner .= 'left join "public".turma on "public".turma.pk_turma="public".grade.fk_turma '; $inner .= 'left join "public".serie on "public".serie.pk_serie="public".turma.fk_serie '; $inner .= 'left join "public".materia_vin on "public".materia_vin.pk_materia_vin="public".grade.fk_materia_vin '; $inner .= 'left join "public".materia on "public".materia.pk_materia="public".materia_vin.fk_materia '; if (is_int($frente)) { #?Apenas se for filtrar por materia mãe $where .= ' and "public".materia.fk_materia_mae=' . $frente; $inner .= 'left join "public".materia_mae on "public".materia_mae.pk_materia_mae=' . '"public".materia.fk_materia_mae'; } $tmp = $this->fapRegistros->select($where, array(), $inner, $order, array(), 0, 0, $oderAsc); return $tmp; }
/** * Método que retorna todas as unidades associadas ao coordenador informado * @param \Kernel\Modelo\Perfis\Coordenador $coordenador * @return ResultSetHydrator Um objeto contendo a resposta da consulta */ public function deCoordenador(\Kernel\Modelo\Perfis\Coordenador $coordenador) { $query = "select distinct on(pk_unidade) * " . "from {$this->tableGatway->getTabela()} " . "inner join public.coordenacao on pk_unidade=fk_unidade " . "inner join public.coordenacao_vin on pk_coordenacao=fk_coordenacao " . "inner join public.usuario_tipo_vin on pk_usuario_tipo_vin=fk_usuario_tipo_vin " . "inner join public.usuario_coordenador on " . "public.usuario_coordenador.fk_usuario=public.usuario_tipo_vin.fk_usuario " . "where public.usuario_tipo_vin.fk_usuario={$coordenador->getId()} " . "and public.usuario_coordenador.status=" . Status::ATIVO . " " . "and ano=" . Loader::data("config", "site", "ano_letivo"); return $this->tableGatway->querySelect($query); }
/** * Método que gera a galeria de imagens para os anexos */ public function galeriaDosAnexos() { try { $sqlAnexo = new \Kernel\Sql\SqlAnexos(); $imagensQt = 0; $anexo = $sqlAnexo->get($this->get("anexo")); if ($anexo->getTipo() != Anexos::TIPO_GALERIA) { throw new Exception("Esta página não suporta este tipo de anexo"); } $imagens = ""; $pasta = dirname(__FILE__) . "/../../../uploadArquivos/{$anexo->getNome()}/"; if (!file_exists($pasta)) { throw new Exception("O anexo informado não possue imagens"); } foreach (scandir($pasta) as $arquivo) { if ($arquivo != "." && $arquivo != ".." && !is_dir("{$pasta}{$arquivo}")) { $imagensQt++; $imagens .= $this->loadSnippet("galeriaMiniatura", array("urlImagem" => "/uploadArquivos/{$anexo->getNome()}/{$arquivo}")); } } if (!$imagensQt) { throw new Exception("Não forma encontradas imagens para a galeria informada"); } //Carregando e passando os dados para o view $this->loadView(); $this->setViewValue("imagensFaGaleria", $imagens)->setViewValue("descricao", $anexo->getDescricao())->setViewValue("urlSite", "/")->setViewValue("ano", Loader::data("config", "site", "ano_letivo"))->printView(); } catch (Exception $exc) { echo Javascript::alert($exc->getMessage()); echo Javascript::close(); die(Javascript::history_back()); } }
/** * Metodo que retorna a url do livro digitalizado * @param int $pageStart Caso seja informado, abre o livro na página * @return string A url do livro digitalizado */ public function livroUrl($pageStart = false) { if (!$this->getId()) { throw new LivroException("o livro ainda não foi definido"); } if (!$this->disciplina->getId()) { throw new LivroException("A disciplina do livro não foi definida"); } if (!$this->livroDigitalizado) { throw new LivroException("Este livro não possue conteúdo digitalizado"); } $urlGGE = Loader::data("config", "urls", "ggeCI"); $urlGGE .= self::DIR_LIVRO_DIGITAL . "/{$this->getId()}/{$this->disciplina->getId()}"; if ($pageStart && is_int($pageStart)) { $urlGGE .= "#{$pageStart}"; } return $urlGGE; }
/** * Método que faz a busca por notas para a exibição do relatório de notas * @param int $unidade A unidade a ser usada como filtro * @param int $ano O ano referente ao relatório a ser exibido * @return boolean|PDOStatement Retorna um objeto do tipo PDOStatement em caso de sucesso ou FALSE em caso de erro */ public function listarNotas($unidade, $ano = FALSE) { $ret = FALSE; try { if (is_int($unidade)) { $anoLetivo = Loader::data("config", "site", "ano_letivo"); $query = "SELECT distinct on (mestre.medias.mat_n11,public.serie.pk_serie)" . "public.serie.pk_serie,mestre.medias.mat_discod,mestre.medias.mat_n11," . "mestre.medias.mat_n12,mestre.medias.mat_n13,mestre.medias.mat_n21," . "mestre.medias.mat_n22,mestre.medias.mat_n23,mestre.medias.mat_n31," . "mestre.medias.mat_n32,mestre.medias.mat_n33,mestre.medias.mat_n41," . "mestre.medias.mat_n42,mestre.medias.mat_n43 from public.serie " . "inner join public.turma on public.turma.fk_serie=public.serie.pk_serie " . "inner join mestre.medias on mestre.medias.mat_tmacod=public.turma.tmacod " . "WHERE mestre.medias.mat_ano='" . (is_int($ano) ? $ano > 0 ? $ano : $anoLetivo : $anoLetivo) . "' " . "and mestre.medias.unidade={$unidade} order by pk_serie"; $prepare = $this->getDb()->prepare($query); $ret = !$prepare->execute() ? FALSE : $prepare; } } catch (PDOException $exc) { echo $exc->getTraceAsString(); } return $ret; }