X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=doc%2FAddonStorageBackend.md;h=eaa58cd4d871606bde194b79c6dbb436f468d484;hb=259b99e6e94cd6714e65bb128af9cbe776fd3325;hp=f69dfff45a9d03449f51f89d5028c386f0b679cd;hpb=7bf00984ec7cb6e085242ff50af7fd2bd1de2711;p=friendica.git diff --git a/doc/AddonStorageBackend.md b/doc/AddonStorageBackend.md index f69dfff45a..eaa58cd4d8 100644 --- a/doc/AddonStorageBackend.md +++ b/doc/AddonStorageBackend.md @@ -4,24 +4,26 @@ Friendica Storage Backend Addon development * [Home](help) Storage backends can be added via addons. -A storage backend is implemented as a class, and the plugin register the class to make it avaiable to the system. +A storage backend is implemented as a class, and the plugin register the class to make it available to the system. ## The Storage Backend Class The class must live in `Friendica\Addon\youraddonname` namespace, where `youraddonname` the folder name of your addon. -The class must implement `Friendica\Model\Storage\IStorage` interface. All method in the interface must be implemented: +There are two different interfaces you need to implement. -namespace Friendica\Model\Storage; +### `ICanWriteToStorage` + +The class must implement `Friendica\Core\Storage\Capability\ICanWriteToStorage` interface. All method in the interface must be implemented: ```php -interface IStorage +namespace Friendica\Core\Storage\Capability\ICanWriteToStorage; + +interface ICanWriteToStorage { public function get(string $reference); public function put(string $data, string $reference = ''); public function delete(string $reference); - public function getOptions(); - public function saveOptions(array $data); public function __toString(); public static function getName(); } @@ -31,7 +33,22 @@ interface IStorage - `put(string $data, string $reference)` saves data in `$data` to position `$reference`, or a new position if `$reference` is empty. - `delete(string $reference)` delete data pointed by `$reference` +### `ICanConfigureStorage` + Each storage backend can have options the admin can set in admin page. +To make the options possible, you need to implement the `Friendica\Core\Storage\Capability\ICanConfigureStorage` interface. + +All methods in the interface must be implemented: + +```php +namespace Friendica\Core\Storage\Capability\ICanConfigureStorage; + +interface ICanConfigureStorage +{ + public function getOptions(); + public function saveOptions(array $data); +} +``` - `getOptions()` returns an array with details about each option to build the interface. - `saveOptions(array $data)` get `$data` from admin page, validate it and save it. @@ -52,7 +69,7 @@ The info array for each option is defined as: 'type', define the field used in form, and the type of data. -one of 'checkbox', 'combobox', 'custom', 'datetime', 'input', 'intcheckbox', 'password', 'radio', 'richtext', 'select', 'select_raw', 'textarea', 'yesno' +one of 'checkbox', 'combobox', 'custom', 'datetime', 'input', 'intcheckbox', 'password', 'radio', 'richtext', 'select', 'select_raw', 'textarea' 'label', @@ -73,14 +90,13 @@ Optional. Depends on which 'type' this option is: - 'select': array `[ value => label ]` of choices - 'intcheckbox': value of input element - 'select_raw': prebuild html string of `