Index: wikitools.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/wikitools/wikitools.module,v
retrieving revision 1.1.2.3
diff -u -p -r1.1.2.3 wikitools.module
--- wikitools.module	5 Jan 2008 03:40:43 -0000	1.1.2.3
+++ wikitools.module	20 Feb 2008 21:50:27 -0000
@@ -399,12 +399,25 @@ function wikitools_nodeapi(&$node, $op, 
 function wikitools_node_validate($node) {
   if (wikitools_type_affected($node->type)) {
     if (wikitools_enforce_unique_titles()) {
-      $nid = db_result(db_query("SELECT nid FROM {node} WHERE LOWER(title) = LOWER('%s')", $node->title));
+      // Build node type condition.
+      $types_clause = NULL;
+      foreach(wikitools_node_types() as $type) {
+        if ($types_clause) {
+          $types_clause .= ",'" . db_escape_string($type) . "'";
+        }
+        else {
+          $types_clause = "type IN ('" . db_escape_string($type) . "'";
+        }
+      }
+      // There is at least one node type, so this will always be well-formed.
+      $types_clause .= ')';
+
+      $nid = db_result(db_query("SELECT nid FROM {node} WHERE LOWER(title) = LOWER('%s') AND $types_clause", $node->title));
       if (!$nid && wikitools_treat_underscore_as_space()) {
-        $nid = db_result(db_query("SELECT nid FROM {node} WHERE LOWER(REPLACE(title, '_', ' ')) = LOWER(REPLACE('%s', '_', ' '))", $node->title));
+        $nid = db_result(db_query("SELECT nid FROM {node} WHERE LOWER(REPLACE(title, '_', ' ')) = LOWER(REPLACE('%s', '_', ' ')) AND $types_clause", $node->title));
       }
       if (!$nid && wikitools_treat_dash_as_space()) {
-        $nid = db_result(db_query("SELECT nid FROM {node} WHERE LOWER(REPLACE(title, '-', ' ')) = LOWER(REPLACE('%s', '-', ' '))", $node->title));
+        $nid = db_result(db_query("SELECT nid FROM {node} WHERE LOWER(REPLACE(title, '-', ' ')) = LOWER(REPLACE('%s', '-', ' ')) AND $types_clause", $node->title));
       }
       // It is only an error if the node which alredy exists is not the currently edited node.
       if ($nid && $nid != $node->nid) {
