private function crumbs_InjectedAPI_hookCrumbsPlugins::addPluginByType in Crumbs, the Breadcrumbs suite 7.2
Parameters
crumbs_MonoPlugin|crumbs_PluginInterface|null $plugin:
string|null $key:
string|null $route:
bool $is_multi: TRUE for a multi plugin.
Throws
Exception
4 calls to crumbs_InjectedAPI_hookCrumbsPlugins::addPluginByType()
- crumbs_InjectedAPI_hookCrumbsPlugins::monoPlugin in lib/
InjectedAPI/ hookCrumbsPlugins.php - Register a "Mono" plugin. That is, a plugin that defines exactly one rule.
- crumbs_InjectedAPI_hookCrumbsPlugins::multiPlugin in lib/
InjectedAPI/ hookCrumbsPlugins.php - Register a "Multi" plugin. That is, a plugin that defines more than one rule.
- crumbs_InjectedAPI_hookCrumbsPlugins::routeMonoPlugin in lib/
InjectedAPI/ hookCrumbsPlugins.php - Register a "Mono" plugin that is restricted to a specific route.
- crumbs_InjectedAPI_hookCrumbsPlugins::routeMultiPlugin in lib/
InjectedAPI/ hookCrumbsPlugins.php
File
- lib/
InjectedAPI/ hookCrumbsPlugins.php, line 232
Class
- crumbs_InjectedAPI_hookCrumbsPlugins
- API object to be used as an argument for hook_crumbs_plugins() This is a sandbox class, currently not used..
Code
private function addPluginByType(crumbs_PluginInterface $plugin = NULL, $key = NULL, $route = NULL, $is_multi) {
$plugin_key = isset($key) ? $this->module . '.' . $key : $this->module;
if (!isset($plugin)) {
$class = $is_multi ? $this->module . '_CrumbsMultiPlugin' : $this->module . '_CrumbsMonoPlugin';
$class .= isset($key) ? '_' . $key : '';
if (!class_exists($class)) {
throw new \Exception("Plugin class {$class} does not exist.");
}
$plugin = new $class();
}
else {
$class = get_class($plugin);
}
if ($is_multi) {
if (!$plugin instanceof crumbs_MultiPlugin) {
throw new Exception("{$class} must implement class_MultiPlugin.");
}
}
else {
if (!$plugin instanceof crumbs_MonoPlugin) {
throw new Exception("{$class} must implement class_MonoPlugin.");
}
}
$this
->addPlugin($plugin, $plugin_key, $route);
}