function _homebox_can_view_block in Homebox 7.2
Same name and namespace in other branches
- 6.3 homebox.module \_homebox_can_view_block()
- 6.2 homebox.module \_homebox_can_view_block()
- 7.3 homebox.module \_homebox_can_view_block()
Determine if user has access to view a block
Parameters
$block: A block object
Return value
Boolean value of user's access to the block
2 calls to _homebox_can_view_block()
- homebox_build in ./
homebox.module - Responsible for firing the hook_theme().
- homebox_prepare_block in ./
homebox.module - Prepare a block for rendering with theme('homebox_block').
File
- ./
homebox.module, line 824 - Homebox main file, takes care of global functions settings constants, etc.
Code
function _homebox_can_view_block($block) {
global $user;
// Detect valid blocks in the system.
$valid_blocks =& drupal_static(__FUNCTION__ . ':valid_blocks');
if (!is_array($valid_blocks)) {
$valid_blocks = array();
$results = db_query("SELECT module, delta FROM {block}");
foreach ($results as $record) {
$valid_blocks[$record->module][$record->delta] = TRUE;
}
}
// Check if the view access is requested for a valid block.
if (empty($valid_blocks[$block->module][$block->delta])) {
return FALSE;
}
// Check for roles set at the block level.
$allowed_roles =& drupal_static(__FUNCTION__ . ':allowed_roles');
if (!is_array($allowed_roles)) {
$allowed_roles = array();
// Since this function is usually called once for each block on a page, and
// {block_role} doesn't usually contain many records, it's cheaper to cache
// them all at once. (Especially since no index on module+delta exists.)
$result = db_query('SELECT module, delta, rid FROM {block_role}');
foreach ($result as $record) {
$allowed_roles[$record->module . '-' . $record->delta][$record->rid] = TRUE;
}
}
if (isset($allowed_roles[$block->module . '-' . $block->delta])) {
// Role restrictions were set on the block. Check whether any of ther user's
// roles is among them.
$our_allowed_roles = array_intersect_key($user->roles, $allowed_roles[$block->module . '-' . $block->delta]);
return !empty($our_allowed_roles);
}
// If here, user has access
return TRUE;
}