function context_respect_reaction_block::block_list in Context Respect 7
Same name and namespace in other branches
- 6 plugins/context_respect_reaction_block.inc \context_respect_reaction_block::block_list()
Override of block_list(). An alternative version of block_list() that provides any context enabled blocks.
Overrides context_reaction_block::block_list
File
- plugins/
context_respect_reaction_block.inc, line 17 - Context Respect reaction plugin file.
Class
- context_respect_reaction_block
- Expose permissions as context reactions.
Code
function block_list($region) {
module_load_include('module', 'block', 'block');
$context_blocks =& drupal_static('context_reaction_block_list');
$contexts = context_active_contexts();
if (!isset($context_blocks)) {
$info = $this
->get_blocks();
$context_blocks = array();
foreach ($contexts as $context) {
$options = $this
->fetch_from_context($context);
if (!empty($options['blocks'])) {
foreach ($options['blocks'] as $block) {
$bid = $block['module'] . '-' . $block['delta'];
if (!isset($info[$bid])) {
continue;
}
// Copy general block settings.
$block = (object) array_merge((array) $info[$bid], $block);
// Set context name and others.
$block->context = $context->name;
$block->title = isset($info[$block->bid]->title) ? $info[$block->bid]->title : NULL;
$block->cache = isset($info[$block->bid]->cache) ? $info[$block->bid]->cache : DRUPAL_NO_CACHE;
// Check role access
$role_match = $this
->check_role_match($block);
// Check path access
$page_match = $this
->check_page_match($block);
if ($page_match && $role_match) {
$context_blocks[$block->region][$block->bid] = $block;
}
}
}
}
$this
->is_editable_check($context_blocks);
foreach ($context_blocks as $r => $blocks) {
$context_blocks[$r] = _block_render_blocks($blocks);
// Make blocks editable if allowed.
if ($this
->is_editable_region($r)) {
foreach ($context_blocks[$r] as $key => $block) {
$context_blocks[$r][$key] = $this
->editable_block($block);
}
}
// Sort blocks.
uasort($context_blocks[$r], array(
'context_reaction_block',
'block_sort',
));
}
}
return isset($context_blocks[$region]) ? $context_blocks[$region] : array();
}