Drupal-6: Why won't this node save?

yahoobuzzvimax

New Member
I have constructed a set of nodes. After running them through \[code\]node_save()\[/code\], I get back an \[code\]nid\[/code\], and I can navigate to the page for that node, but they are empty. (No data is shown for any of the fields.)When I go to the edit url for that node, I get this error message:\[quote\] warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Bout_node_form' was given in /home/odp/public_html/includes/form.inc on line 367.\[/quote\]Here is the \[code\]print_r()\[/code\] of one node I am trying to save:\[code\]stdClass Object( [type] => Bout [name] => Gary Oak [title] => Bout - 0 [promote] => 1 [comment] => 2 [revision] => [format] => 0 [status] => 0 [field_weapon] => Array ( [0] => Array ( [value] => foil ) ) [field_fencer] => Array ( [0] => Array ( [uid] => 3 ) ) [field_touches_scored] => Array ( [0] => Array ( [value] => 4 ) ) [field_meet] => Array ( [0] => Array ( [nid] => Drew ) ) [field_round] => Array ( [0] => Array ( [value] => 1 ) ) [field_legacy_bout] => Array ( [0] => Array ( [value] => no ) ) [teaser] => [uid] => 1 [created] => 1262732370 [validated] => 1)\[/code\]These nodes have all been run though \[code\]node_validate()\[/code\], and presumably that would have caught some errors. Also, this node is missing required taxonomy, but that isn't causing any error messages, either.This is how \[code\]node_validate()\[/code\] was called:\[code\]function preview_validate($form, &$form_state) { $nodes_to_save = construct_nodes(); foreach ($nodes_to_save as $node) { node_validate($node, $form); if ($errors = form_get_errors()) { form_set_error('', t('Validation error. No nodes saved.')); } } $_SESSION[CONSTRUCTED_KEY] = $nodes_to_save;}\[/code\]This is where the error is coming from, in the core file \[code\]includes/form.inc\[/code\]:\[code\] // If $callback was returned by a hook_forms() implementation, call it. // Otherwise, call the function named after the form id. $form = call_user_func_array(isset($callback) ? $callback : $form_id, $args);\[/code\]The node shows up in the \[code\]node\[/code\] table, but not the \[code\]content_type_bout\[/code\] table.This is the construct_nodes() function:\[code\]function construct_nodes() { global $user; $file = unserialize($_SESSION[FILE_KEY]); $count = 0; // how many nodes have been created? $success = TRUE; // have all the nodes thus far validated? foreach ($file->parsed as $node) { $odp = new StdClass(); $odp->type = $_SESSION[NODE_TYPE_KEY]; if (! in_array('name', $file->matched_keys)) { $odp->name = $user->name; } if (! in_array('title', $file->matched_keys)) { $odp->title = sprintf("%s - %s", $_SESSION[NODE_TYPE_KEY], $count); } $node_type_default = variable_get('node_options_'. $_SESSION[NODE_TYPE_KEY], array('status', 'promote')); //copied from blogapi module $odp->promote = in_array('promote', $node_type_default); $odp->comment = variable_get('comment_'. $_SESSION[NODE_TYPE_KEY], 2); $odp->revision = in_array('revision', $node_type_default); $odp->format = FILTER_FORMAT_DEFAULT; $odp->status = CTN_DEFAULT_PUBLISHED; // this makes the assumption that the field arrays will always have only one item // doesn't handle taxonomy foreach ($node as $field => $value) { // $field => value: [Touches scored] => 5 $node_key = $file->matched_keys[$field]; // $node_key will be something like: "field_meet" or "vid:4" $vid = vidOfTaxKey($node_key); if ($vid == NULL) { $valTypes = $_SESSION[SAMPLE_NODE_KEY]->$node_key; // like: [0] => Array ( [uid] => 3 ) $valType = array_keys($valTypes[0]); $odp->$node_key = array(array($valType[0] => $value)); } } $to_save[] = $odp; $count++; unset($submitted_odp); } return $to_save;}\[/code\]\[code\]bout\[/code\] is a CCK-defined content type. Using the human name "Bout" for the type instead of the internal code name \[code\]bout\[/code\] was, I believe, a source of error.
 
Back
Top