Salve,
ho creato una action custom che aggiorni sul database il valore di un campo creato con cck, chiamato field_flag_esportato_value.
Questa action è collegata ad un button_field (sempre cck) tramite una rule, pertanto al clic di questo bottone dev'essere eseguita la action che ha il seguente codice:
function miocsv_setexported_action(&$object, $context = array()) {
//Controlla che l'oggetto sia di tipo scheda
if ($object->type == 'scheda'){
// get the nid from the object
if (isset($object->nid)) {
$nid = $object->nid;
$title = $object->title;
}
}
// make sure we have a node record
if ($nid) {
$data = new stdClass();
$data->nid = $nid;
$data->field_flag_esportato_value = 1;
drupal_write_record('content_type_scheda', $data, array('nid'));
content_clear_type_cache();
// record a message noting the action taken
watchdog('action', 'Esportata la scheda %title', array('%title' => $title, '%nid' => $nid));
break;
}
}
Essa funziona solamente se lascio il break; alla fine che però, mi inibisce l'attivazione di altre action nella stessa rule. Infatti ispezionando con firebug ottengo l'errore "Fatal error: Cannot break/continue 1 level in ... miocsv.module". Questo avviene probabilmente perché il bottone utilizza json_encode per effettuare le chiamate.
Togliendo il break; (o sostituendolo con return false) non viene eseguita la update sul db, sebbene facendo stampare il valore di ritorno di drupal_write_record() ottengo 2, che corrisponde alla costante SAVED_UPDATED.
Qualcuno sa suggerirmi un'implementazione alternativa?