Refatoração de nomes de campos do LimeSurvey 7
From LimeSurvey Manual
Refatoração de nomes de campos e tabelas de respostas - LimeSurvey 7
O LimeSurvey 7 traz uma grande limpeza na forma como as tabelas de respostas e os nomes de campos são gerados. Esta atualização moderniza convenções internas de nomenclatura antigas e cria uma base mais previsível e robusta para plugins, integrações e desenvolvimentos futuros.
Esta página aborda a refatoração das tabelas de respostas e dos nomes de campos.
Por se tratar de uma mudança estrutural, qualquer trabalho personalizado que dependa da nomenclatura antiga pode exigir atualizações. Esta página explica o que muda, como testar com segurança e como se preparar para a atualização.
1. O que muda
1.1 Novos nomes de tabelas
O LimeSurvey agora usa um esquema de nomenclatura consistente para as tabelas relacionadas às respostas.
| Nome antigo da tabela | Novo nome da tabela |
|---|---|
old_survey_<sid>_<timestamp>
|
old_responses_<sid>_<timestamp>
|
old_survey_<sid>_timings_<timestamp>
|
old_timings_<sid>_<timestamp>
|
survey_<sid>
|
responses_<sid>
|
survey_<sid>_timings
|
timings_<sid>
|
Quaisquer consultas SQL, integrações ou plugins que façam referência a essas tabelas podem exigir ajustes.
1.2 Nova estrutura de nomes de campos
Os nomes de campos agora seguem um formato previsível e consistente. Exemplos:
Q<questionId>- pergunta raizQ<questionId>_S<subquestionId>- perguntas secundáriasQ<questionId>_C<suffix>- comentário ou outros campos- campos de classificação:
Q<questionId>_S<subquestionId>- os itens de classificação agora são perguntas secundárias (veja 1.3) - campos de tempo: em nível de pergunta ou de grupo, dependendo do contexto
Isso substitui a antiga nomenclatura baseada em sidXgidXqid.
1.3 Perguntas de classificação
As perguntas de classificação agora funcionam como os demais tipos de pergunta baseados em perguntas secundárias:
- Os itens são perguntas secundárias. Os itens classificáveis são armazenados como perguntas secundárias (tipo
R), e não como opções de resposta. - Os nomes de campos usam o formato padrão de pergunta secundária
Q<questionId>_S<subquestionId>(um por item classificado). - As respostas são armazenadas em uma única coluna JSON
Q<questionId>, como uma matriz ordenada de códigos de itens em que posição = classificação. Exemplo:["3", "1", "2"]
2. Por que isso é importante
Esta limpeza trata de padrões de nomenclatura que foram definidos formalmente e usados por muitos anos, e os leva a uma estrutura consistente e robusta sobre a qual podemos construir o futuro.
Mudanças estruturais como esta raramente são simples. Elas afetam partes do sistema nas quais muitos plugins e integrações se baseiam, e por isso costumam ser adiadas devido à sua complexidade. Mas manter tudo consistente e previsível é importante para a estabilidade a longo prazo.
Ao tratar disso agora, tornamos o LimeSurvey mais limpo e fácil de expandir, mesmo que a mudança seja praticamente invisível na superfície.
3. Como visualizar previamente os novos nomes de campos
Para ver como qualquer nome de campo existente será mapeado para a nova estrutura do LS7, siga estes passos:
- Faça um backup do banco de dados, pois as alterações não são reversíveis e, se algo der errado, será útil ter o banco de dados anterior à mudança para recuperação
- Faça o checkout da branch develop-major:
git checkout develop-major
ou clone/baixe o projeto diretamente nesta branch em https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Carregue uma página de administração para disparar o script de alteração
- Relate qualquer erro que você encontrar durante a execução do script de alteração
- Estude os novos nomes de tabelas e de campos
- Teste seus plugins/temas e corrija os erros relacionados a nomes de tabelas e/ou de campos
A função usada para converter os nomes de campos antigos em novos nomes de campos é a seguinte:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Parâmetros
- $tableName - nome original da tabela
- $fieldName - nome original do campo
- $questions - pergunta raiz e suas perguntas secundárias
- $sid - ID do questionário
- $gid - ID do grupo
- $cd - indica se a lógica do Designer de condições se aplica
Resultado
A função retorna o novo nome de campo do LS7 para esse campo de resposta.
4. Como testar as alterações com segurança
Recomendamos fortemente testar o LS7 em um ambiente dedicado antes de atualizar os sistemas de produção.
4.1 Instale o LS7 em um ambiente separado
Baixe a versão mais recente do LS7 em:
https://community.limesurvey.org
Instale-o separadamente da sua instalação atual.
4.2 Importe seus recursos existentes
Faça testes usando:
- questionários
- Temas de questionário
- Modelos de administração
- Temas de perguntas
- plugins
- JavaScript personalizado
- quaisquer integrações personalizadas que você tenha criado
Verifique se tudo funciona conforme esperado com a nova nomenclatura de tabelas e nomes de campos. Atualize qualquer código que dependa da nomenclatura antiga.
4.3 Como acionar a migração?
Se você quiser visualizar previamente a lógica de migração em sua instalação de teste:
- Faça backup do seu banco de dados.
- Instale a versão LS7.
- Carregue qualquer página de administração para executar o script de migração.
- Revise as alterações nas tabelas e nos nomes de campos.
- Teste a aplicação.
- Atualize o código personalizado, se necessário.
4.4 Relatar problemas
Obrigado por testar com antecedência. Se você notar algo estranho no Principal, relate-o para que possamos corrigi-lo o mais rápido possível.
5. O que pode exigir atualizações
Os itens a seguir podem precisar de ajustes:
- plugins que referenciam nomes de campos ou nomes de tabelas antigos
- quaisquer integrações personalizadas que você tenha criado
- JavaScript que usa seletores baseados em nomes de campos
- temas personalizados que interagem com identificadores relacionados às respostas
- integrações que dependem do esquema de nomenclatura anterior
- importação de exportações antigas, como questionários, temas, Temas de perguntas etc.
Isso é esperado e faz parte do processo de atualização.
6. Resumo
- O LS7 introduz uma limpeza completa da nomenclatura das tabelas de respostas e dos nomes de campos
- Esta é a principal mudança estrutural de backend do LS7
- É altamente recomendável testar em um ambiente separado
getFieldName()ajuda a visualizar previamente a nova nomenclatura- Atualize o código personalizado quando necessário
- Relate os problemas o quanto antes para ajudar a estabilizar a versão final