[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