Salut à tous.
Avant de basculer ma galerie 1.6.2 vers cette petite merveille de 1.7.0, il me faudrait basculer des Mods en Plugins. Le plus important, pour moi, c'est le Mod Register_PunBB.
Quelqu'un (flipflilp, nicco,... ?) est-il déjà sur la brèche ? J'opterai bien pour le "do it yourself" mais, doué comme je suis, il me faudrait beaucoup de temps.
Alors, éventuellement, si d'aventure le chaudron est déjà sur le feu...
PS : Je vais quand même tenter quelques chose côté plugin...
Hors ligne
alors voici du tout neuf ...
je commence a lire les docs maintenant enfin depuis 45 min !
pour me mettre un coup de pied au cul, j ai basculé ma galerie en 1.7 ... donc maintenant je vais bien etre obligé de faire les plugins ;o)
des que j ai des infos je poste !!!
A+
PS : c est chaud quand meme de tout remettre a plat
Hors ligne
Allez, j'ai pas pu résister (trop pressé de migrer mes galeries en prod vers la 1.7.0 !) :
Je me suis lancé dans l'adaptation du Mod Register_PunBB en plugin.
Voici le cahier des charges :
* But => Utiliser PWG pour syndiquer les inscriptions sur un forum PunBB. Les utilisateurs s'inscrivant sur la galerie seront également inscrits sur le forum. La réciproque ne pouvant être vrai, il conviendra soit de désactiver l'inscription sur le forum soit de considérer que les utilisateurs peuvent s'inscrire sur le forum et lui seul.
* Contraintes d'utilisation => Comme pour le Mod. A savoir que toutes les opérations d'ajout et de suppression d'utilisateurs inscrits devront se faire via PWG.
* Interface du plugin => Outre l'installation et l'activation classique du plugin, un panneau d'administration du fichier de configuration doit permettre à l'administrateur de la galerie de régler/modifier les paramètres du plugin pour une intégration correcte des données utilisateur vers la table _users de PunBB. Un fichier de configuration par défaut doit être initialisé au moment de l'activation du plugin (sinon, bug !). Les paramètres du fichiers devront reprendre les données du Mod inscrites dans le fichier config_local.inc.php.
// +-----------------------------------------------------------------------+ // | PunBB | // +-----------------------------------------------------------------------+ // Activer ou Désactiver l'enregistrement dans PunBB $conf['punbb_status'] = true; // Préfixe des tables de punbb $conf['punbb_prefix'] = 'forum_'; // Id du group par défaut. // Si vous n'avez pas fait de modification de PunBB // par défaut 4 correspond au groupe members $conf['punbb_id_default_group'] = 4; // Nom d'utilisateur de l'administrateur de PWG // Doit être identique à celui de PunBB $conf['punbb_admin'] = 'admin'; // Parametre de visibilité des emails // 0 --> Afficher votre adresse e-mail. // 1 --> Cacher votre adresse e-mail mais autoriser le formulaire e-mail. // 2 --> Cacher votre adresse e-mail et interdire le formulaire e-mail. $conf['punbb_email_setting'] = 1; // Parametre pour la sauvegarde du mot de passe // 0 --> Ne pas mémoriser le nom d'utilisateur et le mot de passe entre les visites. // 1 --> Mémoriser le nom d'utilisateur et le mot de passe entre les visites. $conf['punbb_save_pass'] = 0; // En activant cette option, une version en texte brut du nouveau message sera incluse dans l'avis d'abonnement par e-mail. // 0 --> Désactivé // 1 --> Activé $conf['punbb_notify_with_post'] = 1; // Zone de temps // de '-12' à '14' $conf['punbb_timezone'] = '1'; // Langage // French // English $conf['punbb_language'] = 'English'; // Style du forum $conf['punbb_style'] = 'Cobalt'; // Suppression des topics et post de l'utilisateur // 0 --> Supprimer tout // 1 --> Ne supprime pas les posts et les topics $conf['punbb_del_pt'] = 1;
Cà, c'est la théorie. En pratique, j'ai établi l'interface d'administration du futur plugin (c'est le plus facile !). Maintenant, il me faut identifier les triggers nécessaires pour suivre l'ajout et la suppression des utilisateurs.
Je pense que le trigger register_event_handler('delete_user', 'my_action_on_delete_user'); (donné dans le wiki anglais) est valide. Il doit surement être accompagné par son homologue register_event_handler('add_user', 'my_action_on_add_user');.
J'ai bon ?
Sinon, j'aurais bien tenté de sur-surcharger le fichier config_local.inc.php avec les données de configuration mais je ne sais pas comment faire. Alors, je m'oriente vers un fichier de config type data.dat et un array pour la récupération des données et leur modifications. Mais là, encore, je crains que les fonctions du plugin ne trouvent pas les paramètres nécéssaires...
Bref, je creuse...
Hors ligne
Salut, j'écris juste pour dire que n'utilisant plus de forum je ne peux pas faire le portage vers PhpWebGallery 1.7.
Les plugins n'ont normalement plus besoin d'utiliser le fichier config_local.inc.php, ils peuvent avoir leurs propres configuration. J'ai utilisé le système data.dat en exemple sur mon wiki : http://flipflip.ovh.org/wiki/doku.php?id=plugin . C'est facil à mettre en place et à comprendre. Pour les paramètres par défaut soit tu utilise un fichier data.dat préconfigurer alors tu le gère depuis l'appel du menu d'administration.
Bon courage.
Hors ligne
flipflip a écrit:
Les plugins n'ont normalement plus besoin d'utiliser le fichier config_local.inc.php, ils peuvent avoir leurs propres configuration. J'ai utilisé le système data.dat en exemple sur mon wiki : http://flipflip.ovh.org/wiki/doku.php?id=plugin . C'est facil à mettre en place et à comprendre. Pour les paramètres par défaut soit tu utilise un fichier data.dat préconfigurer alors tu le gère depuis l'appel du menu d'administration.
En fait, après réflexion et mise en place de plugin, je ne pense pas que le fichier data.dat soit une bonne solution car il y a 1 chance sur 2 que lors de la mise à jour d'une version e PWG le fichier soit supprimé (mais c'est vrai que c'est simple à implémenter).
Mieux vaut taper dans la table #conf, c'est simple en plus avec le install & desinstall.
Pour ne pas avoir trop de paramètre, on peut aussi avoir une seule ligne dans $conf avec les valeurs stockés dans un champs serialize!
Je pense aussi que pour la 1.8 on devrait offrir de base, des fonctions de lecture/écriture/suppression de paramètre pour les plugins et donc pas forcement dans #conf.
C'est un peu HS mais on peut ouvrir un topic sur ca si nécessaire ;-)
Hors ligne
rub a écrit:
Mieux vaut taper dans la table #conf, c'est simple en plus avec le install & desinstall.
Euh... Là, je suis un peu satellisé... Allo, Houston ? Je crois qu'on a un problème ;-)
Plus sérieusement, je ne connais pas cette méthode de "taper dans la table #conf. On peut expliquer, svp ? Cà m'aiderai surement pour le plugin.
Hors ligne
Eric a écrit:
rub a écrit:
Mieux vaut taper dans la table #conf, c'est simple en plus avec le install & desinstall.
Euh... Là, je suis un peu satellisé... Allo, Houston ? Je crois qu'on a un problème ;-)
Plus sérieusement, je ne connais pas cette méthode de "taper dans la table #conf. On peut expliquer, svp ? Cà m'aiderai surement pour le plugin.
La suite http://forum.phpwebgallery.net/viewtopi … 986#p59986
Hors ligne
Après avoir galéré un peu pour la gestion des paramètres, je suis bloqué dans l'exécution du plugin lui-même.
J'ai identifié les triggers suivants :
pwg_register_user => Pour l'ajout d'utilisateur
pwg_delete_user => Pour la suppression d'un utilisateur
Mais je n'ai pas trouvé de trigger pwg_update_user pour la mise à jour d'un utilisateur déjà présent.
De toute façon, j'ai dû me planter quelque part car l'ajout et la suppression ne fonctionnent pas (un ajout ou une suppression d'utilisateur dans PWG doit se traduire par la même action dans la table #_users de PunBB).
Bref, c'est loin d'être gagné pour ce plugin. Je vais tenter de me dépatouiller mais il est possible que je crie "à l'aide" ici, d'ici peu.
Consolation : le Mod Register_PunBB est compatible 1.7.0. Je sais, c'est mal. Mais c'est toujours çà en attendant que je trouve un donneur compatible pour une greffe de neurones ;-)
Hors ligne
Pfff... Je ne sais pas si c'est moi mais je patauge lamentablement avec ce plugin Register_PunBB. Voilà où j'en suis :
- Installation du plugin : OK => Création d'une table supplémentaire + ajout de paramètres dans la table #_config
- Désinstallation du plugin : OK => DROP de la table ajoutée OK + suppression des paramètres ajoutés dans la table #_config
- Activation du plugin : OK => Insertion d'un panneau d'administration propre au plugin avec remontée des infos de config issues de la table #_config
- Gestion des paramètres : OK => Les paramètres sont tous modifiables, l'update en BDD est opérationel
Maintenant (çà fait 2 nuits !), je tente de ré apprivoiser les triggers (je pensais que j'avais pigé après le plugin Stats_IP_Excluder... Faut croire que non :( ). Pour çà, je suis parti sur la simple fonction d'ajout (inscription) d'un nouvel utilisateur dans PWG.
J'ai identifié le trigger register_user qui devrait coller avec ce que je veux faire. C'est à dire : dupliquer l'utilisateur qui s'inscrit dans la table #_users vers la table PunBB#_users en récupérant certains champs. Concrètement, çà donne çà :
(...) if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); add_event_handler('pwg_register_user', 'reg_punbb_adduser'); //add_event_handler('pwg_delete_user', 'reg_punbb_deluser'); /* TODO */ //add_event_handler('pwg_update_user', 'reg_punbb_update_profile'); /* TODO */ add_event_handler('get_admin_plugin_menu_links', 'plugin_admin_menu'); /* Done ! */ global $rpun_dir; $rpun_dir = basename( dirname(__FILE__) ); /* Set the administration panel of the plugin */ /* This works ! */ function plugin_admin_menu($menu) { array_push($menu, array( 'NAME' => 'Register PunBB', 'URL' => get_admin_plugin_menu_link(dirname(__FILE__).'/admin/reg_punbb_admin.php') ) ); return $menu; } /* Plugin Add user functions */ /* This don't work - Why ? */ function reg_punbb_adduser() { include_once( dirname(__FILE__) .'/include/constants.php'); // Password hash if (function_exists('sha1')) // Only in PHP 4.3.0+ { $password = sha1($_POST['password']); } else if (function_exists('mhash')) // Only if Mhash library is loaded { $password = bin2hex(mhash(MHASH_SHA1, $_POST['password'])); } else { $password = md5($_POST['password']); } $registred = time(); $registred_ip = $_SERVER['REMOTE_ADDR']; $query = " INSERT INTO ".$conf['punbb_prefix']."users (username, group_id, password, email, email_setting, save_pass, timezone, language, style, registered, registration_ip, last_visit) VALUES('".$_POST['login']."', '".$conf['punbb_id_default_group']."', '".$password."', '".$_POST['mail_address']."', '".$conf['punbb_email_setting']."', '".$conf['punbb_save_pass']."', '".$conf['punbb_timezone']."', '".$conf['punbb_language']."', '".$conf['punbb_style']."','".$registred."', '".$registred_ip."', '".$registred."');"; $result = pwg_query($query); // Get PunBB user ID $id_user_punbb = mysql_insert_id(); // Get PWG user ID $user_id_pwg = get_userid($_POST['login']); // Insert PWG and PunBB user ID $query = " INSERT INTO ".MOD_REGISTER_PUNBB_ID." (id_user_pwg, id_user_punbb) VALUES('".$user_id_pwg."', '".$id_user_punbb."');"; $result = pwg_query($query); }
Le fichier ./include/constants.php ne contient que:
<?php define('MOD_REGISTER_PUNBB_ID', $prefixeTable.'mod_register_punbb_id_user'); ?>
Je dois avoir une coquille quelque part ou alors j'ai vraiment rien pigé mais la fonction reg_punbb_adduser() ne s'exécute pas.
J'ai l'impression d'être un éternel débutant qui ne progresse jamais :-/ En php, c'est "le jour de la marmotte" pour moi. Nicco, flipflip, rub ? Et toute autre âme charitable ? Je prendrai bien un doigt de "coup de main".
Hors ligne
et dire que moi pendant ce temps la je vais voir spider-man 3 au ciné !!!
je suis lamentable ... enfin j ai quand meme passé pas mal de temps ce we a faire des tests sur faire un plugin et les trigger et j avoue que je suis aussi un peu en galere ( un peu .... beaucoup ) !
je suis desole Eric mais en ce moment tu es plutot mon lievre sur la course au plugin car moi je n avance pas !!!
vu que je veux comprendre avant de me lancer dans un vrai plugin je fais des test stupide pour ajouter de details pour tester les trigger et le resultat n est pas a la hauteur de mon temps passé !!!
en plus je suis booké au taff et je sors toute cette semaine donc rdv ce we
a+ et bon courage le premier qui comprend explique a l autre ;o)
Hors ligne
Dans la série "je suis un gland... mais je me soigne!", j'ai trouvé pourquoi le trigger ne fonctionnait pas :
Au lieu de :
add_event_handler('pwg_register_user', 'reg_punbb_adduser');
il faut :
add_event_handler('register_user', 'reg_punbb_adduser');
Ce qui relance le dev de ce plugin ! Grrr.... 5 jours à me faire des noeuds au neurone (oui, à ce niveau, je n'en ai définitivement qu'un :-s), çà promet pour la suite.
Hors ligne
Je reviens pour refaire le point sur les derniers dev du plugin : Les choses avancent lentement mais surement !
- La fonction d'ajout d'un utilisateur dans la table #_users de PunBB lorsqu'il s'inscrit sur PWG est OK. Seul pb, il y a un bug lorsqu'un admin ajoute un utilisateur via le panneau d'admin de PWG. J'ai l'erreur suivante :
Notice: Undefined index: mail_address in ...\phpwebgallery\plugins\Register_Punbb\reg_punbb_adduser.php on line 54
Je sais pourquoi cela se produit : Parce que le mécanisme n'est pas le même que lorsque un utilisateur s'enregistre lui-même (pourtant, le trigger est déclenché de la même manière). Les données inscrites dans le formulaire (login, mot de passe, email) de ./admin/user_list.php ne sont pas remontées dans le plugin...
- La fonction de suppression (par le panneau d'admin de PWG) d'un utilisateur enregistré fonctionne... presque :-/ J'ai le même pb que pour l'ajout via le panneau d'admin : Je n'arrive pas à récupérer les variables issues de ./admin/user_list.php; notamment le $user_id passé dans la fonction delete_user (ligne 270 du fichier user_list.php).
J'ai la cause mais pas la solution pour résoudre çà. J'ai essayé de faire un include de user_list.php dans reg_punbb_adduser.php et reg_punbb_deluser.php mais sans succès.
Comme, vous le savez déjà tous, je ne suis pas une flèche en php... Un petit coup de main ? Svp ? Merci ?
[Edit]
J'oubliais une dernière petite chose : Est-il possible de surcharger le fichier ./include/constants.php ?
Par exemple, pour le présent plugin, j'ai besoin de déclarer une nouvelle table. Elle est créée à l'installation du plugin mais il faudrait qu'elle soit présente dans constants.php tel que :
define('PLUGIN_REGISTER_PUNBB_ID', $prefixeTable.'plugin_register_punbb_id_user');
J'ai créé un dossier "include" sous le répertoire du plugin dans lequel j'ai mis un fichier constants.php ne contenant que la ligne ci-dessus. Mais il ne semble pas pris en compte par mon code.
Pour que cela fonctionne, je suis obligé de modifier le constants.php original. Mais c'est mal : On ne touche pas au noyau de PWG, c'est le but des plugins ! Alors je cherche une solution...
[/Edit]
Dernière modification par Eric (2007-05-19 23:32:05)
Hors ligne
Une petite coupure avec le codage et on revient avec un regard neuf !
Les choses avances. J'ai résolu les problèmes évoqués dans le post précédent. Donc !
- Les utilisateurs qui s'enregistrent sur PWG le sont aussi sur PunBB (copie des paramètres du compte vers la table #_users de PunBB)
- Si l'admin ajoute un utilisateur "à la main" via le panneau d'admin des utilisateurs => Réplication vers la table #_users de PunBB
- La suppression d'utilisateurs dans l'interface d'admin de PWG se répercute sur la table #_users de PunBB
Maintenant, je m'attaque à la mise à jour d'un user existant. Il y a trois paramètres de l'utilisateur inscrit qui sont répliqués dans la table #_users de PunBB : username, password et email.
Si un utilisateur inscrit change son mot de passe dans PWG (il le peut dans la personnalisation), il faut que cette modif soit répercutée sur la table #_users de PunBB.
Problème : Il ne semble pas y avoir de trigger dans le profile.php qui contient la fonction d'update des comptes.
Alors, appel discret au Team : L'ajout d'un trigger dans profile.php est-il envisageable ?
Hors ligne
Bonjour,
juste une petite question peut être hors sujet vous m'en voyez désolé.....
Le plugin PunBB et phpbb sont deux plugin distinct n'est-il pas ????
Car le plug update me dit que ma version phpBB 1.1 doit être mise à jour avec PunBB 1.3 .... o_Ô c'est normal?
Merci ;)
Hors ligne
juanpa a écrit:
Car le plug update me dit que ma version phpBB 1.1 doit être mise à jour avec PunBB 1.3 .... o_Ô c'est normal?
Salut.
Oups ! J'ai merdu dans le fichier de langue. Je corrigerai dès que...
Merci pour le retour !
[edit] Bah non, pas de soucis trouvé sur mes plugins. Il est possible que ce soit le plugin Update qui ait un pb. Je ne sais pas comment il fonctionne pour repérer les màj. Je me rencarderai ce soir. [/edit]
Dernière modification par Eric (2007-08-06 14:06:21)
Hors ligne