My approach did not involve just the node_access table, it used the og table (to determine if the user is an admin of the group). Just get rid of the og stuff and put in your node_uid table
So revised using node_uid table like as follows
hook__node_access_records()
// add the admin access row
$grants[] = array(
'realm' => 'node_author',
'gid' => $node_uid_record->nid,
'grant_view' => 1,
'grant_update' => 1,
'grant_delete' => 1
);
return $grants;
hook_node_grants()
foreach ($node_uid_records as $node_uid_record) {
$grants['node_author'] [] = $node_uid_record->nid
}
return $grants
I have done the same in the ejournal module, but what is not possible
with this approach is to track ownership or assign rights to
individual users (as opposed to groups). Think of it in this way:
access rights may be rebuild by other modules, if you do not keep
track of node-authors relationships, you are not able to recreate the
rights using information from node_access table only (using drupal
hooks) because access rights are deleted before being refreshed.
The proposed approach of node_uid table would solve this and many
other related problems.
I am struggling with the multiple authorship issue since the very
beginning, ie. D4.6, there are potentially a lot of modules who would
benefit from this functionality. I am sorry, that it is probably too
late for D6.
roman
On Jan 13, 2008 6:32 PM, Scott Reynolds < sdrreynolds at gmail.com> wrote:
> Heres how I have allowed multiple users to be able to edit one node. Custom
> node_access module
>
> hook__node_access_records()
> // add the admin access row
> $grants[] = array(
> 'realm' => 'og_admin',
> 'gid' => $node->group,
> 'grant_view' => 1,
> 'grant_update' => 1,
> 'grant_delete' => 1
> );
> return $grants;
>
> then..
> hook_node_grants()
> foreach ($account->og_groups as $group) {
> if ($group['is_admin'] == 1) {
> // grant this user admin priv over all nodes in group
> $grants['og_admin'][] = $group['nid'];
> }
> }
> return $grants
>
> Then hook_enable()
> node_access_rebuild();
>
> Its simple and it works. I may have some typos in there but thats the basic
> idea. Same trick can be applied to roles. So you can have editor roles that
> can change any node on the site.
> --
> Scott Reynolds
> Senior Developer and Engineer
> MothersClick
> scott at mothersclick.com
>