Raccourcis : Contenu - rubriques - sous rubriques
EN FR
Jelix 1.3.9

Chapitre: Migration d'une application vers jelix 1.3.x

« Nouveautés ^ Introduction
Changer de langue : EN

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.3.3

Mettre à jour depuis Jelix 1.2

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/. Vous pouvez aussi supprimer les autres répertoires temporaires temp/votreapp-cli/ et temp/votreapp-scripts/, ils ne sont plus utilisés.

Appliquer le patch pour jelix 1.3.9

Depuis la dernière version de la branche 1.3, 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.3, faute d'avoir un PHP assez vieux pour regénérer les paquets.

Téléchargez donc https://download.jelix.org/jelix/releases/1.3.x/1.3.9/jelix_1.3.9_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 le fichier application.init.php

Ce script ne doit plus définir des constantes JELIX_APP_*, mais doit définir les divers chemins de l'application avec l'objet jApp::initPaths(). Vous pouvez maintenant accéder à chaque chemin en utilisant cet objet jApp. jCoordinator génère cependant les constantes JELIX_APP_* pour garder une compatibilité, mais vous devez tout de même supprimer l'utilisation de ces constantes dans vos modules, car elles ne seront plus disponibles dans des versions ultérieures.

Votre script application.init.php doit contenir ce genre d'instruction :


$appPath = dirname (__FILE__).'/';
require ($appPath.'../lib/jelix/init.php');

jApp::initPaths(
    $appPath
    //$appPath.'www/',
    //$appPath.'var/',
    //$appPath.'var/log/',
    //$appPath.'var/config/',
    //$appPath.'scripts/'
);
jApp::setTempBasePath(realpath($appPath.'../temp/testapp/').'/');

Suppression de fichiers

Vous pouvez supprimer application-cli.init.php et jelix-scripts.init.php, ils sont maintenant inutiles. Sans oublier toutefois de remplacer dans vos scripts en ligne de commandes (normalement, dans le répertoire scripts/ de votre application), l'utilisation de application-cli.init.php par application.init.php.

Modifications générales

  • Si vous avez activé la minification des fichiers js et css dans la réponse HTML, cela ne fonctionnera plus, la configuration a changé. Certaines options ont disparu, le répertoire www/cache/minify n'est plus utilisé, et un fichier minify.php doit être installé dans www/. Copiez le fichier lib/jelix-scripts/templates/www/minify.php.tpl dans votre_appli/www/minify.php. L'outils de mise à jour du module jelix modifiera la configuration pour vous. Voyez la partie sur minify pour en savoir plus.
  • Si vous voulez utiliser PHPUnit pour ajouter des tests unitaires, copiez le fichier lib/jelix-scripts/templates/tests/runtests.php dans le répertoire tests/ de votre application. Et lisez le chapitre sur les tests unitaires pour savoir comment en écrire.

Mise à jour des modules

Mettez à jour les sources des modules tiers que vous avez installés, et qui sont compatibles avec Jelix 1.3.

Et pour vos propres modules, vous devez adapter le code source en faisant les modifications suivantes :

  • comme indiqué plus haut, remplacez l'usage des constantes JELIX_APP_* par l'utilisation de l'objet jApp.
  • dans les fichiers module.xml, indiquez que le module est compatible avec Jelix 1.3 (changer l'attribut maxversion). Exemple : <jelix minversion="1.1" maxversion="1.3.*"/>
  • L'API et le schéma de donnée de jAcl2Db a changé.
    • les identifiants des groupes d'utilisateurs ne sont plus des nombres, mais des noms (chaines). Par conséquent, il vous faudra modifier vos données si elles contiennent des identifiants de groupes. Lors de la migration, Jelix utilise la valeur de l'ancien champs "code" d'un groupe comme identifiant, si il est renseigné (ce champs a été supprimé). L'identifiant __anonymous est réservé.
    • il faut remplacer vos appels de jAcl2DbUserGroup::getGroupByCode par jAcl2DbUserGroup::getGroup. L'argument est le même : l'identifiant/code du groupe. En revanche getGroup() renvoie un objet correspondant à l'ensemble des champs du groupe, et non seulement son id.
    • vous pouvez maintenant regrouper vos "sujets" de droits en les assignant à des "groupes de sujets". Cela améliore la lisibilité de l'interface d'administration. Vous avez pour cela des nouvelles sous commandes avec la commande cmd.php acl2right : subject_group_create, subject_group_list, subject_group_delete.

Nouvelles API que vous pouvez utiliser (non exhaustives):

  • jApp qui contient un certain nombre de méthode pour récupérer divers chemins
  • jApp::loadPlugin pour charger les plugins de n'importe quel composant (API interne)
  • jInstallerApplication pour récupérer la liste des points d'entrées, les modules utilisés ,
  • jLog::logEx() pour journaliser facilement les exceptions
  • jRequest::isAjax() pour savoir si la requête est une requête faites par xmlHttpRequest
  • jRequest::getIp()
  • jSoapClient pour effectuer des requêtes soap, avec les informations de connexion dans le fichier profiles.ini.php.
  • jFormsJQ.addSubmitHandler() en JavaScript, pour ajouter du code pour faire des vérifications supplémentaires lors de la soumission du formulaire.

API que vous ne pouvez plus utiliser :

  • jUrl::parseFromRequest()

Mise à jour du script installer.php

Dans le dossier install de votre application, éditer le script installer.php en changeant application-cli.init.php par application.init.php

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 :

  • dans vos fichiers de configuration.
  • il crééra un nouveau fichier profiles.ini.php, qui remplace vos fichiers dbprofils.ini.php, cache.ini.php, jkvdbprofiles.ini.php. Ces fichiers seront supprimés.
  • ajoute le nouveau script cmd.php à la racine de votre application, pour lancer les commandes jelix-scripts à partir de votre application. cmd.php remplace le script lib/jelix-scripts/jelix.php qui n'existe plus.

Le module jacl2db, si vous l'utilisez, mettra à jour votre base de données.

Autres modifications éventuelles

Quand une erreur survient, une page spécifique s'affiche dorénavant. Vous pouvez la redéfinir pour mieux l'intégrer dans le design de votre site. Voir la rubrique dédié pour le faire.

La page d'erreur n'affiche plus les détails de l'erreur (pour des raisons de sécurité et de "convivialité"). Durant le développement, pour avoir les infos sur les informations sur l'erreur et sur d'autres choses, activez la debug barre et éventuellement certains fichiers de log.

Mettre à jour depuis jelix 1.1 et précédent

Suivez les indications de migration de chaque version intermédiaire, avant de mettre à jour pour jelix 1.3.