--- sites/all/modules/auto_nodetitle/auto_nodetitle.module	2009-08-17 23:28:55.000000000 +0100
+++ sites/all/modules/auto_nodetitle/auto_nodetitle_new.module	2009-08-18 00:46:59.000000000 +0100
@@ -59,13 +59,39 @@ 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;
+    }
+   }
+ }
+
 
 /**
  * Returns whether the auto nodetitle has to be set.
