1.20.x utility.inc | views_discover_plugins() |
Builds and return a list of all plugins available in the system.
Return value
Nested array of plugins, grouped by type.:
File
- modules/
views/ includes/ utility.inc, line 454 - Utility functions for assembling Views queries.
Code
function views_discover_plugins() {
$cache = array('display' => array(), 'style' => array(), 'row' => array(), 'argument default' => array(), 'argument validator' => array(), 'access' => array(), 'cache' => array(), 'exposed_form' => array());
// Get plugins from all modules.
foreach (module_implements('views_plugins') as $module) {
$function = $module . '_views_plugins';
$result = $function();
if (!is_array($result)) {
continue;
}
// Setup automatic path/file finding for theme registration
$module_dir = isset($result['module']) ? $result['module'] : $module;
// Assume the plugin path includes a 'plugins' directory.
$path = backdrop_get_path('module', $module_dir) . '/plugins';
// Assume the theme path includes a 'templates' directory.
$theme_path = backdrop_get_path('module', $module_dir) . '/templates';
// Assume the *.views.inc file for theme implementations.
$theme_file = "$module.views.inc";
// Add some special casing for the views module itself.
if ($module_dir == 'views') {
$theme_file = 'views.theme.inc';
}
foreach ($result as $type => $info) {
if ($type == 'module') {
continue;
}
foreach ($info as $plugin => $def) {
$def['module'] = $module_dir;
if (!isset($def['theme path'])) {
$def['theme path'] = $theme_path;
}
if (!isset($def['theme file'])) {
$def['theme file'] = $theme_file;
}
if (!isset($def['path'])) {
$def['path'] = $path;
}
if (!isset($def['file'])) {
$def['file'] = $def['handler'] . '.inc';
}
if (!isset($def['parent'])) {
$def['parent'] = 'parent';
}
// Set the internal name to be able to read it out later.
$def['name'] = $plugin;
// merge the new data in
$cache[$type][$plugin] = $def;
}
}
}
// Let other modules modify the plugins.
backdrop_alter('views_plugins', $cache);
return $cache;
}