Actualización
This commit is contained in:
65
main/inc/lib/hook/README.md
Normal file
65
main/inc/lib/hook/README.md
Normal file
@@ -0,0 +1,65 @@
|
||||
Hook Management plugin for Chamilo LMS
|
||||
=======================================
|
||||
Enable hooks in Chamilo to allow plugins and core to extend current features and
|
||||
watch for certain events.
|
||||
|
||||
The Hooks structure is based on the Observer pattern
|
||||
|
||||
The base structure is composed of 3 Interfaces
|
||||
* HookEvent: will call the hook methods in Chamilo code
|
||||
* HookObserver: will be executed when a Hook event is called
|
||||
* HookManagement: manages hooks, creation, instantiation, persistence and
|
||||
connection to the database
|
||||
|
||||
|
||||
|
||||
From version 1.10.x, the following Hooks (or more) exist:
|
||||
|
||||
|
||||
|Number| Directory | EventClass | ObserverInterface | Reference |
|
||||
|------|-----------------------------------|----------------|---------------------------------|---------------------------|
|
||||
| 1| /main/inc/lib/usermanager.lib.php | HookCreateUser | HookCreateUserObserverInterface | UserManager::createUser() |
|
||||
| 2| /main/inc/lib/usermanager.lib.php | HookUpdateUser | HookUpdateUserObserverInterface | UserManager::updateUser() |
|
||||
| 3| /main/admin/index.php | HookAdminBlock | HookAdminBlockObserverInterface | ADMIN BLOCK |
|
||||
|
||||
# What do I need to use Hooks?
|
||||
|
||||
You need to create a class extending the `HookObserver` class and implement any
|
||||
(or many) Hook Observer Interfaces, e.g. `HookCreateUserObserverInterface`.
|
||||
An observer can implement many Hook Observer Interfaces.
|
||||
This was developed to allow plugins to have a unique Hook Observer class.
|
||||
Don't forget to add your Hook Observer class to the autoload file (vendor/composer/autoload_classmap.php).
|
||||
|
||||
# How to add MyHookObserver to my plugin?
|
||||
|
||||
When installing your plugin (or other functions) you should call the attach
|
||||
method from a specific Hook Observer class, e.g. `HookCreateUser` class
|
||||
```
|
||||
$myHookObserver = MyHookObserver::create();
|
||||
HookCreateUser::create()->attach($myHookObserver);
|
||||
```
|
||||
|
||||
# How to detach MyHookObserver from inside my plugin?
|
||||
|
||||
To detach the HookObserver, it should be detached from a specific Hook Event class
|
||||
```
|
||||
$myHookObserver = MyHookObserver::create();
|
||||
HookCreateUser::create()->detach($myHookObserver);
|
||||
```
|
||||
|
||||
# How to add HookEvents to the Chamilo code (add the possibility to be hooked)?
|
||||
|
||||
To expand Hooks in Chamilo you should:
|
||||
1. Identify an event that could be customized through a plugin
|
||||
2. Create an interface for the Hook Event and the Hook Observer.
|
||||
The names should be like the Hooks interfaces already created,
|
||||
with The Pattern: HookXyzEventInterface and HookXyzObserverInterface.
|
||||
e.g. Hook event: `HookUpdateUserEventInterface`, Hook observer: `HookUpdateUserObserverInterface`
|
||||
3. Add at least one notify method to Hook Event Interface and update method to
|
||||
Hook Observer Interface
|
||||
4. Create a class extending the `HookEvent` class and implementing your Hook
|
||||
Event Interface
|
||||
5. Complete the notify method calling the Hook Observer update
|
||||
6. Add your Interfaces and Class to the autoload file (vendor/composer/autoload_classmap.php)
|
||||
7. Test your hook. If your Observer requires data, you can use the data property
|
||||
from Hook Event
|
||||
Reference in New Issue
Block a user