From dc2b44eff0012f8027202deff78029900f815de5 Mon Sep 17 00:00:00 2001 From: Felipe Guaycuru Date: Tue, 29 Nov 2016 16:21:02 -0200 Subject: [PATCH] Algumas views simples --- ajax/contato.php | 19 +++ ajax/recomendar.php | 32 ++++ classes/GDE/Dado.inc.php | 6 + classes/GDE/Recomendacao.inc.php | 134 +++++++++++++++ classes/GDE/Recomendacoes.inc.php | 58 ------- classes/GDE/Util.inc.php | 8 + common/common.inc.php | 18 +- views/contato.php | 27 +++ views/estatisticas.php | 266 ++++++++++++++++++++++++++++++ views/faq.php | 87 ++++++++++ views/mapa.php | 31 ++++ views/recomendar.php | 34 ++++ views/sobre.php | 69 ++++++++ views/termos.php | 17 ++ 14 files changed, 739 insertions(+), 67 deletions(-) create mode 100644 ajax/contato.php create mode 100644 ajax/recomendar.php create mode 100644 classes/GDE/Recomendacao.inc.php delete mode 100644 classes/GDE/Recomendacoes.inc.php create mode 100644 views/contato.php create mode 100644 views/estatisticas.php create mode 100644 views/faq.php create mode 100644 views/mapa.php create mode 100644 views/recomendar.php create mode 100644 views/sobre.php create mode 100644 views/termos.php diff --git a/ajax/contato.php b/ajax/contato.php new file mode 100644 index 0000000..88fd8a4 --- /dev/null +++ b/ajax/contato.php @@ -0,0 +1,19 @@ +$(document).ready( function(){"; + +if(isset($_POST['enviar'])) { + if(Envia_Email("gde-support@googlegroups.com", "GDE - ".$_POST['assunto'], $_POST['mensagem']."\n\n".print_r($_Usuario, true), $_Usuario->getEmail()) !== false) + echo "$.guaycuru.confirmacao(\"Sua Mensagem foi enviada com sucesso! O GDE agradece!!!\", \"".CONFIG_URL."index\")"; + else + echo "$.guaycuru.confirmacao(\"Não foi possível enviar a Mensagem...\")"; +} + +echo "});"; + +echo $FIM; diff --git a/ajax/recomendar.php b/ajax/recomendar.php new file mode 100644 index 0000000..fd6a000 --- /dev/null +++ b/ajax/recomendar.php @@ -0,0 +1,32 @@ +$(document).ready( function(){"; + +if(isset($_POST['enviar'])) { + $Rec = new Recomendacao(); + $Rec->setChave(); + $Rec->setLogin($_Usuario->getLogin(true)); + $Rec->setEmail($_POST['email']); + $Rec->setRA(intval($_POST['ra'])); + $verificar = $Rec->Verificar(); + if($verificar !== true) { + echo "$.guaycuru.confirmacao(\"Os seguintes erros foram encontrados, favor corrigí-los:
"; + foreach($verificar as $erro) { + echo $erro."
"; + } + echo "\");"; + } else { + if($Rec->Recomendar($_Usuario, $_POST['mensagem']) === true) + echo "$.guaycuru.confirmacao(\"Sua Recomendação foi enviada com sucesso! O GDE agradece!!!\", \"".CONFIG_URL."/index/\")"; + else + echo "$.guaycuru.confirmacao(\"Não foi possível enviar a Recomendação.\")"; + } +} + +echo "});"; + +echo $FIM; diff --git a/classes/GDE/Dado.inc.php b/classes/GDE/Dado.inc.php index 0bbaec9..3b0f2e5 100644 --- a/classes/GDE/Dado.inc.php +++ b/classes/GDE/Dado.inc.php @@ -237,5 +237,11 @@ class Dado extends Base { */ protected $max_online_ts; + public static function Pega_Dados() { + $Dados = self::Load(1); + if($Dados === null) + return array(); + return get_object_vars($Dados); + } } diff --git a/classes/GDE/Recomendacao.inc.php b/classes/GDE/Recomendacao.inc.php new file mode 100644 index 0000000..e88c64a --- /dev/null +++ b/classes/GDE/Recomendacao.inc.php @@ -0,0 +1,134 @@ +getNome(true)." pelo GDE - ".CONFIG_URL; + } + + /** + * Define uma nova chave aleatoria e unica + * + * @return string + */ + public function setChave() { + do { + $chave = Util::Code(16); + } while(self::FindOneBy(array('chave' => $chave)) !== null); + return $this->chave = $chave; + } + + /** + * Existe_Dados + * + * Verifica se ja existe um usuario ou recomendacao com o email ou RA informados + * + * @return bool + */ + public function Existe_Dados() { + return ( + (Usuario::FindOneBy(array('email' => $this->getEmail(false))) !== null) || + (Usuario::FindOneBy(array('ra' => $this->getRA(false))) !== null) || + (self::FindOneBy(array('email' => $this->getEmail(false))) !== null) || + (self::FindOneBy(array('ra' => $this->getRA(false))) !== null) + ); + } + + public function Verificar() { + $erros = array(); + + if((strlen($this->login) < 3) || (strlen($this->login) > 16)) + $erros[] = "O login deve ter no mínimo 3 e no máximo 16 caracteres."; + + if(preg_match('/^[A-Z0-9_]+/i', $this->login) == 0) + $erros[] = "O login digitado é inválido. Deve conter apenas letras, números e underscores."; + + if((strlen($this->email) < 2) || (preg_match('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i', $this->email) == 0)) + $erros[] = "O email digitado é inválido."; + + if($this->Existe_Dados() === true) + $erros[] = "O email ou o RA digitado já está cadastrado no sistema."; + + if(count($erros) == 0) + return true; + else + return $erros; + } + + /** + * Recomendar + * + * @param $Usuario + * @param $mensagem + * @return bool + */ + public function Recomendar($Usuario, $mensagem) { + $res = mail($this->getEmail(true), 'Voce conhece o GDE?', strip_tags($mensagem).self::getFinal($Usuario, $this->getChave(true))."\n\n", 'From: '.$Usuario->getEmail(true) . "\r\n" .'Reply-To: '.$Usuario->getEmail(true) . "\r\n" . 'X-Mailer: PHP/' . phpversion()); + + if($res !== false) + return $this->Save(true); + else + return false; + } + +} diff --git a/classes/GDE/Recomendacoes.inc.php b/classes/GDE/Recomendacoes.inc.php deleted file mode 100644 index c331e01..0000000 --- a/classes/GDE/Recomendacoes.inc.php +++ /dev/null @@ -1,58 +0,0 @@ -0) + $r .= $a{mt_rand(0,$l)}; + return $r; + } + public static function Limita($texto, $tamanho) { return (strlen($texto) <= $tamanho) ? $texto : substr($texto, 0, $tamanho-3).'...'; } diff --git a/common/common.inc.php b/common/common.inc.php index c89bbf4..3d5d345 100644 --- a/common/common.inc.php +++ b/common/common.inc.php @@ -216,7 +216,7 @@ function Tempo_Geracao($inicio) {
  • Árvore / Integralização
  • Avaliar Professores
  • Eliminar Disciplinas
  • -
  • Mapa do Campus
  • +
  • Mapa do Campus
  • Planejador
  • Rankings
  • @@ -226,18 +226,18 @@ function Tempo_Geracao($inicio) {
  • Editar Perfil
  • Configurações da Conta
  • Meus Amigos
  • -
  • Convidar um Amigo
  • -
  • Criar Grupo
  • -
  • Meus Grupos
  • +
  • Convidar um Amigo
  • +
  • Ajuda
  • Sair
  • diff --git a/views/contato.php b/views/contato.php new file mode 100644 index 0000000..c948c9d --- /dev/null +++ b/views/contato.php @@ -0,0 +1,27 @@ + + Antes de enviar sua mensagem, consulte as "Perguntas Frequentes", talvez você encontre respostas...

    +

    Recomendar o GDE

    +
    + + + + + + + + + + + + +
    Assunto:
    Mensagem:
    +
    + diff --git a/views/estatisticas.php b/views/estatisticas.php new file mode 100644 index 0000000..d4649a1 --- /dev/null +++ b/views/estatisticas.php @@ -0,0 +1,266 @@ + + +

    Estatísticas

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Dados do Sistema:
    -GraduaçãoPós-GraduaçãoTotal
    PeríodogetNome(); ?>
    Alunos
    Alunos Matriculados neste Período
    Usuários no GDE
    Usuários matriculados neste Período no GDE
    Usuários com acesso nos últimos 6 meses
    Proporção Usuários / Alunos%%%
    Proporção Usuários / Alunos matriculados%%%
    Proporção Usuários Matriculados / Alunos matriculados%%%
    Proporção Usuários Acesso / Alunos matriculados%%%
    Disciplinas
    Oferecimentos
    Professores
    Salas
    Online No Momento:
    Última Atualização:format("d/m/Y"); ?>
    + +getCurso()])) + $cursos[$Usr->getCurso()] = 0; + if(!isset($catalogos[$Usr->getCatalogo()])) + $catalogos[$Usr->getCatalogo()] = 0; + if(!isset($cursos_catalogos[$Usr->getCurso()][$Usr->getCatalogo()])) + $cursos_catalogos[$Usr->getCurso()][$Usr->getCatalogo()] = 0; + $cursos[$Usr->getCurso()]++; + $catalogos[$Usr->getCatalogo()]++; + $cursos_catalogos[$Usr->getCurso()][$Usr->getCatalogo()]++; + $total++; +}*/ + +$total = $dados['usuarios']; + +$alunos_por_curso = $_GDE['DB']->Execute("SELECT COUNT(*) AS total, curso FROM ".Aluno::$tabela." WHERE nivel IS NOT NULL GROUP BY curso ORDER BY curso ASC"); +foreach($alunos_por_curso as $linha) + $alunos_curso[$linha['curso']] = $linha['total']; + +//$alunos_por_curso_ativos = $_GDE['DB']->Execute("SELECT COUNT(*) AS total, curso FROM ".Aluno::$tabela." WHERE nivel IS NOT NULL AND ".Aluno::$chave." IN (SELECT ".Aluno::$chave." FROM ".Aluno::$tabela_r_oferecimentos." WHERE ".Oferecimento::$chave." IN (SELECT ".Oferecimento::$chave." FROM ".Oferecimento::$tabela." WHERE periodo = '".$Periodo->getPeriodo()."')) GROUP BY curso ORDER BY curso ASC"); +$alunos_por_curso_ativos = $_GDE['DB']->Execute("SELECT COUNT(DISTINCT A.".Aluno::$chave.") AS total, A.curso FROM ".Aluno::$tabela." AS A INNER JOIN ".Aluno::$tabela_r_oferecimentos." AS AO ON (AO.".Aluno::$chave." = A.".Aluno::$chave.") INNER JOIN ".Oferecimento::$tabela." AS O ON (O.".Oferecimento::$chave." = AO.".Oferecimento::$chave.") WHERE A.nivel IS NOT NULL AND O.periodo = '".$Periodo->getPeriodo()."' GROUP BY A.curso ORDER BY A.curso ASC"); +foreach($alunos_por_curso_ativos as $linha) + $alunos_curso_ativos[$linha['curso']] = $linha['total']; + +//$usuarios_por_curso = $_GDE['DB']->Execute("SELECT COUNT(curso) AS total, curso FROM ".Aluno::$tabela." WHERE nivel IS NOT NULL AND ".Aluno::$chave." IN (SELECT ".Aluno::$chave." FROM gde_usuarios) GROUP BY curso"); +$usuarios_por_curso = $_GDE['DB']->Execute("SELECT COUNT(A.".Aluno::$chave.") AS total, A.curso FROM ".Aluno::$tabela." AS A INNER JOIN ".Usuario::$tabela." AS U ON (U.".Aluno::$chave." = A.".Aluno::$chave.") WHERE A.nivel IS NOT NULL GROUP BY A.curso ORDER BY A.curso ASC"); +foreach($usuarios_por_curso as $linha) + $usuarios_curso[$linha['curso']] = $linha['total']; + +//$usuarios_por_curso_ativos = $_GDE['DB']->Execute("SELECT COUNT(curso) AS total, curso FROM ".Aluno::$tabela." WHERE nivel IS NOT NULL AND ".Aluno::$chave." IN (SELECT ".Aluno::$chave." FROM ".Usuario::$tabela.") AND ".Aluno::$chave." IN (SELECT ".Aluno::$chave." FROM ".Aluno::$tabela_r_oferecimentos." WHERE ".Oferecimento::$chave." IN (SELECT ".Oferecimento::$chave." FROM ".Oferecimento::$tabela." WHERE periodo = '".$Periodo->getPeriodo()."')) GROUP BY curso"); +$usuarios_por_curso_ativos = $_GDE['DB']->Execute("SELECT COUNT(DISTINCT A.".Aluno::$chave.") AS total, A.curso FROM ".Aluno::$tabela." AS A INNER JOIN ".Aluno::$tabela_r_oferecimentos." AS AO ON (AO.".Aluno::$chave." = A.".Aluno::$chave.") INNER JOIN ".Oferecimento::$tabela." AS O ON (O.".Oferecimento::$chave." = AO.".Oferecimento::$chave.") WHERE A.nivel IS NOT NULL AND O.periodo = '".$Periodo->getPeriodo()."' AND A.".Aluno::$chave." IN (SELECT ".Aluno::$chave." FROM ".Usuario::$tabela.") GROUP BY A.curso ORDER BY A.curso ASC"); +foreach($usuarios_por_curso_ativos as $linha) + $usuarios_curso_ativos[$linha['curso']] = $linha['total']; + +$res2 = $_GDE['DB']->Execute("SELECT COUNT(catalogo) AS total, catalogo FROM ".Usuario::$tabela." WHERE catalogo IS NOT NULL GROUP BY catalogo"); +foreach($res2 as $linha) + $catalogos[$linha['catalogo']] = $linha['total']; + +$vagas = array( + '1998' => 2255, + '1999' => 2325, + '2000' => 2355, + '2001' => 2355, + '2002' => 2450, + '2003' => 2690, + '2004' => 2810, + '2005' => 2810, + '2006' => 2830, + '2007' => 2830, + '2008' => 2830, + '2009' => 3310, + '2010' => 3320, + '2011' => 3320, + '2012' => 3320, + '2013' => 3320 +); + +arsort($usuarios_curso); +arsort($catalogos); +// . +?> + +
    +

    Usuários Cadastrados Por Curso

    + + + + + + + + + + + + + + + + + + + $quantos) { + if(!isset($alunos_curso_ativos[$curso])) + $alunos_curso_ativos[$curso] = 0; + if(!isset($usuarios_curso_ativos[$curso])) + $usuarios_curso_ativos[$curso] = 0; + $Curso = new Curso($_GDE['DB'], $curso, 'G'); + if($Curso->getCurso() == null) + $Curso = new Curso($_GDE['DB'], $curso, 'T'); + ?> + + + + + + + + + + + + +
    CursoTotalAtivos% no GDE
    AlunosUsuários%AlunosUsuários%
    getCurso(); ?> ()%% %
    +
    +

    Usuários Cadastrados Por Catálogo

    + + + + + + + + + + + $quantos) { + $pc_gde = number_format(($quantos / $vagas[$catalogo])*100, 2); + if($pc_gde > 100) + $pc_gde = '100.00+'; + ?> + + + + + + + + +
    CatálogoQuantidade% do Catálogo% no GDE
    %%
    + diff --git a/views/faq.php b/views/faq.php new file mode 100644 index 0000000..4d83ca2 --- /dev/null +++ b/views/faq.php @@ -0,0 +1,87 @@ + +

    F.A.Q. do GDE


    + Encontre aqui respostas para as perguntas mais frequentes com relação ao GDE. Este FAQ está em constante atualização...

    +

    Sobre o GDE


    + P: O que é o GDE?
    + R: Boa pergunta. O GDE começou como um fim-de-semana ocioso (7 e 8 de Março de 2009) e uma idéia: Juntar as informações públicas da DAC num lugar só. Resolvi (incentivado por alguns amigos) colocá-lo na Internet (16/04/09). Com o passar do tempo, fui acrescentando mais funcionalidades e opções (e não tenho planos de parar).

    + P: Pra que serve o GDE?
    + R: Bom, o GDE serve para: +
    + P: O que significa GDE?
    + R: Precisa significar alguma coisa? No início significava, mas com as novas funcionalidades que ele foi agregando, o termo original perdeu um pouco do sentido.

    + P: Quem está por trás do GDE?
    + R: Além de mim (Felipe Guaycuru, pros que tenham preguiça de fazer uma consulta por Guaycuru), grande parte da sua existência se deve à minha esposa Najara, à minha irmã Paula Guaycuru e aos meus amigos que cumprem as funções (voluntariamente) de beta-testers, além de sempre estarem dando sugestões e me incentivando a continuar.

    +
    +

    Utilizando o GDE


    + P: Como editar meu perfil?
    + R: Para editar seu perfil, existe um link embaixo da sua foto (Editar Perfil). Lá você pode por suas informações pessoais, + foto, email para contato e por aí vai. Além de poder editar opções de privacidade para sua árvore de disciplinas. + Aconselhamos que deixe seu perfil sempre atualizado.

    + + P: Como adiciono um amigo?
    + R: Primeiramente, deve-se fazer uma busca pelo nome de seu amigo utilizando o campo no canto direito superior. + Ao encontrar seu amigo, selecione-o e clique no link para adicioná-lo.

    + + P: Como aceitar um pedido de amizade?
    + R: Os pedidos de amizade ficam perto do link Amigos, sendo uma imagem amarela. Não há como errar :)

    + + P: Como achar uma sala, um professor ou disciplina?
    + R: Basta fazer uma pesquisa utilizando o campo de busca no canto direito superior e apertar o botão Enter ou clicar na lupa. + Em seguida, os resultados aparecerão. Entre na aba desejada e divirta-se.

    + + P: Como elimino do meu currículo / árvore uma disciplina já cursada?
    + R: Você tem duas opções para fazer isso:
    + 1) No menu Ferramentas -> Árvore / Integralização, clicar nas disciplinas que já fez, e clicar em "Eliminar"
    + 2) Buscar as disciplinas que já cursou, acessar a aba Disciplina e clicar no link "Eliminar" localizada na aba Curso

    + + P: Como coloco uma disciplina de volta no meu currículo / árvore?
    + R: Para colocar a disciplina de volta na árvore, efetue uma busca, clique na disciplina em questão, e clique no link "Nenhuma das Anteriores"...

    + + P: Como elimino Eletivas da minha árvore?
    + R: Para eliminar Disciplinas Eletivas, busque pela Disciplina (no menu Disciplinas) que você cursou como Eletiva, e clique no link "Eliminar".

    + + P: Por que não posso consultar a árvore de alunos que não têm cadastro no GDE?
    + R: Para montar a árvore de um usuário, é necessário saber qual o catálogo do Aluno. Essa informação infelizmente não é disponibilizada publicamente.

    + + P: Por que as disciplinas que cursei não estão aparecendo?
    + R: Para que as disciplinas apareçam, você deve verificar se seu catálogo está correto através do perfil ou + eliminar as disciplinas cursadas pela busca ou árvore.

    + + P: Por que não usa o RA do Aluno para descobrir seu catálogo / ano de ingresso?
    + R: Porque, infelizmente, desde 2002 não existe mais uma equivalência entre RA e ano de ingresso. Por exemplo: Em 2007, os primeiros alunos ingressantes ganharam RA 069xxx...

    + + P: Existem atalhos para facilitar o uso do GDE?
    + R: SIM! Os seguintes atalhos podem ser utilizados a vontade: + +

    + + diff --git a/views/mapa.php b/views/mapa.php new file mode 100644 index 0000000..14283ae --- /dev/null +++ b/views/mapa.php @@ -0,0 +1,31 @@ + Carregando Mapa..."); + +$link = "http://maps.google.com/maps/ms?ie=UTF8&msa=0&msid=207972918742334384558.00049b21f38a1896b2cc5&z=15&output=embed"; + +?> + +
    +

    Mapa do Campus - UNICAMP

    +
    + +
    +
    + + diff --git a/views/recomendar.php b/views/recomendar.php new file mode 100644 index 0000000..5a6c50e --- /dev/null +++ b/views/recomendar.php @@ -0,0 +1,34 @@ + +

    Recomendar o GDE

    +
    + + + + + + + + + + + + + + + + +
    RA:" />
    Email:".$Aluno->getEmailDAC(true)."" : null; ?> Use o email principal do usuário.
    Mensagem:
    +
    + diff --git a/views/sobre.php b/views/sobre.php new file mode 100644 index 0000000..1ccd9f4 --- /dev/null +++ b/views/sobre.php @@ -0,0 +1,69 @@ + +

    Sobre o GDE


    +O GDE é uma iniciativa de alunos da Unicamp com o fim de possibilitar ao aluno o desfrute de sua vida acadêmica em sua plenitude, disponibilizando ferramentas de controle acadêmico e um meio efetivo de comunicação entre os alunos.

    +O GDE organiza informações, relaciona alunos e traz novas e modernas soluções para problemas presentes há muito tempo no cotidiano acadêmico.

    +O sistema do GDE é totalmente livre de custos ao usuário, ou seja, você nunca terá de pagar para desfrutar das facilidades que o GDE oferece.

    +A equipe atualmente responsável pelo GDE é formada por (em ordem alfabética): + +Além disso, as seguintes pessoas nos ajudaram em algum momento da vida do GDE, e merecem nosso agradecimentos (em ordem alfabética): + +
    +O GDE é dedicado à memória de David Oliveira Del Fresno, o melhor amigo que qualquer pessoa pode ter! + + diff --git a/views/termos.php b/views/termos.php new file mode 100644 index 0000000..d48f5bb --- /dev/null +++ b/views/termos.php @@ -0,0 +1,17 @@ + +

    Termos de Uso


    + Para usar o GDE, você deve concordar com o seguinte:
    + O GDE não é um sistema oficial da Unicamp, e tem por único objetivo auxiliar alunos na vida acadêmica.
    + Por ser um sistema criado de forma totalmente voluntária, e estar em fase BETA, o GDE está sujeito a erros, BUGs, e até mesmo mudanças de código ao vivo.
    + Todas as informações aqui contidas são de responsabilidade exclusiva de quem as forneceu.
    + Apesar de estar sempre corrigindo falhas encontradas, peço que por favor me avisem de qualquer erro encontrado, bem como qualquer sugestão ou crítica. +