--- node.module.1	2004-12-11 01:31:17.000000000 +0100
+++ node.module	2004-12-27 19:46:27.000000000 +0100
@@ -1779,4 +1779,49 @@ function node_access_grants($op, $uid = 
  * @} End of "defgroup node_access".
  */
 
+function node_sql($op) {
+  switch ($op) {
+    case 'join':
+      return node_access_join_sql();
+    case 'where':
+      return node_access_where_sql();
+  }
+}
+  
+function node_query($query) {
+  static $in_node_query;
+  
+  if ($in_node_query) {
+    return $query;
+  }
+  $in_node_query = 1;
+  $join = implode('', module_invoke_all('sql','join'));
+  $where = implode('', module_invoke_all('sql','where'));
+  $in_node_query = 0;
+  
+  $query = preg_replace('/FROM[^[:upper:]]+/','\0 '.$join.' ', $query);
+  if (strpos($query, 'WHERE')) {
+    $replace = 'WHERE';
+    $add = 'AND';
+  }
+  elseif (strpos($query, 'GROUP')) {
+    $replace = 'GROUP'; 
+    $add = 'GROUP';
+  }
+  elseif (strpos($query, 'ORDER')) {
+    $replace = 'ORDER';
+    $add = 'ORDER';
+  }
+  elseif (strpos($query, 'LIMIT')) {
+    $replace = 'LIMIT';
+    $add = 'LIMIT';
+  }
+  else
+    $query .= 'WHERE '. $where;
+  if (isset($replace)) {
+    $query = str_replace($replace, 'WHERE  '.$where.' '.$add, $query);
+  }
+  return $query;
+}
+ 
 ?>
