Backup du SQL pour Centre/SIS

Publié le 22 juin 2012 par Menerve
La fonction de sauvegarde de la base de données PostgreSQL (Database Backup) n'est pas disponible dans la version téléchargeable de Centre/SIS. Or cela est bien pratique, et une sauvegarde récente peut sauver de situations dramatiques.
Focus SIS, un fork de Centre/SIS (une copie qui a ensuite évoluée indépendamment), qui était Open Source, disposait du SQL Backup. Il est téléchargeable ici: http://arborrow.jesuitscholar.com/focus_2.3.zip
Nous allons donc extraire le fichier qui gère la sauvegarde afin de le greffer à notre Centre SIS!
Dans l'archive de Focus, il convient de copier le fichier /modules/School_Setup/SystemPreferences.php et le renommer en DatabaseBackup.php
Ensuite, il convient de l'activer dans le menu du Paramétrage Ecoles:
1. Insérer dans la table profile_exceptions en exécutant cette instruction via PhpPgSql:
--
-- Data for Name: profile_exceptions; Type: TABLE DATA; 
--

INSERT INTO profile_exceptions (profile_id, modname, can_use, can_edit) VALUES (
1, 'School_Setup/DatabaseBackup.php', 'Y', 'Y');
2. Modifier le fichier /modules/Shool_Setup/Menu.php, ligne 4 ajouter:
//mod: add Database Backup
	'School_Setup/DatabaseBackup.php' =>_('Database Backup'),
Maintenant, allons voir ce que nous réserve ce fichier dans Centre/SIS: trois onglets, à savoir General, Default User Preferences et Database Backup. Les préférences sont déjà disponibles via le menu Utilisateurs. Dans General, on trouve différentes options de configuration, les ajouter à Centre serait intéressant mais cela n'est pas le but ici.
Ce qui nous intéresse donc, c'est la sauvegarde de la base de données.
Avant d'effectuer un test, nous allons élaguer le fichier pour garder seulement la partie backup.
On lui ajoute aussi une PopTable autour du formulaire, et un nom au fichier SQL plus significatif. On remplace _FOCUS_PDF par _CENTRE_PDF. Et comme l'encodage de la base est UTF8, on enlève le utf8_decode.
Test: ca marche à deux poils près:
1. On se retrouve avec des messages d'erreurs concernant ereg_replace() (obsolète en PHP5), que l'on remplace alors par preg_replace()
2. Les champs des tables ne sont pas dans le bon ordre... Il faut trier par numéro de champ (attnum).
Nous voilà enfin bon, à priori!
Voici les fichiers SQL et DatabaseBackup.php à télécharger.
Outre cela, le script PHP est un bon exemple de dump de base PostgreSQL qui peut être généralisé :)