function ctools_plugin_get_class
Get a class from a plugin, if it exists. If the plugin is not already loaded, try ctools_plugin_load_class() instead.
Parameters
$plugin_definition: The loaded plugin type.
$class_name: The identifier of the class. For example, 'handler'.
Return value
string The actual name of the class to call, or NULL if the class does not exist.
2 calls to ctools_plugin_get_class()
- ctools_export_ui_get_handler in includes/
export-ui.inc - Get the class to handle creating a list of exportable items.
- ctools_plugin_load_class in includes/
plugins.inc - Load a plugin and get a class name from it, returning success only if the class exists.
File
-
includes/
plugins.inc, line 859
Code
function ctools_plugin_get_class($plugin_definition, $class_name) {
// If cached the .inc file may not have been loaded. require_once is quite safe
// and fast so it's okay to keep calling it.
if (isset($plugin_definition['file'])) {
// Plugins that are loaded from info files have the info file as
// $plugin['file']. Don't try to run those.
$info = ctools_plugin_get_info($plugin_definition['plugin module'], $plugin_definition['plugin type']);
if (empty($info['info file'])) {
require_once DRUPAL_ROOT . '/' . $plugin_definition['path'] . '/' . $plugin_definition['file'];
}
}
$return = FALSE;
if (!isset($plugin_definition[$class_name])) {
return;
}
elseif (is_string($plugin_definition[$class_name])) {
// Plugin uses the string form shorthand.
$return = $plugin_definition[$class_name];
}
elseif (isset($plugin_definition[$class_name]['class'])) {
// Plugin uses the verbose array form.
$return = $plugin_definition[$class_name]['class'];
}
// @todo consider adding an else {watchdog(...)} here
return $return && class_exists($return) ? $return : NULL;
}