1 utility.inc | _views_create_handler($definition, $type = 'handler', $handler_type = NULL) |
Instantiate and construct a new handler
File
- core/
modules/ views/ includes/ utility.inc, line 10 - Utility functions for assembling Views queries.
Code
function _views_create_handler($definition, $type = 'handler', $handler_type = NULL) {
if (empty($definition['handler'])) {
watchdog('views', '_views_create_handler - type: @type - failed: handler has not been provided.',
array('@type' => isset($handler_type) ? ($type . '(handler type: ' . $handler_type . ')') : $type)
);
return;
}
// class_exists will automatically load the code file.
if (!empty($definition['override handler']) && !class_exists($definition['override handler'])) {
watchdog('views',
'_views_create_handler - loading override handler @type failed: class @override_handler could not be loaded. ' .
'Verify that the class has been declared and the class file has been registered in a <a href="https://docs.backdropcms.org/api/backdrop/1/search/hook_autoload_info">hook_autoload_info()</a> implementation.',
array(
'@type' => isset($handler_type) ? ($type . '(handler type: ' . $handler_type . ')') : $type,
'@override_handler' => $definition['override handler']
)
);
return;
}
if (!class_exists($definition['handler'])) {
watchdog('views',
'_views_create_handler - loading handler @type failed: class @handler could not be loaded. ' .
'Verify that the class has been declared and the class file has been registered in a <a href="https://docs.backdropcms.org/api/backdrop/1/search/hook_autoload_info">hook_autoload_info()</a> implementation.',
array(
'@type' => isset($handler_type) ? ($type . '(handler type: ' . $handler_type . ')') : $type,
'@handler' => $definition['handler']
)
);
return;
}
if (!empty($definition['override handler'])) {
$handler = new $definition['override handler'];
}
else {
$handler = new $definition['handler'];
}
$handler->set_definition($definition);
if ($type == 'handler') {
$handler->is_handler = TRUE;
$handler->handler_type = $handler_type;
}
else {
$handler->is_plugin = TRUE;
$handler->plugin_type = $type;
$handler->plugin_name = $definition['name'];
}
// Let the handler have something like a constructor.
$handler->construct();
return $handler;
}