problème de hook_user

Catégories:

je veux ajouter dans mon module une fonction qui prenne des infos à la connexion du user et les mettent en base mais rien n’est effectué avec le code ci dessous.
une idée ? merci..

function login_user($op, &$edit, &$account, $category = NULL){
global $user ;

switch($op){

case 'form':
$form['remember_me'] = array('#type' => 'checkbox',
'#title' => t('Conserver ma session pendant 24 heures'),
'#default_value' => $edit['remember_me'],
'#required' => FALSE,
);

return $form;
case 'login':
$res = db_query("INSERT INTO {login} (uid, connectime, remember_me) VALUES (%d, %d, %d)",$user->uid, time(),$form['remember_me']);

}

}

#

Salut même probleme de hook_user
Je souhaite mettre une table à jour avec la fonction hook_user drupal6.
J’ai donc construit un module de test et la je ne comprends plus rien !
Les seules actions que je peux intercepter sont :
view => pour l’affichage du node users
form => lors de la modification du user
il ni a aucun message pour les autres actions, qu’est ce qui nous echappe dans l’utilisation de cette function hook_user() ?
par exemple comment intercepter les modifications de l’identifiant ou du mot de passe ?
voici le code de test :

function test_user($op, &$edit, &$account, $category = NULL){
  global $user ;
  if ($op == 'view' || $op == 'form') {
    switch ($op) {
      case 'after_update':
        drupal_set_message('Action after_update');
        print "<script type='text/javascript'>alert(\"Action after_update\")</script>";
        break;
      case 'delete': // Modifier
        drupal_set_message('Action delete');
        print "<script type='text/javascript'>alert(\"Action delete\")</script>";
        break;
      case 'form': // Modifier
        drupal_set_message('Action form');
        print "<script type='text/javascript'>alert(\"Action form\")</script>";
        break;
      case 'insert':
        drupal_set_message('Action insert');
        print "<script type='text/javascript'>alert(\"Action insert\")</script>";
        break;
      case 'load':
        drupal_set_message('Action load');
        print "<script type='text/javascript'>alert(\"Action load\")</script>";
        break;
      case 'login':
        drupal_set_message('Action login');
        print "<script type='text/javascript'>alert(\"Action login\")</script>";
        break;
      case 'logout':
        drupal_set_message('Action logout');
        print "<script type='text/javascript'>alert(\"Action logout\")</script>";
        break;
      case 'register':
        drupal_set_message('Action register');
        print "<script type='text/javascript'>alert(\"Action register\")</script>";
        break;
      case 'submit':
        drupal_set_message('Action submit');
        print "<script type='text/javascript'>alert(\"Action submit\")</script>";
        break;
      case 'update':
        drupal_set_message('Action update');
        print "<script type='text/javascript'>alert(\"Action update\")</script>";
        break;
      case 'validate':
        drupal_set_message('Action validate');
        print "<script type='text/javascript'>alert(\"Action validate\")</script>";
        break;
      case 'view': // Voir
        drupal_set_message('Action view');
        print "<script type='text/javascript'>alert(\"Action view\")</script>";
        break;
    }
  }
}

A+

#

Le switch n’est exécuté que sur les deux opérations que vous citez :

<?php
if ($op == 'view' || $op == 'form') {
?>

… donc sur n’importe quoi d’autre, rien ne se passera.

Sinon il y a ça : http://api.drupal.org/api/drupal/developer—hooks—core.php/function/hoo… ?

#

effectivement j’ai mis cette condition
car si j’enlève le if ($op == ‘view’ || $op == ‘form’
au chargement de la page $op = ‘load’ est exécuter 15 fois !

#

Peut-être bien, mais il ne faut pas incriminer le hook alors que c’est votre code qui dit explicitement qu’il faut que rien ne se passe sur les autres actions.

#

oui merci
je ne cherche pas à incriminer le hook ,
je cherche à comprendre son mécanisme
afin d’enregistrer des informations dans une table,
par exemple a la mise à jour du compte d’un user
et je suis surpris que mon module soit exécuté plus de 15 fois à chaque affichage

Syndiquer le contenu