[development] Has anything changed with module_invoke() recently?
Ron Parker
sysop at scbbs.com
Fri Oct 24 02:13:33 UTC 2008
Regarding Drupal 6.x. Running core Drupal with og, og_user_roles and tac_lite.
I am dynamically creating roles and adding them to the $user object in hook_boot and hook_user('load') (and several other places).
The $user object contains the roles that the user needs to create content for the node $type in the example below (I have verified that). Theoretically, module_invoke below should not return false, but it is:
<?php
global $user ; // $user object contains correct roles for access
// Got this from node.module (node_access)
// No matter the type, this should return us the create permission.
$module = node_get_types ( 'module' , $type );
if ( $module == 'node' ) {
$module = 'node_content' ; // Avoid function name collisions.
}
// I checked $user->roles before this is called
$access = module_invoke ( $module , 'access' , 'create' , $type , $user );
// and, afterwards. They are exactly what they should be to allow this
// this user access to this content
...
?>
$access is FALSE.
What happens in module_invoke where it would override the roles in the $user object?
This same exact code worked in 5.x, so I have to believe there is something that has changed in 6.x with module_invoke() / $user . Furthermore, this code worked in the initial Drupal 6.x versions, so this change, whatever it is, is rather recent.
Any ideas, whatsoever?
Thanks!
-ron
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/development/attachments/20081023/f75846b7/attachment.htm
More information about the development
mailing list