Chapitre: Migration depuis une version précédente de jelix
« Nouveautés | ^ Introduction |
− Table des matières
Lors d'une migration d'une version Jelix à une autre, il y a toujours au moins ces étapes à faire :
- Remplacer le répertoire
lib/
de jelix par celui contenu dans le paquet jelix. - Ne pas oublier de remettre dans le nouveau répertoire
lib/
vos éventuelles bibliothèques personnelles si vous en aviez mis dans l'ancien. - supprimer tous les fichiers dans le répertoire
temp/votre_appli
- adapter votre code en suivant les instructions indiquées pour chaque ancienne version de Jelix. Voir ci-dessous.
Mettre à jour depuis Jelix 1.2 et inférieur ¶
Suivez les indications de migration de chaque version intermédiaire (voir les manuels correspondant), avant de mettre à jour pour jelix 1.3.
Mettre à jour depuis Jelix 1.4.0 ¶
- si vous le souhaitez, vous pouvez utiliser le nouveau système de hashage dans jAuth, apparue dans la version 1.4.0 (et 1.2.10, 1.3.4), pour stocker les mots de passe de manière plus sécurisée. Suivez alors la doc de migration dédiée.
- Le script de mise à jour de jacl2db remplace dans la table jacl2_rights tous les id de ressource nuls par "-", qui est la nouvelle valeur pour indiquer "toutes les ressources". Ceci pour pouvoir établir des clés primaires correctes sur cette table avec certains SGBD comme Oracle.
Mettre à jour depuis Jelix 1.3 ¶
Voici les instructions à suivre dans l'ordre.
Sauvegarde ¶
Tout d'abord, faites une sauvegarde de votre base de données, de vos fichiers de configuration etc.
Répertoires temporaires ¶
Comme d'habitude, vous devez vider le contenu de votre répertoire temp/votreapp/
.
Appliquer le patch pour jelix 1.4.8 ¶
Depuis la dernière version de la branche 1.4, il y a eu quelques correctifs dans les scripts de migrations, mais qui n'ont pas été publié dans une nouvelle version de Jelix 1.4, faute d'avoir un PHP assez vieux pour regénérer les paquets.
Téléchargez donc https://download.jelix.org/jelix/releases/1.4.x/1.4.8/jelix_1.4.8_patch.zip, et dézippez-le
à partir du répertoire parent de lib/
. Cela remplacera quelques fichiers. Vous pouvez trouvez ceci également ici
https://github.com/jelix/jelix/tree/jelix-1.4.x/build/patch .
Changez vos points d'entrées ¶
jApp
fournissant de nouvelles API, il faut changer le code de vos points d'entrées.
- L'instance du coordinateur doit être indiqué à
jApp
. - Le chemin du fichier de configuration doit être lui aussi indiqué à
jApp
au lieu d'être passé en paramètre au coordinateur - Voyez un exemple dans le template dans
lib/jelix-scripts/templates/www/index.php.tpl
Voici un exemple typique:
require ('../application.init.php');
require (JELIX_LIB_CORE_PATH.'request/jClassicRequest.class.php');
checkAppOpened();
// Charge la configuration
jApp::loadConfig('index/config.ini.php');
// nouveau coordinateur, que l'on indique à jApp
jApp::setCoord(new jCoordinator());
// Nouvel objet request, que l'on passe au coordinateur, pour traiter le routage.
jApp::coord()->process(new jClassicRequest());
Suppression de fichiers ¶
Modifications générales ¶
Mise à jour des modules ¶
Mettez à jour les sources des modules tiers que vous avez installés, et qui sont compatibles avec Jelix 1.4.
Et pour vos propres modules, vous devez adapter le code source en faisant les modifications suivantes :
- La variable globale $gJConfig est obsolète. Utilisez maintenant
jApp::config()
pour récupérer la configuration. - La variable globale $gJCoord est obsolète. Utilisez maintenant
jApp::coord()
pour récupérer l'objet coordinateur. - Le code de locale 'en_EN' est maintenant obsolète. Vous avez alors deux solutions si vous l'utilisez dans vos applications :
- une solution rapide mais temporaire : ajoutez le paramètre "en=en_EN" dans la section "[langToLocale]" de la configuration principale.
- une meilleure solution: renommez vos repertoires
locales/en_EN
enlocales/en_US
, utilisez le code en_US comme locale par défaut (si vous utilisiez en_EN), et si vous stockiez le code en_EN dans vos données, changez les avec en_US. C'est la solution préférée, car le code en_EN ne sera plus supporté dans des versions futures de Jelix.
- Dans les fichiers
module.xml
, indiquez que le module est compatible avec Jelix 1.4 (changer l'attributmaxversion
). Exemple :
<jelix minversion="1.3" maxversion="1.4.*"/>
- Les méthodes
jCoordinator::isModuleEnabled()
andjCoordinator::getModulePath()
sont désormais obsolète, elles ont été copiée dansjApp
, il faut donc utiliser celle de jApp. - Dans vos pages statiques HTML (via jResponseBasicHtml) et page d'erreur statiques (error.en_US.php etc) la variable $basePath doit être renommée en $BASEPATH. (Jelix 1.4.1)
Lisez la liste détaillée des changements pour savoir la liste des nouvelles classes et méthodes que vous pouvez utiliser.
Mise à jour de Jelix ¶
Après toutes les modifications effectuées, vous devez lancer le script installer.php de votre application. Le module jelix fera le reste des modifications, en particulier :
- Le paramètre de configuration
availableLanguageCode
du pluginautolocale
, si vous l'utilisez, est déplacé vers la configuration principale et renommé enavailableLocales
.