[development] Writing Directly To node_access Table
Roman Chyla
roman.chyla at gmail.com
Fri Dec 14 08:25:25 UTC 2007
you can use something like:
node_access_write_grants($node, $grants, 'ejrn'.$article->jid);
constructing correctly the $grants array.
I have found other odds though. node_access_write_grants does not know
how to do update. So in my module:
//unfortunately, the node_write_access function does not do update
//so we need to update the authors access rights by ourselves because
there the gid = user->uid
//and delete would get rid of that completely
function _ejournalaccess_grant_update($nid = 0, $grants = array()) {
db_query("UPDATE {node_access} SET grant_view=%d, grant_update=%d,
grant_delete=%d WHERE nid=%d AND realm='%s'", $grants['view'],
$grants['update'], $grants['delete'], $nid, $grants['realm']);
}
however right solutions for me would be to maintain a separate table
with authors uid, in that way gid can be general
roman
On Dec 14, 2007 7:12 AM, Steve Edwards <killshot91 at comcast.net> wrote:
> I've written a module that allows an admin to specify access to a
> project node (using the Project module) at a user level. There is an
> admin page with a separate form for each project in a collapsible
> fieldset where the user can select which users have access for each
> project. I'm using hook_node_access_records() and hook_node_grants() to
> write access records to node_access. The one big problem I have is that
> hook_node_access_records is only called when the node is saved. I would
> like to allow the admin to be able to set the access on the admin page
> and have it take effect right away, instead of then having to go in and
> save each project node for the records to be written to node_access. Is
> there a problem with writing directly to the node_access table, such as
> in the submit function for my form? That way, the access records would
> already be available the next time the node is access. If I do that, do
> I have to do something like call node_access_rebuild at some point after
> the data has been written to the table?
>
> Thanks.
>
> Steve
>
More information about the development
mailing list