Développement d'un programme de mise à jour
Sommaire
Programme de mise à jour du noyau
Lors de chaque mise à jour, la fonction ovidentia_upgrade($version_base,$version_ini) est appelée, il faut qu'elle renvoie TRUE pour que la mise à jour soit acceptée.
La fonction se trouve dans le fichier upgrade.php.
Programme de mise à jour d'un module
Le principe est identique pour les modules, la fonction doit être dans le fichier init.php et s'appeller addon_upgrade($version_base,$version_ini) où addon est le nom du module.
Modification et création des tables
Il existe dans ovidentia un outil pour créer et mettre a jour des tables à partir d'un fichier SQL.
exemple :
<source lang="php">
require_once $GLOBALS['babInstallPath'] . 'utilit/devtools.php'; $tables = new bab_synchronizeSql(dirname(__FILE__) . '/sql/dump.sql');
</source>
Dans le fichier SQL, seules les requêtes CREATE TABLE seront traitées, si la table existe déjà et si les colonnes ne sont pas identiques, des ALTER TABLES seront executés pour mettre a jour la tables avec le moins de perte de données possibles.
sur l'objet bab_synchronizeSql il existe des méthode pour tester les action effectuées :
isWorkedTable($table)
retourne true si la table a été trouvée dans le fichier SQL et vérifiée sur le serveur
isCreatedTable($table)
retourne true si la table a été crée
isModifiedTable($table)
retourne true si la table a été modifiée mais pas crée
isUnmodifiedTable($table)
retourne true si la table n'a pas été modifiée
Outils à utiliser dans le programme de reprise
Paramètres
- $version_base : le numéro de version stockée dans la base de données
- $version_ini : le numéro de version stockée dans les fichiers (fichier ini)
lors de la mise à jour, le numéro de version $version_ini est généralement supérieur à $version_base
$babBody->addError($message)
Les messages d'erreur doivent être enregistrés avec la fonction $babBody->addError, il faut ensuite renvoyer FALSE pour que la mise à jour ne soit pas acceptée.
bab_isTable($table)
Teste l'existence d'une table.
bab_isTableField($table, $field)
Teste l'existence d'un champ de table.
bab_setUpgradeLogMsg($addon_name, $message, $uid = '')
Permet d'enregistrer un message personnalisé dans le log de mise à jour (table bab_upgrade_messages)
dans le cas du noyau $addon_name doit être renseigné avec la constante BAB_ADDON_CORE_NAME.
$uid est un identifiant unique optionnel en chaîne de caractère qui peut être renseigné pour identifier un message.
bab_getUpgradeLogMsg($addon_name, $uid)
Permet de récupérer un message enregistré au préalable avec la fonction bab_setUpgradeLogMsg.
Cette fonction permet de vérifier si une tâche à été effectuée ou non.