Koha::Plugins - Module for loading and managing plugins.
Constructor
Calls a plugin method for all enabled plugins
@responses = Koha::Plugins->call($method, @args)
Note: Pass your arguments as refs, when you want subsequent plugins to use the value updated by preceding plugins, provided that these plugins support that.
Returns a list of enabled plugins.
@plugins = Koha::Plugins->get_enabled_plugins( [ verbose => 1 ] );
Returns a boolean denoting whether a plugin based feature is enabled or not.
$enabled = Koha::Plugins->feature_enabled('method_name');
This will return a list of all available plugins, optionally limited by method or metadata value.
my @plugins = Koha::Plugins::GetPlugins({ method => 'some_method', metadata => { some_key => 'some_value' }, [ all => 1, errors => 1, verbose => 1 ], });
The method and metadata parameters are optional. If you pass multiple keys in the metadata hash, all keys must match.
If you pass errors (only used in plugins-home), we return two arrayrefs:
( $good, $bad ) = Koha::Plugins::GetPlugins( { errors => 1 } );
If you pass verbose, you can enable or disable explicitly warnings from Module::Load::Conditional. Disabled by default to not flood the logs.
Koha::Plugins::InstallPlugins( [ verbose => 1 ] )
This method iterates through all plugins physically present on a system. For each plugin module found, it will test that the plugin can be loaded, and if it can, will store its available methods in the plugin_methods table.
NOTE: We reload all plugins here as a protective measure in case someone has removed a plugin directly from the system without using the UI
Koha::Plugins->RemovePlugins( { [ plugin_class => MODULE_NAME, destructive => 1, disable => 1 ], } ); This is primarily for unit testing. Take care when you pass the destructive flag (know what you are doing)! The method removes records from plugin_methods for one or all plugins. If you pass the destructive flag, it will remove records too from plugin_data for one or all plugins. Destructive overrules disable. If you pass disable, it will disable one or all plugins (in plugin_data). If you do not pass destructive or disable, this method does not touch records in plugin_data. The cache key for enabled plugins will be cleared only if you pass disabled or destructive.
Kyle M Hall <kyle.m.hall@gmail.com>