Bonsoir à tous,
Là, je m'adresse aux spécialistes car je suis dans une impasse. Dans mon plugin Register_FluxBB, il manquait la fonction de récupération de comptes de FluxBB vers Piwigo. Pour la mettre en oeuvre, je me suis inspiré de ce qui est fait dans l'excellent plugin [extension by plg] User Mass Register en faisant un register_user($username, $password, $email, false) depuis le panneau d'admin du plugin.
Malheureusement, cela ne fonctionne pas car je fais appel au trigger "register_user" pour que les nouveaux inscrits sur la galerie le soient aussi sur le forum FluxBB lié par le plugin. Du coup, si je souhaite importer un compte existant dans FluxBB vers Piwigo, c'est le coup du serpent qui se mord la queue : Tentative d'inscription du compte = contrôle si le compte n'est pas déjà existant dans Piwigo + FluxBB. Résulat : Echec.
Je cherche donc le moyen de court-circuiter l'appel au trigger (placé dans le main.inc.php du plugin) uniquement lorsqu'un register_user() est lancé depuis le panneau d'admin du plugin. Mais il doit rester actif pour la page "register.php" ainsi que pour le gestionnaire d'utilisateurs de Piwigo (cas d'un utilisateur ajouté manuellement par un admin).
Et là, je sèche... J'ai essayé de m'appuyer sur un "if (script_basename() == 'xxxx')" où xxxx serait quelque chose du genre "admin.php?page=plugin-Register_FluxBB" mais, évidemment, çà ne fonctionne pas.
Si quelqu'un a une idée à me soumettre...
Merci par avance ;-)
Hors ligne
pourquoi pas
if (script_basename() == 'admin' && @$_GET['page'] == 'plugin-Register_FluxBB')
?
(en modifiant la seconde partir pour utiliser $page plutot que $_GET, mais je connais plus la structure exacte)
Hors ligne
Merci mistic100,
J'étais justement en train de fouiller dans ton plugin oAuth où tu fais appel à ceci :
strpos(@$_GET['page'],'plugin-'.OAUTH_ID)===false )
Mais si je peux passer par la syntaxe que tu proposes, c'est d'autant mieux ;-)
Je teste...
Hors ligne
Finalement, après plusieurs essais, j'ai fini par trouver et ceci fonctionne :
/* user creation*/ if (strpos(@$_GET['page'],'plugin') === false) { add_event_handler('register_user', 'Register_FluxBB_Adduser'); } // Check users registration if (strpos(@$_GET['page'],'plugin') === false) { add_event_handler('register_user_check', 'Register_FluxBB_RegistrationCheck', EVENT_HANDLER_PRIORITY_NEUTRAL, 2); }
En fait, l'URL résultant de l'action de synchro des comptes est de ce style "page=plugin§ion=Register_FluxBB%2Fadmin%2Fadmin.php&action=add2pwg&id=...". Du coup, dans $_GET['page'], ce n'est pas "plugin-Register_FluxBB" que je trouve mais "plugin".
J'aurais bien aimé cibler un peu plus que la page "plugin" mais bon, çà fonctionne comme çà ^^. Je vais quand même faire d'autres tests des fois que...
Merci encore, mistic100, pour m'avoir mis sur la piste :-)
Hors ligne
C'est ce qu'il me semblait avoir fait. J'ai dû oublier çà pour ce plugin.
Hors ligne