==== Base de données ==== Dans nos tests, nous avons utilisé MySQL comme SGBD. Les bases de données pour Framadate sont générées "en différentiel" : à partir de la base de données d'origine, on va exécuter plusieurs scripts PHP qui vont la modifier pour atteindre sa forme finale, il n'y a pas un unique script générant directement la base finale. Si vous souhaitez modifier la base de données, il vous faut implémenter une classe définie comme template située dans /app/classes/Framadate/Migration/migration.php **Pour pouvoir tester pour la première fois votre serveur (ie à chaque lancement du conteneur pour docker), il vous faudra lancer ces scripts.** Pour cela, il faut ouvrir la page /admin/migration.php (accessible depuis /admin). Pour atteindre cette page, on vous demandera normalement un user/mdp. Celui-ci est décrit dans /app/inc/config.php (fichier modifié par le entrypoint.sh lors du déploiement docker, avec les paramètres précisés dans le docker-compose.yml) \\ Afin d'apporter une modification à la base de données, il faut créer un fichier de migration (en s'inspirant de ceux déjà présents) et ajouter ce fichier à la liste des migrations à réaliser dans le fichier framadate/admin/migration.php. ==== Comment ajouter un script pour modifier la base de données ==== dans le dossier framadate/app/classes/Framadate/Migration, copié-collé un fichier de migration en l'adaptant à vos besoins. dans le fichier /var/www/framadate/admin/migration.php : - ajouter une ligne "use Framadate\Migration\VOTRENOMDECLASSE;" - ajouter une ligne "new ...(), new VOTRENOMDECLASSE()" à la fin du tableau $migration puis lancer la migration en ouvrant la page PHP /admin/migration.php \\ le fichier va lancer successivement les scripts, et stocker dans sa base de données les succès, les échecs et ceux qui n'ont pas été lancés car appartenant déjà à la liste des scripts passés en succès ==== exemple de code ==== class VOTRENOMDECLASSE implements Migration { function __construct() { } function description() { return 'message décrivant la modification'; } function preCondition(\PDO $pdo) { return true; } function execute(\PDO $pdo) { $this->VOTREFONCTION($pdo); return true; } private function VOTREFONCTION(\PDO $pdo) { //votre code SQL $pdo->exec(' ALTER TABLE `' . Utils::table('NOMTABLE') . '` ADD `NOM COLONNE` LETYPEPOURLACOLONNE;'); } }