/** * Método que gera a página inicial do estudo online. */ public function estudoOnlineHome() { $this->load->helper('link'); $usrAux = new Usuarios(); $sqlTurma = new SqlTurma(); $sqlLivro = new SqlLivroAula(); $sqlCapitulos = new SQlCapitulo(); $sqlConteudos = new SqlTopicoAula(); $sqlDisciplina = new SqlDisciplina(); $sqlTestes = new SqlTesteCapitulo(); $sqlTestesTop = new SqlTesteTopico(); $sqlStatus = new SqlStatusAlunoTopico(); $sqlQuestao = new SqlQuestaoAula(); $sqlAcomp = new SqlAcompanhamento(); try { $aluno = $usrAux->getAluno(false); $turma = $sqlTurma->deALuno($aluno); $this->filtro->setGet(array("turma" => $turma->getId())); $acompanhamento = $sqlAcomp->listarTodos($this->filtro); $testesCapitulosLista = $sqlTestes->deAluno($aluno); $testesTopicoLista = $sqlTestesTop->deAluno($aluno); $livrosDeTurma = $sqlLivro->deTurma($turma); $statusList = $sqlStatus->porAluno($aluno); $capitulosMax = array(); $temQuestao = array(); $livros = array(); $colecao = null; //Escaneando os livros encontrados para a turma while ($livro = $livrosDeTurma->fetch()) { $colecao = $livro->getColecao(); $id = $livro->getId(); $livros[$id]['livro'] = $livro; //Salvando as disciplinas do livro $disciplinas = $sqlDisciplina->deLivro($livro); $this->filtro->setGet(array('livro' => $livro->getId())); while ($disciplina = $disciplinas->fetch()) { $idD = $disciplina->getId(); $this->filtro->setGet(array('disciplina' => $idD)); $livros[$id]['disciplinas'][$idD]['obj'] = $disciplina; //Filtrando os capítulos $capitulos = $sqlCapitulos->listarTodos($this->filtro); $livros[$id]['disciplinas'][$idD]['capitulos'] = array(); while ($capitulo = $capitulos->fetch()) { // $idC = $capitulo->getId(); $idC = $capitulo->getSequencial(); $livros[$id]['disciplinas'][$idD]['capitulos'][$idC]['capitulo'] = $capitulo; $temQuestao[$idC] = $sqlQuestao->temParaCapitulo($capitulo); $this->filtro->setGet(array('capitulo' => $capitulo->getId())); $topicos = $sqlConteudos->deCapituloTurma($capitulo, $turma)->fetchAll(); $livros[$id]['disciplinas'][$idD]['capitulos'][$idC]['topico'] = $topicos; $secC = trim(str_replace("Capítulo", "", $capitulo->getSequencial())); $secC = str_pad($secC, 3, 0, STR_PAD_LEFT); if (isset($capitulosMax[$secC])) { if ($capitulosMax[$secC] < count($topicos)) { $capitulosMax[$secC] = count($topicos); } } else { $capitulosMax[$secC] = count($topicos); } } } } $tmp = array(); krsort($capitulosMax, SORT_NUMERIC); foreach ($capitulosMax as $chave => $valor) { $tmp["Capítulo " . (int) $chave] = $valor; } $capitulosMax = array_reverse($tmp); //Agrupando os testes por capítulos $testesCapitulos = array(); while ($teste = $testesCapitulosLista->fetch()) { $testesCapitulos[$teste->getAlvo()->getId()] = $teste; } //Agrupando os testes por tópico $testesTopicos = array(); while ($teste = $testesTopicoLista->fetch()) { $testesTopicos[$teste->getAlvo()->getId()] = $teste; } //Agrupando os status $statusArray = array(); while ($status = $statusList->fetch()) { $statusArray[$status->getTopico()->getId()] = $status; } //Agrupando o acompanhamento $acompArray = array(); while ($acomp = $acompanhamento->fetch()) { $acompArray[$acomp->getTopico()->getId()] = $acomp; $maxAcomp = $acomp; } //Passando os dados para o view $this->setData('testesCapitulos', $testesCapitulos); $this->setData('acompanhamento', $acompArray); $this->setData('testesTopicos', $testesTopicos); $this->setData('status', $statusArray); $this->setData('aluno', $aluno); $this->setData('turma', $turma); $this->setData('colecao', $colecao); $this->setData('temQuestao', $temQuestao); $this->setData('arrayLivros', $livros); $this->setData('capitulosMax', $capitulosMax); $this->setData('ultLivro', $maxAcomp->getTopico()->getCapitulo()->getLivro()); $this->loadPlugin('shadowbox'); $this->printView(); } catch (SqlException $sql) { echo Javascript::alert('Ocorreu um erro interno. ' . 'Tente novamente mais tarde.'); echo $sql->getMessage(); $this->close(true); } catch (Exception $exc) { echo Javascript::alert($exc->getMessage()); $this->close(true); } }
/** * Método que retorna os capítulos de acordo com os filtros informados * @param Filtros $filtros Objeto do sistema de filtros * @return ResultSetHydrator Objeto contento a resposta da consulta */ public function listar(Filtros $filtros) { $sqlCapitulo = new SQlCapitulo(); return $sqlCapitulo->listarTodos($filtros); }
/** * Método que gera o select base para todas as consultas * @return Select Objeto contendo o molde para as consultas */ public function select() { $select = new Select($this->tg->getTabela()); $sqlCapitulo = new SQlCapitulo(); return $select->columns(array("pagina_inicial", "pagina_final", "topico"), "conteudo_")->columns(array("pk_conteudo", "conteudo_nome", "conteudo_resumo", "conteudo_aula_digital"))->join("apostilas.capitulo", array("pk_capitulo" => "fk_capitulo"))->import($sqlCapitulo->select()); }