Ciao a tutti.
Sto lavorando ad un modulo custom, che deve aggiornare dei campi sull'account utente in base a dei valori forniti dall'utente stesso durante l'inserimento di un contenuto.
Implemento l'hook_node_presave() con il quale eseguo i calcoli che mi servono ma, al momento di aggiornare i campi sull'utente ottengo una pagina bianca.
Il codice, peraltro semplice, è questo:
<?php
global $user;
$clu = user_load(array('uid' => $user->uid));
if ($clu->field_ferie_anno_precedente >= $gglav) {
$clu->field_ferie_anno_precedente = $clu->field_ferie_anno_precedente - $gglav;
}
else {
$diff = $gglav - $clu->field_ferie_anno_precedente;
$clu->field_ferie_anno_precedente = 0;
$clu->field_ferie_anno_corrente = $clu->field_ferie_anno_corrente - $diff;
}
?>
Dove sto sbagliando?
stando al tuo codice effettui un operazione matematica... assicurati che i tuoi valori siano numeri, se sono interi puoi fare così:
$clu->field_ferie_anno_precedente = intval($clu->field_ferie_anno_precedente) - intval($gglav);
drupalpertutti.it
Grazie per la tempestiva risposta.
In effetti il caso voleva che fra i numeri interi ci fosse un bel valore NULL!!
Mmm. ora però ho il problema che i valori dell'oggetto $clu non vengono memorizzati nel DB: devo forse eseguire qualche metodo particolare?
Grazie 1000
Devi essere più preciso... attualmente crei l'ogetto $clu e poi? cosa ci fai?
drupalpertutti.it
Scusa la lentezza nella risposta, ma mentre cercavo di risolvere questo problema sono incappato in un bug che si è sovrapposto al debug del mio modulo.
Allora, quando l'utente crea/modifica un contenuto, alcuni valori che inserisce vanno a modificare dei campi del suo account; pertanto, sull'hook_node_presave() elaboro i dati e poi carico l'utente ($clu), aggiorno i campi del suo account e poi vado a salvare con user_save($clu, array()).
Leggendo però nelle API mi viene il dubbio che non sia proprio il modo più corretto (come spiegato qui):
Risolto!
Con un copia/incolla errato avevo scritto user_load(array('uid' => $user->uid)) invece di user_load($user->uid);.
In user_save() ho riscritto, come specificato al post precedente, mettendo i nuovi valori in un array $edit passato come secondo parametro assieme all'oggetto $clu originale.
Grazie a jonxduo la pulce nell'orecchio!