•  » Trucs et astuces
  •  » Rediriger vers la page personnalisation après l'identification

#1 2010-06-06 18:16:12

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Rediriger vers la page personnalisation après l'identification

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 :

Code:

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

#2 2010-06-07 01:12:12

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Rediriger vers la page personnalisation après l'identification

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

Code:

// 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

#3 2010-08-17 21:56:41

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Rediriger vers la page personnalisation après l'identification

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

#4 2010-08-17 23:22:03

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Rediriger vers la page personnalisation après l'identification

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

#5 2010-08-17 23:23:04

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Rediriger vers la page personnalisation après l'identification

Au fait, merci beaucoup d'inclure cette fonctionnalité dans UAM :-) !

Dernière modification par LucMorizur (2010-08-17 23:23:16)

Hors ligne

#6 2010-08-18 13:47:38

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Rediriger vers la page personnalisation après l'identification

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

  •  » Trucs et astuces
  •  » Rediriger vers la page personnalisation après l'identification

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact