function panels_content_block in Panels 6.2
Same name and namespace in other branches
- 5.2 content_types/block.inc \panels_content_block()
- 5 content_types/block.inc \panels_content_block()
Output function for the 'block' content type. Outputs a block based on the module and delta supplied in the configuration.
1 string reference to 'panels_content_block'
- panels_block_panels_content_types in content_types/
block.inc - Callback function to supply a list of content types.
File
- content_types/
block.inc, line 26
Code
function panels_content_block($subtype, $conf) {
$block = (object) module_invoke($conf['module'], 'block', 'view', $conf['delta']);
if (empty($block)) {
return;
}
$block->module = $conf['module'];
$block->delta = $conf['delta'];
if (user_access('administer blocks')) {
$block->admin_links = array(
array(
'title' => t('Configure block'),
'alt' => t("Configure this pane's 'block settings' in administer >> site building >> blocks"),
'href' => "admin/build/block/configure/{$block->module}/{$block->delta}",
'query' => drupal_get_destination(),
),
);
}
// This seems extra but it prevents an unnecessary query sometimes.
if (empty($conf['block_visibility']) && $block->module != 'block') {
return $block;
}
// Test for block visibility
$result = db_query("SELECT title, pages, visibility FROM {blocks} WHERE module = '%s' AND delta = '%s'", $block->module, $block->delta);
$block_visibility = db_fetch_object($result);
if ($block->module == 'block') {
$block->title = $block_visibility->title;
}
if (empty($conf['block_visibility'])) {
return $block;
}
if ($block_visibility && $block_visibility->pages) {
if ($block_visibility->visibility < 2) {
$path = drupal_get_path_alias($_GET['q']);
$regexp = '/^(' . preg_replace(array(
'/(\\r\\n?|\\n)/',
'/\\\\\\*/',
'/(^|\\|)\\\\<front\\\\>($|\\|)/',
), array(
'|',
'.*',
'\\1' . preg_quote(variable_get('site_frontpage', 'node'), '/') . '\\2',
), preg_quote($block_visibility->pages, '/')) . ')$/';
$page_match = !($block_visibility->visibility xor preg_match($regexp, $path));
}
else {
$page_match = drupal_eval($block_visibility->pages);
}
}
else {
$page_match = TRUE;
}
if ($page_match) {
return $block;
}
}