Drupal 7 - Operazione su Database dopo il salvataggio di un nuovo articolo (Content-type)[RISOLTO]

4 contenuti / 0 new
Ultimo contenuto
Drupal 7 - Operazione su Database dopo il salvataggio di un nuovo articolo (Content-type)[RISOLTO]

Ragazzi ho il seguente problema: quando salvo un nuovo articolo (content-type) ho la necessità di fare un update in una tabella del database al verificarsi di una certa condizione.
PSEUDOCODICE:
if(condizione verificata){
nel momento in cui salvi il nodo setta il campo del DB;
}

Ho pensato di realizzare un modulo che, sfruttando gli hook, esegua questa semplice operazione. Ho creato i due file (mymodule.info e mymodule.module). Nella gestione dei moduli riesco a vedere ed attivare il modulo da me creato.

All'interno del file mymodule.module ho inserito queste righe di codice:

<?php
function aggiorna_node_validate($node) {
$num_updated = db_update('nome_tabella')
  ->
fields(array(
   
'nome_campo' => 0,
  ))
  ->
condition('nome_campo', 1, '=')
  ->
execute();
}
 
?>

Il problema è che non da segno di vita. Ho provato a sostituire "validate" con "insert", non è cambiato niente. Ho provato anche ad inserire una echo ma nulla, il modulo è attivo ma non fa assolutamente nulla. Non ho mai usato Drupal ma conosco bene il php e credo di aver capito la gestione/funzione degli hook in Drupal.
Vorrei che mi aiutaste a capire quale errore ho fatto perchè le ho provate tutte...
Grazie a tutti e spero nel vostro aiuto...

La funzione si deve chiamare mymodule_node_validate.

Ma attenzione che la validation è un operazione che ha lo scopo di verificare una cerca condizione per (eventualmente) interrompere il flusso di salvataggio di un entità e non per andare a mettere a svolgere operazioni (quali appunto l'inserimento di dati). Per questo è necessari sfruttare l'hook_node_insert o relativi collegati (update, ...)

Ciao
Marco
--
My blog
Working at @agavee

Perfetto, ho "risolto" Installando il modulo "examples" e inserendo il mio codice al posto di quello preesistente.

@Mavimo: grazie per l'ulteriore chiarimento;