]> git.mxchange.org Git - friendica.git/blob - src/Core/Storage/Capability/ICanConfigureStorage.php
Happy New Year 2023!
[friendica.git] / src / Core / Storage / Capability / ICanConfigureStorage.php
1 <?php
2 /**
3  * @copyright Copyright (C) 2010-2023, the Friendica project
4  *
5  * @license GNU AGPL version 3 or any later version
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Affero General Public License as
9  * published by the Free Software Foundation, either version 3 of the
10  * License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU Affero General Public License for more details.
16  *
17  * You should have received a copy of the GNU Affero General Public License
18  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
19  *
20  */
21
22 namespace Friendica\Core\Storage\Capability;
23
24 /**
25  * The interface to use for configurable storage backends
26  */
27 interface ICanConfigureStorage
28 {
29         /**
30          * Get info about storage options
31          *
32          * @return array
33          *
34          * This method return an array with information about storage options
35          * from which the form presented to the user is build.
36          *
37          * The returned array is:
38          *
39          *    [
40          *      'option1name' => [ ..info.. ],
41          *      'option2name' => [ ..info.. ],
42          *      ...
43          *    ]
44          *
45          * An empty array can be returned if backend doesn't have any options
46          *
47          * The info array for each option MUST be as follows:
48          *
49          *    [
50          *      'type',      // define the field used in form, and the type of data.
51          *                   // one of 'checkbox', 'combobox', 'custom', 'datetime',
52          *                   // 'input', 'intcheckbox', 'password', 'radio', 'richtext'
53          *                   // 'select', 'select_raw', 'textarea'
54          *
55          *      'label',     // Translatable label of the field
56          *      'value',     // Current value
57          *      'help text', // Translatable description for the field
58          *      extra data   // Optional. Depends on 'type':
59          *                   // select: array [ value => label ] of choices
60          *                   // intcheckbox: value of input element
61          *                   // select_raw: prebuild html string of < option > tags
62          *    ]
63          *
64          * See https://github.com/friendica/friendica/wiki/Quick-Template-Guide
65          */
66         public function getOptions(): array;
67
68         /**
69          * Validate and save options
70          *
71          * @param array $data Array [optionname => value] to be saved
72          *
73          * @return array  Validation errors: [optionname => error message]
74          *
75          * Return array must be empty if no error.
76          */
77         public function saveOptions(array $data): array;
78 }