-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Salut, Le 23/09/2011 12:09, Mélissa Djebel a écrit :
Bonjour à tous, Avec mon oncle, on a choisit Galette pour la gestion d'un aéroclub.
Pour ne pas ré-inventer la roue, on souhaite partir de Galette 0.7 et ajouter des plugins pour la gestion spécifique à l'aéroclub.
Jusqu'à présent la gestion se faisait entièrement en Access2 sur un
vieux Win2K. Ça va vous changer un peu ! ;)
Dans un premier temps, je chercher à faire une chose en particulier : - importer les membres de l'Access2 dans Galette 0.7. Pour ce faire,
j'ai un fichier CSV avec tous les membres et les données habituelles dont certaines sont à stocker dans la table "galette_adherent" et une autre partie dans une table complément pour simplifier la gestion avec un clef étrangère sur "pseudo_adh".
La table de complément ressemble à ça : [...] Et là où je suis totalement plantée et je n'arrive pas à avancer, c'est
quelle classe je dois créer dans mon plugin et comment l'interfacer avec Zend pour faire un insert ou un update. C'est une question vaste, pas facile d'y répondre précisément... Je pense qu'une idée serait de prendre le code d'une classe existante assez simple (soit dans Galette, soit dans les plugins Auto ou Paypal), de voir comment ça fonctionne, et d'essayer de monter quelque chose de "simple" à partir de ça (ie. enregistrer « bêtement » les données dans la nouvelle table serait un fort bon début je pense).
L'import des données ne va pas être fait en one-shot mais va être fait
régulièrement tant que le gros système de comptabilité derrière en Access2 continue sa vie en attendant de migrer petit à petit vers Galette 0.7.
Quelqu'un peu m'expliquer succinctement comment trouver si l'adherent
existe déjà via son pseudo, mettre à jour ses infos, enregistrer les modifs (en insert ou update, selon). Pour la table de complément, je devrais pouvoir comprendre à partir de l'exemple sur les adherents. Même si un début de class pourrait m'aider. Pour savoir si un adhérent existe, tu peux éventuellement utiliser la méthode "loadFromLoginOrMail" de la classe Adherent. L'ajout et la modification passent par la classe existante, qui attend pour le moment un tableau avec l'ensemble des valeurs à attribuer (en somme le $_POST envoyé par le formulaire adhérent actuel). Par exemple : $valeurs = array( 'nom_adh' => 'Nom', 'prenom_adh' => 'Prénom', 'ville_adh' => 'Paris', ... ); $a = new Adherent(); //les champs désactivés (les mêmes que sur self_adherent) - optionnel (à priori) $inactifs = $a->disabled_fields + $a->edit_disabled_fields; //les champs requis - optionnel (à priori) - gérés par une classe à part $required = new Required(); $requis = $required->getRequired(); //stockage des valeurs dans l'objet et vérifications (formatage des dates, etc, etc) $ok = $member->check($valeurs, $requis, $inactifs); //si tout est OK, on peut enregistrer dans la base if ( $ok === true ) { $member->store(); } La liste des champs requis et optionnels peut-être optionnelle ; je n'ai pas testé ce cas de figure (c'est nécessaire partout dans Galette).
Idéalement, j'ai pensé que ma classe de pilote_adherent_complement
devait hériter de adherent, non ? Dans l'absolu, oui, la nouvelle classe devrait hériter de adherent ; mais je crains que ce ne sera pas aussi simple que ça, notamment pour intégrer le tout ensemble :( Le système de plugins tel qu'il est implémenté actuellement reste très rudimentaire ; je me suis cantonné à implémenter des fonctionnalités complètement annexes, rien encore qui modifie ou étende la fiche adhérent. Je vais essayer de réfléchir un peu à la meilleure façon d'implémenter cette fonctionnalité ; ça demande un peu de réflexion. Les autres avis sont les bienvenus ! Si j'ai l'idée du siècle, je pourrai essayer de faire un début de classe ; je ne sais pas encore si j'aurai assez de temps ce week-end pour m'en occuper ; je te la ferai parvenir dans ce cas.
D'avance merci, Mélissa
En espérant que ça aide un peu :-) Bon courage ! SI vous avez d'autres questions, n'hésitez pas. @+ Johan PS : la liste galette-devel serait certainement plus adaptée pour ce type de discussion ;-) -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk58tRIACgkQ7N2B+4uln5SmHwCgxtPjgNQ9oZBPEjXbmCq9BbN4 aw4AoM5h5Mvql+afj0mnzmIj54pOVB8l =ny+s -----END PGP SIGNATURE-----