--- auto_nodetitle.module 2009-02-10 03:06:09.000000000 -0700 +++ /Users/mjarrell/Sites/drupal/sites/all/modules/drupal-contrib/auto_nodetitle/auto_nodetitle.module 2009-08-04 14:48:49.000000000 -0600 @@ -59,11 +59,36 @@ function auto_nodetitle_node_form_submit } /** - * Implementation of hook_nodeapi(). - */ -function auto_nodetitle_nodeapi($node, $op) { - if ($op == 'presave' && auto_nodetitle_is_needed($node)) { - auto_nodetitle_set_title($node); +* Implementation of hook_nodeapi(). +* Needed for newly saved nodes +*/ +function auto_nodetitle_nodeapi(&$node, $op, $teaser, $page) { + // First check if this nodetype is auto_nodetitle enabled + $setting = auto_nodetitle_get_setting($node->type); + if ($setting == AUTO_NODETITLE_ENABLED || ($setting == AUTO_NODETITLE_OPTIONAL && empty($form_state['values']['title']))) { + switch ($op) { + // Now works for insert and update. Title is stored in database with db_query instead of node_save + case 'insert': + case 'update': + $types = node_get_types(); + $pattern = variable_get('ant_pattern_'. $node->type, ''); + if (trim($pattern)) { + $node->changed = time(); + $node->title = _auto_nodetitle_patternprocessor($pattern, $node); + } + else if ($node->nid) { + $node->title = t('@type @node-id', array('@type' => $types[$node->type]->name, '@node-id' => $node->nid)); + } + else { + $node->title = t('@type', array('@type' => $types[$node->type]->name)); + } + drupal_set_message($node->title . t(' has been generated. Node id is ') . $node->nid); + db_query("UPDATE {node} SET title = '%s' WHERE nid = %d", $node->title, $node->nid); + db_query("UPDATE {node_revisions} SET title = '%s' WHERE nid = %d AND vid = %d", $node->title, $node->nid, $node->vid); + break; + default: + break; + } } }