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) {