function ctools_plugin_get_plugin_type_info
Return the full list of plugin type info for all plugin types registered in the current system.
This function manages its own cache getting/setting, and should always be used as the way to initially populate the list of plugin types. Make sure you call this function to properly populate the ctools_plugin_type_info static variable.
Return value
array A multilevel array of plugin type info, the outer array keyed on module name and each inner array keyed on plugin type name.
3 calls to ctools_plugin_get_plugin_type_info()
- ctools_get_plugins in includes/
plugins.inc - Fetch a group of plugins by name.
- ctools_plugin_get_info in includes/
plugins.inc - Ask a module for info about a particular plugin type.
- _ctools_registry_files_alter in includes/
registry.inc - Implements (via delegation) hook_registry_files_alter().
File
-
includes/
plugins.inc, line 354
Code
function ctools_plugin_get_plugin_type_info($flush = FALSE) {
static $drupal_static_fast;
if (!isset($drupal_static_fast)) {
$drupal_static_fast['info_loaded'] =& drupal_static('ctools_plugin_type_info_loaded', FALSE);
$drupal_static_fast['all_type_info'] =& drupal_static('ctools_plugin_type_info', array());
}
$info_loaded =& $drupal_static_fast['info_loaded'];
$all_type_info =& $drupal_static_fast['all_type_info'];
// Only trigger info loading once.
if ($info_loaded && !$flush) {
return $all_type_info;
}
$info_loaded = TRUE;
$cache = cache_get('ctools_plugin_type_info');
if (!empty($cache->data) && !$flush) {
// Plugin type info cache is warm, use it.
$all_type_info = $cache->data;
}
else {
// Cache expired, refill it.
foreach (module_implements('ctools_plugin_type') as $module) {
$module_infos = array();
$function = $module . '_ctools_plugin_type';
$module_infos = $function();
foreach ($module_infos as $plugin_type_name => $plugin_type_info) {
// Apply defaults. Array addition will not overwrite pre-existing keys.
$plugin_type_info += array(
'module' => $module,
'type' => $plugin_type_name,
'cache' => FALSE,
'cache table' => 'cache',
'classes' => array(),
'use hooks' => FALSE,
'defaults' => array(),
'process' => '',
'alterable' => TRUE,
'extension' => 'inc',
'info file' => FALSE,
'hook' => $module . '_' . $plugin_type_name,
'load themes' => FALSE,
);
$all_type_info[$module][$plugin_type_name] = $plugin_type_info;
}
}
cache_set('ctools_plugin_type_info', $all_type_info);
}
return $all_type_info;
}