function views_get_applicable_views in Views (for Drupal 7) 7.3
Same name and namespace in other branches
- 8.3 views.module \views_get_applicable_views()
- 6.3 views.module \views_get_applicable_views()
- 6.2 views.module \views_get_applicable_views()
Get applicable views.
Return a list of all views and display IDs that have a particular setting in their display's plugin settings.
Return value
array An array with the following structure. array( array($view, $display_id), array($view, $display_id), );
1 call to views_get_applicable_views()
- views_menu_alter in ./
views.module - Implements hook_menu_alter().
File
- ./
views.module, line 1559 - Primarily Drupal hooks and global API functions to manipulate views.
Code
function views_get_applicable_views($type) {
// @todo Use a smarter flagging system so that we don't have to
// load every view for this.
$result = array();
$views = views_get_all_views();
foreach ($views as $view) {
// Skip disabled views.
if (!empty($view->disabled)) {
continue;
}
if (empty($view->display)) {
// Skip this view as it is broken.
vsm(t("Skipping broken view @view", array(
'@view' => $view->name,
)));
continue;
}
// Loop on array keys because something seems to muck with $view->display
// a bit in PHP4.
foreach (array_keys($view->display) as $id) {
$plugin = views_fetch_plugin_data('display', $view->display[$id]->display_plugin);
if (!empty($plugin[$type])) {
// This view uses hook menu. Clone it so that different handlers
// don't trip over each other, and add it to the list.
$v = $view
->clone_view();
if ($v
->set_display($id) && $v->display_handler
->get_option('enabled')) {
$result[] = array(
$v,
$id,
);
}
// In PHP 4.4.7 and presumably earlier, if we do not unset $v
// here, we will find that it actually overwrites references
// possibly due to shallow copying issues.
unset($v);
}
}
}
return $result;
}