Hi everybody,

i once wrote a module which creates multiple cck table for showing prices on the page... Now I had to resave lots of nodes and used

	$current_node_id = node_load($current_node["nid"]);
	$node = node_submit($current_node_id);
        node_save($node); 

for that. Afterwards all cutom fields were lost... I tracked it down and now my question is, why in the hook_field the variable $node_field is empty, but only if I save it programatically?? Here is my code:

/**
 * Implementation of hook_field().
 */
function matrix_field($op, &$node, $field, &$node_field, $teaser, $page) {
  switch ($op) {
    case 'load':
      $result = db_query("SELECT * FROM {node_field_matrix_data} md LEFT JOIN {node_field_matrix_add} ma ON (ma.vid = md.vid AND ma.delta = md.delta) WHERE md.vid = %d AND md.field_name = '%s' ORDER BY md.delta ASC", $node->vid, $field['field_name']);
      $values = array();
      while ($data = db_fetch_array($result)) {
      	 // dprint_r($data);
        $values[$data["delta"]][$data["row"]][$data["col"]] = $data['value'];
        $values[$data["delta"]]['title'] = $data['title'];
         $values[$data["delta"]]['desc'] = $data['description'];
      }
      $additions = array($field['field_name'] => $values);
      return $additions;
   case 'update':
   case 'insert':
   	db_query("DELETE FROM {node_field_matrix_data} WHERE vid = %d AND field_name = '%s'", $node->vid, $field['field_name']);
   	db_query("DELETE FROM {node_field_matrix_add} WHERE vid = %d", $node->vid);

      for ($l=0; $l < $node_field['count']; $l++) {
    	for ($i=1; $i<= $field['rows']; $i++) {
          for ($j=1; $j<= $field['columns']; $j++) {
             $suc= db_query("INSERT INTO {node_field_matrix_data} SET nid = %d, vid = %d, field_name = '%s', row = %d, col = %d, value = '%s', delta = %d", $node->nid, $node->vid, $field['field_name'], $i, $j, $node_field[$l][$i][$j], $l);
	          }
	      }
	      $suc = db_query("INSERT INTO {node_field_matrix_add} (vid, delta, title, description) VALUES (%d, %d, '%s', '%s')", $node->vid, $l, $node_field[$l]['title'], $node_field[$l]['desc']);
	      //var_dump($suc);
	  }
      break;
  }
}

Maybe somebody knows...?