[development] Overriding node_db_rewrite_sql()

Ron Parker sysop at scbbs.com
Thu Jul 26 17:48:17 UTC 2007

Dave Cohen wrote:

>You should write your own hook_db_rewrite_sql and not muck with what's in 
>node.module.  You should not have to muck with it.
This entire effort is to that end.  I have written my own 
hook_db_rewrite_sql.  I have tested it *in* the node module, and am now 
trying to put it into a separate module, and the node module back to 
it's original code.

>As far as your user #1 issues are concerned, remember that user_access() 
>always returns true for user #1. So that user generally has unrestricted 
>access to everything.
I understand this perfectly.  But, if I create a group view, and as user 
#1 look at that view, I should see all nodes IN THAT GROUP.  What I am 
saying is that once I implement my new hook_db_rewrite_sql in a separate 
module, and return the node.module to its default, unmodified state, as 
user #1 when I look at that view, I see every node in the database.  I 
understand that user #1 can see everthing, but aparently there is 
something about the implementation of my hook_db_rewrite_sql that 
corrupts the normal view restrictions and causes every node in the 
database to be listed no matter what the view.

Again, here is my hook_db_rewrite_sql() code:

function og_user_roles_db_rewrite_sql($query, $primary_table, 
$primary_field) {

   if ($primary_field == 'nid' && !node_access_view_all_nodes()) {
     $return['join'] = og_user_roles_node_access_join_sql($primary_table);
     $return['where'] = og_user_roles_node_access_where_sql();
     $return['distinct'] = 1;
     return $return;

Further along:

    <>function og_user_roles_node_access_join_sql($node_alias = 'n',
    $node_access_alias = 'naa') {
    if (user_access('administer nodes')) {
    return '';
         $return = 'INNER JOIN {node_access} '. $node_access_alias .' ON
    '. $node_access_alias .'.nid = '. $node_alias .'.nid ';
    ...my own custom modifications
    // I use node_access_alias = "naa" instead of "na". This is to avoid
    the "duplicate table alias" error. 

So, my question is: Why is this hook_db_rewrite_sql code in a custom 
module creating a circumstance where views no longer work as user #1 
when the same code does NOT create this problem when replacing the 
node_db_rewrite_sql function in the node.module?

I'm ThisClose to making this all work after several months of banging my 
head against the wall, so any suggestions are much appreciated.  Thanks!


Ron Parker
Software Creations               http://www.scbbs.com
Self-Administration Web Site     http://saw.scbbs.com
SDSS Subscription Mgmt Service   http://sdss.scbbs.com
Central Ave Dance Ensemble       http://www.centralavedance.com
R & B Salsa                      http://www.randbsalsa.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/development/attachments/20070726/ea7b1645/attachment.htm 

More information about the development mailing list