You are here

protected function context_respect_reaction_block::check_role_match in Context Respect 7

Helper function for determining if authenticated user has access to a block.

Parameters

$block: A block object.

Return value

$role_match Boolean determining if logged in user has block access

1 call to context_respect_reaction_block::check_role_match()
context_respect_reaction_block::block_list in plugins/context_respect_reaction_block.inc
Override of block_list(). An alternative version of block_list() that provides any context enabled blocks.

File

plugins/context_respect_reaction_block.inc, line 81
Context Respect reaction plugin file.

Class

context_respect_reaction_block
Expose permissions as context reactions.

Code

protected function check_role_match($block) {
  global $user;
  $role_match = FALSE;

  // Check for overriden variables
  $overrides = variable_get('context_respect_override_role', false);
  if ($overrides) {
    foreach ($overrides as $or_bid => $or_val) {
      if ($or_bid == $block->bid) {
        return $or_val;
      }
    }
  }
  $rids = array_keys($user->roles);
  $result = db_query("SELECT rid FROM {block_role} b WHERE b.delta = :delta and b.module = :module", array(
    ':delta' => $block->delta,
    ':module' => $block->module,
  ));

  // if the block has no roles, return TRUE until they choose to use visibility settings
  if (!$result
    ->rowCount()) {
    return TRUE;
  }
  foreach ($result as $b) {
    if (in_array($b->rid, $rids)) {
      $role_match = TRUE;
    }
  }
  return $role_match;
}