]> git.mxchange.org Git - friendica.git/blob - src/Model/Storage/IStorage.php
Detection of local requests
[friendica.git] / src / Model / Storage / IStorage.php
1 <?php
2 /**
3  * @copyright Copyright (C) 2010-2021, 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\Model\Storage;
23
24 /**
25  * Interface for storage backends
26  *
27  * @todo Split this interface into "IStorage" for get() operations (including Resource fetching) and "IUserStorage" for real user backends including put/delete/options
28  */
29 interface IStorage
30 {
31         /**
32          * Get data from backend
33          *
34          * @param string $reference Data reference
35          *
36          * @return string
37          */
38         public function get(string $reference);
39
40         /**
41          * Put data in backend as $ref. If $ref is not defined a new reference is created.
42          *
43          * @param string $data      Data to save
44          * @param string $reference Data reference. Optional.
45          *
46          * @return string Saved data reference
47          */
48         public function put(string $data, string $reference = "");
49
50         /**
51          * Remove data from backend
52          *
53          * @param string $reference Data reference
54          *
55          * @return boolean  True on success
56          */
57         public function delete(string $reference);
58
59         /**
60          * Get info about storage options
61          *
62          * @return array
63          *
64          * This method return an array with informations about storage options
65          * from which the form presented to the user is build.
66          *
67          * The returned array is:
68          *
69          *    [
70          *      'option1name' => [ ..info.. ],
71          *      'option2name' => [ ..info.. ],
72          *      ...
73          *    ]
74          *
75          * An empty array can be returned if backend doesn't have any options
76          *
77          * The info array for each option MUST be as follows:
78          *
79          *    [
80          *      'type',      // define the field used in form, and the type of data.
81          *                   // one of 'checkbox', 'combobox', 'custom', 'datetime',
82          *                   // 'input', 'intcheckbox', 'password', 'radio', 'richtext'
83          *                   // 'select', 'select_raw', 'textarea'
84          *
85          *      'label',     // Translatable label of the field
86          *      'value',     // Current value
87          *      'help text', // Translatable description for the field
88          *      extra data   // Optional. Depends on 'type':
89          *                   // select: array [ value => label ] of choices
90          *                   // intcheckbox: value of input element
91          *                   // select_raw: prebuild html string of < option > tags
92          *    ]
93          *
94          * See https://github.com/friendica/friendica/wiki/Quick-Template-Guide
95          */
96         public function getOptions();
97
98         /**
99          * Validate and save options
100          *
101          * @param array $data Array [optionname => value] to be saved
102          *
103          * @return array  Validation errors: [optionname => error message]
104          *
105          * Return array must be empty if no error.
106          */
107         public function saveOptions(array $data);
108
109         /**
110          * The name of the backend
111          *
112          * @return string
113          */
114         public function __toString();
115
116         /**
117          * The name of the backend
118          *
119          * @return string
120          */
121         public static function getName();
122 }