Actions
Actions API is designed for simple event-driven interaction with Codice for plugin developers. Basic idea of actions is dead simple - Codice will call different actions (identified by hooks) in many areas of its core codebase. You, as a plugin developer, are able to hook into them and execute your own code when specific action happens. Don't worry if it's not clear yet - look at the example.
Somewhere in Codice code:
class NoteController extends Controller
{
...
public function getChangeStatus()
{
// Controller's action for changing note status (on GET request)
...
$note->save();
Action::call('note.updateStatus', [
'newStatus' => $newStatus,
'note' => $note,
]);
}
}
In this place in the core, Codice will call all actions identified with a hook named
note.updateStatus
- additionally it will pass new status and whole Note object as
a parameters for all actions registered within this hook.
Let's have a look at the simple action you could register for it. You would
place this code somewhere in your plugin, probably boot()
method of it.
In your plugin:
class Plugin extends PluginBase
{
public function boot()
{
Action::register('note.create', 'docs_sample_plugin_log_note_creation', function ($parameters) {
if ($parameters['newStatus'] === 1) {
$string = 'done';
} else {
$string = 'undone';
}
Log::info("Note {$parameters['note']->id} is $string");
});
}
}
New actions are registered using Action::register()
. At least three parameters are
required being: hook name, action name and actual callable to run. Detailed description
of each parameter is placed below.
user.create
hook.
Don't be afraid to unregister it inside a plugin - either disabling functionallity completely
or hooking own implementation instead.
Public API reference
bool Action::register
(string $hookName
, string $actionName
, callable $callable
, int $priority
= 10
)
Registers new action for a specified hook.
$hookName
String identyfing event action is hooked into.
$actionName
Identifier for a registered callable. Must be unique within all registered actions.
$callable
Valid PHP callable - anonymous function, reference to class method (dynamic or static) or a function.
See PHP documentation on callable for more details.
$priority
Numeric priority determining order of executing actions registered for a given hook.
Actions registered with same priority have no defined order of being called.
bool Action::deregister
(string $hookName
, string $actionName
)
Unsets given action from a specified hook. Deregistration must happen before that hook is being called. Built-in actions can also be deregistered.
$hookName
String identyfing event action is hooked into.
$actionName
Identifier for a callable to unregister (dequeue).
bool Action::call
(string $hookName
, array $parameters
= []
)
Fires all user-defined callables registered for a given action.
$hookName
Unique name identyfing an action.
$parameters
Optional array of parameters - if specified, an array of parameters will be
passed to user-defined callable. Look at the first example in this chapter
for real-life usage of action parameters.
bool Action::isRegistered
(string $hookName
, string $actionName
)
Checks whether specified action is registered within a given hook.
$hookName
Unique name identyfing an action.
$actionName
Unique name identyfing registered action.