Migrations Instruções de migração entre versões do Framework
Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
Migration
Instruções para atualizar a versão do Framework.
Pacote Dominando o Adianti 7
Curso + Livro + Apps exemplo
Curso completo em Video Aulas (114 aulas).
Livro completo em PDF (463 páginas).
Códigos-fontes de Apps de Exemplo.
Migrando da 7.5.x para 7.6.0
  • Qual atualização devo fazer?
    • 1. Atualização do Framework: Esta operação irá atualizar as bibliotecas do núcleo do framework, essencial para ter acesso à novos componentes, bug fixes e melhor performance;
    • 2. Atualização de bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação, como geração de código de barras, documentos, relatórios, e envio de e-mail. Depende da atualização do Framework (1);
    • 3. Atualização do Template: Esta operação irá atualizar o Template e seus controles, como cadastros de usuários, grupos, sistemas de permissões, notificação e documentos. Além de ferramentas administrativas como acesso a dados, consultas de logs diversos. Depende da atualização de bibliotecas (2).

  • Obs: Somente aplique estas instruções, se seu projeto estiver na versão 7.5.x. Caso esteja em uma anterior, faça a migração gradualmente entre versões, não pule versões no processo de migração.

    Obs: Em hipótese alguma você deve atualizar o Framework de aplicações em produção e disponibilizar aos usuários finais, sem antes realizar uma intensa bateria de testes. A responsabilidade do funcionamento da aplicação final é de quem a desenvolve e disponibiliza.

  • 1. Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework:
    • Primeiro, faça um backup completo da aplicação. Você deve ter um ponto seguro de retorno caso algo não dê certo.
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele.
    • Atualização das bibliotecas principais do Framework:
      • Exclua a pasta /lib - não copie por cima para não manter arquivos antigos.
      • Copie a pasta /lib da nova versão.
      • Copie app/templates/<tema>/libraries.html a partir da nova versão - mudanças em nomes e caminhos de arquivos.
    • Atualização de bibliotecas composer:
      • Método simplificado:
        • Exclua a pasta /vendor.
        • Copie a pasta /vendor a partir da nova versão.
        • Copie /composer.* a partir da nova versão.
      • Método completo:
        • Atualize o composer.json a partir da nova versão.
        • Rode um composer update.
    • Atualização dos arquivos do diretório raíz.
      Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
      • Copie o arquivo init.php da nova versão.
      • Copie o arquivo engine.php da nova versão.
      • Copie o arquivo LICENSE da nova versão.
  • 2. Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Copie app/config/framework_hashes.php a partir da nova versão.
    • Copie app/lib/include/ a partir da nova versão (sobrescreva).
    • Copie app/lib/barcode a partir da nova versão (sobrescreva).
    • Copie app/lib/reports a partir da nova versão (sobrescreva).
    • Copie app/lib/util/AdiantiTemplateTranslator.class.php a partir da nova versão.
    • Copie app/lib/util/MailService.class.php a partir da nova versão (sobrescreva).
    • Copie app/lib/util/TMail.class.php a partir da nova versão (sobrescreva).
    • Copie app/lib/validator/TStrongPasswordValidator.class.php a partir da nova versão.
  • 3. Atualizando o Template: Esta operação irá atualizar o Template. Baixe (template) para realizar os comandos a seguir.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Copie app/control/admin/ a partir da nova versão.
    • Copie app/control/communication/ a partir da nova versão.
    • Copie app/control/log/ a partir da nova versão.
    • Copie app/model/admin/ a partir da nova versão.
    • Copie app/model/communication/ a partir da nova versão.
    • Copie app/model/log/ a partir da nova versão.
    • Copie app/resources/system* a partir da nova versão;
    • Copie app/templates/themeX/ a partir da nova versão.
    • Copie app/service/auth a partir da nova versão.
    • Copie app/service/log a partir da nova versão.
    • Copie app/service/system a partir da nova versão.
    • Edite o arquivo app/lib/util/ApplicationTranslator.class.php e atualize os métodos setLanguage() e translate() a partir da nova versão.
    • Compare o arquivo menu.xml com o da nova versão:
      Acrescente opções no menu para as classes: SystemRoleList, SystemSessionVarsView
    • Atualize a base permission, com os comandos SQL a partir de "--- changes from 7.6.0" do arquivo permission-update.sql.
    • Atualize a base communication, com os comandos SQL a partir de "--- changes from 7.6.0" do arquivo communication-update.sql.
    • Atualize a base log, com os comandos SQL a partir de "--- changes from 7.6.0" do arquivo log-update.sql.
    • Garanta que o campo password da tabela de usuários tenha pelo menos 255 caracteres na base de dados.
    • Acrescente as seguintes configurações no arquivo app/config/application.ini (observe que o bloco [general] já existe):
      [general]
      validate_strong_pass = "1"

      [highlight]
      comment = "#808080"
      default = "#FFFFFF"
      html = "#C0C0C0"
      keyword = "#62d3ea"
      string = "#FFC472"
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos.
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database


Migrando da 7.5.0 para 7.5.1

    Obs: Somente aplique estas instruções, se seu projeto estiver na versão 7.5.0. Caso esteja em uma anterior, faça a migração gradualmente entre versões, não pule versões no processo de migração.

    Obs: Em hipótese alguma você deve atualizar o Framework de aplicações em produção e disponibilizar aos usuários finais, sem antes realizar uma intensa bateria de testes. A responsabilidade do funcionamento da aplicação final é de quem a desenvolve e disponibiliza.

  • 1. Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework:
    • Primeiro, faça um backup completo da aplicação. Você deve ter um ponto seguro de retorno caso algo não dê certo.
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele.
    • Atualização das bibliotecas principais do Framework:
      • Exclua a pasta /lib - não copie por cima para não manter arquivos antigos.
      • Copie a pasta /lib da nova versão.
Migrando da 7.4.0 para 7.5.0
  • Qual atualização devo fazer?
    • 1. Atualização do Framework: Esta operação irá atualizar as bibliotecas do núcleo do framework, essencial para ter acesso à novos componentes, bug fixes e melhor performance;
    • 2. Atualização de bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação, como geração de código de barras, documentos, relatórios, e envio de e-mail. Depende da atualização do Framework (1);
    • 3. Atualização do Template: Esta operação irá atualizar o Template e seus controles, como cadastros de usuários, grupos, sistemas de permissões, notificação e documentos. Além de ferramentas administrativas como acesso a dados, consultas de logs diversos. Depende da atualização de bibliotecas (2).

  • Obs: Somente aplique estas instruções, se seu projeto estiver na versão 7.4.0. Caso esteja em uma anterior, faça a migração gradualmente entre versões, não pule versões no processo de migração.

    Obs: Em hipótese alguma você deve atualizar o Framework de aplicações em produção e disponibilizar aos usuários finais, sem antes realizar uma intensa bateria de testes. A responsabilidade do funcionamento da aplicação final é de quem a desenvolve e disponibiliza.

  • 1. Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework:
    • Primeiro, faça um backup completo da aplicação. Você deve ter um ponto seguro de retorno caso algo não dê certo.
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele.
    • Atualização das bibliotecas principais do Framework:
      • Exclua a pasta /lib - não copie por cima para não manter arquivos antigos.
      • Copie a pasta /lib da nova versão.
      • Copie app/templates/<tema>/libraries.html a partir da nova versão - mudanças em nomes e caminhos de arquivos.
    • Atualização de bibliotecas composer:
      • Método simplificado:
        • Copie a pasta /vendor da nova versão;
        • Copie /composer.* a partir da nova versão;
    • Atualização dos arquivos do diretório raíz.
      Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
      • Copie o arquivo init.php da nova versão.
  • 2. Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Copie app/config/framework_hashes.php a partir da nova versão.
    • Copie app/lib/include/application.js a partir da nova versão (sobrescreva).
    • Copie app/lib/include/admin* a partir da nova versão (sobrescreva).
    • Copie app/lib/barcode a partir da nova versão (sobrescreva).
    • Copie app/lib/include/wiki a partir da nova versão.
  • 3. Atualizando o Template: Esta operação irá atualizar o Template. Baixe (template) para realizar os comandos a seguir.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Copie app/control/admin/ a partir da nova versão.
    • Copie app/control/communication/ a partir da nova versão.
    • Copie app/model/admin/ a partir da nova versão.
    • Copie app/model/communication/ a partir da nova versão.
    • Copie app/resources/system* a partir da nova versão;
    • Copie app/resources/styles* a partir da nova versão;
    • Copie app/templates/themeX/ a partir da nova versão.
    • Copie app/service/auth a partir da nova versão.
    • Copie app/service/log a partir da nova versão.
    • Copie app/service/system a partir da nova versão.
    • Adicione em app/lib/util/ApplicationTranslator.class.php os novos termos a partir daqui;
    • Compare o arquivo menu.xml com o da nova versão:
      Acrescente opções no menu para as classes: SystemContactsList, SystemDriveList, SystemPostList, SystemPostFeedView, SystemWikiList, SystemWikiSearchList.
    • Atualize a base permission, executando os comandos SQL a partir de "--- new programs of 7.5.0" do arquivo permission-update.sql.
    • Atualize a base communication, executando os comandos SQL a partir de "--- new programs of 7.5.0" do arquivo communication-update.sql.
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos.
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database


Migrando da 7.3.0 para 7.4.0
  • Qual atualização devo fazer?
    • 1. Atualização do Framework: Esta operação irá atualizar as bibliotecas do núcleo do framework, essencial para ter acesso à novos componentes, bug fixes e melhor performance;
    • 2. Atualização de bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação, como geração de código de barras, documentos, relatórios, e envio de e-mail. Depende da atualização do Framework (1);
    • 3. Atualização do Template: Esta operação irá atualizar o Template e seus controles, como cadastros de usuários, grupos, sistemas de permissões, notificação e documentos. Além de ferramentas administrativas como acesso a dados, consultas de logs diversos. Depende da atualização de bibliotecas (2).

  • Obs: Somente aplique estas instruções, se seu projeto estiver na versão 7.3.0. Caso esteja em uma anterior, faça a migração gradualmente entre versões, não pule versões no processo de migração.

    Obs: Em hipótese alguma você deve atualizar o Framework de aplicações em produção e disponibilizar aos usuários finais, sem antes realizar uma intensa bateria de testes. A responsabilidade do funcionamento da aplicação final é de quem a desenvolve e disponibiliza.

  • 1. Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework:
    • Primeiro, faça um backup completo da aplicação. Você deve ter um ponto seguro de retorno caso algo não dê certo.
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele.
    • Atualização das bibliotecas principais do Framework:
      • Exclua a pasta /lib - não copie por cima para não manter arquivos antigos.
      • Copie a pasta /lib da nova versão.
      • Copie app/templates/<tema>/libraries.html a partir da nova versão - mudanças em nomes e caminhos de arquivos.
    • Atualização de bibliotecas composer:
      • Método simplificado:
        • Copie a pasta /vendor da nova versão;
        • Copie /composer.* a partir da nova versão;
    • Atualização dos arquivos do diretório raíz.
      Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
      • Copie o arquivo init.php da nova versão.
      • Copie o arquivo engine.php da nova versão.
      • Copie o arquivo index.php da nova versão.
      • Copie o arquivo download.php da nova versão.
      • Copie o arquivo composer* da nova versão.
      • Copie o arquivo rest.php.dist da nova versão.
      • Copie o arquivo rest-secure.php.dist da nova versão.
  • 2. Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Copie app/config/framework_hashes.php a partir da nova versão.
    • Copie app/lib/include/application.js a partir da nova versão (sobrescreva).
    • Copie app/lib/include/admin* a partir da nova versão (sobrescreva).
    • Copie app/lib/include/menu-editor a partir da nova versão.
    • Copie app/lib/html/ a partir da nova versão (sobrescreva).
    • Copie app/lib/menu/ a partir da nova versão (sobrescreva).
    • Copie app/lib/util/*Mail* a partir da nova versão (sobrescreva).
  • 3. Atualizando o Template: Esta operação irá atualizar o Template. Baixe (template) para realizar os comandos a seguir.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Copie app/control/admin/ a partir da nova versão.
    • Copie app/control/communication/ a partir da nova versão.
    • Copie app/control/log/ a partir da nova versão.
    • Copie app/control/NotificationList.class.php a partir da nova versão.
    • Copie app/control/MessageList.class.php a partir da nova versão.
    • Copie app/model/admin/ a partir da nova versão.
    • Copie app/model/log/ a partir da nova versão.
    • Copie app/resources/system* a partir da nova versão;
    • Copie app/templates/themeX/ a partir da nova versão.
    • Copie app/service/auth a partir da nova versão.
    • Copie app/service/log a partir da nova versão.
    • Copie app/service/system a partir da nova versão.
    • Adicione em app/lib/util/ApplicationTranslator.class.php os novos termos a partir daqui;
    • Compare o arquivo menu.xml com o da nova versão:
      Acrescente opções no menu para as classes: SystemFilesDiff, SystemInformationView.
    • Atualize a base permission. Execute os comandos SQL a partir da linha "--- new programs of 7.4.0" do arquivo permission-update.sql.
    • Atualize a base log. Execute os comandos SQL a partir da linha "--- new programs of 7.4.0" do arquivo log-update.sql.
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos.
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database





Patch 7.4.1 (20/02/2022)

Após o lançamento da 7.4.0, foi liberado o patch 7.4.1, contendo os seguintes fixes:
  • Template 7.4.1 (A maioria dos desenvolvedores cria sistemas baseados no Template, portanto é esta atualização que você deve fazer): Esta correção evita que mensagens apareçam duplicadas dentro de cortinas laterais. Para tal, você deve atualizar os arquivos:
    • app/lib/include/admin-all.min.js
    • app/lib/include/admin.js
    • app/config/framework_hashes.php
  • Framework 7.4.1 (Somente alguns desenvolvedores usam o Framework puro, ou quem está fazendo o curso): Esta correção corrige um bug que impedia cortinas laterais e janelas funcionarem com o Framework puro. Para tal, você deve atualizar os arquivos:
    • index.php
    • app/lib/include/admin-all.min.js
    • app/lib/include/admin.js
    • app/templates/theme3/layout.html
    • app/templates/theme4/layout.html
Migrando da 7.2.0 para 7.3.0
  • Qual atualização devo fazer?
    • 1. Atualização do Framework: Esta operação irá atualizar as bibliotecas do núcleo do framework, essencial para ter acesso à novos componentes, bug fixes e melhor performance;
    • 2. Atualização de bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação, como geração de código de barras, documentos, relatórios, e envio de e-mail. Depende da atualização do Framework (1);
    • 3. Atualização do Template: Esta operação irá atualizar o Template e seus controles, como cadastros de usuários, grupos, sistemas de permissões, notificação e documentos. Além de ferramentas administrativas como acesso a dados, consultas de logs diversos. Depende da atualização de bibliotecas (2).

  • Obs: Somente aplique estas instruções, se seu projeto estiver na versão 7.2.0. Caso esteja em uma anterior, faça a migração gradualmente entre versões, não pule versões no processo de migração.

    Obs: Em hipótese alguma você deve atualizar o Framework de aplicações em produção e disponibilizar aos usuários finais, sem antes realizar uma intensa bateria de testes. A responsabilidade do funcionamento da aplicação final é de quem a desenvolve e disponibiliza.

  • 1. Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework:
    • Primeiro, faça um backup completo da aplicação. Você deve ter um ponto seguro de retorno caso algo não dê certo.
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele.
    • Atualização das bibliotecas principais do Framework:
      • Exclua a pasta /lib - não copie por cima para não manter arquivos antigos.
      • Copie a pasta /lib da nova versão.
      • Copie app/templates/<tema>/libraries.html a partir da nova versão - mudanças em nomes e caminhos de arquivos.
    • Atualização de bibliotecas composer:
      • Método simplificado:
        • Copie a pasta /vendor da nova versão;
        • Copie /composer.* a partir da nova versão;
    • Atualização dos arquivos do diretório raíz.
      Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
      • Copie o arquivo init.php da nova versão.
      • Copie o arquivo download.php da nova versão.
      • Copie o arquivo composer* da nova versão.
      • Copie o arquivo rest.php.dist da nova versão.
      • Copie o arquivo rest-secure.php.dist da nova versão.
  • 2. Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Copie app/lib/include/application.js a partir da nova versão (sobrescreva).
    • Copie app/lib/include/admin*.* a partir da nova versão (sobrescreva).
    • Copie app/lib/html/ a partir da nova versão (sobrescreva).
    • Remova app/lib/pdf/ (porque a FPDF foi movida para o composer - vendor/pablodalloglio/fpdf).
  • 3. Atualizando o Template: Esta operação irá atualizar o Template. Baixe (template) para realizar os comandos a seguir.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Copie app/templates/themeX/ a partir da nova versão (sobrescreva).
    • Atualização do app/config/application.ini:
      • Dentro da seção [general], adicione a nova cláusula title (para designar o título da aplicação - barra de título):
      • title = "Nome do meu App"
  • Ajustes de compatibilidade: Alguns ajustes serão necessários com a nova versão:
    • O método TTimeline::setItemTemplate() foi renomeado para TTimeline::setTemplatePath() pois estava fora do padrão dos outros componentes. Caso você utilize este método, será necessário fazer as devidas substituições. Outro método setItemTemplate() foi adicionado, porém com outra finalidade.
    • Devido à mudanças advindas da atualização da biblioteca DomPDF, será necessário adicionar o seguinte código antes da instanciação da DomPdf sempre que ela for usada, passando a variável $options para seu método construtor.
      $options = new \Dompdf\Options();
      $options->setChroot(getcwd());
      // converts the HTML template into PDF
      $dompdf = new \Dompdf\Dompdf($options);
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos.
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database


Migrando da 7.1.0 para 7.2.0
  • Qual atualização devo fazer?
    • 1. Atualização do Framework: Esta operação irá atualizar as bibliotecas do núcleo do framework, essencial para ter acesso à novos componentes, bug fixes e melhor performance;
    • 2. Atualização de bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação, como geração de código de barras, documentos, relatórios, e envio de e-mail. Depende da atualização do Framework (1);
    • 3. Atualização do Template: Esta operação irá atualizar o Template e seus controles, como cadastros de usuários, grupos, sistemas de permissões, notificação e documentos. Além de ferramentas administrativas como acesso a dados, consultas de logs diversos. Depende da atualização de bibliotecas (2).

  • Obs: Somente aplique estas instruções, se seu projeto estiver na versão 7.1.0. Caso esteja em uma anterior, faça a migração gradualmente entre versões, não pule versões no processo de migração.
  • 1. Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework:
    • Primeiro, faça um backup completo;
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele;
    • Atualização das bibliotecas principais do Framework:
      • Exclua a pasta /lib - não copie por cima para não manter arquivos antigos;
      • Copie a pasta /lib da nova versão;
      • Copie app/templates/<tema>/libraries.html a partir da nova versão - mudanças em nomes e caminhos de arquivos;
    • Atualização dos arquivos do diretório raíz.
      Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
      • Copie o arquivo rest.php.dist da nova versão;
      • Copie o arquivo rest-secure.php.dist da nova versão;
  • 2. Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Copie app/lib/include/application.js a partir da nova versão (sobrescreva);
    • Copie app/service/log/* a partir da nova versão;
  • 3. Atualizando o Template: Esta operação irá atualizar o Template. Baixe (template) para realizar os comandos a seguir.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Copie app/templates/themeX/ a partir da nova versão (sobrescreva);
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database


Migrando da 7.0.0 para 7.1.0
  • Qual atualização devo fazer?
    • 1. Atualização do Framework: Esta operação irá atualizar as bibliotecas do núcleo do framework, essencial para ter acesso à novos componentes, bug fixes e melhor performance;
    • 2. Atualização de bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação, como geração de código de barras, documentos, relatórios, e envio de e-mail. Depende da atualização do Framework (1);
    • 3. Atualização do Template: Esta operação irá atualizar o Template e seus controles, como cadastros de usuários, grupos, sistemas de permissões, notificação e documentos. Além de ferramentas administrativas como acesso a dados, consultas de logs diversos. Depende da atualização de bibliotecas (2).

  • Obs: Somente aplique estas instruções, se seu projeto estiver na versão 7.0.0. Caso esteja em uma anterior, faça a migração gradualmente entre versões, não pule versões no processo de migração.
  • 1. Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework:
    • Primeiro, faça um backup completo;
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele;
    • Atualização das bibliotecas principais do Framework:
      • Exclua a pasta /lib - não copie por cima para não manter arquivos antigos;
      • Copie a pasta /lib da nova versão;
      • Copie app/templates/<tema>/libraries.html a partir da nova versão - mudanças em nomes e caminhos de arquivos;
    • Atualização de bibliotecas composer:
      • Método recomendado:
        • Atualize o composer.json com a nova versão;
        • Rode um composer update;
      • Método simplificado:
        • Copie a pasta /vendor da nova versão;
        • Copie /composer.* a partir da nova versão;
    • Atualização dos arquivos do diretório raíz.
      Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
      • Copie o arquivo cmd.php da nova versão;
      • Copie o arquivo init.php da nova versão;
      • Copie o arquivo download.php da nova versão;
      • Copie o arquivo engine.php da nova versão;
      • Copie o arquivo index.php da nova versão.
  • 2. Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Copie app/lib/include/ a partir da nova versão (sobrescreva);
  • 3. Atualizando o Template: Esta operação irá atualizar o Template. Baixe (template) para realizar os comandos a seguir.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Copie app/model/admin/ a partir da nova versão (sobrescreva);
    • Copie app/control/admin/ a partir da nova versão (sobrescreva);
    • Copie app/control/communication/ a partir da nova versão;
    • Copie app/control/NotificationList.class.php a partir da nova versão;
    • Copie app/resources/system* a partir da nova versão;
    • Copie app/resources/google* a partir da nova versão;
    • Copie app/resources/info* a partir da nova versão;
    • Copie app/resources/styles-print.html a partir da nova versão;
    • Copie app/service/system/* a partir da nova versão;
    • Copie app/templates/themeX/ a partir da nova versão (sobrescreva);
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database


Migrando da 5.7.0 para 7.0.0
  • Qual atualização devo fazer?
    • 1. Atualização do Framework: Esta operação irá atualizar as bibliotecas do núcleo do framework, essencial para ter acesso à novos componentes, bug fixes e melhor performance;
    • 2. Atualização de bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação, como geração de código de barras, documentos, relatórios, e envio de e-mail. Depende da atualização do Framework (1);
    • 3. Atualização do Template: Esta operação irá atualizar o Template e seus controles, como cadastros de usuários, grupos, sistemas de permissões, notificação e documentos. Além de ferramentas administrativas como acesso a dados, consultas de logs diversos. Depende da atualização de bibliotecas (2).
  • 1. Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework:
    • Primeiro, faça um backup completo;
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele;
    • Atualização das bibliotecas principais do Framework:
      • Exclua a pasta /lib - não copie por cima para não manter arquivos antigos;
      • Copie a pasta /lib da nova versão;
      • Copie app/templates/<tema>/libraries.html a partir da nova versão - mudanças em nomes e caminhos de arquivos;
    • Atualização de bibliotecas composer:
      • Método recomendado:
        • Atualize o composer.json com a nova versão;
        • Rode um composer update;
      • Método simplificado:
        • Copie a pasta /vendor da nova versão;
        • Copie /composer.* a partir da nova versão;
    • Atualização dos arquivos do diretório raíz.
      Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
      • Copie o arquivo cmd.php da nova versão;
      • Copie o arquivo init.php da nova versão;
      • Copie o arquivo download.php da nova versão;
      • Copie o arquivo engine.php da nova versão;
      • Copie o arquivo index.php da nova versão.

  • Obs: Como a versão 7 vem com o Bootstrap 4, é essencial atualizar também os arquivos do template (app/templates), conforme a etapa 3. Caso você não atualize o template, o layout da aplicação ficará "quebrado" e você precisará efetuar os ajustes necessários manualmente.

  • 2. Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Faça uma cópia de app/lib/util/ApplicationTranslator.class.php em outro caminho;
    • Copie app/lib/barcode/ a partir da nova versão (sobrescreva);
    • Copie app/lib/html/ a partir da nova versão (sobrescreva);
    • Copie app/lib/reports/ a partir da nova versão (sobrescreva);
    • Copie app/lib/util/ a partir da nova versão (sobrescreva);
    • Copie app/lib/menu/ a partir da nova versão (sobrescreva);
    • Copie app/lib/include/ a partir da nova versão (sobrescreva);
  • 3. Atualizando o Template: Esta operação irá atualizar o Template. Baixe (template) para realizar os comandos a seguir.
    Caso você tenha customizado algum destes, deverá manualmente compatibilizar as modificações utilizando alguma ferramenta de merge
    • Restaure os termos do método construtor de app/lib/util/ApplicationTranslator.class.php a partir da cópia feita no passo anterior, adicione os novos termos a partir daqui;
    • Copie app/model/admin/ a partir da nova versão (sobrescreva);
    • Copie app/model/communication/ a partir da nova versão (sobrescreva);
    • Copie app/model/log/ a partir da nova versão (sobrescreva);
    • Copie app/control/admin/ a partir da nova versão (sobrescreva);
    • Copie app/control/communication/ a partir da nova versão;
    • Copie app/control/log/ a partir da nova versão (sobrescreva);
    • Copie app/control/MessageList.class.php a partir da nova versão;
    • Copie app/control/NotificationList.class.php a partir da nova versão;
    • Copie app/resources/system* a partir da nova versão;
    • Copie app/resources/google* a partir da nova versão;
    • Copie app/resources/info* a partir da nova versão;
    • Copie app/resources/styles-print.html a partir da nova versão;
    • Copie app/service/auth/* a partir da nova versão;
    • Copie app/service/log/* a partir da nova versão;
    • Copie app/service/system/* a partir da nova versão;
    • Copie app/templates/themeX/ a partir da nova versão (sobrescreva);
    • Compare o arquivo menu.xml com o da nova versão:
      Acrescente opções no menu para as classes: SystemMenuEditor, SystemLogDashboard, SystemRequestLogList, SystemAdministrationDashboard, SystemSessionDumpView.
    • Atualize a base de dados permission. Execute os comandos SQL a partir da linha "--- new programs of 7.0.0" do arquivo permission-update.sql.
    • Atualize a base de dados log. Execute os comandos SQL a partir da linha "--- new programs of 7.0.0" do arquivo log-update.sql.
    • Atualização do app/config/application.ini:
      • Dentro da seção [general], adicione a nova cláusula debug ("1" para desenvolvimento, "0" para produção):
      • debug = "1"
  • Ajustes de compatibilidade: Alguns ajustes serão necessários com a nova versão:
    • Como a biblioteca Font Awesome foi migrada para a versão 5.x, muitos ícones mudaram de nome ou deixaram de existir. Para você não precisar fazer as mudanças na mão, criamos um script automático que faz a substituição dos ícones do projeto. Baixe os seguintes arquivos e salve-os temporariamente no diretório raiz de seu projeto:
      font-awesome.csv: https://pastebin.com/JAQ4ua8s
      font-awesome.php: https://pastebin.com/wUrkVf3h
      Em seguida rode o font-awesome.php pela linha de comando, ele fará as substituições nos arquivos necessários.
      Agora substitua todas ocorrências de "fa:" para "fas:" no arquivo menu.xml e menu-dist.xml.
    • Como foram implementados novos controles para evitar XSS, os outputs de componentes agora são filtrados. Assim, se você exibia HTML puro em uma coluna de datagrid, por exemplo, agora no lugar desse HTML serão exibidas as tags HTML correspondentes. Para exibir o conteúdo do HTML não filtrado, você terá de adicionar a chamada ao método: $this->datagrid->disableHtmlConversion().
    • Como foram implementados novos controles para evitar XSS, os outputs de componentes agora são filtrados. Assim, se você exibia HTML puro em uma variável enviada para um THtmlRenderer, por exemplo, agora no lugar desse HTML serão exibidas as tags HTML correspondentes. Para exibir o conteúdo do HTML não filtrado, você terá de adicionar a chamada ao método: $html->disableHtmlConversion() ou colocar a variável no template dessa forma: {$data|raw} ou {{data|raw}}.
    • O nome da classe que registra os logs de SQL mudou de SystemSqlLog para SystemSqlLogService. Caso você utiliza log de SQL, deve alterar no conector (app/config) a cláusula slog para o novo nome.
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database


Migrando da 5.6.0 para 5.7.0
  • As instruções de migração continuam as mesmas. Você pode seguir o processo da 5.5 para 5.6 a seguir. Uma vez que esta é uma release de segurança, você pode atualizar apenas o Framework, já que o Template não teve alterações.
Migrando da 5.5.0 para 5.6.0
  • Qual atualização devo fazer?
    • 1. Atualização do Framework: Esta operação irá atualizar as bibliotecas do núcleo do framework, essencial para ter acesso à novos componentes, bug fixes e melhor performance;
    • 2. Atualização de bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação, como geração de código de barras, documentos, relatórios, e envio de e-mail. Depende da atualização do Framework (1);
    • 3. Atualização do Template: Esta operação irá atualizar o Template e seus controles, como cadastros de usuários, grupos, sistemas de permissões, notificação e documentos. Além de ferramentas administrativas como acesso a dados, consultas de logs diversos. Depende da atualização de bibliotecas (2).

  • 1. Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework:
    • Primeiro, faça um backup completo;
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele;
    • Atualização das bibliotecas principais do Framework:
      • Exclua a pasta /lib - não copie por cima para não manter arquivos antigos;
      • Copie a pasta /lib da nova versão;
      • Copie app/templates/<tema>/libraries.html a partir da nova versão - foi adicionado bootstrap-datetimepicker.pt.js;
    • Atualização de bibliotecas composer:
      • Método recomendado:
        • Atualize o composer.json com a nova versão;
        • Rode um composer update;
      • Método simplificado:
        • Copie a pasta /vendor da nova versão;
        • Copie /composer.* a partir da nova versão;
    • Atualização dos arquivos do diretório raíz:
      • Copie o arquivo init.php da nova versão;
      • Copie o arquivo download.php da nova versão;
      • Copie o arquivo engine.php da nova versão. Cuide se for necessário preservar customizações;
      • Copie o arquivo index.php da nova versão. Cuide se for necessário preservar customizações.
  • 2. Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação:
    • Copie app/lib/barcode/ a partir da nova versão;
    • Copie app/lib/html/ a partir da nova versão;
    • Copie app/lib/reports/ a partir da nova versão (sobrescreva);
    • Copie app/lib/util/ a partir da nova versão (sobrescreva);
    • Copie app/lib/include/ a partir da nova versão (sobrescreva);
    • Copie app/lib/include/application.js.
  • 3. Atualizando o Template: Esta operação irá atualizar o Template. Baixe (template) para realizar os comandos a seguir:
    • Adicione em app/lib/util/ApplicationTranslator.class.php os novos termos a partir daqui;
    • Copie app/model/admin/ a partir da nova versão (sobrescreva);
    • Copie app/model/communication/ a partir da nova versão (sobrescreva);
    • Copie app/model/log/ a partir da nova versão (sobrescreva);
    • Copie app/control/admin/ a partir da nova versão (sobrescreva);
    • Copie app/control/communication/ a partir da nova versão;
    • Copie app/control/log/ a partir da nova versão (sobrescreva);
    • Copie app/control/MessageList.class.php a partir da nova versão;
    • Copie app/control/NotificationList.class.php a partir da nova versão;
    • Copie app/resources/system* a partir da nova versão;
    • Copie app/service/system/* a partir da nova versão;
    • Copie app/service/auth/* a partir da nova versão;
    • Copie app/templates/themeX/ a partir da nova versão (sobrescreva);
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database


Migrando da 5.0.0 para 5.5.0
  • Qual atualização devo fazer?
    • 1. Atualização do Framework: Esta operação irá atualizar as bibliotecas do núcleo do framework, essencial para ter acesso à novos componentes, bug fixes e melhor performance;
    • 2. Atualização de bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação, como geração de código de barras, documentos, relatórios, e envio de e-mail. Depende da atualização do Framework (1);
    • 3. Atualização do Template: Esta operação irá atualizar o Template e seus controles, como cadastros de usuários, grupos, sistemas de permissões, notificação e documentos. Além de ferramentas administrativas como acesso a dados, consultas de logs diversos. Depende da atualização de bibliotecas (2).

  • 1. Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework:
    • Primeiro, faça um backup completo;
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele;
    • Atualização das bibliotecas principais do Framework:
      • Exclua a pasta /lib - não copie por cima para não manter arquivos antigos;
      • Copie a pasta /lib da nova versão;
      • Copie app/templates/<tema>/libraries.html a partir da nova versão - foram adicionados fullcalendar-pt.js, e fuse.min.js;
    • Atualização de bibliotecas composer:
      • Método recomendado:
        • Atualize o composer.json com a nova versão;
        • Rode um composer update;
      • Método simplificado:
        • Copie a pasta /vendor da nova versão;
        • Copie /composer.* a partir da nova versão;
    • Atualização dos arquivos do diretório raíz:
      • Copie o arquivo init.php da nova versão;
      • Copie o arquivo download.php da nova versão;
      • Copie o arquivo engine.php da nova versão. Cuide se for necessário preservar customizações;
      • Copie o arquivo index.php da nova versão. Cuide se for necessário preservar customizações. Obs: Nesta última versão, várias substituições antes realizadas no index, passaram para a classe AdiantiTemplateParser. Mas você ainda pode realizar substituições usando a variável $content .
  • 2. Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas específicas utilizadas pela aplicação:
    • Copie app/lib/barcode/ a partir da nova versão;
    • Copie app/lib/html/ a partir da nova versão;
    • Copie app/lib/reports/ a partir da nova versão (sobrescreva);
    • Copie app/lib/util/*Mail* a partir da nova versão (sobrescreva);
    • Copie app/lib/include/fuse/ a partir da nova versão (sobrescreva);
    • Copie app/lib/include/application.js a partir da nova versão (acréscimo da Adianti.onClearDOM, Melhorias na Adianti.onBeforeLoad, acréscimo da __adianti_input_fuse_search);
  • 3. Atualizando o Template: Esta operação irá atualizar o Template. Neste caso, você deverá baixar o (template) para realizar os comandos a seguir:
    • Atualização do application.ini:
      • Dentro da seção [permission], adicione as novas classes para registrar conta e redefinir a senha:
      • public_classes[] = SystemRequestPasswordResetForm
        public_classes[] = SystemPasswordResetForm
        public_classes[] = SystemModulesCheckView
        public_classes[] = SystemRegistrationForm
    • Para habilitar a criação de conta e reset de senha por parte dos usuários. Altere no application.ini:
      • Dentro da seção [permission], adicione as novas cláusulas para:
      • ; Permite que usuários criem conta (auto registro) - por meio de um link na tela de login
        user_register = "1"
        ; Permite que usuários resetem a senha - por meio de um link na tela de login
        reset_password = "1"
        ; Lista de grupos default para usuários que se auto registrarem
        default_groups = "2"
        ; Código do programa inicial para usuários que se auto registrarem
        default_screen = "10"
    • Adicione em app/lib/util/ApplicationTranslator.class.php os novos termos a partir daqui;
    • Copie app/model/admin/ a partir da nova versão (sobrescreva);
    • Copie app/model/communication/ a partir da nova versão (sobrescreva);
    • Copie app/model/log/ a partir da nova versão (sobrescreva);
    • Copie app/control/admin/ a partir da nova versão (sobrescreva);
    • Copie app/control/communication/ a partir da nova versão;
    • Copie app/control/log/ a partir da nova versão (sobrescreva);
    • Copie app/control/MessageList.class.php a partir da nova versão;
    • Copie app/control/NotificationList.class.php a partir da nova versão;
    • Copie app/resources/system* e app/resources/google* a partir da nova versão;
    • Cria o diretório app/service/system/
    • Mova app/service/System* para app/service/system/
    • Copie app/service/system/* a partir da nova versão;
    • Copie app/templates/themeX/ a partir da nova versão (sobrescreva);
    • Compare o arquivo menu.xml com o da nova versão:
      Acrescente opções no menu para a classe: SystemModulesCheckView.
  • Ajustes de compatibilidade: Alguns ajustes serão necessários com a nova versão:
    • Erro de coluna não existente: Até a versão anterior, para carregar registros do banco, era realizado um "SELECT *", independente dos atributos informados no addAttribute(). A partir desta versão, somente os campos informados no addAttribute() serão carregados. Caso você tenha lá um campo que não existe na base de dados, erros como "No such column: xxx" podem ocorrer. Atualize os addAttribute() das classes de modelo para refletirem o que está no banco de dados.
    • Mudanças no TCombo::clearField(): Até a versão 5.0, este método por padrão não disparava eventos (change actions). Agora ele dispara por padrão, por que é um comportamento desejado (Ex: caso você tenha hierarquia de combos, ao limpar um elemento, deve limpar os filhos). Caso queira manter o comportamento da versão anterior, foi adicionado um parâmetro extra $fire_events, que pode ser forçado para FALSE.
    • Mudanças no TCombo::reload() e TDBCombo::reloadFromModel(). Assim como no caso do clearField(), até a versão 5.0, estes métodos por padrão não disparavam eventos (change actions). Agora eles disparam por padrão, o que é um comportamento desejado (Ex: caso você tenha hierarquia de combos, ao limpar um elemento, deve limpar os filhos). Caso queira manter o comportamento da versão anterior, foi adicionado um parâmetro extra $fire_events, que pode ser forçado para FALSE.
    • Largura de datagrids. Datagrids que não tiverem o tamanho de suas colunas definidas, deve ter a largura em 100% como no exemplo a seguir, caso contrário não ocupará toda largura disponível.
    • $this->datagrid = new BootstrapDatagridWrapper(new TQuickGrid);
      $this->datagrid->width = '100%';
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database


Migrando da 4.0.0 para 5.0.0
  • Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework e como elas são carregadas:
    • Primeiro, faça um backup completo;
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele;
    • Atualização das bibliotecas e do carregamento delas:
      • Exclua a pasta /lib;
      • Copie a pasta /lib da nova versão;
      • Copie a pasta /vendor da nova versão;
      • Copie app/templates/<tema>/libraries.html a partir da nova versão (sobrescreva);
      • Copie /composer.* a partir da nova versão;
    • Atualização do application.ini:
      • Dentro da seção [general], adicione locale = pt_BR;
    • Atualização dos arquivos do diretório raíz:
      • Copie o arquivo cmd.php da nova versão;
      • Copie o arquivo init.php da nova versão;
      • Copie o arquivo download.php da nova versão;
      • Copie o arquivo engine.php da nova versão. Cuide se for necessário preservar customizações;
      • Copie o arquivo index.php da nova versão. Cuide se for necessário preservar customizações;
  • Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas extras utilizadas pela aplicação:
    • Remova app/lib/mail/, pois isso passou para a pasta /vendor via composer (a seguir);
    • Remova app/lib/rtf/, pois isso passou para a pasta /vendor via composer (a seguir);
    • Copie app/lib/html/ a partir da nova versão;
    • Copie app/lib/barcode/ a partir da nova versão;
    • Copie app/lib/pdf/ a partir da nova versão (sobrescreva);
    • Copie app/lib/reports/ a partir da nova versão (sobrescreva);
    • Copie app/lib/util/TMail.class.php a partir da nova versão (sobrescreva);
    • Copie app/lib/include/application.js a partir da nova versão (especialmente a parte da select2);
    • Adicione em app/lib/util/ApplicationTranslator.class.php os novos termos a partir daqui;
  • Atualizando aplicações baseadas em Template: Esta operação irá atualizar aplicações baseadas no Template. Neste caso, você deverá baixar o (template) para realizar os comandos a seguir. Esta operação irá atualizar bem como adicionar novos conteúdos como: telas, tabelas, controles, temas (estilos):
    • Copie app/model/admin/ a partir da nova versão (sobrescreva);
    • Copie app/model/communication/ a partir da nova versão (sobrescreva);
    • Copie app/model/log/ a partir da nova versão (sobrescreva);
    • Copie app/control/admin/ a partir da nova versão (sobrescreva);
    • Copie app/control/communication/ a partir da nova versão;
    • Copie app/control/log/ a partir da nova versão (sobrescreva);
    • Copie app/control/MessageList.class.php a partir da nova versão;
    • Copie app/control/NotificationList.class.php a partir da nova versão;
    • Copie app/control/SearchBox.class.php a partir da nova versão;
    • Copie app/control/SearchInputBox.class.php a partir da nova versão;
    • Copie app/lib/menu/AdiantiMenuBuilder.php a partir da nova versão;
    • Copie app/resources/system* e app/resources/google* a partir da nova versão;
    • Copie app/service/System* a partir da nova versão;
    • Copie app/templates/themeX/ a partir da nova versão (sobrescreva);
    • Compare o arquivo menu.xml com o da nova versão:
      Acrescente opções no menu para as classes: SystemPHPErrorLogView e SystemDatabaseExplorer.
    • Atualize a base de dados para criar as novas tabelas e cadastrar os novos programas (Ex: SystemPHPErrorLogView, SystemDatabaseExplorer, etc) para estes aparecerem no menu. Execute os comandos SQL a partir da linha "--- new programs of 5.0.0" do arquivo permission-update.sql. Se necessário, adicione-os aos grupos ou usuários manualmente;
  • Ajustes de compatibilidade: Alguns ajustes serão necessários com a nova versão:
    • A biblioteca JQuery foi atualizada para a série 3. Caso você tenha feito muita programação Javascript é possível que tenha usado um método que não exista mais na versão 3. Nesse caso, será necessário adicionar uma biblioteca de compatibilização, a jquery-migrate:
    • <script src="lib/jquery/jquery-migrate-3.0.0.js" type="text/javascript"></script>
    • Ao utilizar formulários vetoriais manuais (veja neste exemplo), agora é necessário adicionar uma seção "thead" antes do cabeçalho, "tbody" antes das linhas do corpo da tabela, e "tfoot" antes do botão de clonar para funcionar com a nova versão:
    • $table->addSection('thead');
      // ...
      $table->addSection('tbody');
      // ...
      $table->addSection('tfoot');
      // ...
    • A variável de sessão usergroupids agora é um array, não mais uma string separada por vírgulas. Normalmente essa é uma variável de sessão usada internamente, mas eventualmente algum usuário pode ter feito uso dela;
    • Os componentes TMultiSearch e TDBMultiSearch mudaram de comportamento e agora funcionam da mesma maneira que um TSelect/TDBSelect no envio de dados do formulário. Para não quebrar a compatibilidade de aplicações existentes, será necessário acrescentar o seguinte conteúdo no application.ini. Dessa maneira, esses componentes se comportarão como na versão 4, enviando no POST um array cujo índice é a opção escolhida, e a posição contém a descrição. A versão nova envia no POST somente um array simples contendo os índices das opções escolhidas. Essa mudança ocorreu em decorrência da atualização do componente select2 para a última versão. Além disso, o comportamento novo é mais natural, e padronizado com os outros componentes.
    • compat=4
    • É recomendada a substituição de componentes TDBMultiSearch com setMaxSize(1) por TDBUniqueSearch, que é um componente mais fácil de utilizar, uma vez que se comporta como um TDBCombo em salvamentos e edições, recebendo e enviando apenas o índice do elemento selecionado, não um vetor que precisa ser tratado no onEdit() e onSave().
    • Campos TMultiSearch, ou TDBMultiSearch eram postados como strings em saída de campos (onExitAction, onChangeAction), nesse formato ("a::Item a||c::Item c"), sendo que era necessário um explode. Agora será postado sempre como um array padronizado como [a,c], somente com os índices selecionados, dispensando tratamento.
    • Campos TMultiSearch, ou TDBMultiSearch eram postados como strings em posts estáticos (static function onSave), nesse formato ("a::Item a||c::Item c"), sendo que era necessário um explode. Agora será postado sempre como um array padronizado como [a,c], somente com os índices selecionados, dispensando tratamento.
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database


Migrando da 3.0.0 para 4.0.0
  • Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework e como elas são carregadas:
    • Primeiro, faça um backup completo;
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele;
    • Atualização das bibliotecas e do carregamento delas:
      • Exclua a pasta /lib;
      • Copie a pasta /lib da nova versão;
      • Copie app/templates/<tema>/libraries.html a partir da nova versão (sobrescreva);
    • Atualização do application.ini:
      • Mova o arquivo application.ini para a pasta app/config;
      • Adicione a seção [general] na primeira linha no início do arquivo;
      • Dentro da seção [general], adicione seed = "d76bsodg7sdg" (invente um conteúdo aleatório alfanumérico);
      • Dentro da seção [general], adicione theme = theme3 (preencha com o tema que você utiliza);
      • Adicione a seção [permission] no final do arquivo;
      • Dentro da seção [permission], adicione a variável public_classes[] = PublicFormView (Adicione as classes públicas, uma por linha)
      • Veja um exemplo de application.ini:
        [general]
        timezone = America/Sao_Paulo
        language = pt
        application = template
        theme = theme3
        seed = h6d587dfgh5df7h

        [permission]
        ; Public classes, anyone (logged or not) has access
        public_classes[] = PublicForm
        public_classes[] = PublicView
    • Atualização dos arquivos do diretório raíz:
      • Copie o arquivo init.php da nova versão;
      • Copie o arquivo engine.php da nova versão;
      • Copie o arquivo download.php da nova versão;
      • Copie o arquivo index.php da nova versão. Cuide se for necessário preservar customizações;
  • Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas extras utilizadas pela aplicação:
    • Copie app/lib/mail/ a partir da nova versão (sobrescreva);
    • Copie app/lib/pdf/ a partir da nova versão (sobrescreva);
    • Copie app/lib/reports/ a partir da nova versão (sobrescreva);
    • Copie app/lib/util/TMail.class.php a partir da nova versão (sobrescreva);
    • Renomeie o arquivo app/lib/util/TApplicationTranslator.class.php para app/lib/util/ApplicationTranslator.class.php;
    • Substitua todas ocorrências de "TApplicationTranslator" para "ApplicationTranslator" globalmente em toda a aplicação;
  • Atualizando aplicações baseadas em Template: Esta operação irá atualizar aplicações baseadas no Template. Neste caso, você deverá baixar o (template) para realizar os comandos a seguir. Esta operação irá atualizar bem como adicionar novos conteúdos como: telas, tabelas, controles, temas (estilos):
    • Crie a pasta files/documents e dê permissão de escrita para upload;
    • Copie app/config/communication.ini a partir da nova versão;
    • Copie app/control/admin/ a partir da nova versão (sobrescreva);
    • Copie app/control/communication/ a partir da nova versão;
    • Copie app/control/log/ a partir da nova versão (sobrescreva);
    • Copie app/control/MessageList.class.php a partir da nova versão;
    • Copie app/control/NotificationList.class.php a partir da nova versão;
    • Copie app/database/communication* a partir da nova versão;
    • Copie app/model/admin/ a partir da nova versão (sobrescreva);
    • Copie app/model/communication/ a partir da nova versão;
    • Copie app/model/log/ a partir da nova versão (sobrescreva);
    • Copie app/resources/* a partir da nova versão;
    • Copie app/service/ a partir da nova versão;
    • Copie app/templates/themeX/ a partir da nova versão (sobrescreva);
    • Compare o arquivo menu.xml com o da nova versão:
      Acrescente opções no menu para as classes: SystemUnitList, SystemPreferenceForm, SystemDocumentUploadForm, SystemDocumentList, SystemSharedDocumentList,SystemDocumentCategoryFormList.
    • Atualize a base de dados para criar as novas tabelas e cadastrar os novos programas (Ex: SystemUnitList, SystemDocumentList, etc) para estes aparecerem no menu. Execute os comandos SQL a partir da linha "--- new programs of 4.0.0" do arquivo permission-update.sql. Se necessário, adicione-os aos grupos ou usuários manualmente;
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database


Migrando da 2.0.0 para 3.0.0
  • Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework e como elas são carregadas:
    • Primeiro, faça um backup completo;
    • Baixe a nova versão do framework;
    • Exclua a pasta /lib;
    • Copie a pasta /lib da nova versão;
    • Copie app/templates/theme1/libraries.html a partir da nova versão (sobrescreva);
  • Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas extras utilizadas pela aplicação:
    • Copie app/lib/mail/ a partir da nova versão (sobrescreva);
    • Copie app/lib/pdf/ a partir da nova versão (sobrescreva);
    • Copie app/lib/reports/ a partir da nova versão (sobrescreva);
    • Copie app/lib/util/ a partir da nova versão (sobrescreva);
  • Atualizando aplicações baseadas em Template: Esta operação irá atualizar aplicações baseadas no Template. Neste caso, você deverá baixar o (template) para realizar os comandos a seguir. Esta operação irá atualizar bem como adicionar novos conteúdos como: telas, tabelas, controles, temas (estilos):
    • Copie app/config/log.ini a partir da nova versão;
    • Copie app/control/admin/ a partir da nova versão (sobrescreva);
    • Copie app/control/log/ a partir da nova versão;
    • Copie app/control/MessageList.class.php a partir da nova versão (só para o Template II);
    • Copie app/control/SearchBox.class.php a partir da nova versão;
    • Copie app/control/WelcomeView.class.php a partir da nova versão;
    • Copie app/database/log* a partir da nova versão;
    • Copie app/model/admin/ a partir da nova versão (sobrescreva);
    • Copie app/model/log/ a partir da nova versão;
    • Copie app/resources/profile.html a partir da nova versão;
    • Copie app/resources/styles.html a partir da nova versão (sobrescreva);
    • Copie app/templates/themeX/ a partir da nova versão (sobrescreva);
    • Compare o arquivo engine.php com o da nova versão:
      Adicione ('MessageList'=>TRUE, 'SearchBox' => TRUE) ao vetor de programas;
    • Compare o arquivo index.php com o da nova versão:
      Adicione ($content = str_replace('{query_string}', $_SERVER["QUERY_STRING"], $content););
    • Compare o arquivo menu.xml com o da nova versão:
      Acrescente opções no menu para as classes: SystemSQLPanel, SystemPHPInfoView, SystemAccessLogList, SystemChangeLogView, SystemSqlLogList.
    • É importante cadastrar os novos programas (Ex: SystemSQLPanel, SystemPHPInfoView, SystemAccessLogList, SystemChangeLogView, e SystemSqlLogList) para estes aparecerem no menu. Execute os comandos SQL a partir da linha "--- new programs of 3.0.0" do arquivo permission.sqlite.sql ou permission.pgsql.sql. Se necessário, adicione-os aos grupos ou usuários manualmente;
  • Usando os ícones novos: Você poderá usar os ícones novos (da Font Awesome) no lugar dos antigos (que eram em formato de imagem). Os seguintes comandos efetuam uma substituicao global (em Linux):
    sudo apt-get install rpl
    cd <diretorio>/app
    rpl -R "ico_save.png" "fa:floppy-o" *
    rpl -R "ico_new.png" "fa:plus-square green" *
    rpl -R "ico_datagrid.png" "fa:table blue" *
    rpl -R "ico_find.png" "fa:search" *
    rpl -R "ico_edit.png" "fa:pencil-square-o blue fa-lg" *
    rpl -R "ico_delete.png" "fa:trash-o red fa-lg" *
    rpl -R "ico_apply.png" "fa:check-circle-o green" *
    rpl -R "ico_view.png" "fa:search" *
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita;


Migrando da 1.0.3 para 2.0.0
  • Atualizando o framework
    • Primeiro, faça um backup de sua aplicação;
    • Baixe a nova versão do framework (2.0);
    • Exclua a pasta /lib;
    • Copie a pasta /lib da versão 2.0.0;
  • Atualizando a aplicação
    • Criar um arquivo vazio app/lib/include/application.js;
    • Copiar o /init.php da versão 2.0.0 para sua aplicação;
    • Copiar o /cmd.php da versão 2.0.0 para sua aplicação;
    • Copiar o /download.php da versão 2.0.0 para sua aplicação;
    • Copiar o /app/templates/theme1/libraries.html da versão 2.0.0 para sua aplicação.
      Lembre de manter os includes de suas bibliotecas específicas, caso existam;
    • Excluir o /app/lib/include/facade.js de sua aplicação.
      Caso ele tenha funções do usuário, transferidas estas para /app/lib/include/application.js;
    • Excluir o /index.php de sua aplicação;
    • Renomear o index.web.php para index.php no caso de uma aplicação web;
    • Renomear /app/templates/theme1/site.css para app/templates/theme1/application.css;
    • Substituir no arquivo engine.php: "TCoreApplication" por "AdiantiCoreApplication";
    • Se sua aplicação for baseada no Template ERP, você pode baixar o novo Template ERP e copiar os arquivos engine.php e index.php a partir do novo template;
    • Se sua aplicação não for baseada no Template ERP, substitua nos arquivos engine.php e index.php, as seguintes instruções iniciais:
      // define the autoloader
      include_once 'lib/adianti/util/TAdiantiLoader.class.php';
      spl_autoload_register(array('TAdiantiLoader', 'autoload_web'));

      // read configurations
      $ini = parse_ini_file('application.ini');
      date_default_timezone_set($ini['timezone']);
      TAdiantiCoreTranslator::setLanguage( $ini['language'] );
      TApplicationTranslator::setLanguage( $ini['language'] );

      // define constants
      define('APPLICATION_NAME', $ini['application']);
      define('OS', strtoupper(substr(PHP_OS, 0, 3)));
      define('PATH', dirname(__FILE__));
      pelo seguinte conteúdo:
      require_once 'init.php';
    • Remover de todos arquivos de layout (ex: app/templates/theme1/layout.html), as instruções a seguir, pois aquelas que eram essenciais foram transferidas para o núcleo do framework em /lib/adianti/include/adianti.js:
      $('[generator="adianti"]').live('click', function()
      {
         __adianti_load_page($(this).attr('href'));
         return false;
      });

      window.onpopstate = function(stackstate)
      {
         if (stackstate.state)
         {
            __adianti_load_page_no_register(stackstate.state.url);
         }
      };

      $(function() {
         $( document ).tooltip();
      });
    • Como a Bootstrap foi atualizada da 2 para a 3, leia a sua documentação de migração caso tenha usado alguma classe específica;
    • Como a jQuery foi atualizada da 1 para a 2, leia a documentação de migração caso tenha usado algum método específico;
    • Algumas funções Javascript internas foram renomeadas (ajaxLookup => __adianti_ajax_lookup) e (ajaxExec => __adianti_ajax_exec). Caso você tenha as chamado diretamente, substitua as chamadas;
    • Ao carregar a aplicação pela primeira vez após a atualização, limpe totalmente o cache do navegador, para que o mesmo não leia estilos CSS ou arquivos JS da versão anterior;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios /tmp, /app/database, e /app/output devem possuir também permissão de escrita;


Migrando da 1.0.2 para 1.0.3
  • Atualizando o framework
    • Toda a pasta /lib deve ser atualizada. Tome cuidado para não sobrescrever a pasta /app (sua aplicação). Faça um backup antes.
  • Atualizando a aplicação
    • O arquivo app/lib/include/facade.js deve ser atualizado. Ele contém novas funções Javascript de que manipulam o carregamento de páginas e postagem de valores de formulários como: __adianti_block_ui(), __adianti_unblock_ui(), __adianti_post_data(), dentre outras modificações;
    • O arquivo app/templates/theme1/libraries.html, que contém a inclusão de bibliotecas JavaScript e estilos, foi alterado e deve ser atualizado;
    • A biblioteca pChart (app/lib/pchart/) foi atualizada. Todo o diretório pode ser substituído pela nova versão. A classe app/lib/reports/TPChartDesigner.class.php também foi alterada;
    • Como ações (TAction) definidas em métodos como setChangeAction() e setExitAction() agora precisam necessariamente ser declaradas como static, será necessário rever todos os métodos declarados para responder à essas ações e declará-los como "public static function". Estes métodos não pode chamar internamente nenhum outro método no formato "$this->metodo()";


Migrando da 1.0.1 para 1.0.2
  • Atualizando o framework
    • Toda a pasta /lib deve ser atualizada. Tome cuidado para não sobrescrever a pasta /app (sua aplicação). Faça um backup antes.
  • Atualizando a aplicação
    • O engine.php (motor de execução para a Web) foi simplificado em tamanho. Muitas partes deste arquivo (responsáveis por decidir a classe e o método a serem executados) foram passados para a classe TCoreApplication, do núcleo do framework. É recomendável, mas opcional ao desenvolvedor atualizar o engine.php;
    • O index.web.php (front page para a Web) teve seu início simiplificado (até a chamada de ob_start()). Foram simplificadas algumas chamadas como TAdiantiCoreTranslator::setLanguage() e define('APPLICATION_NAME', ...). É recomendável, mas opcional ao desenvolvedor realizar tais atualizações no index.web.php;
    • Atenção: A constante APPLICATION_NAME, que é utilizada para separar o conteúdo de variáveis de sessão conforme o nome da aplicação, deve ter exatamente a mesma definição tanto no engine.php, quanto index.web.php, caso contrário alguns recursos como sessões apresentarão problemas;
    • Ações em datagrid agora são executadas mantendo os parâmetros de paginação. Assim, ao excluir um registro de uma datagrid, o usuário permanecerá na mesma página. Para que essa estratégia funcione, algumas mudanças devem ser realizadas:
      • Caso você ainda tenha um engine.php da versão anterior, deverá passar os parâmetros da URL ($_GET) ao executar o método show() da página $page->show( $_GET ). Na nova versão do engine.php (que utiliza a classe TCoreApplication, isso já está habilitado por default;
      • Sempre que o desenvolvedor reescrever o método show() em alguma página (datagrids) em que faz uma chamada ao método onReload(), deverá passar um novo parâmetro: $this->onReload( func_get_arg(0) ) ;
      • Os metodos delete() que fazem chamada ao método onReload() devem acrescentar um novo parâmetro na chamada ($param), que representa os parâmetros da URL, da seguinte forma: $this->onReload( $param );


Migrando da 1.0.0 para 1.0.1
  • Atualizando o framework
    • Toda a pasta /lib deve ser atualizada. Tome cuidado para não sobrescrever a pasta /app (sua aplicação). Faça um backup antes.
  • Atualizando a aplicação
    • Um novo grupo de bibliotecas para geração de gráficos está disponível. Para utilizar, basta atualizar as pastas app/lib/pchart e app/lib/reports.
    • Uma nova funcionalidade de tooltip/dica de preenchimento ($widget->setTip()) está disponível. Para utilizá-la, você deve adicionar a seguinte chamada ao template: $(function() { $( document ).tooltip(); });
    • Para aproveitar a biblioteca de envio de emails (TMail), atualize app/lib/mail e app/lib/util/TMail.class.php em sua aplicação.
    • Atualize o arquivo app/lib/include/facade.js, que foi aperfeiçoado para lidar melhor com abertura de janelas.
    • Todo o cabeçalho do template, contendo inúmeras chamadas para bibliotecas .JS e estilos CSS deve ser removido. Todas bibliotecas Javascript e arquivos CSS necessários agora estão encapsulados no arquivo libraries.html, que deve ser referenciado dentro do template pela palavra-chave {LIBRARIES}. Esta palavra-chave é substituída pelo conteúdo "libraries.html" pelo "index.web.php". Muitas bibliotecas externas utilizadas pelo framework foram atualizadas (jquery-1.8.3, jquery-ui-1.9.2), e algumas outras foram incluídas. Garanta que você tenha importado o libraries.html em sua aplicação usando a palavra-chave {LIBRARIES} dentro do cabeçalho de seu template;
Adianti Framework 1.0.0
Release inicial.