1.20.x views.module | views_block_info() |
Implement hook_block_info().
File
- modules/
views/ views.module, line 572 - Primarily Backdrop hooks and global API functions to manipulate views.
Code
function views_block_info() {
// Try to avoid instantiating all the views just to get the blocks info.
views_include('cache');
$cache = views_cache_get('views_block_items', TRUE);
if ($cache && is_array($cache->data)) {
return $cache->data;
}
$items = array();
$views = views_get_all_views();
foreach ($views as $view) {
// disabled views get nothing.
if (!empty($view->disabled)) {
continue;
}
$view->init_display();
foreach ($view->display as $display_id => $display) {
if (isset($display->handler) && !empty($display->handler->definition['uses hook block'])) {
$result = $display->handler->execute_hook_block_list();
if (is_array($result)) {
$items = array_merge($items, $result);
}
}
if (isset($display->handler) && $display->handler->get_option('exposed_block')) {
$result = $display->handler->get_special_blocks();
if (is_array($result)) {
$items = array_merge($items, $result);
}
}
}
}
// Save memory: Destroy those views.
foreach ($views as $view) {
$view->destroy();
}
views_cache_set('views_block_items', $items, TRUE);
return $items;
}