Pages: 1
Bonjour ;
suite à une proposition de Patricia ([Forum, post 145245 by Patricia in topic 12775] [Plugin] nbc UserAdvManager), l'addition des lignes ci-dessous dans le plugin personnel permet de rediriger systématiquement (ce qui n'est peut-être pas forcément le plus pratique) les visiteurs vers la page "Personnalisation" après qu'ils se sont identifiés :
add_event_handler('login_success', 'RedirectToProfile'); function RedirectToProfile() { redirect(PHPWG_ROOT_PATH.'profile.php'); }
Bon, c'est du vite fait, je n'ai testé cela qu'une seule fois :-/ ...
Hors ligne
Bon, j'ai eu un peu de mal |-( ... mais la version ci-dessous permet de ne forcer les utilisateurs vers leur page de personnalisation que lors de leur première identification
// check_consult // checks if a user id is registered as having already // visited his profile.php page. // @uid : the user id // @user_idsOK : (returned) array of all users ids having already visited // their profile.php pages // // @returns : true or false whether the users has already visited his // profile.php page or not function check_consult($uid, &$user_idsOK) { $t = array(); $v = false; if ($v = ( ($t = mysql_fetch_row(pwg_query(" SELECT `value` FROM `".CONFIG_TABLE."` WHERE `param` = 'redir_profile'; "))) !== false) ) { $user_idsOK = explode(',', $t[0]); $v = (in_array($uid, $user_idsOK)); } return $v; } // RedirectToProfile // redirects a visitor (not generic (forbidden) neither admin) to his // profile.php page // // no variable, no return add_event_handler('login_success', 'RedirectToProfile'); function RedirectToProfile() { global $user; if (!is_generic() and !is_admin()) { $user_idsOK = array(); if (!check_consult($user['id'], $user_idsOK)) redirect(PHPWG_ROOT_PATH.'profile.php'); } } // RegisterProfileConsult // registers a user id when a visitor visits his profile.php page. // Checks if the value "redir_profile" of table <pwg>_config exists or not, // and creates it if needed. // // no variable, no return add_event_handler('loc_begin_profile', 'RegisterProfileConsult'); function RegisterProfileConsult() { global $user, $template, $errors; $user_idsOK = array(); if (!check_consult($user['id'], $user_idsOK)) { $user_idsOK[] = $user['id']; if (!mysql_fetch_row(pwg_query(" SELECT `value` FROM `".CONFIG_TABLE."` WHERE `param` = 'redir_profile'; "))) { $v = (pwg_query(" INSERT INTO `".CONFIG_TABLE."` (`param`,`value`,`comment`) VALUES ('redir_profile', \"".implode(',', $user_idsOK)."\" ,'Ids of users having checked their profile page at least once'); ") === false); } else { $v = (pwg_query(" UPDATE `".CONFIG_TABLE."` SET `value` = \"".implode(',', $user_idsOK)."\" WHERE `param` = 'redir_profile'; ") === false); } if ($v) { $errors[]='Unable to register user id '.$user['id'].' in redir_profile'; $template->assign('errors', $errors); } } }
A priori, NE FONCTIONNE PAS avec une "entrée" pour "visiteur" (généralement ce sont des "génériques") de [extension by LucMorizur] Event Cats.
Dernière modification par LucMorizur (2010-06-08 22:32:47)
Hors ligne
Salut Luc,
Juste une remarque sur le code que tu présentes: L'exclusion des administrateurs ne fonctionne pas sur la fonction RedirectToProfile(). A priori (j'espère me tromper...), le trigger 'login_success' ne permet pas de différencier le statut de l'utilisateur qui se connecte à la galerie.
Comme tu le sais, je tente une adaptation de ton astuce dans mon plugin UAM et je n'ai pas encore trouvé de solution pour que les admins ne soient pas redirigés. A suivre...
Hors ligne
Eric a écrit:
Salut Luc,
Juste une remarque sur le code que tu présentes: L'exclusion des administrateurs ne fonctionne pas sur la fonction RedirectToProfile(). A priori (j'espère me tromper...), le trigger 'login_success' ne permet pas de différencier le statut de l'utilisateur qui se connecte à la galerie.
Comme tu le sais, je tente une adaptation de ton astuce dans mon plugin UAM et je n'ai pas encore trouvé de solution pour que les admins ne soient pas redirigés. A suivre...
Ah désolé c'est pas moi, c'est le trigger 'login_success' qui est au mauvais endroit..............
Non, bon, je pense pas que ça marche comme argument...
Effectivement le plus probable c'est qu'à ce moment-là du script, le statut du compte tout juste validé, ne soit pas encore établi, et donc pas consultable par la fonction is_admin(). Et c'est bien embêtant. Et bien évidemment, le bug est présent aussi pour les utilisateurs génériques.
Je pense qu'il n'y a pas trop le choix ; à moins d'utiliser un autre trigger mieux placé :-/ ... , il faut remplacer les fonctions is_admin() et is_generic() dans RedirectToProfile() par des tests sur <pwg>_user_infos :-( ...
Hors ligne
Au fait, merci beaucoup d'inclure cette fonctionnalité dans UAM :-) !
Dernière modification par LucMorizur (2010-08-17 23:23:16)
Hors ligne
LucMorizur a écrit:
Je pense qu'il n'y a pas trop le choix ; à moins d'utiliser un autre trigger mieux placé :-/ ... , il faut remplacer les fonctions is_admin() et is_generic() dans RedirectToProfile() par des tests sur <pwg>_user_infos :-( ...
Déjà testé la table #_user_infos: Pas mieux... Pourtant çà devrait fonctionner pour des utilisateurs déjà inscrits, qu'ils soient ou pas admin. J'ai dû faire une boulette quelque part. Je reprendrai çà ce soir et je tâcherai de tracer ce qu'il se passe à ce moment pour l'admin.
Hors ligne
Pages: 1