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']);
}
}
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

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+
jjancel
13
Le switch n’est exécuté que sur les deux opérations que vous citez :
<?phpif ($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… ?
Numerizen
1822
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 !
jjancel
13
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.
Numerizen
1822
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
jjancel
13