Drupal 6.x
I have this module that manages four different content types. For that matter, how do I define permission for each content within the same module? Is that even possible? I can't figure out how to define permission for each content type cuz hook_perm has to be named with module name and it doesn't have any argument(like hook_access $node) to return permission base on content type. Here's how I'd like to do -
function mymodule_perm()
{
if(content1)
return array(
'create content1 node',
'edit content1 nodes',
'delete content1 nodes',
);
if(content2)
return array(
'create content2 node',
'edit content2 nodes',
'delete content2 nodes',
);
if(content3)
return array(
'create content3 node',
'edit content3 nodes',
'delete content3 nodes',
);
.......
}
Any help would be highly appreciated.
Normally you do not need to create permissions for content types yourself, as the node module does this for you in node_perm()
. For every content type you declare in hook_node_info()
, the node module will automatically create a fixed set of permissions as follows:
$perms[] = 'create '. $name .' content';
$perms[] = 'delete own '. $name .' content';
$perms[] = 'delete any '. $name .' content';
$perms[] = 'edit own '. $name .' content';
$perms[] = 'edit any '. $name .' content';
Besides that, you can declare any number of additional permissions in your modules hook_perm()
implementation (as long as they are unique) and use those in your code as you wish.
The important thing here is that a permission does not do much by itself - it is just a name that will show up on the permissions page, allowing it to be attributed to roles. They only become 'meaningful' by code that uses them via user_access()
calls.
So if, for example, you wanted to create a special, new permission for each of your content types yourself, you would just declare them in hook_perm()
all at once (so you do not need any argument - just return one string per permission you'd like to create).