[Koha-bugs] [Bug 19306] New: Adding hooks to the plugin system
bugzilla-daemon at bugs.koha-community.org
bugzilla-daemon at bugs.koha-community.org
Wed Sep 13 11:38:50 CEST 2017
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=19306
Bug ID: 19306
Summary: Adding hooks to the plugin system
Change sponsored?: ---
Product: Koha
Version: unspecified
Hardware: All
OS: All
Status: NEW
Severity: enhancement
Priority: P5 - low
Component: Architecture, internals, and plumbing
Assignee: koha-bugs at lists.koha-community.org
Reporter: stefan.berndtsson at ub.gu.se
QA Contact: testopia at bugs.koha-community.org
We've been working on adding hook functionality to the existing plugin system.
This is very much proof-of-concept code at the moment, but here is how it
works.
1. Somewhere in the code you add a hook-call with a name for that hook, and
pass in some data relevant to that hook.
2. Each plugin with a method matching the hook name is called in sequence, with
the data as input and returning data of similar form, which is then passed on
to the next matching plugin.
3. The end result is returned back from the hook-call, is put back in place,
and code execution is resumed.
The PoC code adds a Koha::Plugins::Handler->run_matching() method that looks up
the relevant loaded plugins (using GetPlugins) and calls
Koha::Plugins::Handler->run() on each of them.
If plugins are not enabled, or if there is no plugin matching the hook, the
input data is returned back, resulting in unaffected operation.
One hook is added in Koha::SearchEngine::Elasticsearch::QueryBuilder.pm, in
build_query_compat with the name "build_query_before", which is simply run
before the query parsing takes place.
A very simple example plugin is available at:
https://github.com/ub-digit/koha-plugin-build-query-example/releases
This plugin edits a query beginning with "Provider:" to do "publisher:"
instead. A simple example that when using Elasticsearch makes publisher links
in the bibliographic detail view clickable. The current XSLT uses the Zebra
based links, that result in an unusable search. This is not meant to be the
solution to the Zebra/Elasticsearch conflict in the XSLT, but it's a simple
demonstration of the hook feature.
--
You are receiving this mail because:
You are watching all bug changes.
You are the assignee for the bug.
More information about the Koha-bugs
mailing list