The plugin-system of Lychee allows you to execute scripts, when a certain action fires. Plugins are hooks, which are injected directly into Lychee. They only affect the back-end and can't modify the front-end.
- Automatically watermark photos on upload
- Automatically set albums public
- Write metadata changes back to the original photo
- …
- Create a folder in
plugins/
(e.g.plugins/ExamplePlugin/
) - Create an
ExamplePlugin.php
file within the new folder and add the following content:
<?php
namespace ExamplePlugin;
use SplObserver;
use SplSubject;
class ExamplePlugin implements SplObserver {
public function __construct() {
/**
* Add code here if wanted
* __construct() will be called every time Lychee gets called
* Make sure this part is performant
*/
return true;
}
public function update(SplSubject $subject) {
/**
* Check if the called hook is the hook you are waiting for
* A list of all hooks is available online
*/
if ($subject->action!=='Photo::add:before') return false;
/**
* Do something when Photo::add:before gets called
* Database::get() => Database connection of Lychee
* Settings::get() => Settings of Lychee
* $subject->action => Called hook
* $subject->args => Params passed to the original function
*/
return true;
}
}
?>
- Add the class name to the database of Lychee
Select the table lychee_settings
and add the external fully qualified name to the value of plugins
(e.g. ExamplePlugin\ExamplePlugin
). Please ensure that the folder has the same name as the namespace and the file the same name as the class.
Divide multiple plugins with semicolons: ExamplePlugin\ExamplePlugin;ExampleTwoPlugin\ExampleTwoPlugin
.
Hooks named :before
will be executed prior to the original function.
Hooks named :after
will be executed after the original function.
Album::add:before
will be called when the user creates a new album in Lychee. The album doesn't exist at this moment.
Album::add:after
will be called after the album has been created.
These hooks are called from php/modules/Album.php
.
| Name | Description | |:-----------|:------------|:------------| | Album::add:before | User adds album | | Album::add:after | | | Album::get:before | User opens album | | Album::get:after | | | Album::getAll:before | User opens album overview | | Album::getAll:after | | | Album::getArchive:before | User downloads album | | Album::getArchive:after | | | Album::setTitle:before | User renames album | | Album::setTitle:after | | | Album::setDescription:before | User sets description | | Album::setDescription:after | | | Album::getPublic:before | User makes album public or private | | Album::getPublic:after | | | Album::setPassword:before | User sets password | | Album::setPassword:after | | | Album::checkPassword:before | Lychee checks if password is correct | | Album::checkPassword:after | | | Album::merge:before | User merges albums | | Album::merge:after | | | Album::delete:before | User deletes album | | Album::delete:after | |
These hooks are called from php/modules/Photo.php
.
| Name | Description | |:-----------|:------------|:------------| | Photo::add:before | User uploads photos | | Photo::add:after | | | Photo::createThumb:before | Lychee creates thumbs | | Photo::createThumb:after | | | Photo::adjustFile:before | Lychee adjusts files | | Photo::adjustFile:after | | | Photo::get:before | User opens photo | | Photo::get:after | | | Photo::getInfo:before | Lychee reads the metadata of an image | | Photo::getInfo:after | | | Photo::getArchive:before | User downloads photo | | Photo::getArchive:after | | | Photo::setTitle:before | User renames photo | | Photo::setTitle:after | | | Photo::setDescription:before | User sets description | | Photo::setDescription:after | | | Photo::setStar:before | User stars photo | | Photo::setStar:after | | | Photo::getPublic:before | Lychee checks if photo is public | | Photo::getPublic:after | | | Photo::setPublic:before | User shares photo | | Photo::setPublic:after | | | Photo::setAlbum:before | User moves photo to album | | Photo::setAlbum:after | | | Photo::setTags:before | User sets tags | | Photo::setTags:after | | | Photo::delete:before | User deletes photo | | Photo::delete:after | |
These hooks are called from php/modules/Session.php
.
| Name | Description | |:-----------|:------------|:------------| | Session::init:before | Someone opens Lychee | | Session::init:after | | | Session::login:before | Someone logs in | | Session::login:after | | | Session::logout:before | User logs out | | Session::logout:after | |
These hooks are called from php/modules/Import.php
.
| Name | Description | |:-----------|:------------|:------------| | Import::server:before | User imports photos from the server | | Import::server:after | |