drupal_write_record non funziona in custom action

1 contenuto / 0 new
drupal_write_record non funziona in custom action

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?