x

Principaux chapitres

  1. LimeSurvey Cloud et LimeSurvey CE
  2. Guide de démarrage rapide - LimeSurvey 3.0+
  3. Installation de Limesurvey CE en Francais
  4. Comment concevoir une bonne enquête (guide)
  5. Commencer
  6. Administrer LimeSurvey
  7. Création et structure d'un questionnaire
  8. Paramètres de l'enquête
  9. Menu Enquête
  10. Structure de l'enquête
  11. Questions-introduction
  12. Groupes de questions - introduction
  13. Enquêtes - gestion
  14. Options de la barre d'outils d'enquête
  15. Enquête multilingue
  16. Moteur ExpressionScript - Guide de démarrage rapide
  17. Non catégorisé et fonctionnalités avancées
  18. Foire Aux Questions
  19. Dépannage
  20. Solutions de contournement et spécifiques
  21. Licence
  22. Journal des modifications de version
  23. Les greffons - avancé
 Actions

Refonte des noms de champs de LimeSurvey 7

From LimeSurvey Manual

Cette page a peut-être été traduite automatiquement et peut contenir des erreurs. Afficher l'original en anglais · Améliorer cette traduction
This page is a translated version of the page LimeSurvey 7 Fieldname Refactor and the translation is 100% complete.

Refonte des noms de champs et des tables de réponses - LimeSurvey 7

LimeSurvey 7 introduit un nettoyage majeur de la manière dont les tables de réponses et les noms de champs sont générés. Cette mise à jour modernise des conventions de nommage internes en place depuis longtemps et crée une base plus prévisible et plus robuste pour les extensions, les intégrations et les développements futurs.

Cette page porte sur la refonte des tables de réponses et des noms de champs.

Comme il s'agit d'un changement structurel, tout développement personnalisé reposant sur l'ancienne nomenclature peut nécessiter des mises à jour. Cette page explique ce qui change, comment tester en toute sécurité et comment préparer la mise à niveau.

1. Ce qui change

1.1 Nouveaux noms de tables

LimeSurvey utilise désormais un schéma de nommage cohérent pour les tables liées aux réponses.

Ancien nom de table Nouveau nom de table
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>

Les requêtes SQL, intégrations ou extensions faisant référence à ces tables peuvent nécessiter des ajustements.

1.2 Nouvelle structure des noms de champs

Les noms de champs suivent désormais un format prévisible et cohérent. Exemples :

  • Q<questionId> - question racine
  • Q<questionId>_S<subquestionId> - sous-questions
  • Q<questionId>_C<suffix> - commentaire ou autres champs
  • champs de classement : Q<questionId>_S<subquestionId> - les éléments à classer sont désormais des sous-questions (voir 1.3)
  • champs de chronométrage : au niveau de la question ou du groupe selon le contexte

Ceci remplace l'ancienne nomenclature basée sur sidXgidXqid.

1.3 Questions de classement

Les questions de classement fonctionnent désormais comme les autres types de questions basés sur des sous-questions :

  • Les éléments sont des sous-questions. Les éléments à classer sont stockés sous forme de sous-questions (type R), et non comme des options de réponse.
  • Les noms de champs utilisent le format standard des sous-questions Q<questionId>_S<subquestionId> (un par élément classé).
  • Les réponses sont stockées dans une seule colonne JSON Q<questionId>, sous la forme d'un tableau ordonné de codes d'éléments où la position = le rang. Exemple : ["3", "1", "2"]

2. Pourquoi c'est important

Ce nettoyage concerne des schémas de nommage définis formellement et utilisés pendant de nombreuses années, et les transforme en une structure cohérente et robuste sur laquelle nous pouvons construire à l'avenir.

Les changements structurels de ce type sont rarement simples. Ils touchent des parties du système sur lesquelles reposent de nombreuses extensions et intégrations, ce qui explique pourquoi ils sont souvent repoussés en raison de leur complexité. Mais maintenir la cohérence et la prévisibilité est essentiel pour la stabilité à long terme.

En nous en occupant dès maintenant, nous rendons LimeSurvey plus propre et plus facile à étendre, même si le changement est largement invisible en surface.

3. Comment prévisualiser les nouveaux noms de champs

Pour voir comment un nom de champ existant sera converti dans la nouvelle structure de LS7, vous pouvez suivre les étapes suivantes :

  1. Sauvegardez la base de données : les modifications sont irréversibles et, en cas de problème, il sera utile de disposer de la base de données antérieure au changement pour la restaurer.
  2. Basculez sur la branche develop-major :
    git checkout develop-major
    ou clonez/téléchargez directement le projet sur cette branche à l'adresse https://github.com/LimeSurvey/LimeSurvey/tree/develop-major
  3. Chargez une page d'administration pour déclencher le script de modification.
  4. Signalez toute erreur rencontrée lors de l'exécution du script de modification.
  5. Étudiez les nouveaux noms de tables et de champs.
  6. Testez vos extensions/thèmes et corrigez les erreurs liées aux noms de tables et/ou de champs.

La fonction utilisée pour convertir les anciens noms de champs en nouveaux noms de champs est la suivante :

getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)

Paramètres

  • $tableName - nom de table d'origine
  • $fieldName - nom de champ d'origine
  • $questions - question racine et ses sous-questions
  • $sid - ID du questionnaire
  • $gid - Numéro du groupe
  • $cd - indique si la logique du Concepteur de conditions s'applique

Résultat

La fonction renvoie le nouveau nom de champ LS7 pour ce champ de réponse.

4. Comment tester les changements en toute sécurité

Il est fortement recommandé de tester LS7 dans un environnement dédié avant de mettre à niveau les systèmes de production.

4.1 Installer LS7 dans un environnement séparé

Téléchargez la dernière version de LS7 depuis :

https://community.limesurvey.org

Installez-la séparément de votre configuration actuelle.

4.2 Importer vos éléments existants

Testez à l’aide des éléments suivants :

  • questionnaires
  • thèmes de questionnaire
  • thèmes de l’administration
  • thèmes de questions
  • extensions
  • JavaScript personnalisé
  • toutes les intégrations personnalisées que vous avez développées

Vérifiez que tout fonctionne comme prévu avec les nouveaux noms de tables et de champs. Mettez à jour tout code qui repose sur l’ancienne nomenclature.

4.3 Comment déclencher la migration ?

Si vous souhaitez prévisualiser la logique de migration dans votre installation de test :

  1. Sauvegardez votre base de données.
  2. Installez la version LS7.
  3. Chargez n’importe quelle page d’administration pour exécuter le script de migration.
  4. Examinez les modifications des noms de tables et de champs.
  5. Testez l’application.
  6. Mettez à jour le code personnalisé si nécessaire.

4.4 Signaler des problèmes

Merci de tester cette version en avance de phase. Si vous remarquez quoi que ce soit d’anormal dans le noyau, veuillez nous le signaler afin que nous puissions le corriger au plus vite.

https://bugs.limesurvey.org

5. Ce qui peut nécessiter des mises à jour

Les éléments suivants peuvent nécessiter des ajustements :

  • les extensions faisant référence aux anciens noms de champs ou de tables
  • toutes les intégrations personnalisées que vous avez développées
  • le JavaScript utilisant des sélecteurs basés sur les noms de champs
  • les thèmes personnalisés interagissant avec les identifiants liés aux réponses
  • les intégrations dépendant de l’ancien schéma de nommage
  • l’import d’anciens exports tels que des questionnaires, thèmes, thèmes de questions, etc.

Cela est normal et fait partie du processus de mise à niveau.

6. Résumé

  • LS7 introduit un nettoyage complet de la nomenclature des tables de réponses et des noms de champs
  • Il s’agit de la principale modification structurelle du backend de LS7
  • Il est fortement recommandé de tester dans un environnement séparé
  • getFieldName() permet de prévisualiser la future nomenclature
  • Mettez à jour le code personnalisé si nécessaire
  • Signalez les problèmes dès que possible pour aider à stabiliser la version finale