1.20.x views.module | views_get_applicable_views($type) |
Return a list of all views and display IDs that have a particular setting in their display's plugin settings.
@endcode
Return value
@code: array( array($view, $display_id), array($view, $display_id), );
File
- modules/
views/ views.module, line 1256 - Primarily Backdrop 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.
debug(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;
}