Commit c3b09ac95bd6b52fd59b0cb00970990752810d5c

Authored by Paula Bonot
Committed by GitHub
2 parents 50f61394 2d3231c7
Exists in 2.9 and in 9 other branches 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8

Merge branch 'master' into issue-3738

.env.example 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +CORE_EXT_CONFIGURATION_ENV=development
  2 +XDEBUG_IDEKEY=xdebug
  3 +XDEBUG_REMOTE_HOST=127.0.0.1
  4 +XDEBUG_REMOTE_PORT=9000
  5 +XDEBUG_REMOTE_ENABLE=1
... ...
.github/ISSUE_TEMPLATE/bugs.md 0 → 100644
... ... @@ -0,0 +1,26 @@
  1 +---
  2 +name: "Reportar um bug"
  3 +about: Encontrou um bug no i-Educar? Use este template!
  4 +---
  5 +
  6 +Olá e obrigado por nos ajudar a tornar o i-Educar um projeto mais estável. Para
  7 +reportar seu bug use o template abaixo:
  8 +
  9 +**MENU:**
  10 +
  11 +Nesta seção deve ser apontado qual o menu no sistema deve ser realizada a alteração.
  12 +
  13 +**DESCRIÇÃO:**
  14 +
  15 +Nesta seção deve ser colocado uma descrição do problema ou necessidade.
  16 +
  17 +**OBSERVAÇÕES:**
  18 +
  19 +Observações em geral sobre o problema apontado.
  20 +
  21 +**AMBIENTE:**
  22 +
  23 +- Plataforma utilizada (p.ex. Docker, instalação direta):
  24 +- Sistema operacional e versão (p.ex. Ubuntu 16.04, Windows 7):
  25 +- Navegador e versão (p.ex. Chrome 35.9.9.9):
  26 +- Outros detalhes importantes:
... ...
.github/ISSUE_TEMPLATE/outros.md 0 → 100644
... ... @@ -0,0 +1,19 @@
  1 +---
  2 +name: "Outros"
  3 +about: Para indicar melhorias ou recursos use este template!
  4 +---
  5 +
  6 +Olá e obrigado por nos ajudar a tornar o i-Educar um projeto melhor. Não esqueça
  7 +de revisar o nosso
  8 +[guia de contribuição](https://github.com/portabilis/i-educar/blob/master/CONTRIBUTING.md)
  9 +para saber melhor como colaborar com a nossa comunidade. Você também pode usar
  10 +o template abaixo para preencher sua issue:
  11 +
  12 +**CONTEXTO:**
  13 +
  14 +Por que esta alteração é importante? Como você usaria isto? Como esta alteração
  15 +pode beneficiar outros usuários?
  16 +
  17 +**IMPLEMENTAÇÃO:**
  18 +
  19 +Não obrigatório, mas sugira uma idéia de como isto poderia ser implementado.
... ...
.gitignore
... ... @@ -14,3 +14,4 @@ ieducar/vendor
14 14 ieducar/intranet/filaunica
15 15 ieducar/intranet/reservavaga
16 16 ieducar/misc/database/migrations/portabilis
  17 +.env
... ...
.scrutinizer.yml 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +filter:
  2 + excluded_paths:
  3 + - 'ieducar/tests/*'
  4 + - 'ieducar/misc/**/*'
  5 +
  6 +checks:
  7 + php:
  8 + code_rating: true
  9 +
  10 +tools:
  11 + external_code_coverage: true
  12 + php_analyzer: true
  13 + php_changetracking: true
  14 + php_code_sniffer:
  15 + config:
  16 + standard: "PSR2"
  17 + php_cpd: true
  18 + php_mess_detector: true
  19 + php_pdepend: true
  20 + sensiolabs_security_checker: true
... ...
CHANGELOG.txt 0 → 100644
... ... @@ -0,0 +1,112 @@
  1 +// $Id$
  2 +
  3 +i-Educar 1.1.0 2010-02-15
  4 +-------------------------
  5 +
  6 +- #37 by Eriksen, Walter Marinho: Grande limpeza no banco de dados. Apenas dados
  7 + essenciais estão sendo distribuídos como países, estados e municípios
  8 + brasileiros seguindo a documentação do INEP/Educacenso/CEF
  9 +- Nova tabela no banco de dados, schema public, tabela changelog, para permitir
  10 + versionamento do schema
  11 +- Campo num_livro da tabela public.documento alterado para character varying,
  12 + devido a livros poderem conter caracteres alfa-numéricos. Trigger de validação
  13 + e arquivo PHP relacionado corrigidos
  14 +- Arquivo .htaccess para servidores web Apache, com configuração para garantir
  15 + uma melhor segurança além de configuração mínima do PHP necessária para o
  16 + i-Educar
  17 +- Arquivo robots.txt, indicando para os crawlers web a evitarem o processo de
  18 + indexação dos diretórios e arquivos do i-Educar.
  19 +- Novo modelo de configuração da aplicação. Configurações básicas estão
  20 + localizadas no arquivo ieducar.ini
  21 +- Título e logo dos relatórios configuráveis através do arquivo ieducar.ini
  22 +- Fontes MS Core Fonts substituídas por FreeMonoBold e VeraSans
  23 +- Corrigido bug de segurança (Exposição de informação), veja SA-CORE-2009-002
  24 +- Corrigido uma variedade de pequenos bugs:
  25 + * #34 by Eriksen: Corrigido bug no uso de fontes TTF na geração de PDF
  26 + * #35 by Eriksen: Corrigido bug na geração de PDF para plataformas Windows e
  27 + Mac
  28 + * #36 by Eriksen: Corrigido bug ao carregar listagem de estados de um dado
  29 + país via XMLHttpRequest
  30 + * by Eriksen: Corrigido codificação de caracteres em intranet/meusdados.php e
  31 + em intranet/adicionar_documentos_cad.php
  32 + * by Eriksen: Corrigido referência a imagens no arquivo calendario.css que
  33 + afetava layout do quadro de horários
  34 + * by Eriksen: Corrigido bug em alocação de cursos e disciplinas para servidor
  35 + que impossibilitava o cadastro ou edição dos mesmos
  36 + * by Eriksen: Corrigido bug que gerava erro de SQL na edição de pessoa física
  37 + * by Eriksen: Corrigido bug que não listava clientes do módulo Biblioteca até
  38 + que um cliente estivesse suspenso
  39 + * #17 by Eriksen: Corrigido bug que não listava tipos de clientes de uma
  40 + Biblioteca na listagem de clientes do módulo Biblioteca
  41 + * by Eriksen: Corrigido bug no cadastro de Reserva de Vaga para alunos
  42 + externos
  43 + * by Eriksen: Corrigido bug na Emissão de documento de reserva de vaga que
  44 + não criava o PDF
  45 + * by Eriksen: Corrigido bug no select de estado na criação de logradouro,
  46 + CEP e bairro
  47 + * #39 by Eriksen: Corrigido bug no cadastro de escolaridade
  48 + * #46 by Eriksen: Corrigido problemas nas sequences que resultavam em
  49 + erro de SQL (chave duplicada). Corrige problema originado no ticket #37
  50 + * by Eriksen: Atualização do banco de dados com as permissões padrões do
  51 + tipo de usuário Biblioteca (complementa ticket #41)
  52 + * #15 by Eriksen: Corrigido bug que não listava os cursos de uma escola
  53 + na Rematrícula automática
  54 + * #42 by Eriksen: Corrigido bug de bloqueio de acesso indevido na emissão
  55 + de relatório de Registros de transferências expedidas
  56 + * #43 by Eriksen: Corrigido bug de bloqueio de acesso indevido na emissão
  57 + Ata de resultado final
  58 + * by Eriksen: Corrigido função de formatação para CEPs que comecem com 0
  59 + * by Eriksen: Corrigido problemas com a restauração de triggers e
  60 + constraints das tabelas public.uf e public.municipio em decorrência da
  61 + tarefa de limpeza do ticket #37
  62 +
  63 +i-Educar 1.0.2, 2009-05-25
  64 +--------------------------
  65 +
  66 +- Pequenos refactorings nas classes de unit e functional tests
  67 +- Corrigido bug de segurança (Exposição de informação), veja SA-CORE-2009-001
  68 +- #30 by Eriksen, José Rogério Santos: Adicionado parâmetro porta na
  69 + configuração de conexão com o servidor
  70 +- Corrigido uma variedade de pequenos bugs:
  71 + * #33 by Eriksen: Corrigido bug que ocultava nome de aluno na listagem de
  72 + Reserva de Vaga
  73 + * #32 by Eriksen: Corrigido execução de regra de negócio ao afastar servidor
  74 + * #31 by Eriksen, José Rogério Santos: Corrigido erro em função printf de
  75 + debugging
  76 + * #26 by Eriksen: Corrigido bug na substituição de horário de servidor
  77 + * #25 by Eriksen: Corrigido bug em select de funções durante cadastro de novo
  78 + servidor
  79 +
  80 +i-Educar 1.0.1, 2009-05-04
  81 +--------------------------
  82 +
  83 +- #6 e #27 by Eriksen: Adicionado arquivos CHANGELOG, README e LICENSE-pt_BR na
  84 + distribuição do i-Educar
  85 +- Corrigido uma variedade de pequenos bugs:
  86 + * #27 by Eriksen: Adicionado arquivo de erro de conexão com o banco de dados,
  87 + incluindo sugestões para solução do problema
  88 + * #23 by Eriksen: Corrigido bug que não permitia afastar servidor
  89 + * #22 by Eriksen: Corrigido erro na listagem de faltas e atrasos de um
  90 + servidor que listava as ocorrências de todos quando deveria mostrar
  91 + apenas do servidor especificado. Melhorias no display de dados da escola,
  92 + horas/minutos de um atraso e o tipo da entrada
  93 + * #21 by Eriksen: Corrigido bug de exclusão de categoria de nível de servidor
  94 + * #20 by Eriksen: Corrigido bug de atualização/exclusão de cadastro de
  95 + motivo de afastamento de servidor
  96 + * #18 by Eriksen: Corrigido bug na biblioteca de cadastramento do mesmo
  97 + cliente quando na verdade era para atualizar seus dados
  98 + * #17 by Eriksen: Corrigido bug da lista de clientes de biblioteca quando não
  99 + havia no mínimo um cliente suspenso
  100 + * #16 by Eriksen: Corrigido bug da lista de UFs vazia no histórico de aluno
  101 + * #13 by Eriksen: Corrigido erro no login quando usuário tinha múltiplos
  102 + endereços IPs
  103 + * #12 Dispensa de disciplina não funcionava
  104 + * #11 Hora da ocorrência não gravava quando a mesma era editada
  105 + * #8 Opções do select de tipo de cliente estavam duplicadas
  106 + * #7 Ação de suspender cliente estava com SQL inválido
  107 + * #5 Página inicial usa caminho relativo e é script PHP; bug do logout
  108 + corrigido
  109 +
  110 +i-Educar 1.0.0, 2009-03-20
  111 +--------------------------
  112 +- Release inicial
... ...
CODE_OF_CONDUCT.md 0 → 100644
... ... @@ -0,0 +1,41 @@
  1 +# Código de conduta para colaboradores - pt-br
  2 +
  3 +## Nossa promessa
  4 +
  5 +Com o interesse de fomentar uma comunidade aberta e acolhedora, nós, como colaboradores e administradores deste projeto, comprometemo-nos a fazer a participação deste projeto uma experiência livre de assédio para todos, independentemente da aparência pessoal, deficiência, etnia, gênero, idade, identidade ou expressão de gênero, identidade ou orientação sexual, nacionalidade, nível de experiência, porte físico, raça ou religião.
  6 +
  7 +## Nossos padrões
  8 +
  9 +Exemplos de comportamentos que contribuem a criar um ambiente positivo incluem:
  10 +
  11 +- Usar linguagem acolhedora e inclusiva
  12 +- Respeitar pontos de vista e experiências diferentes
  13 +- Aceitar crítica construtiva com graça
  14 +- Focar no que é melhor para a comunidade
  15 +- Mostrar empatia com outros membros da comunidade
  16 +
  17 +Exemplos de comportamentos inaceitáveis por parte dos participantes incluem:
  18 +
  19 +- Uso de linguagem ou imagens sexuais e atenção ou avanço sexual indesejada
  20 +- Comentários insultuosos e/ou depreciativos e ataques pessoais ou políticos (Trolling)
  21 +- Assédio público ou privado
  22 +- Publicar informação pessoal de outros sem permissão explícita, como, por exemplo, um endereço eletrônico ou residencial
  23 +- Qualquer outra forma de conduta que pode ser razoavelmente considerada inapropriada num ambiente profissional
  24 +
  25 +## Nossas responsabilidades
  26 +
  27 +Os administradores do projeto são responsáveis por esclarecer os padrões de comportamento e deverão tomar ação corretiva apropriada e justa em resposta a qualquer instância de comportamento inaceitável.
  28 +
  29 +Os administradores do projeto têm o direito e a responsabilidade de remover, editar ou rejeitar comentários, commits, código, edições na wiki, erros ou outras formas de contribuição que não estejam de acordo com este Código de Conduta, bem como banir temporariamente ou permanentemente qualquer colaborador por qualquer outro comportamento que se considere impróprio, perigoso, ofensivo ou problemático.
  30 +
  31 +## Escopo
  32 +
  33 +Este Código de Conduta aplica-se dentro dos espaços do projeto ou qualquer espaço público onde alguém represente o mesmo ou a sua comunidade. Exemplos de representação do projeto ou comunidade incluem usar um endereço de email oficial do projeto, postar por uma conta de mídia social oficial, ou agir como um representante designado num evento online ou offline. A representação de um projeto pode ser ainda definida e esclarecida pelos administradores do projeto.
  34 +
  35 +## Aplicação
  36 +Comportamento abusivo, de assédio ou de outros tipos pode ser comunicado contatando a equipe do projeto `comunidade@portabilis.com.br`. Todas as queixas serão revistas e investigadas e resultarão numa resposta necessária e apropriada à situação. A equipe é obrigada a manter a confidencialidade em relação ao elemento que reportou o incidente. Demais detalhes de políticas de aplicação podem ser postadas separadamente.
  37 +
  38 +Administradores do projeto que não sigam ou não mantenham o Código de Conduta em boa fé podem enfrentar repercussões temporárias ou permanentes determinadas por outros membros da liderança do projeto.
  39 +
  40 +## Atribuição
  41 +Este Código de Conduta é adaptado do Contributor Covenant, versão 1.4, disponível em https://www.contributor-covenant.org/pt-br/version/1/4/code-of-conduct.html
... ...
CONTRIBUTING.md 0 → 100644
... ... @@ -0,0 +1,214 @@
  1 +# Guia de contribuição
  2 +
  3 +Que bom que você resolveu contribuir conosco. Obrigado! A proposta do i-Educar é
  4 +ambiciosa e precisamos de toda ajuda possível para alcançar nossos objetivos.
  5 +Neste guia vamos explicar como funcionam os nossos processos internos e como
  6 +podemos trabalhar juntos da melhor forma possível.
  7 +
  8 +## Como contribuir
  9 +
  10 +Existem diversas formas de contribuir com o projeto:
  11 +
  12 +- [Reportando bugs](#reportando-bugs)
  13 +- [Indicando melhorias](#indicando-melhorias)
  14 +- [Pedindo recursos](#pedindo-recursos)
  15 +- [Discutindo as issues](#discutindo-as-issues)
  16 +- [Fazendo pull requests](#fazendo-pull-requests)
  17 +- [Outras formas de contribuir](#outras-formas-de-contribuir)
  18 +
  19 +### Reportando bugs
  20 +
  21 +Se encontrou um bug no i-Educar você pode reportá-lo usando a ferramenta de
  22 +[issues do GitHub](https://github.com/portabilis/i-educar/issues). Porém antes
  23 +de enviar seu bug é importante fazer as seguintes verificações:
  24 +
  25 +1. Atualize seu repositório local no branch `master` mais recente. Talvez seu
  26 + bug já tenha sido corrigido na versão mais recente;
  27 +2. Verifique se o bug já foi reportado por outra pessoa fazendo uma busca pelas
  28 + issues.
  29 +
  30 +Se o bug realmente não foi resolvido ou acolhido então está na hora de
  31 +[criar uma nova issue](https://github.com/portabilis/i-educar/issues/new). No
  32 +título da issue tente resumir da melhor forma o problema evitando títulos
  33 +genéricos como *"Falha no sistema"* ou *"Problemas na instalação"*. No corpo da
  34 +issue, tente seguir o seguinte formato:
  35 +
  36 +```
  37 +**MENU:** Nesta seção deve ser apontado qual o menu no sistema deve ser
  38 +realizada a alteração.
  39 +
  40 +**DESCRIÇÃO:** Nesta seção deve ser colocado uma descrição do problema ou
  41 +necessidade.
  42 +
  43 +**OBSERVAÇÕES:** Observações em geral sobre o problema apontado.
  44 +```
  45 +
  46 +Exemplo:
  47 +
  48 +```
  49 +**MENU:**
  50 +
  51 +i-Educar - Escola > Cadastro > Turma > Cadastrar
  52 +
  53 +**DESCRIÇÃO:**
  54 +
  55 +No cadastro de turmas, ao selecionar a opção Multisseriada, todas as séries
  56 +aparecem para seleção, quando deveria ser somente as da escola e curso
  57 +selecionado.
  58 +
  59 +**OBSERVAÇÕES:**
  60 +
  61 +Não se aplica.
  62 +
  63 +```
  64 +
  65 +Se possível inclua imagens ou vídeos à descrição do bug para facilitar o
  66 +processo de reprodução. Use um software como
  67 +[LICEcap](https://www.cockos.com/licecap/) para criar um gif animado de sua
  68 +tela. Informe também detalhes sobre o seu ambiente: plataforma de execução,
  69 +sistema operacional, navegador e versão, etc. Você também deve adicionar o
  70 +label **bug** à issue.
  71 +
  72 +#### Nota sobre falhas de segurança
  73 +
  74 +Se você encontrou alguma falha de segurança **não use as issues para reportar o
  75 +bug**. Escreva o seu report diretamente para o endereço de e-mail
  76 +`comunidade@portabilis.com.br`. Ele será analisado, validado e corrigido de
  77 +acordo com as necessidades. Pedimos que **não torne a falha pública** para
  78 +segurança de todos que utilizam a plataforma em seu estado atual.
  79 +
  80 +### Indicando melhorias
  81 +
  82 +Outra ótima forma de contribuir é indicando melhorias ao código do i-Educar e em
  83 +como ele está estruturado. Se você tem qualquer ideia de como podemos melhorar
  84 +alguma abordagem na solução de problemas, refatoração de código, melhoria em
  85 +algum recurso ou qualquer outra coisa relacionada, siga estes passos:
  86 +
  87 +1. Certifique-se de que sua ideia já não esteja sendo abordada em nosso
  88 + [roadmap](./README.md#roadmap-de-tecnologia);
  89 +2. Também verifique se a ideia já não está pressente em nossas
  90 + [issues do GitHub](https://github.com/portabilis/i-educar/issues);
  91 +3. Defenda a sua ideia e explique de forma convincente porque ela deve ser
  92 + acolhida. Eis algumas questões a considerar:
  93 + 1. Você realmente esta propondo uma ideia só ou um conjunto de ideias?
  94 + 2. Qual é o problema que sua ideia resolve?
  95 + 3. Por que sua sugestão é melhor do que o que já existe no código?
  96 + 4. Realmente vale a pena demandar tempo para implementar sua ideia dentro de
  97 + nossas prioridades?
  98 +
  99 +Tendo passado pelo crivo de todos estes questionamentos basta
  100 +[criar uma nova issue](https://github.com/portabilis/i-educar/issues/new)
  101 +descrevendo as melhorias e usando o label **melhorias**.
  102 +
  103 +### Pedindo recursos
  104 +
  105 +Tendo em vista o que estamos construindo junto com a comunidade, novos recursos
  106 +tem baixa prioridade no nosso fluxo. Vale a pena enviar sua sugestão de recurso
  107 +apenas se:
  108 +
  109 +1. O recurso em questão resolve um problema que não é resolvido por nada que já
  110 + exista no projeto;
  111 +2. O recurso resolve um problema real validado por pessoas que estão em contato
  112 + direto com a utilização da plataforma: secretários, gestores, professores,
  113 + alunos, etc.
  114 +
  115 +Um exemplo de um bom recurso implementado para o i-Educar é o módulo do **censo
  116 +escolar** que visa resolver todo o processo de exportação de dados para o censo
  117 +escolar com apenas alguns cliques, otimizando de forma radical este processo que
  118 +antes poderia demorar semanas envolvendo o trabalho de muitas pessoas.
  119 +
  120 +Para criar seu pedido de recurso basta
  121 +[criar uma nova issue](https://github.com/portabilis/i-educar/issues/new) usando
  122 +o label **recurso**.
  123 +
  124 +### Discutindo as issues
  125 +
  126 +Antes de partirmos para o código em si é muito importante discutirmos com a
  127 +comunidade como cada issue será abordada. Toda e qualquer questão deve ser
  128 +colocada em discussão para que qualquer pessoa que deseje solucionar aquele
  129 +problema tenha o máximo de informações para executar uma solução.
  130 +
  131 +Idealmente todas as issues devem ter um plano de ação claro antes que qualquer
  132 +código seja escrito. Sabemos que muitas vezes isto não é possível, sendo
  133 +necessário explorar e analisar melhor o que foi indicado. Nestes casos, publique
  134 +todas as suas descobertas nas discussões indicando caminhos e recebendo o
  135 +feedback da comunidade a respeito do que está sendo proposto.
  136 +
  137 +Issues que estão em processo de discussão devem receber o label **discussão**
  138 +indicando que aquela issue precisa dos inputs e feedbacks dos membros da
  139 +comunidade. Nós te encorajamos a participar o máximo possível mas fique atento
  140 +ao nosso [código de conduta](./CODE_OF_CONDUCT.md) antes de realizar qualquer
  141 +interação com os outros membros da comunidade.
  142 +
  143 +### Fazendo pull requests
  144 +
  145 +Depois de ter um plano de ação relativamente claro você deve estar pronto para
  146 +contribuir com código. Para isso faça um fork do i-Educar e trabalhe em cima de
  147 +um branch diferente de master implementando suas soluções. Para saber mais sobre
  148 +pull requests e como eles funcionam, veja
  149 +[este link](https://help.github.com/articles/about-pull-requests/).
  150 +
  151 +Antes de abrir seu PR (pull request) certique-se que:
  152 +
  153 +- O código realmente resolve um problema real (de preferência baseado em alguma
  154 + issue levantada);
  155 +- Seu PR resolve uma issue apenas. Se você quiser fazer mais de uma coisa,
  156 + divida em vários PRs;
  157 +- Seu código é funcional (ou algo próximo disso). Providencie testes se
  158 + possível;
  159 +- Seu código adere às convenções do [PSR-2](https://www.php-fig.org/psr/psr-2/);
  160 +- Seus commits englobam bem as funcionalidades desenvolvidas. Evite espalhar o
  161 + desenvolvimento de um recurso em múltiplos commits;
  162 +- Se for inevitável criar vários commits intermediários, por favor execute um
  163 + [squash](https://git-scm.com/book/pt-br/v1/Ferramentas-do-Git-Reescrevendo-o-Hist%C3%B3rico#Achatando-um-Commit)
  164 + antes de abrir seu PR;
  165 +- As mensagens de seus commits são claras e descrevem bem o trabalho. Para
  166 + maiores dicas sobre como escrever mensagens de commit adequadas, veja
  167 + [este guia](https://chris.beams.io/posts/git-commit/).
  168 +
  169 +Caso seu PR não atenda a uma destas demandas ele poderá ser fechado. Isto inclui
  170 +PRs que tentam resolver problemas reais mas que contém código cheio de erros ou
  171 +soluções incompletas. Para que a nossa lista de PRs não fique poluída,
  172 +dificultando o trabalho de outros membros da comunidade que podem ajudar
  173 +revisando as mudanças, pedimos que PRs sejam abertos quando sua solução estiver
  174 +a mais completa possível. Por isso é imprescindível usar a discussão nas issues
  175 +para a criação de soluções mais assertivas.
  176 +
  177 +#### Sobre mudanças cosméticas
  178 +
  179 +PRs que realizam apenas mudanças cosméticas como remoção de espaços em branco,
  180 +ajustes de indentação, etc., não serão aceitos. Nós valorizamos um código bem
  181 +escrito e queremos padronizar nossas práticas, mas PRs que não entregarem
  182 +nenhuma melhoria na estabilidade, funcionalidade, testabilidade do projeto ou
  183 +compatibilidade com os padrões sendo adotados (PSR-2) serão fechados. Para
  184 +entender melhor sobre esta decisão veja
  185 +[esta discussão](https://github.com/rails/rails/pull/13771#issuecomment-32746700).
  186 +
  187 +### Outras formas de contribuir
  188 +
  189 +Se você não trabalha com código mas quer ajudar o i-Educar, existe muitas outras
  190 +formas de contribuir:
  191 +
  192 +- Ajude com a documentação do projeto (mais informações em breve);
  193 +- Fale sobre o i-Educar nas suas redes sociais, blogs, etc. Espalhe a palavra;
  194 +- Organize eventos e dê palestras sobre o i-Educar;
  195 +- Crie material promocional como apresentações, screencasts, mídia para
  196 + compartilhamento em redes sociais, etc;
  197 +- Viu alguma discussão que te interessa e onde você pode acrescentar mesmo sem
  198 + conhecimento técnico? Não se acanhe e participe também nas issues do GitHub.
  199 +
  200 +Pensou em alguma outra forma de contribuir? Compartilha com a gente! Escreva
  201 +para `comunidade@portabilis.com.br` e conte sua história.
  202 +
  203 +# Créditos
  204 +
  205 +Este documento foi escrito com o auxílio de outros documentos similares
  206 +utilizados em outras comunidades. Destacamos:
  207 +
  208 +- [Metabase](https://github.com/metabase/metabase/blob/master/docs/contributing.md)
  209 +- [Ghost](https://docs.ghost.org/v1/docs/contributing)
  210 +- [Ember.js](https://github.com/emberjs/ember.js/blob/master/CONTRIBUTING.md)
  211 +- [Ruby on Rails](https://github.com/rails/rails/blob/master/CONTRIBUTING.md)
  212 +- [Propostas de William Espindola](https://github.com/portabilis/i-educar/issues/201)
  213 +
  214 +... dentre outros!
... ...
LICENSE 0 → 100644
... ... @@ -0,0 +1,339 @@
  1 + GNU GENERAL PUBLIC LICENSE
  2 + Version 2, June 1991
  3 +
  4 + Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
  5 + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  6 + Everyone is permitted to copy and distribute verbatim copies
  7 + of this license document, but changing it is not allowed.
  8 +
  9 + Preamble
  10 +
  11 + The licenses for most software are designed to take away your
  12 +freedom to share and change it. By contrast, the GNU General Public
  13 +License is intended to guarantee your freedom to share and change free
  14 +software--to make sure the software is free for all its users. This
  15 +General Public License applies to most of the Free Software
  16 +Foundation's software and to any other program whose authors commit to
  17 +using it. (Some other Free Software Foundation software is covered by
  18 +the GNU Lesser General Public License instead.) You can apply it to
  19 +your programs, too.
  20 +
  21 + When we speak of free software, we are referring to freedom, not
  22 +price. Our General Public Licenses are designed to make sure that you
  23 +have the freedom to distribute copies of free software (and charge for
  24 +this service if you wish), that you receive source code or can get it
  25 +if you want it, that you can change the software or use pieces of it
  26 +in new free programs; and that you know you can do these things.
  27 +
  28 + To protect your rights, we need to make restrictions that forbid
  29 +anyone to deny you these rights or to ask you to surrender the rights.
  30 +These restrictions translate to certain responsibilities for you if you
  31 +distribute copies of the software, or if you modify it.
  32 +
  33 + For example, if you distribute copies of such a program, whether
  34 +gratis or for a fee, you must give the recipients all the rights that
  35 +you have. You must make sure that they, too, receive or can get the
  36 +source code. And you must show them these terms so they know their
  37 +rights.
  38 +
  39 + We protect your rights with two steps: (1) copyright the software, and
  40 +(2) offer you this license which gives you legal permission to copy,
  41 +distribute and/or modify the software.
  42 +
  43 + Also, for each author's protection and ours, we want to make certain
  44 +that everyone understands that there is no warranty for this free
  45 +software. If the software is modified by someone else and passed on, we
  46 +want its recipients to know that what they have is not the original, so
  47 +that any problems introduced by others will not reflect on the original
  48 +authors' reputations.
  49 +
  50 + Finally, any free program is threatened constantly by software
  51 +patents. We wish to avoid the danger that redistributors of a free
  52 +program will individually obtain patent licenses, in effect making the
  53 +program proprietary. To prevent this, we have made it clear that any
  54 +patent must be licensed for everyone's free use or not licensed at all.
  55 +
  56 + The precise terms and conditions for copying, distribution and
  57 +modification follow.
  58 +
  59 + GNU GENERAL PUBLIC LICENSE
  60 + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  61 +
  62 + 0. This License applies to any program or other work which contains
  63 +a notice placed by the copyright holder saying it may be distributed
  64 +under the terms of this General Public License. The "Program", below,
  65 +refers to any such program or work, and a "work based on the Program"
  66 +means either the Program or any derivative work under copyright law:
  67 +that is to say, a work containing the Program or a portion of it,
  68 +either verbatim or with modifications and/or translated into another
  69 +language. (Hereinafter, translation is included without limitation in
  70 +the term "modification".) Each licensee is addressed as "you".
  71 +
  72 +Activities other than copying, distribution and modification are not
  73 +covered by this License; they are outside its scope. The act of
  74 +running the Program is not restricted, and the output from the Program
  75 +is covered only if its contents constitute a work based on the
  76 +Program (independent of having been made by running the Program).
  77 +Whether that is true depends on what the Program does.
  78 +
  79 + 1. You may copy and distribute verbatim copies of the Program's
  80 +source code as you receive it, in any medium, provided that you
  81 +conspicuously and appropriately publish on each copy an appropriate
  82 +copyright notice and disclaimer of warranty; keep intact all the
  83 +notices that refer to this License and to the absence of any warranty;
  84 +and give any other recipients of the Program a copy of this License
  85 +along with the Program.
  86 +
  87 +You may charge a fee for the physical act of transferring a copy, and
  88 +you may at your option offer warranty protection in exchange for a fee.
  89 +
  90 + 2. You may modify your copy or copies of the Program or any portion
  91 +of it, thus forming a work based on the Program, and copy and
  92 +distribute such modifications or work under the terms of Section 1
  93 +above, provided that you also meet all of these conditions:
  94 +
  95 + a) You must cause the modified files to carry prominent notices
  96 + stating that you changed the files and the date of any change.
  97 +
  98 + b) You must cause any work that you distribute or publish, that in
  99 + whole or in part contains or is derived from the Program or any
  100 + part thereof, to be licensed as a whole at no charge to all third
  101 + parties under the terms of this License.
  102 +
  103 + c) If the modified program normally reads commands interactively
  104 + when run, you must cause it, when started running for such
  105 + interactive use in the most ordinary way, to print or display an
  106 + announcement including an appropriate copyright notice and a
  107 + notice that there is no warranty (or else, saying that you provide
  108 + a warranty) and that users may redistribute the program under
  109 + these conditions, and telling the user how to view a copy of this
  110 + License. (Exception: if the Program itself is interactive but
  111 + does not normally print such an announcement, your work based on
  112 + the Program is not required to print an announcement.)
  113 +
  114 +These requirements apply to the modified work as a whole. If
  115 +identifiable sections of that work are not derived from the Program,
  116 +and can be reasonably considered independent and separate works in
  117 +themselves, then this License, and its terms, do not apply to those
  118 +sections when you distribute them as separate works. But when you
  119 +distribute the same sections as part of a whole which is a work based
  120 +on the Program, the distribution of the whole must be on the terms of
  121 +this License, whose permissions for other licensees extend to the
  122 +entire whole, and thus to each and every part regardless of who wrote it.
  123 +
  124 +Thus, it is not the intent of this section to claim rights or contest
  125 +your rights to work written entirely by you; rather, the intent is to
  126 +exercise the right to control the distribution of derivative or
  127 +collective works based on the Program.
  128 +
  129 +In addition, mere aggregation of another work not based on the Program
  130 +with the Program (or with a work based on the Program) on a volume of
  131 +a storage or distribution medium does not bring the other work under
  132 +the scope of this License.
  133 +
  134 + 3. You may copy and distribute the Program (or a work based on it,
  135 +under Section 2) in object code or executable form under the terms of
  136 +Sections 1 and 2 above provided that you also do one of the following:
  137 +
  138 + a) Accompany it with the complete corresponding machine-readable
  139 + source code, which must be distributed under the terms of Sections
  140 + 1 and 2 above on a medium customarily used for software interchange; or,
  141 +
  142 + b) Accompany it with a written offer, valid for at least three
  143 + years, to give any third party, for a charge no more than your
  144 + cost of physically performing source distribution, a complete
  145 + machine-readable copy of the corresponding source code, to be
  146 + distributed under the terms of Sections 1 and 2 above on a medium
  147 + customarily used for software interchange; or,
  148 +
  149 + c) Accompany it with the information you received as to the offer
  150 + to distribute corresponding source code. (This alternative is
  151 + allowed only for noncommercial distribution and only if you
  152 + received the program in object code or executable form with such
  153 + an offer, in accord with Subsection b above.)
  154 +
  155 +The source code for a work means the preferred form of the work for
  156 +making modifications to it. For an executable work, complete source
  157 +code means all the source code for all modules it contains, plus any
  158 +associated interface definition files, plus the scripts used to
  159 +control compilation and installation of the executable. However, as a
  160 +special exception, the source code distributed need not include
  161 +anything that is normally distributed (in either source or binary
  162 +form) with the major components (compiler, kernel, and so on) of the
  163 +operating system on which the executable runs, unless that component
  164 +itself accompanies the executable.
  165 +
  166 +If distribution of executable or object code is made by offering
  167 +access to copy from a designated place, then offering equivalent
  168 +access to copy the source code from the same place counts as
  169 +distribution of the source code, even though third parties are not
  170 +compelled to copy the source along with the object code.
  171 +
  172 + 4. You may not copy, modify, sublicense, or distribute the Program
  173 +except as expressly provided under this License. Any attempt
  174 +otherwise to copy, modify, sublicense or distribute the Program is
  175 +void, and will automatically terminate your rights under this License.
  176 +However, parties who have received copies, or rights, from you under
  177 +this License will not have their licenses terminated so long as such
  178 +parties remain in full compliance.
  179 +
  180 + 5. You are not required to accept this License, since you have not
  181 +signed it. However, nothing else grants you permission to modify or
  182 +distribute the Program or its derivative works. These actions are
  183 +prohibited by law if you do not accept this License. Therefore, by
  184 +modifying or distributing the Program (or any work based on the
  185 +Program), you indicate your acceptance of this License to do so, and
  186 +all its terms and conditions for copying, distributing or modifying
  187 +the Program or works based on it.
  188 +
  189 + 6. Each time you redistribute the Program (or any work based on the
  190 +Program), the recipient automatically receives a license from the
  191 +original licensor to copy, distribute or modify the Program subject to
  192 +these terms and conditions. You may not impose any further
  193 +restrictions on the recipients' exercise of the rights granted herein.
  194 +You are not responsible for enforcing compliance by third parties to
  195 +this License.
  196 +
  197 + 7. If, as a consequence of a court judgment or allegation of patent
  198 +infringement or for any other reason (not limited to patent issues),
  199 +conditions are imposed on you (whether by court order, agreement or
  200 +otherwise) that contradict the conditions of this License, they do not
  201 +excuse you from the conditions of this License. If you cannot
  202 +distribute so as to satisfy simultaneously your obligations under this
  203 +License and any other pertinent obligations, then as a consequence you
  204 +may not distribute the Program at all. For example, if a patent
  205 +license would not permit royalty-free redistribution of the Program by
  206 +all those who receive copies directly or indirectly through you, then
  207 +the only way you could satisfy both it and this License would be to
  208 +refrain entirely from distribution of the Program.
  209 +
  210 +If any portion of this section is held invalid or unenforceable under
  211 +any particular circumstance, the balance of the section is intended to
  212 +apply and the section as a whole is intended to apply in other
  213 +circumstances.
  214 +
  215 +It is not the purpose of this section to induce you to infringe any
  216 +patents or other property right claims or to contest validity of any
  217 +such claims; this section has the sole purpose of protecting the
  218 +integrity of the free software distribution system, which is
  219 +implemented by public license practices. Many people have made
  220 +generous contributions to the wide range of software distributed
  221 +through that system in reliance on consistent application of that
  222 +system; it is up to the author/donor to decide if he or she is willing
  223 +to distribute software through any other system and a licensee cannot
  224 +impose that choice.
  225 +
  226 +This section is intended to make thoroughly clear what is believed to
  227 +be a consequence of the rest of this License.
  228 +
  229 + 8. If the distribution and/or use of the Program is restricted in
  230 +certain countries either by patents or by copyrighted interfaces, the
  231 +original copyright holder who places the Program under this License
  232 +may add an explicit geographical distribution limitation excluding
  233 +those countries, so that distribution is permitted only in or among
  234 +countries not thus excluded. In such case, this License incorporates
  235 +the limitation as if written in the body of this License.
  236 +
  237 + 9. The Free Software Foundation may publish revised and/or new versions
  238 +of the General Public License from time to time. Such new versions will
  239 +be similar in spirit to the present version, but may differ in detail to
  240 +address new problems or concerns.
  241 +
  242 +Each version is given a distinguishing version number. If the Program
  243 +specifies a version number of this License which applies to it and "any
  244 +later version", you have the option of following the terms and conditions
  245 +either of that version or of any later version published by the Free
  246 +Software Foundation. If the Program does not specify a version number of
  247 +this License, you may choose any version ever published by the Free Software
  248 +Foundation.
  249 +
  250 + 10. If you wish to incorporate parts of the Program into other free
  251 +programs whose distribution conditions are different, write to the author
  252 +to ask for permission. For software which is copyrighted by the Free
  253 +Software Foundation, write to the Free Software Foundation; we sometimes
  254 +make exceptions for this. Our decision will be guided by the two goals
  255 +of preserving the free status of all derivatives of our free software and
  256 +of promoting the sharing and reuse of software generally.
  257 +
  258 + NO WARRANTY
  259 +
  260 + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
  261 +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
  262 +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
  263 +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
  264 +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  265 +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
  266 +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
  267 +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
  268 +REPAIR OR CORRECTION.
  269 +
  270 + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  271 +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
  272 +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
  273 +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
  274 +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
  275 +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
  276 +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
  277 +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
  278 +POSSIBILITY OF SUCH DAMAGES.
  279 +
  280 + END OF TERMS AND CONDITIONS
  281 +
  282 + How to Apply These Terms to Your New Programs
  283 +
  284 + If you develop a new program, and you want it to be of the greatest
  285 +possible use to the public, the best way to achieve this is to make it
  286 +free software which everyone can redistribute and change under these terms.
  287 +
  288 + To do so, attach the following notices to the program. It is safest
  289 +to attach them to the start of each source file to most effectively
  290 +convey the exclusion of warranty; and each file should have at least
  291 +the "copyright" line and a pointer to where the full notice is found.
  292 +
  293 + <one line to give the program's name and a brief idea of what it does.>
  294 + Copyright (C) <year> <name of author>
  295 +
  296 + This program is free software; you can redistribute it and/or modify
  297 + it under the terms of the GNU General Public License as published by
  298 + the Free Software Foundation; either version 2 of the License, or
  299 + (at your option) any later version.
  300 +
  301 + This program is distributed in the hope that it will be useful,
  302 + but WITHOUT ANY WARRANTY; without even the implied warranty of
  303 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  304 + GNU General Public License for more details.
  305 +
  306 + You should have received a copy of the GNU General Public License along
  307 + with this program; if not, write to the Free Software Foundation, Inc.,
  308 + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  309 +
  310 +Also add information on how to contact you by electronic and paper mail.
  311 +
  312 +If the program is interactive, make it output a short notice like this
  313 +when it starts in an interactive mode:
  314 +
  315 + Gnomovision version 69, Copyright (C) year name of author
  316 + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
  317 + This is free software, and you are welcome to redistribute it
  318 + under certain conditions; type `show c' for details.
  319 +
  320 +The hypothetical commands `show w' and `show c' should show the appropriate
  321 +parts of the General Public License. Of course, the commands you use may
  322 +be called something other than `show w' and `show c'; they could even be
  323 +mouse-clicks or menu items--whatever suits your program.
  324 +
  325 +You should also get your employer (if you work as a programmer) or your
  326 +school, if any, to sign a "copyright disclaimer" for the program, if
  327 +necessary. Here is a sample; alter the names:
  328 +
  329 + Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  330 + `Gnomovision' (which makes passes at compilers) written by James Hacker.
  331 +
  332 + <signature of Ty Coon>, 1 April 1989
  333 + Ty Coon, President of Vice
  334 +
  335 +This General Public License does not permit incorporating your program into
  336 +proprietary programs. If your program is a subroutine library, you may
  337 +consider it more useful to permit linking proprietary applications with the
  338 +library. If this is what you want to do, use the GNU Lesser General
  339 +Public License instead of this License.
... ...
README.md
... ... @@ -5,52 +5,95 @@ _“Lançando o maior software livre educacional do Brasil!”._
5 5 **Nós somos a Comunidade i-Educar e acreditamos que podemos transformar o nosso
6 6 país por meio da educação. Junte-se a nós!**
7 7  
8   -O i-Educar é um software livre e público totalmente on-line que torna mais fácil
9   -e prática a gestão dos processos das escolas, matrículas e dados de alunos,
10   -apoiando os profissionais da rede de ensino e gestores a resolverem os desafios
11   -da educação dentro e fora da sala de aula.
12   -
13 8 ## Conteúdo
14 9  
15   -1. [Cenário atual](#cenário-atual)
16   -2. [Sobre o i-Educar](#sobre-o-i-educar)
17   -3. [Instalação](#instalação)
18   -4. [Solicite demonstração do software](#solicite-demonstração-do-software)
19   -5. [Solicite prestação de serviço](#solicite-prestação-de-serviço)
20   -
21   -## Cenário atual
22   -
23   -No final de 2017, a Portabilis, organização que é integrante da comunidade desde
24   -2009 e tem o papel de mantenedora do projeto, propôs uma renovação de energias
25   -para levar o i-Educar ainda mais longe. (Leia aqui o manifesto:
26   -[i-Educar por todo o Brasil](https://softwarepublico.gov.br/social/i-educar/blog/em-2018-queremos-o-i-educar-por-todo-o-brasil)).
27   -
28   -No sentido desta iniciativa, está a proposta de acabar com a defasagem da versão
29   -aberta e aumentar a aproximação com os seus usuários. No dia 31 de janeiro, a
30   -Portabilis anunciou o apoio da Fundação Lemann para potencializar todos esses
31   -objetivos (Saiba mais aqui:
32   -[Preparação do lançamento do maior software livre educacional do Brasil!](https://medium.com/portabilis/prepara%C3%A7%C3%A3o-do-lan%C3%A7amento-do-maior-software-educacional-open-source-do-brasil-305e57143372)).
33   -
34   -### Etapas iniciais deste processo
35   -
36   -1. Liberar na versão Comunidade as principais melhorias feitas pela Portabilis
37   - nos últimos anos;
38   -2. A Portabilis irá mudar seu fluxo de trabalho passando a desenvolver
39   - diretamente no repositório da Comunidade;
40   -3. Planejar tecnicamente o projeto, com foco em refatoração e criação de
41   - padrões, para possibilitar o crescimento e expansão do uso do i-Educar;
42   -4. Iniciar as refatorações propostas na fase de planejamento permitindo
43   - contribuições de forma mais ativa;
44   -5. Evoluir constantemente o i-Educar com ênfase nos usuários e na facilidade do
45   - uso em redes públicas de ensino.
46   -
47   -## Sobre o i-Educar
48   -
49   -O i-Educar é um software livre e público para a gestão escolar que foi
50   -desenvolvido originalmente pela Prefeitura de Itajaí-SC e disponibilizado como
51   -Software Livre no Portal do Software Público Brasileiro
52   -(https://softwarepublico.gov.br), onde atualmente é mantido pela Comunidade
53   -i-Educar.
  10 +1. [Sobre o i-Educar](#sobre-o-i-educar)
  11 +2. [Comunicação](#comunicacao)
  12 +3. [Roadmap de tecnologia](#roadmap-de-tecnologia)
  13 +4. [Como contribuir](#como-contribuir)
  14 +5. [Instalação](#instalação)
  15 +
  16 +## Sobre i-Educar
  17 +
  18 +O i-Educar é um software livre de gestão escolar totalmente on-line que permite
  19 +secretários escolares, professores, coordenadores e gestores da área possam
  20 +utilizar uma ferramenta que produz informações e estatísticas em tempo real,
  21 +com um banco de dados centralizado e de fácil acesso, diminuindo a necessidade
  22 +de uso de papel, a duplicidade de documentos, o tempo de atendimento ao cidadão
  23 +e racionalizando o trabalho do servidor público.
  24 +
  25 +Ele foi originalmente desenvolvido pela prefeitura de Itajaí - SC e
  26 +disponibilizado no Portal do Software Público do Governo Federal em 2008, com o
  27 +objetivo de atender às necessidades das Secretarias de Educação e Escolas
  28 +Públicas de **todo o Brasil**.
  29 +
  30 +## Comunicação
  31 +
  32 +Acreditamos que o sucesso do projeto depende diretamente da interação clara e
  33 +objetiva entre os membros da Comunidade. Por isso, estamos definindo algumas
  34 +políticas para que estas interações nos ajudem a crescer juntos! Você pode
  35 +consultar algumas destas boas práticas em nosso [código de
  36 +conduta](https://github.com/portabilis/i-educar/blob/master/CODE_OF_CONDUCT.md).
  37 +
  38 +### Issues do Github
  39 +
  40 +Acreditamos no meio de comunicação assíncrona, onde não há necessidade de
  41 +respostas em tempo real. Isso facilita a produtividade individual dos
  42 +colaboradores do projeto.
  43 +
  44 +Em breve iremos liberar um fórum, mas até lá, vamos usar as ferramentas que
  45 +temos disponíveis.
  46 +
  47 +Usamos a ferramenta de issues do Github para:
  48 +- tirar dúvidas;
  49 +- reportar bugs;
  50 +- pedir recursos;
  51 +- discussões gerais.
  52 +
  53 +Para mais informações de como fazer [leia
  54 +aqui](https://github.com/portabilis/i-educar/blob/master/CONTRIBUTING.md).
  55 +
  56 +### Telegram
  57 +
  58 +Mantemos um grupo oficial no Telegram desde dezembro de 2016 e que pode ser usado para:
  59 + - comunicar novidades sobre o projeto;
  60 + - movimentar a comunidade;
  61 + - compartilhar conhecimento;
  62 + - falar tópicos que **não** demandem discussões profundas (para essas, usar o
  63 + Github).
  64 +
  65 +Vamos fazer parte? [Acesse aqui](https://t.me/ieducar)!
  66 +
  67 +
  68 +Qualquer outro grupo de discussão não é reconhecido oficialmente pela
  69 +comunidade i-Educar e não terá suporte da Portabilis - mantenedora do projeto.
  70 +
  71 +## Roadmap de tecnologia
  72 +
  73 +O i-Educar por ser um sistema antigo e por não ter seguido um padrão específico,
  74 +precisa passar por um processo de melhoria para diminuir a quantidade de bugs,
  75 +melhorar a manutenibilidade e enfim permitir a evolução através de features.
  76 +
  77 +### Passos iniciais
  78 +
  79 +- Adoção do [PSR1](https://www.php-fig.org/psr/psr-1/)
  80 +- Adoção do [PSR2](https://www.php-fig.org/psr/psr-2/)
  81 +- Adoção do [PSR4](https://www.php-fig.org/psr/psr-4/)
  82 +- Iniciar a cobertura de testes para possibilitar refatorações
  83 +
  84 +### Planejamento Técnico
  85 +
  86 +Em nossa wiki você encontra um planejamento mais técnico de como devemos
  87 +prosseguir com as melhorias e evoluções do nosso projeto.
  88 +[Clique aqui](https://github.com/portabilis/i-educar/wiki/Planejamento-T%C3%A9cnico)
  89 +para ler mais a respeito.
  90 +
  91 +## Como contribuir
  92 +
  93 +Contribuições são **super bem vindas**! Se você tem vontade de construir o
  94 +i-Educar junto conosco, veja o nosso [guia de contribuição](./CONTRIBUTING.md)
  95 +onde explicamos detalhadamente como trabalhamos e de que formas você pode nos
  96 +ajudar a alcançar nossos objetivos.
54 97  
55 98 ## Instalação
56 99  
... ... @@ -69,6 +112,7 @@ o Docker Compose para criar os containers da aplicação:
69 112 ```terminal
70 113 $ git clone https://github.com/portabilis/i-educar.git i-educar
71 114 $ cd i-educar
  115 +$ cp .env.example .env
72 116 $ docker-compose up -d
73 117 ```
74 118  
... ... @@ -87,6 +131,9 @@ clonado em sua máquina:
87 131 $ git clone https://github.com/portabilis/i-educar-reports-package.git ieducar/modules/Reports
88 132 ```
89 133  
  134 +P.S.: Esses relatórios são legados e podem não funcionar. Em breve vamos lançar
  135 +um pacote de mais de 40 relatórios funcionais.
  136 +
90 137 ### Instalando outras dependências
91 138  
92 139 O i-Educar usa o [Composer](https://getcomposer.org/) para gerenciar suas
... ... @@ -148,17 +195,13 @@ O usuário padrão é: `admin` / A senha padrão é: `123456789`
148 195  
149 196 Assim que realizar seu primeiro acesso **não se esqueça de alterar a senha padrão**.
150 197  
151   -## Solicite demonstração do software
152   -
153   -Para solicitar uma demonstração, nos envie uma mensagem ou nos ligue por meio da
154   -nossa [página de contato](http://goo.gl/O0JBs).
155   -
156   -## Solicite prestação de serviço
  198 +### Utilização do Xdebug
157 199  
158   -Para solicitar serviço de migração de dados, instalação, atualização, correções
159   -ou desenvolvimento de alterações, entre em contato por meio da nossa
160   -[página de contato](http://goo.gl/O0JBs).
  200 +A ferramenta [Xdebug](https://xdebug.org/) está incluída no projeto com o
  201 +intuito de facilitar o processo de debug durante o desenvolvimento. Para
  202 +configurá-la, modifique os valores das variáveis `XDEBUG_*` no arquivo `.env`
  203 +conforme orientações da sua IDE de desenvolvimento.
161 204  
162 205 ---
163 206  
164   -[Portabilis Tecnologia](http://www.portabilis.com.br/)
  207 +Powered by [Portabilis Tecnologia](http://www.portabilis.com.br/)
... ...
docker-compose.yml
1   -ieducar_1604:
2   - build: ./docker/ieducar_1604
3   - environment:
4   - - CORE_EXT_CONFIGURATION_ENV=development
5   - ports:
6   - - "8001:80"
7   - volumes:
8   - - .:/home/portabilis/ieducar
9   - links:
10   - - postgres_95
11   - container_name: ieducar_1604
  1 +version: '3'
12 2  
13   -postgres_95:
14   - volumes:
15   - - /var/lib/postgresql/data
16   - - ./docker/postgres_95/init.sql:/docker-entrypoint-initdb.d/00-init.sql
17   - image: postgres:9.5
18   - environment:
19   - - POSTGRES_PASSWORD=postgres
20   - ports:
21   - - "5434:5432"
22   - container_name: postgres_95
  3 +services:
  4 +
  5 + ieducar_1604:
  6 + build: ./docker/ieducar_1604
  7 + env_file:
  8 + - .env
  9 + ports:
  10 + - 8001:80
  11 + volumes:
  12 + - .:/home/portabilis/ieducar
  13 + links:
  14 + - postgres_95
  15 + container_name: ieducar_1604
  16 +
  17 + postgres_95:
  18 + volumes:
  19 + - /var/lib/postgresql/data
  20 + - ./docker/postgres_95/init.sql:/docker-entrypoint-initdb.d/00-init.sql
  21 + image: postgres:9.5
  22 + environment:
  23 + - POSTGRES_PASSWORD=postgres
  24 + ports:
  25 + - 5434:5432
  26 + container_name: postgres_95
... ...
docker/ieducar_1604/Dockerfile
... ... @@ -34,10 +34,11 @@ RUN pear install XML_RPC2
34 34  
35 35 COPY ieducar.conf /etc/apache2/sites-available/000-default.conf
36 36  
37   -RUN echo "xdebug.remote_enable=on" >> /etc/php/7.0/apache2/conf.d/20-xdebug.ini \
  37 +RUN echo "xdebug.remote_enable=\${XDEBUG_REMOTE_ENABLE}" >> /etc/php/7.0/apache2/conf.d/20-xdebug.ini \
38 38 && echo "xdebug.remote_autostart=off" >> /etc/php/7.0/apache2/conf.d/20-xdebug.ini \
39   - && echo "xdebug.remote_host=172.17.0.1" >> /etc/php/7.0/apache2/conf.d/20-xdebug.ini \
40   - && echo "xdebug.idekey=PHPSTORM" >> /etc/php/7.0/apache2/conf.d/20-xdebug.ini
  39 + && echo "xdebug.remote_host=\${XDEBUG_REMOTE_HOST}" >> /etc/php/7.0/apache2/conf.d/20-xdebug.ini \
  40 + && echo "xdebug.remote_port=\${XDEBUG_REMOTE_PORT}" >> /etc/php/7.0/apache2/conf.d/20-xdebug.ini \
  41 + && echo "xdebug.idekey=\${XDEBUG_IDEKEY}" >> /etc/php/7.0/apache2/conf.d/20-xdebug.ini
41 42  
42 43 RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
43 44 && php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
... ...
ieducar/CHANGELOG.txt
... ... @@ -1,112 +0,0 @@
1   -// $Id$
2   -
3   -i-Educar 1.1.0 2010-02-15
4   --------------------------
5   -
6   -- #37 by Eriksen, Walter Marinho: Grande limpeza no banco de dados. Apenas dados
7   - essenciais estão sendo distribuídos como países, estados e municípios
8   - brasileiros seguindo a documentação do INEP/Educacenso/CEF
9   -- Nova tabela no banco de dados, schema public, tabela changelog, para permitir
10   - versionamento do schema
11   -- Campo num_livro da tabela public.documento alterado para character varying,
12   - devido a livros poderem conter caracteres alfa-numéricos. Trigger de validação
13   - e arquivo PHP relacionado corrigidos
14   -- Arquivo .htaccess para servidores web Apache, com configuração para garantir
15   - uma melhor segurança além de configuração mínima do PHP necessária para o
16   - i-Educar
17   -- Arquivo robots.txt, indicando para os crawlers web a evitarem o processo de
18   - indexação dos diretórios e arquivos do i-Educar.
19   -- Novo modelo de configuração da aplicação. Configurações básicas estão
20   - localizadas no arquivo ieducar.ini
21   -- Título e logo dos relatórios configuráveis através do arquivo ieducar.ini
22   -- Fontes MS Core Fonts substituídas por FreeMonoBold e VeraSans
23   -- Corrigido bug de segurança (Exposição de informação), veja SA-CORE-2009-002
24   -- Corrigido uma variedade de pequenos bugs:
25   - * #34 by Eriksen: Corrigido bug no uso de fontes TTF na geração de PDF
26   - * #35 by Eriksen: Corrigido bug na geração de PDF para plataformas Windows e
27   - Mac
28   - * #36 by Eriksen: Corrigido bug ao carregar listagem de estados de um dado
29   - país via XMLHttpRequest
30   - * by Eriksen: Corrigido codificação de caracteres em intranet/meusdados.php e
31   - em intranet/adicionar_documentos_cad.php
32   - * by Eriksen: Corrigido referência a imagens no arquivo calendario.css que
33   - afetava layout do quadro de horários
34   - * by Eriksen: Corrigido bug em alocação de cursos e disciplinas para servidor
35   - que impossibilitava o cadastro ou edição dos mesmos
36   - * by Eriksen: Corrigido bug que gerava erro de SQL na edição de pessoa física
37   - * by Eriksen: Corrigido bug que não listava clientes do módulo Biblioteca até
38   - que um cliente estivesse suspenso
39   - * #17 by Eriksen: Corrigido bug que não listava tipos de clientes de uma
40   - Biblioteca na listagem de clientes do módulo Biblioteca
41   - * by Eriksen: Corrigido bug no cadastro de Reserva de Vaga para alunos
42   - externos
43   - * by Eriksen: Corrigido bug na Emissão de documento de reserva de vaga que
44   - não criava o PDF
45   - * by Eriksen: Corrigido bug no select de estado na criação de logradouro,
46   - CEP e bairro
47   - * #39 by Eriksen: Corrigido bug no cadastro de escolaridade
48   - * #46 by Eriksen: Corrigido problemas nas sequences que resultavam em
49   - erro de SQL (chave duplicada). Corrige problema originado no ticket #37
50   - * by Eriksen: Atualização do banco de dados com as permissões padrões do
51   - tipo de usuário Biblioteca (complementa ticket #41)
52   - * #15 by Eriksen: Corrigido bug que não listava os cursos de uma escola
53   - na Rematrícula automática
54   - * #42 by Eriksen: Corrigido bug de bloqueio de acesso indevido na emissão
55   - de relatório de Registros de transferências expedidas
56   - * #43 by Eriksen: Corrigido bug de bloqueio de acesso indevido na emissão
57   - Ata de resultado final
58   - * by Eriksen: Corrigido função de formatação para CEPs que comecem com 0
59   - * by Eriksen: Corrigido problemas com a restauração de triggers e
60   - constraints das tabelas public.uf e public.municipio em decorrência da
61   - tarefa de limpeza do ticket #37
62   -
63   -i-Educar 1.0.2, 2009-05-25
64   ---------------------------
65   -
66   -- Pequenos refactorings nas classes de unit e functional tests
67   -- Corrigido bug de segurança (Exposição de informação), veja SA-CORE-2009-001
68   -- #30 by Eriksen, José Rogério Santos: Adicionado parâmetro porta na
69   - configuração de conexão com o servidor
70   -- Corrigido uma variedade de pequenos bugs:
71   - * #33 by Eriksen: Corrigido bug que ocultava nome de aluno na listagem de
72   - Reserva de Vaga
73   - * #32 by Eriksen: Corrigido execução de regra de negócio ao afastar servidor
74   - * #31 by Eriksen, José Rogério Santos: Corrigido erro em função printf de
75   - debugging
76   - * #26 by Eriksen: Corrigido bug na substituição de horário de servidor
77   - * #25 by Eriksen: Corrigido bug em select de funções durante cadastro de novo
78   - servidor
79   -
80   -i-Educar 1.0.1, 2009-05-04
81   ---------------------------
82   -
83   -- #6 e #27 by Eriksen: Adicionado arquivos CHANGELOG, README e LICENSE-pt_BR na
84   - distribuição do i-Educar
85   -- Corrigido uma variedade de pequenos bugs:
86   - * #27 by Eriksen: Adicionado arquivo de erro de conexão com o banco de dados,
87   - incluindo sugestões para solução do problema
88   - * #23 by Eriksen: Corrigido bug que não permitia afastar servidor
89   - * #22 by Eriksen: Corrigido erro na listagem de faltas e atrasos de um
90   - servidor que listava as ocorrências de todos quando deveria mostrar
91   - apenas do servidor especificado. Melhorias no display de dados da escola,
92   - horas/minutos de um atraso e o tipo da entrada
93   - * #21 by Eriksen: Corrigido bug de exclusão de categoria de nível de servidor
94   - * #20 by Eriksen: Corrigido bug de atualização/exclusão de cadastro de
95   - motivo de afastamento de servidor
96   - * #18 by Eriksen: Corrigido bug na biblioteca de cadastramento do mesmo
97   - cliente quando na verdade era para atualizar seus dados
98   - * #17 by Eriksen: Corrigido bug da lista de clientes de biblioteca quando não
99   - havia no mínimo um cliente suspenso
100   - * #16 by Eriksen: Corrigido bug da lista de UFs vazia no histórico de aluno
101   - * #13 by Eriksen: Corrigido erro no login quando usuário tinha múltiplos
102   - endereços IPs
103   - * #12 Dispensa de disciplina não funcionava
104   - * #11 Hora da ocorrência não gravava quando a mesma era editada
105   - * #8 Opções do select de tipo de cliente estavam duplicadas
106   - * #7 Ação de suspender cliente estava com SQL inválido
107   - * #5 Página inicial usa caminho relativo e é script PHP; bug do logout
108   - corrigido
109   -
110   -i-Educar 1.0.0, 2009-03-20
111   ---------------------------
112   -- Release inicial
ieducar/LEIAME.txt
... ... @@ -1,261 +0,0 @@
1   -// $Id$
2   -
3   -CONTEÚDO
4   ---------
5   -
6   - * Requisitos
7   - * Instalação
8   - * Documentação
9   - * Suporte técnico
10   - * Licença
11   -
12   -
13   -REQUISITOS
14   -----------
15   -
16   -O i-Educar requer um servidor web, PHP 5.2, PostgreSQL 8.2 e a biblioteca PDFLib
17   -(versão Lite ou Commercial). O servidor web Apache 2 é recomendado mas qualquer
18   -outro com suporte a PHP pode ser utilizado.
19   -
20   -A biblioteca PDFLib Lite tem algumas restrições em sua utilização. Consulte a
21   -licença da biblioteca para ver se o seu uso não cairá na necessidade de adquirir
22   -uma licença comercial:
23   -http://www.pdflib.com/products/pdflib-family/pdflib-lite/pdflib-lite-licensing
24   -
25   -
26   -INSTALAÇÃO
27   -----------
28   -
29   -1. DOWNLOAD DO SOFTWARE
30   -
31   - Faça o download dos arquivos do sistema antes de prosseguir. A versão atual
32   - pode ser encontrada em:
33   - http://www.softwarepublico.gov.br/dotlrn/clubs/ieducar/file-storage/index?folder_id=10855442.
34   - Descompacte o pacote de sua preferência no diretório raiz do seu servidor web
35   - Apache.
36   -
37   - $ cd /var/www
38   - $ mkdir ieducar; cd ieducar
39   - $ tar -xzvf /caminho/pacotes/ieducar-X.X.X.tar.gz
40   -
41   -
42   -2. CRIE O BANCO DE DADOS
43   -
44   - Crie o banco de dados ao qual o i-Educar usará para armazenar todos os dados
45   - digitados através da interface web. Os passos descritos nessa seção irão
46   - criar:
47   -
48   - * Um usuário ieducar no servidor PostgreSQL com a senha de acesso ieducar;
49   - * Um banco de dados ieducar.
50   -
51   - Observação: você pode usar o nome de usuário, banco de dados e senha que
52   - desejar. Esses são apenas nomes padrões que a aplicação usa para conectar-se
53   - ao banco.
54   -
55   - Faça login no servidor de banco de dados PostgreSQL com o cliente psql:
56   -
57   - $ su
58   - # su - postgres
59   - # psql
60   -
61   - Alternativamente, com o sudo:
62   -
63   - $ sudo -u postgres psql
64   -
65   - Crie o usuário de banco de dados que será utilizado pelo i-Educar:
66   -
67   - postgres=# CREATE ROLE ieducar;
68   - postgres=# ALTER ROLE ieducar WITH SUPERUSER INHERIT NOCREATEROLE \
69   - CREATEDB LOGIN PASSWORD 'ieducar';
70   -
71   - Crie o banco de dados:
72   -
73   - postgres=# CREATE DATABASE ieducar WITH TEMPLATE = template0 \
74   - OWNER = ieducar ENCODING = 'LATIN1';
75   - postgres=# \q
76   -
77   - Execute o arquivo ieducar.sql que vem no i-Educar. O diretório em que esse
78   - arquivo reside é o misc/database.
79   -
80   - $ psql -d ieducar -f misc/database/ieducar.sql
81   -
82   - Atenção: em algumas plataformas, o restore do banco pode acabar em um erro
83   - FATAL. Se isso acontecer, experimente fazer o restore no mesmo diretório em
84   - que se encontra o arquivo ieducar.sql.
85   -
86   - Novamente no psql, execute o seguinte comando para configurar o search_path:
87   -
88   - $ psql ieducar
89   - postgres=# ALTER DATABASE ieducar SET search_path TO "$user", public, \
90   - portal, cadastro, acesso, alimentos, consistenciacao, historico, \
91   - pmiacoes, pmicontrolesis, pmidrh, pmieducar, pmiotopic, urbano;
92   - postgres=# \q;
93   -
94   -
95   -3. EDITE O ARQUIVO DE CONFIGURAÇÃO E CONCEDA PERMISSÕES DE ESCRITA
96   -
97   - O i-Educar armazena algumas configurações necessárias para a aplicação em um
98   - arquivo chamado ieducar.ini (em configuration/), que possui uma sintaxe bem
99   - simples de entender. Caso tenha criado o banco de dados, nome de usuário ou
100   - senha com um valor diferente de ieducar, basta editar esse arquivo para que
101   - corresponda as suas escolhas:
102   -
103   - [production]
104   - ; Configurações de banco de dados
105   - app.database.dbname = ieducar
106   - app.database.username = ieducar
107   - app.database.hostname = localhost
108   - app.database.password = ieducar
109   - app.database.port = 5432
110   -
111   - Exemplo: caso tenha nomeado seu banco de dados com ieducar_db, o usuário com
112   - ieducar_user e a senha com ieducar_pass, o ieducar.ini ficaria da seguinte
113   - forma:
114   -
115   - [production]
116   - ; Configurações de banco de dados
117   - app.database.dbname = ieducar_db
118   - app.database.username = ieducar_user
119   - app.database.hostname = localhost
120   - app.database.password = ieducar_pass
121   - app.database.port = 5432
122   -
123   - Depois, conceda permissões de escrita nos diretórios intranet/tmp e
124   - intranet/pdf. Uma forma prática é dar permissão de escrita para o usuário
125   - dono do diretório e para usuários de um grupo. Nesse caso, mudaremos o grupo
126   - desses diretórios para o grupo do usuário Apache.
127   -
128   - # chmod 775 intranet/tmp intranet/pdf
129   - # chgrp www-data intranet/tmp intranet/pdf
130   -
131   - Observação: www-data é o nome do grupo Apache padrão em sistemas Debian.
132   - Em outros sistemas, esse nome pode ser httpd, apache ou _www. Substitua de
133   - acordo com o usado em seu sistema operacional.
134   -
135   -
136   -4. CONFIGURE O APACHE OU CRIE UM VIRTUAL HOST
137   -
138   - A partir da versão 1.1.X, o i-Educar inclui, por padrão, um arquivo chamado
139   - .htaccess no diretório raiz da aplicação. Esse arquivo contém diretivas de
140   - configuração do servidor Apache que tornam o i-Educar mais seguro.
141   - Além disso, esse arquivo configura o PHP corretamente para as necessidades
142   - da aplicação.
143   -
144   - Para que esse arquivo seja executado a cada requisição, é necessário
145   - configurar o Apache para que este execute os arquivos .htaccess ou criar um
146   - Virtual Host. A primeira opção requer a edição do arquivo
147   - /etc/apache2/site-available/default. A única diretiva a ser alterada é
148   - AllowOverride (linha 11) para All:
149   -
150   - 9 <Directory /var/www/>
151   - 10 Options Indexes FollowSymLinks MultiViews
152   - 11 AllowOverride All
153   - 12 Order allow,deny
154   - 13 allow from all
155   - 14 </Directory>
156   -
157   - Reinicie o servidor Apache:
158   -
159   - $ /etc/init.d/apache2 restart
160   -
161   - A segunda opção requer a criação de um novo arquivo em
162   - /etc/apache2/sites-available/. Crie um arquivo chamado ieducar.local com o
163   - seguinte conteúdo:
164   -
165   - <VirtualHost *:80>
166   - ServerName ieducar.local
167   - DocumentRoot /var/www/ieducar
168   -
169   - <Directory /var/www/ieducar>
170   - AllowOverride all
171   - Order deny,allow
172   - Allow from all
173   - </Directory>
174   - </VirtualHost>
175   -
176   - Edite o arquivo /etc/hosts (no Windows esse arquivo fica em
177   - C:\WINDOWS\system32\drivers\etc\hosts) e adicione a seguinte linha:
178   -
179   - 127.0.0.1 ieducar.local
180   -
181   - Reinicie o servidor Apache:
182   -
183   - $ /etc/init.d/apache2 restart
184   -
185   - Pronto. Agora, acesse o endereço http://ieducar.local em seu navegador.
186   -
187   - Atenção: configurar o seu servidor Apache (seguindo uma das opções
188   - apresentadas) é importante para a segurança da aplicação. Assim, evita-se que
189   - arquivos importantes como o configuration/ieducar.ini e os relatórios gerados
190   - pela aplicação fiquem publicamente expostos para leitura através da Internet.
191   -
192   -
193   -5. ACESSE A APLICAÇÃO
194   -
195   - Abra o navegador de sua preferência e acesse o endereço
196   - http://localhost/ieducar ou http://ieducar.local (caso tenha configurado um
197   - Virtual Host). Faça o login na aplicação utilizando o usuário administrador.
198   - O login e senha para acesso são admin e admin, respectivamente.
199   -
200   -
201   -6. CONFIGURE O PHP
202   -
203   - Esse passo é opcional caso tenha configurado o Apache (via AllowOverride ou
204   - VirtualHost). Edite o arquivo php.ini da seguinte forma:
205   -
206   - * memory_limit: altere para, no mínimo, 32M (devido a geração de relatórios
207   - consumir bastante memória, pode ser necessário aumentar para uma quantidade
208   - maior em plataformas 64 bits);
209   - memory_limit = 32M
210   -
211   - * error_reporting: altere para E_ALL & ~E_NOTICE para evitar que avisos do
212   - nível E_NOTICE (comuns na versão atual), apareçam nas telas quebrando o
213   - layout do sistema. E_ERROR é o recomendado para ambientes de produção.
214   - error_reporting = E_ALL & ~E_NOTICE
215   -
216   - * display_errors: altere para Off em produção:
217   - display_errors = Off
218   -
219   - * short_open_tag: altere para On.
220   - short_open_tag = On
221   -
222   - Observação: a localização do arquivo php.ini é diferente entre os sistemas
223   - operacionais. No Debian/Ubuntu, o padrão é /etc/php5/apache2/php.ini. Para
224   - descobrir onde o arquivo fica em seu sistema operacional, acesse o endereço
225   - http://localhost/ieducar/info.php e procure por Loaded Configuration File.
226   -
227   - Após qualquer alteração no arquivo php.ini, reinicie seu servidor web:
228   -
229   - # /etc/init.d/apache2 restart
230   -
231   -
232   -7. FONTE
233   -
234   - * https://svn.softwarepublico.gov.br/trac/ieducar/wiki/Documentacao/1.1.X/Instalacao
235   -
236   -
237   -DOCUMENTAÇÃO
238   -------------
239   -
240   -A documentação oficial do i-Educar está disponível em wiki:
241   -http://svn.softwarepublico.gov.br/trac/ieducar/wiki
242   -
243   -Problemas comuns de instalação podem ser encontrados no FAQ (perguntas
244   -frequentes):
245   -http://svn.softwarepublico.gov.br/trac/ieducar/wiki/Documentacao/FAQ/1.X
246   -
247   -
248   -SUPORTE TÉCNICO
249   ----------------
250   -
251   -Suporte técnico pode ser encontrado nos fóruns da comunidade i-Educar no Portal
252   -do Software Público Brasileiro (requer cadastro):
253   -http://www.softwarepublico.gov.br/dotlrn/clubs/ieducar
254   -
255   -
256   -LICENÇA
257   --------
258   -
259   -O i-Educar é um Software Público Brasileiro (SPB), livre e licenciado pela
260   -Creative Commons Licença Pública Geral versão 2 traduzida (CC GNU/GPL 2). Uma
261   -cópia da licença está incluida nesta distribuição no arquivo LICENSE-pt_BR.txt.
262 0 \ No newline at end of file
ieducar/LICENSE-pt_BR.txt
... ... @@ -1,364 +0,0 @@
1   -// $Id$
2   -
3   -Licença Pública Geral do GNU (GPL) [General Public License]
4   -
5   -This is an unofficial translation of the GNU General Public License into
6   -Portuguese. It was not published by the Free Software Foundation, and does not
7   -legally state the distribution terms for software that uses the GNU GPL--only
8   -the original English text of the GNU GPL does that. However, we hope that this
9   -translation will help Portuguese speakers understand the GNU GPL better.
10   -
11   -Esta é uma tradução não-oficial da GNU General Public License para o Português.
12   -Ela não é publicada pela Free Software Foundation e não traz os termos de
13   -distribuição legal do software que usa a GNU GPL -- estes termos estão contidos
14   -apenas no texto da GNU GPL original em inglês. No entanto, esperamos que esta
15   -tradução ajudará no melhor entendimento da GNU GPL em Português.
16   -
17   -Versão 2, Junho de 1991 Direitos Autorais Reservados © 1989, 1991 Free Software
18   -Foundation, Inc. 59 Temple Place, Suite [conjunto] 330, Boston, MA
19   -[Massachusetts] 02111-1307 USA [Estados Unidos da América]
20   -
21   -É permitido a qualquer pessoa copiar e distribuir cópias sem alterações deste
22   -documento de licença, sendo vedada, entretanto, qualquer modificação.
23   -Introdução
24   -
25   -As licenças da maioria dos softwares são elaboradas para suprimir sua liberdade
26   -de compartilhá-los e modificá-los. A Licença Pública Geral do GNU, ao contrário,
27   -visa garantir sua liberdade de compartilhar e modificar softwares livres para
28   -assegurar que o software seja livre para todos os seus usuários. Esta Licença
29   -Pública Geral é aplicável à maioria dos softwares da Free Software Foundation
30   -[Fundação do Software Livre] e a qualquer outro programa cujos autores se
31   -comprometerem a usá-la. (Em vez dela, alguns outros softwares da Free Software
32   -Foundation são cobertos pela Licença Pública Geral de Biblioteca do GNU). Você
33   -também poderá aplicá-la aos seus programas.
34   -
35   -Quando falamos de software livre, estamos nos referindo à liberdade, não ao
36   -preço. Nossas Licenças Públicas Gerais visam garantir que você tenha a liberdade
37   -de distribuir cópias de software livre (e cobrar por isso se desejar), que
38   -receba código-fonte ou possa obtê-lo se desejar, que possa modificá-lo ou usar
39   -partes dele em novos programas livres; finalmente, que você tenha ciência de que
40   -pode fazer tudo isso.
41   -
42   -Para proteger seus direitos, necessitamos fazer restrições que proíbem que
43   -alguém negue esses direitos a você ou que solicite que você renuncie a eles.
44   -Essas restrições se traduzem em determinadas responsabilidades que você deverá
45   -assumir, se for distribuir cópias do software ou modificá-lo.
46   -
47   -Por exemplo, se você distribuir cópias de algum desses programas, tanto
48   -gratuitamente como mediante uma taxa, você terá de conceder aos receptores todos
49   -os direitos que você possui. Você terá de garantir que, também eles, recebam ou
50   -possam obter o código-fonte. E você terá a obrigação de exibir a eles esses
51   -termos, para que eles conheçam seus direitos.
52   -
53   -Protegemos seus direitos através de dois passos: (1) estabelecendo direitos
54   -autorais sobre o software e (2) concedendo a você esta licença, que dá permissão
55   -legal para copiar, distribuir e/ou modificar o software.
56   -
57   -Além disso, para a proteção de cada autor e a nossa, queremos ter certeza de que
58   -todos entendam que não há nenhuma garantia para este software livre. Se o
59   -software for modificado por alguém e passado adiante, queremos que seus
60   -receptores saibam que o que receberam não é o original, de forma que quaisquer
61   -problemas introduzidos por terceiros não afetem as reputações dos autores
62   -originais.
63   -
64   -Finalmente, qualquer programa livre é constantemente ameaçado por patentes de
65   -software. Queremos evitar o risco de que redistribuidores de um programa livre
66   -obtenham individualmente licenças sob uma patente, tornando o programa, com
67   -efeito, proprietário. Para impedir isso, deixamos claro que qualquer patente
68   -deve ser licenciada para o uso livre por parte de qualquer pessoa ou, então,
69   -simplesmente não deve ser licenciada.
70   -
71   -Os exatos termos e condições para cópia, distribuição e modificação seguem
72   -abaixo.
73   -
74   -
75   -TERMOS E CONDIÇÕES PARA CÓPIA, DISTRIBUIÇÃO E MODIFICAÇÃO
76   -
77   - 0. Esta Licença se aplica a qualquer programa ou outra obra que contenha um
78   -aviso inserido pelo respectivo titular dos direitos autorais, informando que a
79   -referida obra pode ser distribuída em conformidade com os termos desta Licença
80   -Pública Geral. O termo "Programa", utilizado abaixo, refere-se a qualquer
81   -programa ou obra, e o termo "obras baseadas no Programa" significa tanto o
82   -Programa, como qualquer obra derivada nos termos da legislação de direitos
83   -autorais: isto é, uma obra contendo o Programa ou uma parte dele, tanto de forma
84   -idêntica como com modificações, e/ou traduzida para outra linguagem. (Doravante,
85   -o termo "modificação" inclui também, sem reservas, a tradução). Cada licenciado,
86   -doravante, será denominado "você".
87   -
88   - Outras atividades que não a cópia, distribuição e modificação, não são
89   -cobertas por esta Licença; elas estão fora de seu escopo. O ato de executar o
90   -Programa não tem restrições e o resultado gerado a partir do Programa
91   -encontra-se coberto somente se seu conteúdo constituir uma obra baseada no
92   -Programa (independente de ter sido produzida pela execução do Programa). Na
93   -verdade, isto dependerá daquilo que o Programa faz.
94   -
95   - 1. Você poderá fazer cópias idênticas do código-fonte do Programa ao
96   -recebê-lo e distribui-las, em qualquer mídia ou meio, desde que publique, de
97   -forma ostensiva e adequada, em cada cópia, um aviso de direitos autorais (ou
98   -copyright) apropriado e uma notificação sobre a exoneração de garantia; mantenha
99   -intactas as informações, avisos ou notificações referentes a esta Licença e à
100   -ausência de qualquer garantia; e forneça a quaisquer outros receptores do
101   -Programa uma cópia desta Licença junto com o Programa.
102   -
103   - Você poderá cobrar um valor pelo ato físico de transferir uma cópia, e
104   -você pode oferecer, se quiser, a proteção de uma garantia em troca de um valor.
105   -
106   - 2. Você poderá modificar sua cópia ou cópias do Programa ou qualquer parte
107   -dele, formando, dessa forma, uma obra baseada no Programa, bem como copiar e
108   -distribuir essas modificações ou obra, de acordo com os termos da Cláusula 1
109   -acima, desde que você também atenda a todas as seguintes condições:
110   -
111   - 1. Você deve fazer com que os arquivos modificados contenham avisos, em
112   -destaque, informando que você modificou os arquivos, bem como a data de qualquer
113   -modificação.
114   -
115   - 2. Você deve fazer com que qualquer obra que você distribuir ou
116   -publicar, que no todo ou em parte contenha o Programa ou seja dele derivada, ou
117   -derivada de qualquer parte dele, seja licenciada como um todo sem qualquer custo
118   -para todos terceiros nos termos desta licença.
119   -
120   - 3. Se o programa modificado normalmente lê comandos interativamente
121   -quando executado, você deverá fazer com que ele, ao começar a ser executado para
122   -esse uso interativo em sua forma mais simples, imprima ou exiba um aviso
123   -incluindo o aviso de direitos autorais (ou copyright) apropriado, além de uma
124   -notificação de que não há garantia (ou, então, informando que você oferece
125   -garantia) e informando que os usuários poderão redistribuir o programa de acordo
126   -com essas condições, esclarecendo ao usuário como visualizar uma cópia desta
127   -Licença. (Exceção: se o Programa em si for interativo mas não imprimir
128   -normalmente avisos como esses, não é obrigatório que a sua obra baseada no
129   -Programa imprima um aviso).
130   -
131   - Essas exigências se aplicam à obra modificada como um todo. Se
132   -partes identificáveis dessa obra não forem derivadas do Programa e puderem ser
133   -consideradas razoavelmente como obras independentes e separadas por si próprias,
134   -nesse caso, esta Licença e seus termos não se aplicarão a essas partes quando
135   -você distribui-las como obras separadas. Todavia, quando você distribui-las como
136   -parte de um todo que constitui uma obra baseada no Programa, a distribuição
137   -deste todo terá de ser realizada em conformidade com esta Licença, cujas
138   -permissões para outros licenciados se estenderão à obra por completo e,
139   -conseqüentemente, a toda e qualquer parte, independentemente de quem a escreveu.
140   -
141   - Portanto, esta cláusula não tem a intenção de afirmar direitos ou
142   -contestar os seus direitos sobre uma obra escrita inteiramente por você; a
143   -intenção é, antes, de exercer o direito de controlar a distribuição de obras
144   -derivadas ou obras coletivas baseadas no Programa.
145   -
146   - Além do mais, a simples agregação de outra obra que não seja baseada
147   -no Programa a ele (ou a uma obra baseada no Programa) em um volume de mídia ou
148   -meio de armazenamento ou distribuição, não inclui esta outra obra no âmbito
149   -desta Licença.
150   -
151   - 3. Você poderá copiar e distribuir o Programa (ou uma obra baseada nele, de
152   -acordo com a Cláusula 2) em código-objeto ou formato executável de acordo com os
153   -termos das Cláusulas 1 e 2 acima, desde que você também tome uma das
154   -providências seguintes:
155   -
156   - 1. Incluir o código-fonte correspondente completo, passível de leitura
157   -pela máquina, o qual terá de ser distribuído de acordo com as Cláusulas 1 e 2
158   -acima, em um meio ou mídia habitualmente usado para intercâmbio de software; ou,
159   -
160   - 2. Incluir uma oferta por escrito, válida por pelo menos três anos,
161   -para fornecer a qualquer terceiro, por um custo que não seja superior ao seu
162   -custo de fisicamente realizar a distribuição da fonte, uma cópia completa
163   -passível de leitura pela máquina, do código-fonte correspondente, a ser
164   -distribuído de acordo com as Cláusulas 1 e 2 acima, em um meio ou mídia
165   -habitualmente usado para intercâmbio de software; ou,
166   -
167   - 3. Incluir as informações recebidas por você, quanto à oferta para
168   -distribuir o código-fonte correspondente. (Esta alternativa é permitida somente
169   -para distribuição não-comercial e apenas se você tiver recebido o programa em
170   -código-objeto ou formato executável com essa oferta, de acordo com a letra b,
171   -acima).
172   -
173   - O código-fonte de uma obra significa o formato preferencial da obra
174   -para que sejam feitas modificações na mesma. Para uma obra executável, o
175   -código-fonte completo significa o código-fonte inteiro de todos os módulos que
176   -ela contiver, mais quaisquer arquivos de definição de interface associados, além
177   -dos scripts usados para controlar a compilação e instalação do executável.
178   -Entretanto, como uma exceção especial, o código-fonte distribuído não precisa
179   -incluir nada que não seja normalmente distribuído (tanto no formato fonte como
180   -no binário) com os componentes principais (compilador, kernel e assim por
181   -diante) do sistema operacional no qual o executável é executado, a menos que
182   -este componente em si acompanhe o executável.
183   -
184   - Se a distribuição do executável ou código-objeto for feita mediante
185   -a permissão de acesso para copiar, a partir de um local designado, então, a
186   -permissão de acesso equivalente para copiar o código-fonte a partir do mesmo
187   -local será considerada como distribuição do código-fonte, mesmo que os terceiros
188   -não sejam levados a copiar a fonte junto com o código-objeto.
189   -
190   - 4. Você não poderá copiar, modificar, sublicenciar ou distribuir o Programa,
191   -exceto conforme expressamente estabelecido nesta Licença. Qualquer tentativa de,
192   -de outro modo, copiar, modificar, sublicenciar ou distribuir o Programa será
193   -inválida, e automaticamente rescindirá seus direitos sob esta Licença.
194   -Entretanto, terceiros que tiverem recebido cópias ou direitos de você de acordo
195   -esta Licença não terão suas licenças rescindidas, enquanto estes terceiros
196   -mantiverem o seu pleno cumprimento.
197   -
198   - 5. Você não é obrigado a aceitar esta Licença, uma vez que você não a
199   -assinou. Porém, nada mais concede a você permissão para modificar ou distribuir
200   -o Programa ou respectivas obras derivativas. Tais atos são proibidos por lei se
201   -você não aceitar esta Licença. Conseqüentemente, ao modificar ou distribuir o
202   -Programa (ou qualquer obra baseada no Programa), você estará manifestando sua
203   -aceitação desta Licença para fazê-lo, bem como de todos os seus termos e
204   -condições para copiar, distribuir ou modificar o Programa ou obras nele
205   -baseadas.
206   -
207   - 6. Cada vez que você redistribuir o Programa (ou obra baseada no Programa), o
208   -receptor receberá, automaticamente, uma licença do licenciante original, para
209   -copiar, distribuir ou modificar o Programa, sujeito a estes termos e condições.
210   -Você não poderá impor quaisquer restrições adicionais ao exercício, pelos
211   -receptores, dos direitos concedidos por este instrumento. Você não tem
212   -responsabilidade de promover o cumprimento por parte de terceiros desta licença.
213   -
214   - 7. Se, como resultado de uma sentença judicial ou alegação de violação de
215   -patente, ou por qualquer outro motivo (não restrito às questões de patentes),
216   -forem impostas a você condições (tanto através de mandado judicial, contrato ou
217   -qualquer outra forma) que contradigam as condições desta Licença, você não
218   -estará desobrigado quanto às condições desta Licença. Se você não puder atuar
219   -como distribuidor de modo a satisfazer simultaneamente suas obrigações sob esta
220   -licença e quaisquer outras obrigações pertinentes, então, como conseqüência,
221   -você não poderá distribuir o Programa de nenhuma forma. Por exemplo, se uma
222   -licença sob uma patente não permite a redistribuição por parte de todos aqueles
223   -que tiverem recebido cópias, direta ou indiretamente de você, sem o pagamento de
224   -royalties, então, a única forma de cumprir tanto com esta exigência quanto com
225   -esta licença será deixar de distribuir, por completo, o Programa.
226   -
227   - Se qualquer parte desta Cláusula for considerada inválida ou não
228   -executável, sob qualquer circunstância específica, o restante da cláusula deverá
229   -continuar a ser aplicado e a cláusula, como um todo, deverá ser aplicada em
230   -outras circunstâncias.
231   -
232   - Esta cláusula não tem a finalidade de induzir você a infringir quaisquer
233   -patentes ou direitos de propriedade, nem de contestar a validade de quaisquer
234   -reivindicações deste tipo; a única finalidade desta cláusula é proteger a
235   -integridade do sistema de distribuição do software livre, o qual é implementado
236   -mediante práticas de licenças públicas. Muitas pessoas têm feito generosas
237   -contribuições à ampla gama de software distribuído através desse sistema,
238   -confiando na aplicação consistente deste sistema; cabe ao autor/doador decidir
239   -se deseja distribuir software através de qualquer outro sistema e um licenciado
240   -não pode impor esta escolha.
241   -
242   - Esta cláusula visa deixar absolutamente claro o que se acredita ser uma
243   -conseqüência do restante desta Licença.
244   -
245   - 8. Se a distribuição e/ou uso do Programa for restrito em determinados
246   -países, tanto por patentes ou por interfaces protegidas por direito autoral, o
247   -titular original dos direitos autorais que colocar o Programa sob esta Licença
248   -poderá acrescentar uma limitação geográfica de distribuição explícita excluindo
249   -esses países, de modo que a distribuição seja permitida somente nos países ou
250   -entre os países que não foram excluídos dessa forma. Nesse caso, esta Licença
251   -passa a incorporar a limitação como se esta tivesse sido escrita no corpo desta
252   -Licença.
253   -
254   - 9. A Free Software Foundation poderá de tempos em tempos publicar novas
255   -versões e/ou versões revisadas da Licença Pública Geral. Essas novas versões
256   -serão semelhantes em espírito à presente versão, mas podem diferenciar-se,
257   -porém, em detalhe, para tratar de novos problemas ou preocupações.
258   -
259   - Cada versão recebe um número de versão distinto. Se o Programa especificar
260   -um número de versão desta Licença que se aplique a ela e a "qualquer versão
261   -posterior", você terá a opção de seguir os termos e condições tanto daquela
262   -versão como de qualquer versão posterior publicada pela Free Software
263   -Foundation. Se o Programa não especificar um número de versão desta Licença,
264   -você poderá escolher qualquer versão já publicada pela Free Software Foundation.
265   -
266   - 10. Se você desejar incorporar partes do Programa em outros programas livres
267   -cujas condições de distribuição sejam diferentes, escreva ao autor solicitando a
268   -respectiva permissão. Para software cujos direitos autorais sejam da Free
269   -Software Foundation, escreva para ela; algumas vezes, abrimos exceções para
270   -isso. Nossa decisão será guiada pelos dois objetivos de preservar a condição
271   -livre de todos os derivados de nosso software livre e de promover o
272   -compartilhamento e reutilização de software, de modo geral.
273   -
274   -EXCLUSÃO DE GARANTIA
275   -
276   - 11. COMO O PROGRAMA É LICENCIADO SEM CUSTO, NÃO HÁ NENHUMA GARANTIA PARA O
277   -PROGRAMA, NO LIMITE PERMITIDO PELA LEI APLICÁVEL. EXCETO QUANDO DE OUTRA FORMA
278   -ESTABELECIDO POR ESCRITO, OS TITULARES DOS DIREITOS AUTORAIS E/OU OUTRAS PARTES,
279   -FORNECEM O PROGRAMA "NO ESTADO EM QUE SE ENCONTRA", SEM NENHUMA GARANTIA DE
280   -QUALQUER TIPO, TANTO EXPRESSA COMO IMPLÍCITA, INCLUINDO, DENTRE OUTRAS, AS
281   -GARANTIAS IMPLÍCITAS DE COMERCIABILIDADE E ADEQUAÇÃO A UMA FINALIDADE
282   -ESPECÍFICA. O RISCO INTEGRAL QUANTO À QUALIDADE E DESEMPENHO DO PROGRAMA É
283   -ASSUMIDO POR VOCÊ. CASO O PROGRAMA CONTENHA DEFEITOS, VOCÊ ARCARÁ COM OS CUSTOS
284   -DE TODOS OS SERVIÇOS, REPAROS OU CORREÇÕES NECESSÁRIAS.
285   -
286   - 12. EM NENHUMA CIRCUNSTÂNCIA, A MENOS QUE EXIGIDO PELA LEI APLICÁVEL OU
287   -ACORDADO POR ESCRITO, QUALQUER TITULAR DE DIREITOS AUTORAIS OU QUALQUER OUTRA
288   -PARTE QUE POSSA MODIFICAR E/OU REDISTRIBUIR O PROGRAMA, CONFORME PERMITIDO
289   -ACIMA, SERÁ RESPONSÁVEL PARA COM VOCÊ POR DANOS, INCLUINDO ENTRE OUTROS,
290   -QUAISQUER DANOS GERAIS, ESPECIAIS, FORTUITOS OU EMERGENTES, ADVINDOS DO USO OU
291   -IMPOSSIBILIDADE DE USO DO PROGRAMA (INCLUINDO, ENTRE OUTROS, PERDAS DE DADOS OU
292   -DADOS SENDO GERADOS DE FORMA IMPRECISA, PERDAS SOFRIDAS POR VOCÊ OU TERCEIROS OU
293   -A IMPOSSIBILIDADE DO PROGRAMA DE OPERAR COM QUAISQUER OUTROS PROGRAMAS), MESMO
294   -QUE ESSE TITULAR, OU OUTRA PARTE, TENHA SIDO ALERTADA SOBRE A POSSIBILIDADE DE
295   -OCORRÊNCIA DESSES DANOS.
296   -
297   -
298   -FINAL DOS TERMOS E CONDIÇÕES
299   -
300   -Como Aplicar Estes Termos para Seus Novos Programas
301   -
302   -Se você desenvolver um programa novo e quiser que ele seja da maior utilidade
303   -possível para o público, o melhor caminho para obter isto é fazer dele um
304   -software livre, o qual qualquer pessoa pode redistribuir e modificar sob os
305   -presentes termos.
306   -
307   -Para fazer isto, anexe as notificações seguintes ao programa. É mais seguro
308   -anexá-las ao começo de cada arquivo-fonte, de modo a transmitir do modo mais
309   -eficiente a exclusão de garantia; e cada arquivo deve ter ao menos a linha de
310   -"direitos autorais reservados" e uma indicação de onde a notificação completa se
311   -encontra.
312   -
313   - <uma linha para informar o nome do programa e uma breve idéia do que ele
314   -faz.>
315   -
316   - Direitos Autorais Reservados (c) <ano> <nome do autor>
317   -
318   - Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
319   -sob os termos da Licença Pública Geral GNU conforme publicada pela Free Software
320   -Foundation; tanto a versão 2 da Licença, como (a seu critério) qualquer versão
321   -posterior.
322   -
323   - Este programa é distribuído na expectativa de que seja útil, porém, SEM
324   -NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU
325   -ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do GNU
326   -para mais detalhes.
327   -
328   - Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto com
329   -este programa; se não, escreva para a Free Software Foundation, Inc., no
330   -endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
331   -
332   - Inclua também informações sobre como contatar você por correio eletrônico e
333   -por meio postal.
334   -
335   -Se o programa for interativo, faça com que produza uma pequena notificação como
336   -esta, quando for iniciado em um modo interativo:
337   -
338   - Versão 69 do Gnomovision, Direitos Autorais Reservados (c) ano nome do
339   -autor. O Gnomovision NÃO POSSUI QUALQUER TIPO DE GARANTIA; para detalhes, digite
340   -'show w'. Este é um software livre e você é bem-vindo para redistribuí-lo sob
341   -certas condições; digite 'show c' para detalhes.
342   -
343   -Os comandos hipotéticos `show w' e `show c' devem mostrar as partes apropriadas
344   -da Licença Pública Geral. Naturalmente, os comandos que você utilizar poderão
345   -ter outras denominações que não `show w' e `show c'; eles poderão até ser
346   -cliques do mouse ou itens de um menu - o que for adequado ao seu programa.
347   -
348   -Você também pode solicitar a seu empregador (se você for um programador) ou sua
349   -instituição acadêmica, se for o caso, para assinar uma "renúncia de direitos
350   -autorais" sobre o programa, se necessário. Segue um exemplo; altere os nomes:
351   -
352   - A Yoyodyne Ltda., neste ato, renuncia a todos eventuais direitos autorais
353   -sobre o programa `Gnomovision' (que realiza passagens em compiladores), escrito
354   -por James Hacker.
355   -
356   - <Assinatura de Ty Coon>
357   -
358   - 1º de abril de 1989, Ty Coon, Presidente
359   -
360   -Esta Licença Pública Geral não permite a incorporação do seu programa a
361   -programas proprietários. Se seu programa é uma biblioteca de sub-rotinas, você
362   -poderá considerar ser mais útil permitir a ligação de aplicações proprietárias à
363   -sua biblioteca. Se isso é o que você deseja fazer, utilize a Licença Pública
364   -Geral de Biblioteca do GNU, ao invés desta Licença.
365 0 \ No newline at end of file
ieducar/README.txt
... ... @@ -1,261 +0,0 @@
1   -// $Id$
2   -
3   -CONTEÚDO
4   ---------
5   -
6   - * Requisitos
7   - * Instalação
8   - * Documentação
9   - * Suporte técnico
10   - * Licença
11   -
12   -
13   -REQUISITOS
14   -----------
15   -
16   -O i-Educar requer um servidor web, PHP 5.2, PostgreSQL 8.2 e a biblioteca PDFLib
17   -(versão Lite ou Commercial). O servidor web Apache 2 é recomendado mas qualquer
18   -outro com suporte a PHP pode ser utilizado.
19   -
20   -A biblioteca PDFLib Lite tem algumas restrições em sua utilização. Consulte a
21   -licença da biblioteca para ver se o seu uso não cairá na necessidade de adquirir
22   -uma licença comercial:
23   -http://www.pdflib.com/products/pdflib-family/pdflib-lite/pdflib-lite-licensing
24   -
25   -
26   -INSTALAÇÃO
27   -----------
28   -
29   -1. DOWNLOAD DO SOFTWARE
30   -
31   - Faça o download dos arquivos do sistema antes de prosseguir. A versão atual
32   - pode ser encontrada em:
33   - http://www.softwarepublico.gov.br/dotlrn/clubs/ieducar/file-storage/index?folder_id=10855442.
34   - Descompacte o pacote de sua preferência no diretório raiz do seu servidor web
35   - Apache.
36   -
37   - $ cd /var/www
38   - $ mkdir ieducar; cd ieducar
39   - $ tar -xzvf /caminho/pacotes/ieducar-X.X.X.tar.gz
40   -
41   -
42   -2. CRIE O BANCO DE DADOS
43   -
44   - Crie o banco de dados ao qual o i-Educar usará para armazenar todos os dados
45   - digitados através da interface web. Os passos descritos nessa seção irão
46   - criar:
47   -
48   - * Um usuário ieducar no servidor PostgreSQL com a senha de acesso ieducar;
49   - * Um banco de dados ieducar.
50   -
51   - Observação: você pode usar o nome de usuário, banco de dados e senha que
52   - desejar. Esses são apenas nomes padrões que a aplicação usa para conectar-se
53   - ao banco.
54   -
55   - Faça login no servidor de banco de dados PostgreSQL com o cliente psql:
56   -
57   - $ su
58   - # su - postgres
59   - # psql
60   -
61   - Alternativamente, com o sudo:
62   -
63   - $ sudo -u postgres psql
64   -
65   - Crie o usuário de banco de dados que será utilizado pelo i-Educar:
66   -
67   - postgres=# CREATE ROLE ieducar;
68   - postgres=# ALTER ROLE ieducar WITH SUPERUSER INHERIT NOCREATEROLE \
69   - CREATEDB LOGIN PASSWORD 'ieducar';
70   -
71   - Crie o banco de dados:
72   -
73   - postgres=# CREATE DATABASE ieducar WITH TEMPLATE = template0 \
74   - OWNER = ieducar ENCODING = 'LATIN1';
75   - postgres=# \q
76   -
77   - Execute o arquivo ieducar.sql que vem no i-Educar. O diretório em que esse
78   - arquivo reside é o misc/database.
79   -
80   - $ psql -d ieducar -f misc/database/ieducar.sql
81   -
82   - Atenção: em algumas plataformas, o restore do banco pode acabar em um erro
83   - FATAL. Se isso acontecer, experimente fazer o restore no mesmo diretório em
84   - que se encontra o arquivo ieducar.sql.
85   -
86   - Novamente no psql, execute o seguinte comando para configurar o search_path:
87   -
88   - $ psql ieducar
89   - postgres=# ALTER DATABASE ieducar SET search_path TO "$user", public, \
90   - portal, cadastro, acesso, alimentos, consistenciacao, historico, \
91   - pmiacoes, pmicontrolesis, pmidrh, pmieducar, pmiotopic, urbano;
92   - postgres=# \q;
93   -
94   -
95   -3. EDITE O ARQUIVO DE CONFIGURAÇÃO E CONCEDA PERMISSÕES DE ESCRITA
96   -
97   - O i-Educar armazena algumas configurações necessárias para a aplicação em um
98   - arquivo chamado ieducar.ini (em configuration/), que possui uma sintaxe bem
99   - simples de entender. Caso tenha criado o banco de dados, nome de usuário ou
100   - senha com um valor diferente de ieducar, basta editar esse arquivo para que
101   - corresponda as suas escolhas:
102   -
103   - [production]
104   - ; Configurações de banco de dados
105   - app.database.dbname = ieducar
106   - app.database.username = ieducar
107   - app.database.hostname = localhost
108   - app.database.password = ieducar
109   - app.database.port = 5432
110   -
111   - Exemplo: caso tenha nomeado seu banco de dados com ieducar_db, o usuário com
112   - ieducar_user e a senha com ieducar_pass, o ieducar.ini ficaria da seguinte
113   - forma:
114   -
115   - [production]
116   - ; Configurações de banco de dados
117   - app.database.dbname = ieducar_db
118   - app.database.username = ieducar_user
119   - app.database.hostname = localhost
120   - app.database.password = ieducar_pass
121   - app.database.port = 5432
122   -
123   - Depois, conceda permissões de escrita nos diretórios intranet/tmp e
124   - intranet/pdf. Uma forma prática é dar permissão de escrita para o usuário
125   - dono do diretório e para usuários de um grupo. Nesse caso, mudaremos o grupo
126   - desses diretórios para o grupo do usuário Apache.
127   -
128   - # chmod 775 intranet/tmp intranet/pdf
129   - # chgrp www-data intranet/tmp intranet/pdf
130   -
131   - Observação: www-data é o nome do grupo Apache padrão em sistemas Debian.
132   - Em outros sistemas, esse nome pode ser httpd, apache ou _www. Substitua de
133   - acordo com o usado em seu sistema operacional.
134   -
135   -
136   -4. CONFIGURE O APACHE OU CRIE UM VIRTUAL HOST
137   -
138   - A partir da versão 1.1.X, o i-Educar inclui, por padrão, um arquivo chamado
139   - .htaccess no diretório raiz da aplicação. Esse arquivo contém diretivas de
140   - configuração do servidor Apache que tornam o i-Educar mais seguro.
141   - Além disso, esse arquivo configura o PHP corretamente para as necessidades
142   - da aplicação.
143   -
144   - Para que esse arquivo seja executado a cada requisição, é necessário
145   - configurar o Apache para que este execute os arquivos .htaccess ou criar um
146   - Virtual Host. A primeira opção requer a edição do arquivo
147   - /etc/apache2/site-available/default. A única diretiva a ser alterada é
148   - AllowOverride (linha 11) para All:
149   -
150   - 9 <Directory /var/www/>
151   - 10 Options Indexes FollowSymLinks MultiViews
152   - 11 AllowOverride All
153   - 12 Order allow,deny
154   - 13 allow from all
155   - 14 </Directory>
156   -
157   - Reinicie o servidor Apache:
158   -
159   - $ /etc/init.d/apache2 restart
160   -
161   - A segunda opção requer a criação de um novo arquivo em
162   - /etc/apache2/sites-available/. Crie um arquivo chamado ieducar.local com o
163   - seguinte conteúdo:
164   -
165   - <VirtualHost *:80>
166   - ServerName ieducar.local
167   - DocumentRoot /var/www/ieducar
168   -
169   - <Directory /var/www/ieducar>
170   - AllowOverride all
171   - Order deny,allow
172   - Allow from all
173   - </Directory>
174   - </VirtualHost>
175   -
176   - Edite o arquivo /etc/hosts (no Windows esse arquivo fica em
177   - C:\WINDOWS\system32\drivers\etc\hosts) e adicione a seguinte linha:
178   -
179   - 127.0.0.1 ieducar.local
180   -
181   - Reinicie o servidor Apache:
182   -
183   - $ /etc/init.d/apache2 restart
184   -
185   - Pronto. Agora, acesse o endereço http://ieducar.local em seu navegador.
186   -
187   - Atenção: configurar o seu servidor Apache (seguindo uma das opções
188   - apresentadas) é importante para a segurança da aplicação. Assim, evita-se que
189   - arquivos importantes como o configuration/ieducar.ini e os relatórios gerados
190   - pela aplicação fiquem publicamente expostos para leitura através da Internet.
191   -
192   -
193   -5. ACESSE A APLICAÇÃO
194   -
195   - Abra o navegador de sua preferência e acesse o endereço
196   - http://localhost/ieducar ou http://ieducar.local (caso tenha configurado um
197   - Virtual Host). Faça o login na aplicação utilizando o usuário administrador.
198   - O login e senha para acesso são admin e admin, respectivamente.
199   -
200   -
201   -6. CONFIGURE O PHP
202   -
203   - Esse passo é opcional caso tenha configurado o Apache (via AllowOverride ou
204   - VirtualHost). Edite o arquivo php.ini da seguinte forma:
205   -
206   - * memory_limit: altere para, no mínimo, 32M (devido a geração de relatórios
207   - consumir bastante memória, pode ser necessário aumentar para uma quantidade
208   - maior em plataformas 64 bits);
209   - memory_limit = 32M
210   -
211   - * error_reporting: altere para E_ALL & ~E_NOTICE para evitar que avisos do
212   - nível E_NOTICE (comuns na versão atual), apareçam nas telas quebrando o
213   - layout do sistema. E_ERROR é o recomendado para ambientes de produção.
214   - error_reporting = E_ALL & ~E_NOTICE
215   -
216   - * display_errors: altere para Off em produção:
217   - display_errors = Off
218   -
219   - * short_open_tag: altere para On.
220   - short_open_tag = On
221   -
222   - Observação: a localização do arquivo php.ini é diferente entre os sistemas
223   - operacionais. No Debian/Ubuntu, o padrão é /etc/php5/apache2/php.ini. Para
224   - descobrir onde o arquivo fica em seu sistema operacional, acesse o endereço
225   - http://localhost/ieducar/info.php e procure por Loaded Configuration File.
226   -
227   - Após qualquer alteração no arquivo php.ini, reinicie seu servidor web:
228   -
229   - # /etc/init.d/apache2 restart
230   -
231   -
232   -7. FONTE
233   -
234   - * https://svn.softwarepublico.gov.br/trac/ieducar/wiki/Documentacao/1.1.X/Instalacao
235   -
236   -
237   -DOCUMENTAÇÃO
238   -------------
239   -
240   -A documentação oficial do i-Educar está disponível em wiki:
241   -http://svn.softwarepublico.gov.br/trac/ieducar/wiki
242   -
243   -Problemas comuns de instalação podem ser encontrados no FAQ (perguntas
244   -frequentes):
245   -http://svn.softwarepublico.gov.br/trac/ieducar/wiki/Documentacao/FAQ/1.X
246   -
247   -
248   -SUPORTE TÉCNICO
249   ----------------
250   -
251   -Suporte técnico pode ser encontrado nos fóruns da comunidade i-Educar no Portal
252   -do Software Público Brasileiro (requer cadastro):
253   -http://www.softwarepublico.gov.br/dotlrn/clubs/ieducar
254   -
255   -
256   -LICENÇA
257   --------
258   -
259   -O i-Educar é um Software Público Brasileiro (SPB), livre e licenciado pela
260   -Creative Commons Licença Pública Geral versão 2 traduzida (CC GNU/GPL 2). Uma
261   -cópia da licença está incluida nesta distribuição no arquivo LICENSE-pt_BR.txt.
262 0 \ No newline at end of file
ieducar/includes/bootstrap.php
... ... @@ -118,3 +118,13 @@ if ($coreExt[&#39;Config&#39;]-&gt;hasEnviromentSection($tenantEnv)) {
118 118 */
119 119 chdir($root . DS . 'intranet');
120 120 unset($root, $paths);
  121 +
  122 +// função pra ajudar no debug
  123 +function debug($var) {
  124 + $backtrace = debug_backtrace();
  125 + $template = '<div><strong>%s</strong> linha <strong>%d</strong></div>';
  126 + echo sprintf($template, $backtrace[0]['file'], $backtrace[0]['line']);
  127 + echo '<pre>';
  128 + print_r($var);
  129 + echo '</pre>';
  130 +}
... ...
ieducar/intranet/educar_serie_cad_pop.php
... ... @@ -107,10 +107,10 @@ class indice extends clsCadastro
107 107 $this->script_cancelar = "window.parent.fechaExpansivel(\"div_dinamico_\"+(parent.DOM_divs.length-1));";
108 108 $this->nome_url_cancelar = "Cancelar";
109 109  
110   -
  110 +
111 111 $this->campoOculto("ref_cod_instituicao" ,$this->ref_cod_instituicao);
112 112 $this->campoOculto("ref_cod_curso", $this->ref_cod_curso);
113   -
  113 +
114 114 return $retorno;
115 115 }
116 116  
... ... @@ -125,13 +125,13 @@ class indice extends clsCadastro
125 125  
126 126 if ($_GET['precisa_lista'])
127 127 {
128   -
  128 +
129 129 $obrigatorio = true;
130 130 $get_curso = true;
131   - include("include/pmieducar/educar_campo_lista.php");
  131 + include("include/pmieducar/educar_campo_lista.php");
132 132 }
133 133 // text
134   -
  134 +
135 135 $this->campoTexto( "nm_serie", "S&eacute;rie", $this->nm_serie, 30, 255, true );
136 136  
137 137 $opcoes = array( "" => "Selecione" );
... ... @@ -233,7 +233,7 @@ class indice extends clsCadastro
233 233 $cadastrou = $obj->cadastra();
234 234 if( $cadastrou )
235 235 {
236   - $elemento = ($_GET['ref_ref_cod_serie']) ? 'ref_ref_cod_serie' : 'ref_cod_serie';
  236 + $elemento = ($_GET['ref_ref_cod_serie']) ? 'ref_ref_cod_serie' : 'ref_cod_serie';
237 237 //-----------------------CADASTRA DISCIPLINA------------------------//
238 238 foreach ( $this->disciplinas AS $disciplina )
239 239 {
... ... @@ -371,22 +371,22 @@ $pagina-&gt;MakeAll();
371 371 ?>
372 372 <script>
373 373 <?php
374   -if (!$_GET['precisa_lista'])
  374 +if (!$_GET['precisa_lista'])
375 375 {
376 376 ?>
377 377 Event.observe(window, 'load', Init, false);
378   -
  378 +
379 379 function Init()
380 380 {
381   -
  381 +
382 382 // $this->campoOculto("ref_cod_instituicao" ,$this->ref_cod_instituicao);
383 383 // $this->campoOculto("ref_cod_curso", $this->ref_cod_curso);
384   -
  384 +
385 385 $('ref_cod_instituicao').value = parent.document.getElementById('ref_cod_instituicao').value;
386   - $('ref_cod_curso').value = parent.document.getElementById('ref_cod_curso').value;
387   -
  386 + $('ref_cod_curso').value = parent.document.getElementById('ref_cod_curso').value;
  387 +
388 388 var campoCurso = document.getElementById('ref_cod_curso').value;
389   -
  389 +
390 390 var campoEtapas = document.getElementById('etapa_curso');
391 391 campoEtapas.length = 1;
392 392 campoEtapas.disabled = true;
... ... @@ -403,10 +403,10 @@ if (!$_GET[&#39;precisa_lista&#39;])
403 403 var xml_disciplina = ajax( getDisciplina );
404 404 xml_disciplina.envia( "educar_disciplina_xml.php?cur="+campoCurso );
405 405 */
406   -
  406 +
407 407 var campoDisciplinas = document.getElementById('disciplinas');
408 408 campoDisciplinas.innerHTML = "Carregando disciplina";
409   -
  409 +
410 410 var xml_disciplina = new ajax( getDisciplina );
411 411 xml_disciplina.envia( "educar_disciplina_xml.php?cur="+campoCurso );
412 412 }
... ... @@ -420,7 +420,7 @@ else
420 420 // EtapasCurso();
421 421 // getDisciplinas();
422 422 var campoCurso = document.getElementById('ref_cod_curso').value;
423   -
  423 +
424 424 var campoEtapas = document.getElementById('etapa_curso');
425 425 campoEtapas.length = 1;
426 426 campoEtapas.disabled = true;
... ... @@ -437,14 +437,14 @@ else
437 437 var xml_disciplina = ajax( getDisciplina );
438 438 xml_disciplina.envia( "educar_disciplina_xml.php?cur="+campoCurso );
439 439 */
440   -
  440 +
441 441 var campoDisciplinas = document.getElementById('disciplinas');
442 442 campoDisciplinas.innerHTML = "Carregando disciplina";
443   -
  443 +
444 444 var xml_disciplina = new ajax( getDisciplina );
445 445 xml_disciplina.envia( "educar_disciplina_xml.php?cur="+campoCurso );
446 446 }
447   -<?}?>
  447 +<?php } ?>
448 448  
449 449 function EtapasCurso(xml_qtd_etapas)
450 450 {
... ...
ieducar/intranet/educar_tipo_ensino_cad_pop.php
... ... @@ -115,7 +115,7 @@ class indice extends clsCadastro
115 115 $obrigatorio = true;
116 116 include("include/pmieducar/educar_campo_lista.php");
117 117 }// text
118   - else
  118 + else
119 119 {
120 120 $this->campoOculto("ref_cod_instituicao", $this->ref_cod_instituicao);
121 121 }
... ... @@ -212,14 +212,14 @@ $pagina-&gt;MakeAll();
212 212 <?php
213 213 if (!$_GET['precisa_lista'])
214 214 {?>
215   -
  215 +
216 216 Event.observe(window, 'load', Init);
217   -
  217 +
218 218 function Init()
219 219 {
220 220 $('ref_cod_instituicao').value = parent.document.getElementById('ref_cod_instituicao').value;
221 221 }
222 222  
223   -<?}?>
  223 +<?php } ?>
224 224  
225 225 </script>
... ...
ieducar/intranet/include/clsBase.inc.php
... ... @@ -50,14 +50,6 @@ require_once &#39;modules/Error/Mailers/NotificationMailer.php&#39;;
50 50 require_once 'Portabilis/Assets/Version.php';
51 51 require_once 'include/pessoa/clsCadastroFisicaFoto.inc.php';
52 52  
53   -$configuracoes = new clsPmieducarConfiguracoesGerais();
54   -$configuracoes = $configuracoes->detalhe();
55   -//var_dump($configuracoes);die;
56   -if (!$configuracoes['active_on_ieducar']) {
57   - header('HTTP/1.1 503 Service Temporarily Unavailable');
58   - header("Location: suspenso.php");
59   -}
60   -
61 53 if ($GLOBALS['coreExt']['Config']->app->ambiente_inexistente){
62 54 header("Location: /404.html");
63 55 }
... ... @@ -94,6 +86,30 @@ class clsBase extends clsConfig
94 86 var $script_footer;
95 87 var $prog_alert;
96 88  
  89 + public $configuracoes;
  90 +
  91 + protected function setupConfigs()
  92 + {
  93 + $configuracoes = new clsPmieducarConfiguracoesGerais();
  94 + $this->configuracoes = $configuracoes->detalhe();
  95 + }
  96 +
  97 + protected function mostraSupenso()
  98 + {
  99 + if (empty($this->configuracoes)) {
  100 + $this->setupConfigs();
  101 + }
  102 +
  103 + $nivel = !empty($_SESSION['nivel']) ? (int) $_SESSION['nivel'] : null;
  104 +
  105 + if (!$this->configuracoes['active_on_ieducar'] && $nivel !== 1) {
  106 + header('HTTP/1.1 503 Service Temporarily Unavailable');
  107 + header("Location: suspenso.php");
  108 +
  109 + die();
  110 + }
  111 + }
  112 +
97 113 function OpenTpl($template)
98 114 {
99 115  
... ... @@ -749,13 +765,15 @@ class clsBase extends clsConfig
749 765 }
750 766  
751 767 $controlador = new clsControlador();
  768 +
752 769 if ($controlador->Logado() && $liberado || $this->convidado) {
  770 + $this->mostraSupenso();
  771 +
753 772 $this->Formular();
754 773 $this->VerificaPermicao();
755 774 $this->CadastraAcesso();
756 775 $saida_geral = $this->MakeHeadHtml();
757 776  
758   - // @todo else ruim, colocar abre e fecha colchetes ao redor de foreach.
759 777 if ($this->renderMenu) {
760 778 $saida_geral .= $this->MakeBody();
761 779 } else {
... ... @@ -778,23 +796,21 @@ class clsBase extends clsConfig
778 796 }
779 797 }
780 798 } elseif ((empty($_POST['login'])) || (empty($_POST['senha'])) && $liberado) {
  799 + $force = !empty($_GET['force']) ? true : false;
  800 +
  801 + if (!$force) {
  802 + $this->mostraSupenso();
  803 + }
  804 +
781 805 $saida_geral .= $this->MakeHeadHtml();
782   - $controlador->Logar(FALSE);
  806 + $controlador->Logar(false);
783 807 $saida_geral .= $this->MakeFootHtml();
784 808 } else {
785   - $controlador->Logar(TRUE);
786   - if ($controlador->Logado() && $liberado) {
787   - $this->Formular();
788   - $this->VerificaPermicao();
789   - $this->CadastraAcesso();
790   - $saida_geral = $this->MakeHeadHtml();
791   - $saida_geral .= $this->MakeBody();
792   - $saida_geral .= $this->MakeFootHtml();
793   - } else {
794   - $saida_geral = $this->MakeHeadHtml();
795   - $controlador->Logar(false);
796   - $saida_geral .= $this->MakeFootHtml();
797   - }
  809 + $controlador->Logar(true);
  810 + $referer = $_SERVER['HTTP_REFERER'];
  811 +
  812 + header("Location: " . $referer, true, 302);
  813 + die();
798 814 }
799 815  
800 816 echo $saida_geral;
... ...
ieducar/intranet/include/clsControlador.inc.php
... ... @@ -22,6 +22,7 @@
22 22 */
23 23  
24 24 require_once 'include/clsBanco.inc.php';
  25 +require_once 'include/pmieducar/clsPermissoes.inc.php';
25 26 require_once 'Portabilis/Messenger.php';
26 27 require_once 'Portabilis/Mailer.php';
27 28 require_once 'Portabilis/Utils/User.php';
... ... @@ -116,8 +117,9 @@ class clsControlador
116 117 if (! $this->logado)
117 118 $validateUserCredentials = false;
118 119  
119   - elseif ($_POST['login'] && $_POST['senha'])
  120 + elseif ($_POST['login'] && $_POST['senha']) {
120 121 $validateUserCredentials = true;
  122 + }
121 123  
122 124 $this->logar($validateUserCredentials);
123 125 }
... ... @@ -156,6 +158,10 @@ class clsControlador
156 158 }
157 159 else {
158 160 $this->unsetTentativasLogin();
  161 +
  162 + $permissoes = new clsPermissoes();
  163 + $user['nivel'] = $permissoes->nivel_acesso($user['id']);
  164 +
159 165 return $user;
160 166 }
161 167 }
... ... @@ -169,12 +175,13 @@ class clsControlador
169 175 $this->unsetTentativasLogin();
170 176  
171 177 @session_start();
172   - $_SESSION = array();
  178 + $_SESSION = array();
173 179 $_SESSION['itj_controle'] = 'logado';
174   - $_SESSION['id_pessoa'] = $user['id'];
  180 + $_SESSION['id_pessoa'] = $user['id'];
175 181 $_SESSION['pessoa_setor'] = $user['ref_cod_setor_new'];
176   - $_SESSION['menu_opt'] = unserialize($user['opcao_menu']);
177   - $_SESSION['tipo_menu'] = $user['tipo_menu'];
  182 + $_SESSION['menu_opt'] = unserialize($user['opcao_menu']);
  183 + $_SESSION['tipo_menu'] = $user['tipo_menu'];
  184 + $_SESSION['nivel'] = $user['nivel'];
178 185 @session_write_close();
179 186  
180 187 Portabilis_Utils_User::logAccessFor($user['id'], $this->getClientIP());
... ... @@ -184,19 +191,19 @@ class clsControlador
184 191 $this->messenger->append("Usuário logado com sucesso.", "success");
185 192  
186 193 // solicita email para recuperação de senha, caso usuário ainda não tenha informado.
187   - if (! filter_var($user['email'], FILTER_VALIDATE_EMAIL))
188   - header("Location: /module/Usuario/AlterarEmail");
189   -
190   - elseif($user['expired_password'])
191   - header("Location: /module/Usuario/AlterarSenha");
192   -
193   - elseif(! empty($redirectTo))
194   - header("Location: $redirectTo");
  194 + if (!filter_var($user['email'], FILTER_VALIDATE_EMAIL)) {
  195 + header("Location: /module/Usuario/AlterarEmail");
  196 + } elseif ($user['expired_password']) {
  197 + header("Location: /module/Usuario/AlterarSenha");
  198 + } elseif (!empty($redirectTo)) {
  199 + header("Location: $redirectTo");
  200 + }
195 201 }
196 202  
197 203  
198 204 public function canStartLoginSession($user) {
199 205 if (! $this->messenger->hasMsgWithType("error")) {
  206 + $this->checkForSuspended($user);
200 207 $this->checkForDisabledAccount($user);
201 208 $this->checkForBannedAccount($user);
202 209 $this->checkForExpiredAccount($user);
... ... @@ -230,20 +237,34 @@ class clsControlador
230 237 is_numeric($_SESSION['tentativas_login_falhas']) &&
231 238 $_SESSION['tentativas_login_falhas'] >= $this->_maximoTentativasFalhas;
232 239  
233   - if ($requiresHumanAccessValidation)
234   - $templateText = str_replace( "<!-- #&RECAPTCHA&# -->", Portabilis_Utils_ReCaptcha::getWidget(), $templateText);
  240 + if ($requiresHumanAccessValidation) {
  241 + $templateText = str_replace( "<!-- #&RECAPTCHA&# -->", Portabilis_Utils_ReCaptcha::getWidget(), $templateText);
  242 + }
235 243  
236   - $templateText = str_replace( "<!-- #&CORE_EXT_CONFIGURATION_ENV&# -->", CORE_EXT_CONFIGURATION_ENV, $templateText);
237   - $templateText = str_replace( "<!-- #&BRASAO&# -->", $this->getLoginLogo($configuracoes), $templateText);
238   - $templateText = str_replace( "<!-- #&NOME_ENTIDADE&# -->", $configuracoes["ieducar_entity_name"], $templateText);
239   - $templateText = str_replace( "<!-- #&RODAPE_LOGIN&# -->", $configuracoes["ieducar_login_footer"], $templateText);
240   - $templateText = str_replace( "<!-- #&RODAPE_EXTERNO&# -->", $configuracoes["ieducar_external_footer"], $templateText);
241   - $templateText = str_replace( "<!-- #&LINKS_SOCIAL&# -->", $this->getSocialMediaLinks($configuracoes), $templateText);
242   - $templateText = str_replace( "<!-- #&CRIARCONTA&# -->", $msgCriarConta, $templateText);
  244 + $templateText = str_replace("<!-- #&CORE_EXT_CONFIGURATION_ENV&# -->", CORE_EXT_CONFIGURATION_ENV, $templateText);
  245 + $templateText = str_replace("<!-- #&BRASAO&# -->", $this->getLoginLogo($configuracoes), $templateText);
  246 + $templateText = str_replace("<!-- #&NOME_ENTIDADE&# -->", $configuracoes["ieducar_entity_name"], $templateText);
  247 + $templateText = str_replace("<!-- #&RODAPE_LOGIN&# -->", $configuracoes["ieducar_login_footer"], $templateText);
  248 + $templateText = str_replace("<!-- #&RODAPE_EXTERNO&# -->", $configuracoes["ieducar_external_footer"], $templateText);
  249 + $templateText = str_replace("<!-- #&LINKS_SOCIAL&# -->", $this->getSocialMediaLinks($configuracoes), $templateText);
  250 + $templateText = str_replace("<!-- #&CRIARCONTA&# -->", $msgCriarConta, $templateText);
243 251 $templateText = str_replace("<!-- #&GOOGLE_TAG_MANAGER_ID&# -->", $GLOBALS['coreExt']['Config']->app->gtm->id, $templateText);
244 252 $templateText = str_replace("<!-- #&SLUG&# -->", $GLOBALS['coreExt']['Config']->app->database->dbname, $templateText);
245 253  
246   -
  254 + if (!$configuracoes['active_on_ieducar']) {
  255 + $msgSuspensao = '' .
  256 + '<div class="box" id="mensagens">' .
  257 + '<div class="message message-danger">' .
  258 + '<div class="icone">' .
  259 + '<img src="imagens/login/icon-danger.png">' .
  260 + '</div>' .
  261 + '<div class="titulo">Acesso suspenso</div>' .
  262 + '<div class="mensagem"><p>O sistema está temporariamente indisponível. Contate o responsável pelo sistema em seu município. Obrigado pela compreensão.</p></div>' .
  263 + '</div>' .
  264 + '</div><br><br>';
  265 +
  266 + $templateText = str_replace("<!-- #&SUSPENSO&# -->", $msgSuspensao, $templateText);
  267 + }
247 268  
248 269 fclose($templateFile);
249 270 die($templateText);
... ... @@ -326,6 +347,17 @@ class clsControlador
326 347 }
327 348 }
328 349  
  350 + protected function checkForSuspended($user) {
  351 + $configuracoes = new clsPmieducarConfiguracoesGerais();
  352 + $configuracoes = $configuracoes->detalhe();
  353 +
  354 + $nivel = (int) $user['nivel'];
  355 +
  356 + if (!$configuracoes['active_on_ieducar'] && $nivel !== 1) {
  357 + $this->messenger->append("Sua conta de usuário não pode acessar o sistema, " .
  358 + "por favor, entre em contato com o responsável pelo sistema do seu município.", "error", false, "error");
  359 + }
  360 + }
329 361  
330 362 protected function checkForBannedAccount($user) {
331 363 if ($user['proibido'] != '0') {
... ...
ieducar/intranet/templates/login.tpl
... ... @@ -84,6 +84,8 @@
84 84 </div>
85 85  
86 86 <div id="corpo">
  87 + <!-- #&SUSPENSO&# -->
  88 +
87 89 <div>
88 90 <!-- #&BRASAO&# -->
89 91 </div>
... ...
ieducar/lib/Portabilis/Controller/ReportCoreController.php
... ... @@ -36,8 +36,7 @@ require_once &#39;Core/Controller/Page/EditController.php&#39;;
36 36 require_once 'lib/Portabilis/View/Helper/Inputs.php';
37 37 require_once 'Avaliacao/Model/NotaComponenteDataMapper.php';
38 38 require_once 'lib/Portabilis/String/Utils.php';
39   -
40   -//require_once 'include/pmieducar/clsPermissoes.inc.php';
  39 +require_once 'include/pmieducar/clsPermissoes.inc.php';
41 40  
42 41 /**
43 42 * Portabilis_Controller_ReportCoreController class.
... ... @@ -141,10 +140,14 @@ class Portabilis_Controller_ReportCoreController extends Core_Controller_Page_Ed
141 140 echo $result;
142 141 }
143 142 catch (Exception $e) {
144   - if ($GLOBALS['coreExt']['Config']->report->show_error_details == true)
  143 +
  144 + $nivelUsuario = (new clsPermissoes)->nivel_acesso($this->getSession()->id_pessoa);
  145 +
  146 + if ((bool) $GLOBALS['coreExt']['Config']->report->show_error_details === true || (int) $nivelUsuario === 1) {
145 147 $details = 'Detalhes: ' . $e->getMessage();
146   - else
  148 + } else {
147 149 $details = "Visualização dos detalhes sobre o erro desativada.";
  150 + }
148 151  
149 152 $this->renderError($details);
150 153 }
... ...
ieducar/lib/Portabilis/Report/ReportFactoryRemote.php
... ... @@ -28,7 +28,6 @@
28 28 * @version $Id$
29 29 */
30 30  
31   -// requer a biblioteca XML_RPC2, ver /scripts/install_pear_packages.sh
32 31 require_once 'XML/RPC2/Client.php';
33 32  
34 33 require_once 'lib/Portabilis/Report/ReportFactory.php';
... ...
ieducar/misc/database/migrations/20180612183130_adiciona_dependencias_schema_relatorio.php 0 → 100644
... ... @@ -0,0 +1,89 @@
  1 +<?php
  2 +
  3 +use Phinx\Migration\AbstractMigration;
  4 +
  5 +class AdicionaDependenciasSchemaRelatorio extends AbstractMigration
  6 +{
  7 + /**
  8 + * Change Method.
  9 + *
  10 + * Write your reversible migrations using this method.
  11 + *
  12 + * More information on writing migrations is available here:
  13 + * http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class
  14 + *
  15 + * The following commands can be used in this method and Phinx will
  16 + * automatically reverse them when rolling back:
  17 + *
  18 + * createTable
  19 + * renameTable
  20 + * addColumn
  21 + * renameColumn
  22 + * addIndex
  23 + * addForeignKey
  24 + *
  25 + * Remember to call "create()" or "update()" and NOT "save()" when working
  26 + * with the Table class.
  27 + */
  28 + public function change()
  29 + {
  30 + $sql = <<<'SQL'
  31 +
  32 + CREATE OR REPLACE FUNCTION relatorio.get_nome_escola(integer) RETURNS character varying
  33 + LANGUAGE sql
  34 + AS $_$SELECT COALESCE(
  35 + (SELECT COALESCE (fcn_upper(ps.nome),fcn_upper(juridica.fantasia))
  36 + FROM cadastro.pessoa ps, cadastro.juridica
  37 + WHERE escola.ref_idpes = juridica.idpes
  38 + AND juridica.idpes = ps.idpes
  39 + AND ps.idpes = escola.ref_idpes),
  40 + (SELECT nm_escola
  41 + FROM pmieducar.escola_complemento
  42 + WHERE ref_cod_escola = escola.cod_escola))
  43 + FROM pmieducar.escola
  44 + WHERE escola.cod_escola = $1;$_$;
  45 +
  46 +
  47 + ALTER FUNCTION relatorio.get_nome_escola(integer) OWNER TO current_user;
  48 +
  49 +
  50 + CREATE OR REPLACE VIEW relatorio.view_componente_curricular AS
  51 + ( SELECT escola_serie_disciplina.ref_cod_disciplina AS id,
  52 + turma.cod_turma,
  53 + componente_curricular.nome,
  54 + componente_curricular.abreviatura,
  55 + componente_curricular.ordenamento,
  56 + componente_curricular.area_conhecimento_id,
  57 + escola_serie_disciplina.etapas_especificas,
  58 + escola_serie_disciplina.etapas_utilizadas,
  59 + escola_serie_disciplina.carga_horaria
  60 + FROM (((pmieducar.turma
  61 + JOIN pmieducar.escola_serie_disciplina ON (((escola_serie_disciplina.ref_ref_cod_serie = turma.ref_ref_cod_serie) AND (escola_serie_disciplina.ref_ref_cod_escola = turma.ref_ref_cod_escola) AND (escola_serie_disciplina.ativo = 1))))
  62 + JOIN modules.componente_curricular ON (((componente_curricular.id = escola_serie_disciplina.ref_cod_disciplina) AND (( SELECT count(cct.componente_curricular_id) AS count
  63 + FROM modules.componente_curricular_turma cct
  64 + WHERE (cct.turma_id = turma.cod_turma)) = 0))))
  65 + JOIN modules.area_conhecimento ON ((area_conhecimento.id = componente_curricular.area_conhecimento_id)))
  66 + ORDER BY area_conhecimento.ordenamento_ac, area_conhecimento.nome, componente_curricular.ordenamento, componente_curricular.nome)
  67 + UNION ALL
  68 + ( SELECT componente_curricular_turma.componente_curricular_id AS id,
  69 + componente_curricular_turma.turma_id AS cod_turma,
  70 + componente_curricular.nome,
  71 + componente_curricular.abreviatura,
  72 + componente_curricular.ordenamento,
  73 + componente_curricular.area_conhecimento_id,
  74 + componente_curricular_turma.etapas_especificas,
  75 + componente_curricular_turma.etapas_utilizadas,
  76 + componente_curricular_turma.carga_horaria
  77 + FROM ((modules.componente_curricular_turma
  78 + JOIN modules.componente_curricular ON ((componente_curricular.id = componente_curricular_turma.componente_curricular_id)))
  79 + JOIN modules.area_conhecimento ON ((area_conhecimento.id = componente_curricular.area_conhecimento_id)))
  80 + ORDER BY area_conhecimento.ordenamento_ac, area_conhecimento.nome, componente_curricular.ordenamento, componente_curricular.nome);
  81 +
  82 +
  83 + ALTER TABLE relatorio.view_componente_curricular OWNER TO current_user;
  84 +
  85 +SQL;
  86 +
  87 + $this->execute($sql);
  88 + }
  89 +}
... ...
ieducar/misc/database/migrations/20180614130817_remove_parecer_duplicado_geral_and_por_componente.php 0 → 100644
... ... @@ -0,0 +1,46 @@
  1 +<?php
  2 +
  3 +use Phinx\Migration\AbstractMigration;
  4 +
  5 +class RemoveParecerDuplicadoGeralAndPorComponente extends AbstractMigration
  6 +{
  7 +
  8 + public function up()
  9 + {
  10 + $this->execute('delete
  11 + from modules.parecer_geral
  12 + where parecer_aluno_id ||
  13 + etapa in (select parecer_aluno_id ||
  14 + etapa
  15 + from modules.parecer_geral pg
  16 + group by parecer_aluno_id,
  17 + etapa,
  18 + parecer
  19 + having count(parecer_aluno_id) > 1)
  20 + and id <> (select MAX(id)
  21 + from modules.parecer_geral pg
  22 + where pg.parecer_aluno_id = parecer_geral.parecer_aluno_id
  23 + and pg.etapa = parecer_geral.etapa
  24 + having count(parecer_aluno_id) > 1);');
  25 +
  26 + $this->execute('delete
  27 + from modules.parecer_componente_curricular
  28 + where parecer_aluno_id ||
  29 + componente_curricular_id::text ||
  30 + etapa in (select parecer_aluno_id ||
  31 + componente_curricular_id::text ||
  32 + etapa
  33 + from modules.parecer_componente_curricular
  34 + group by parecer_aluno_id,
  35 + etapa,
  36 + parecer,
  37 + componente_curricular_id
  38 + having count(parecer_aluno_id) > 1)
  39 + and id <> (select MAX(id)
  40 + from modules.parecer_componente_curricular pcc
  41 + where pcc.parecer_aluno_id = parecer_componente_curricular.parecer_aluno_id
  42 + and pcc.etapa = parecer_componente_curricular.etapa
  43 + and pcc.componente_curricular_id = parecer_componente_curricular.componente_curricular_id
  44 + having count(parecer_aluno_id) > 1);');
  45 + }
  46 +}
... ...
ieducar/misc/database/migrations/20180614132150_altera_chave_primaria_para_deixar_composta.php 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +<?php
  2 +
  3 +use Phinx\Migration\AbstractMigration;
  4 +
  5 +class AlteraChavePrimariaParaDeixarComposta extends AbstractMigration
  6 +{
  7 +
  8 + public function up()
  9 + {
  10 + $this->execute('ALTER TABLE modules.parecer_geral
  11 + DROP CONSTRAINT parecer_geral_pkey;
  12 + ALTER TABLE modules.parecer_geral
  13 + ADD PRIMARY KEY (parecer_aluno_id, etapa);');
  14 +
  15 + $this->execute('ALTER TABLE modules.parecer_componente_curricular
  16 + DROP CONSTRAINT parecer_componente_curricular_pkey;
  17 + ALTER TABLE modules.parecer_componente_curricular
  18 + ADD PRIMARY KEY (parecer_aluno_id, componente_curricular_id, etapa);');
  19 + }
  20 +}
... ...
ieducar/modules/Api/Views/AlunoController.php
... ... @@ -445,9 +445,8 @@ class AlunoController extends ApiCoreController
445 445 {
446 446 $dataMapper = $this->getDataMapperFor('educacenso', 'aluno');
447 447  
448   - if (empty($this->getRequest()->aluno_inep_id)) {
449   - $result = $this->deleteEntityOf($dataMapper, $alunoId);
450   - } else {
  448 + $result = $this->deleteEntityOf($dataMapper, $alunoId);
  449 + if (!empty($this->getRequest()->aluno_inep_id)) {
451 450 $data = array(
452 451 'aluno' => $alunoId,
453 452 'alunoInep' => $this->getRequest()->aluno_inep_id,
... ... @@ -461,7 +460,6 @@ class AlunoController extends ApiCoreController
461 460  
462 461 $result = $this->saveEntity($dataMapper, $entity);
463 462 }
464   -
465 463 return $result;
466 464 }
467 465  
... ...
ieducar/modules/Avaliacao/Model/ParecerDescritivoComponenteDataMapper.php
... ... @@ -25,4 +25,10 @@ class Avaliacao_Model_ParecerDescritivoComponenteDataMapper extends Avaliacao_Mo
25 25 'parecer' => 'parecer',
26 26 'etapa' => 'etapa'
27 27 );
  28 +
  29 + protected $_primaryKey = array(
  30 + 'parecerDescritivoAluno' => 'parecer_aluno_id',
  31 + 'componenteCurricular' => 'componente_curricular_id',
  32 + 'etapa' => 'etapa'
  33 + );
28 34 }
... ...
ieducar/modules/Avaliacao/Model/ParecerDescritivoGeralDataMapper.php
... ... @@ -49,7 +49,9 @@ class Avaliacao_Model_ParecerDescritivoGeralDataMapper
49 49 protected $_entityClass = 'Avaliacao_Model_ParecerDescritivoGeral';
50 50 protected $_tableName = 'parecer_geral';
51 51  
52   - protected $_attributeMap = array(
53   - 'componenteCurricular' => 'componente_curricular_id',
  52 +
  53 + protected $_primaryKey = array(
  54 + 'parecerDescritivoAluno' => 'parecer_aluno_id',
  55 + 'etapa' => 'etapa'
54 56 );
55 57 }
56 58 \ No newline at end of file
... ...
ieducar/modules/Cadastro/Assets/Javascripts/Turma.js
... ... @@ -161,6 +161,7 @@ function habilitaTurmaMaisEducacao() {
161 161 $j('#dependencia_administrativa').val() == 3;
162 162 var atendimentoClasseHospitalarAee = $j('#tipo_atendimento').val() == 1 ||
163 163 $j('#tipo_atendimento').val() == 5;
  164 + var atividadeComplementar = $j('#tipo_atendimento').val() == 4;
164 165 var modalidadeEja = $j('#modalidade_curso').val() == 3;
165 166 var etapaEducacenso = ($j('#etapa_educacenso').val() >= 4 &&
166 167 $j('#etapa_educacenso').val() <= 38) ||
... ... @@ -169,7 +170,7 @@ function habilitaTurmaMaisEducacao() {
169 170 didaticoPedagogicoPresencial &&
170 171 dependenciaAdministrativaEstadualMunicipal &&
171 172 !atendimentoClasseHospitalarAee &&
172   - !(modalidadeEja || !etapaEducacenso)
  173 + (!atividadeComplementar ? (!modalidadeEja && etapaEducacenso) : true)
173 174 ) {
174 175 $j("#turma_mais_educacao").attr('disabled', false);
175 176 $j("#turma_mais_educacao").makeUnrequired();
... ...
ieducar/scripts/db.sh
... ... @@ -1,11 +0,0 @@
1   -if [ -z "$pgvm_home" ]
2   -then
3   - export pgvm_home=$HOME/.pgvm
4   - export PATH=$pgvm_home/bin:$PATH
5   - export PATH=$pgvm_home/environments/current/bin:$PATH
6   -fi
7   -
8   -version=`pgvm list | grep -o 8.2.[0-9][0-9]`
9   -
10   -pgvm use $version
11   -pgvm cluster $1 main
ieducar/scripts/install_pear_packages.sh
... ... @@ -1,17 +0,0 @@
1   -# este arquivo deve ser usado para instalar as dependencias do i-educar,
2   -#
3   -# para instalar o pear no ubuntu: sudo apt-get install php-pear
4   -# ou para atualizar uma instalação já existente: sudo pear upgrade pear
5   -
6   -echo -e "\n\n** Instalando dependencias i-Educar"
7   -
8   -sudo pear install XML_RPC2
9   -
10   -# mailer
11   -sudo pear install Mail
12   -sudo pear install Net_SMTP
13   -
14   -# recaptcha
15   -sudo pear install Services_ReCaptcha
16   -
17   -sudo service apache2 restart
18 0 \ No newline at end of file
ieducar/scripts/update-ajax-chosen-plugin.sh
... ... @@ -1,11 +0,0 @@
1   -echo "Updating ajax-chosen plugin..."
2   -
3   -cd ~/projects/i*educar/trunk/modules/Portabilis/Assets/Plugins
4   -
5   -rm -r AjaxChosen
6   -mkdir AjaxChosen
7   -
8   -cd AjaxChosen
9   -wget https://raw.github.com/meltingice/ajax-chosen/master/lib/ajax-chosen.min.js
10   -
11   -echo "\nDone, now you must update the assets version!"
12 0 \ No newline at end of file