--- 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; +} + ?>