•  » Plugins
  •  » [Résolu] [Dev Plugins] Trigger save_profile_from_post

#1 2010-05-31 22:08:37

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

[Résolu] [Dev Plugins] Trigger save_profile_from_post

Bonjour à tous / toutes.

J'ai quelques difficultés à utiliser le trigger save_profile_from_post présent dans profile.php. Je pense ne pas me gourer en disant qu'il permet d'enregistrer des informations supplémentaires aux données d'un profil.

J'ai ajouté une donnée supplémentaire dans le formulaire du profil par le biais d'un préfiltre de template (set_prefilter()). Comme pour les autres données de ce formulaire, la valeur affichée est celle sauvée dans une table de la base de données pour le profil considéré.

Mon problème est que j'ai beau modifier la valeur de cette nouvelle donnée, elle ne s'enregistre pas en base de données. Pourtant la variable $_post() est bien initialisée. Alors je me pose des question sur mon emploi correct ou pas du trigger save_profile_from_post.

Voici mon code:

Code:

add_event_handler('save_profile_from_post', 'NBMS_Save_Profile');

function NBMS_Save_Profile()
{
  global $conf;
  
  if ($_POST['NBM_Subscription'] == 'true')
  {
  $query = '
UPDATE '.USER_MAIL_NOTIFICATION_TABLE.'
  SET enabled = \'true\'
  WHERE user_id = \''.$user['id'].'\';';

  pwg_query($query);
  }
  elseif ($_POST['NBM_Subscription'] == 'false')
  {
    $query = '
UPDATE '.USER_MAIL_NOTIFICATION_TABLE.'
  SET enabled = \'false\'
  WHERE user_id = \''.$user['id'].'\';';

    pwg_query($query);
  }
}

Merci d'avance pour vos avis éclairés ^^

Hors ligne

#2 2010-05-31 23:21:45

nicolas
Former Piwigo Team
2004-12-30
1566

Re: [Résolu] [Dev Plugins] Trigger save_profile_from_post

Eric a écrit:

Merci d'avance pour vos avis éclairés ^^

Je ne vais pas tellement faire avancer le schmilblick mais que $_POST['NBM_Subscription'] soit égal à true ou à false ta requête est toujours la même !

Donc le code peut s'écrire :

Code:

if (!empty($_POST['NBM_Subscription']) && in_array( $_POST['NBM_Subscription'], array('true', 'false')))
{
  $query = '
UPDATE '.USER_MAIL_NOTIFICATION_TABLE.'
  SET enabled = \''.$_POST['NBM_Subscription'].'\'
  WHERE user_id = \''.$user['id'].'\';';

  pwg_query($query); 
}

Donnez du peps à vos tags
Laissez vos visiteurs vous aidez à tagger vos images avec user_tags

Hors ligne

#3 2010-05-31 23:27:41

tosca
Former Piwigo Team
Cévennes (Gard)
2006-09-23
3818

Re: [Résolu] [Dev Plugins] Trigger save_profile_from_post

nicolas a écrit:

Je ne vais pas tellement faire avancer le schmilblick mais que $_POST['NBM_Subscription'] soit égal à true ou à false ta requête est toujours la même !

Donc le code peut s'écrire :
...

Merci, nicolas ... j'avais commencé à écrire la même chose et je me suis perdue en route dans les quotes ;-)

Hors ligne

#4 2010-06-01 12:46:48

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

Re: [Résolu] [Dev Plugins] Trigger save_profile_from_post

nicolas a écrit:

Je ne vais pas tellement faire avancer le schmilblick mais que $_POST['NBM_Subscription'] soit égal à true ou à false ta requête est toujours la même !

Oui, le code de mon post initial était détaillé pour "forcer" la valeur que peut prendre $_POST['NBM_Subscription'] à des fins de test. Effectivement, au final, ce n'est qu'une seule requête ;-)

Maintenant, cette requête ne se réalise pas quelque soit la valeur prise par $_POST['NBM_Subscription']. Je pense donc qu'il y a un problème au niveau du trigger pour que ma requête soit prise en compte lorsqu'on valide le formulaire du profil. Je me trompe?

Hors ligne

#5 2010-06-01 17:33:47

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

Re: [Résolu] [Dev Plugins] Trigger save_profile_from_post

J'ai publié mes travaux sur SVN pour plus de facilité à la compréhension de mon problème. Le projet s'appelle NBM_Subscriber.

J'ai repris le code simplifié suggéré par Nicolas et j'y ai ajouté un "mouchard" sur la variable $_POST['NBM_Subscription']. A chaque submit de la page profile.php et modification de la valeur de $_POST['NBM_Subscription'], j'ai bien cette donnée transférée dans la fonction NBMS_Save_Profile() mais la requête en update de la base est sans effet.

Il y a une erreur, je le sais, je le sens... Mais elle doit être trop grosse pour que je la remarque :-/

Hors ligne

#6 2010-06-01 17:57:45

tosca
Former Piwigo Team
Cévennes (Gard)
2006-09-23
3818

Re: [Résolu] [Dev Plugins] Trigger save_profile_from_post

Tu as fait un display de $query pour vérifier ?
Et pas de message d'erreur ?

Hors ligne

#7 2010-06-01 18:11:35

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

Re: [Résolu] [Dev Plugins] Trigger save_profile_from_post

Yes! Merci Tosca, tu m'as mis sur la voie: C'était la clause WHERE de la requête qui n'était pas bonne.

Enfin, si mais j'avais simplement oublié la variable globale $user dans le préambule de la fonction. Du coup ma clause WHERE user_id = \''.$user['id'].'\';'; ne pouvait pas fonctionner.

Comme quoi, un regard neuf... ;-)

Hors ligne

#8 2010-06-01 18:14:53

tosca
Former Piwigo Team
Cévennes (Gard)
2006-09-23
3818

Re: [Résolu] [Dev Plugins] Trigger save_profile_from_post

Eric a écrit:

Yes! Merci Tosca, tu m'as mis sur la voie ...

Comme quoi, un regard neuf... ;-)

Ah ? Tu m'en vois ravie.
J'ai à peine osé l'écrire tellement ça me semblait évident de commencer par regarder ça ;-)

Dernière modification par tosca (2010-06-01 18:15:23)

Hors ligne

  •  » Plugins
  •  » [Résolu] [Dev Plugins] Trigger save_profile_from_post

Pied de page des forums

Propulsé par FluxBB

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