Passed
Push — master ( 65fd24...fc096a )
by Joas
17:08 queued 14s
created
lib/public/Collaboration/Resources/ICollection.php 1 patch
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -29,53 +29,53 @@
 block discarded – undo
29 29
  */
30 30
 interface ICollection {
31 31
 
32
-	/**
33
-	 * @return int
34
-	 * @since 16.0.0
35
-	 */
36
-	public function getId(): int;
32
+    /**
33
+     * @return int
34
+     * @since 16.0.0
35
+     */
36
+    public function getId(): int;
37 37
 
38
-	/**
39
-	 * @return string
40
-	 * @since 16.0.0
41
-	 */
42
-	public function getName(): string;
38
+    /**
39
+     * @return string
40
+     * @since 16.0.0
41
+     */
42
+    public function getName(): string;
43 43
 
44
-	/**
45
-	 * @param string $name
46
-	 * @since 16.0.0
47
-	 */
48
-	public function setName(string $name): void;
44
+    /**
45
+     * @param string $name
46
+     * @since 16.0.0
47
+     */
48
+    public function setName(string $name): void;
49 49
 
50
-	/**
51
-	 * @return IResource[]
52
-	 * @since 16.0.0
53
-	 */
54
-	public function getResources(): array;
50
+    /**
51
+     * @return IResource[]
52
+     * @since 16.0.0
53
+     */
54
+    public function getResources(): array;
55 55
 
56
-	/**
57
-	 * Adds a resource to a collection
58
-	 *
59
-	 * @param IResource $resource
60
-	 * @throws ResourceException when the resource is already part of the collection
61
-	 * @since 16.0.0
62
-	 */
63
-	public function addResource(IResource $resource): void;
56
+    /**
57
+     * Adds a resource to a collection
58
+     *
59
+     * @param IResource $resource
60
+     * @throws ResourceException when the resource is already part of the collection
61
+     * @since 16.0.0
62
+     */
63
+    public function addResource(IResource $resource): void;
64 64
 
65
-	/**
66
-	 * Removes a resource from a collection
67
-	 *
68
-	 * @param IResource $resource
69
-	 * @since 16.0.0
70
-	 */
71
-	public function removeResource(IResource $resource): void;
65
+    /**
66
+     * Removes a resource from a collection
67
+     *
68
+     * @param IResource $resource
69
+     * @since 16.0.0
70
+     */
71
+    public function removeResource(IResource $resource): void;
72 72
 
73
-	/**
74
-	 * Can a user/guest access the collection
75
-	 *
76
-	 * @param IUser|null $user
77
-	 * @return bool
78
-	 * @since 16.0.0
79
-	 */
80
-	public function canAccess(?IUser $user): bool;
73
+    /**
74
+     * Can a user/guest access the collection
75
+     *
76
+     * @param IUser|null $user
77
+     * @return bool
78
+     * @since 16.0.0
79
+     */
80
+    public function canAccess(?IUser $user): bool;
81 81
 }
Please login to merge, or discard this patch.
lib/public/FullTextSearch/Model/ISearchTemplate.php 1 patch
Indentation   +112 added lines, -112 removed lines patch added patch discarded remove patch
@@ -62,118 +62,118 @@
 block discarded – undo
62 62
 interface ISearchTemplate {
63 63
 
64 64
 
65
-	/**
66
-	 * Set the class of the icon to be displayed in the left panel of the
67
-	 * FullTextSearch navigation page, in front of the related Content Provider.
68
-	 *
69
-	 * @since 16.0.0
70
-	 *
71
-	 * @param string $class
72
-	 *
73
-	 * @return ISearchTemplate
74
-	 */
75
-	public function setIcon(string $class): ISearchTemplate;
76
-
77
-	/**
78
-	 * Get the class of the icon.
79
-	 *
80
-	 * @since 16.0.0
81
-	 *
82
-	 * @return string
83
-	 */
84
-	public function getIcon(): string;
85
-
86
-
87
-	/**
88
-	 * Set the path of a CSS file that will be loaded when needed.
89
-	 *
90
-	 * @since 16.0.0
91
-	 *
92
-	 * @param string $css
93
-	 *
94
-	 * @return ISearchTemplate
95
-	 */
96
-	public function setCss(string $css): ISearchTemplate;
97
-
98
-	/**
99
-	 * Get the path of the CSS file.
100
-	 *
101
-	 * @since 16.0.0
102
-	 *
103
-	 * @return string
104
-	 */
105
-	public function getCss(): string;
106
-
107
-
108
-	/**
109
-	 * Set the path of the file of a template that the HTML will be displayed
110
-	 * below the Options.
111
-	 * This should only be used if your Content Provider needs to set options in
112
-	 * a way not generated by FullTextSearch
113
-	 *
114
-	 * @since 16.0.0
115
-	 *
116
-	 * @param string $template
117
-	 *
118
-	 * @return ISearchTemplate
119
-	 */
120
-	public function setTemplate(string $template): ISearchTemplate;
121
-
122
-	/**
123
-	 * Get the path of the template file.
124
-	 *
125
-	 * @since 16.0.0
126
-	 *
127
-	 * @return string
128
-	 */
129
-	public function getTemplate(): string;
130
-
131
-
132
-	/**
133
-	 * Add an option in the Panel that is displayed when the user start a search
134
-	 * within the app that generate the content.
135
-	 *
136
-	 * @see ISearchOption
137
-	 *
138
-	 * @since 16.0.0
139
-	 *
140
-	 * @param ISearchOption $option
141
-	 *
142
-	 * @return ISearchTemplate
143
-	 */
144
-	public function addPanelOption(ISearchOption $option): ISearchTemplate;
145
-
146
-	/**
147
-	 * Get all options to be displayed in the Panel.
148
-	 *
149
-	 * @since 16.0.0
150
-	 *
151
-	 * @return ISearchOption[]
152
-	 */
153
-	public function getPanelOptions(): array;
154
-
155
-
156
-	/**
157
-	 * Add an option in the left panel of the FullTextSearch navigation page.
158
-	 *
159
-	 * @see ISearchOption
160
-	 *
161
-	 * @since 16.0.0
162
-	 *
163
-	 * @param ISearchOption $option
164
-	 *
165
-	 * @return ISearchTemplate
166
-	 */
167
-	public function addNavigationOption(ISearchOption $option): ISearchTemplate;
168
-
169
-	/**
170
-	 * Get all options to be displayed in the FullTextSearch navigation page.
171
-	 *
172
-	 * @since 16.0.0
173
-	 *
174
-	 * @return array
175
-	 */
176
-	public function getNavigationOptions(): array;
65
+    /**
66
+     * Set the class of the icon to be displayed in the left panel of the
67
+     * FullTextSearch navigation page, in front of the related Content Provider.
68
+     *
69
+     * @since 16.0.0
70
+     *
71
+     * @param string $class
72
+     *
73
+     * @return ISearchTemplate
74
+     */
75
+    public function setIcon(string $class): ISearchTemplate;
76
+
77
+    /**
78
+     * Get the class of the icon.
79
+     *
80
+     * @since 16.0.0
81
+     *
82
+     * @return string
83
+     */
84
+    public function getIcon(): string;
85
+
86
+
87
+    /**
88
+     * Set the path of a CSS file that will be loaded when needed.
89
+     *
90
+     * @since 16.0.0
91
+     *
92
+     * @param string $css
93
+     *
94
+     * @return ISearchTemplate
95
+     */
96
+    public function setCss(string $css): ISearchTemplate;
97
+
98
+    /**
99
+     * Get the path of the CSS file.
100
+     *
101
+     * @since 16.0.0
102
+     *
103
+     * @return string
104
+     */
105
+    public function getCss(): string;
106
+
107
+
108
+    /**
109
+     * Set the path of the file of a template that the HTML will be displayed
110
+     * below the Options.
111
+     * This should only be used if your Content Provider needs to set options in
112
+     * a way not generated by FullTextSearch
113
+     *
114
+     * @since 16.0.0
115
+     *
116
+     * @param string $template
117
+     *
118
+     * @return ISearchTemplate
119
+     */
120
+    public function setTemplate(string $template): ISearchTemplate;
121
+
122
+    /**
123
+     * Get the path of the template file.
124
+     *
125
+     * @since 16.0.0
126
+     *
127
+     * @return string
128
+     */
129
+    public function getTemplate(): string;
130
+
131
+
132
+    /**
133
+     * Add an option in the Panel that is displayed when the user start a search
134
+     * within the app that generate the content.
135
+     *
136
+     * @see ISearchOption
137
+     *
138
+     * @since 16.0.0
139
+     *
140
+     * @param ISearchOption $option
141
+     *
142
+     * @return ISearchTemplate
143
+     */
144
+    public function addPanelOption(ISearchOption $option): ISearchTemplate;
145
+
146
+    /**
147
+     * Get all options to be displayed in the Panel.
148
+     *
149
+     * @since 16.0.0
150
+     *
151
+     * @return ISearchOption[]
152
+     */
153
+    public function getPanelOptions(): array;
154
+
155
+
156
+    /**
157
+     * Add an option in the left panel of the FullTextSearch navigation page.
158
+     *
159
+     * @see ISearchOption
160
+     *
161
+     * @since 16.0.0
162
+     *
163
+     * @param ISearchOption $option
164
+     *
165
+     * @return ISearchTemplate
166
+     */
167
+    public function addNavigationOption(ISearchOption $option): ISearchTemplate;
168
+
169
+    /**
170
+     * Get all options to be displayed in the FullTextSearch navigation page.
171
+     *
172
+     * @since 16.0.0
173
+     *
174
+     * @return array
175
+     */
176
+    public function getNavigationOptions(): array;
177 177
 
178 178
 }
179 179
 
Please login to merge, or discard this patch.
lib/public/FullTextSearch/Model/IDocumentAccess.php 1 patch
Indentation   +205 added lines, -205 removed lines patch added patch discarded remove patch
@@ -54,211 +54,211 @@
 block discarded – undo
54 54
 interface IDocumentAccess {
55 55
 
56 56
 
57
-	/**
58
-	 * Owner of the document can be set at the init of the object.
59
-	 *
60
-	 * @since 16.0.0
61
-	 *
62
-	 * IDocumentAccess constructor.
63
-	 *
64
-	 * @param string $ownerId
65
-	 */
66
-	public function __construct(string $ownerId = '');
67
-
68
-
69
-	/**
70
-	 * Set the Owner of the document.
71
-	 *
72
-	 * @since 16.0.0
73
-	 *
74
-	 * @param string $ownerId
75
-	 *
76
-	 * @return IDocumentAccess
77
-	 */
78
-	public function setOwnerId(string $ownerId): IDocumentAccess;
79
-
80
-	/**
81
-	 * Get the Owner of the document.
82
-	 *
83
-	 * @since 16.0.0
84
-	 *
85
-	 * @return string
86
-	 */
87
-	public function getOwnerId(): string;
88
-
89
-
90
-	/**
91
-	 * Set the viewer of the document.
92
-	 *
93
-	 * @since 16.0.0
94
-	 *
95
-	 * @param string $viewerId
96
-	 *
97
-	 * @return IDocumentAccess
98
-	 */
99
-	public function setViewerId(string $viewerId): IDocumentAccess;
100
-
101
-	/**
102
-	 * Get the viewer of the document.
103
-	 *
104
-	 * @since 16.0.0
105
-	 *
106
-	 * @return string
107
-	 */
108
-	public function getViewerId(): string;
109
-
110
-
111
-	/**
112
-	 * Set the list of users that have read access to the document.
113
-	 *
114
-	 * @since 16.0.0
115
-	 *
116
-	 * @param array $users
117
-	 *
118
-	 * @return IDocumentAccess
119
-	 */
120
-	public function setUsers(array $users): IDocumentAccess;
121
-
122
-	/**
123
-	 * Add an entry to the list of users that have read access to the document.
124
-	 *
125
-	 * @since 16.0.0
126
-	 *
127
-	 * @param string $user
128
-	 *
129
-	 * @return IDocumentAccess
130
-	 */
131
-	public function addUser(string $user): IDocumentAccess;
132
-
133
-	/**
134
-	 * Add multiple entries to the list of users that have read access to the
135
-	 * document.
136
-	 *
137
-	 * @since 16.0.0
138
-	 *
139
-	 * @param array $users
140
-	 *
141
-	 * @return IDocumentAccess
142
-	 */
143
-	public function addUsers($users): IDocumentAccess;
144
-
145
-	/**
146
-	 * Get the complete list of users that have read access to the document.
147
-	 *
148
-	 * @since 16.0.0
149
-	 *
150
-	 * @return array
151
-	 */
152
-	public function getUsers(): array;
153
-
154
-
155
-	/**
156
-	 * Set the list of groups that have read access to the document.
157
-	 *
158
-	 * @since 16.0.0
159
-	 *
160
-	 * @param array $groups
161
-	 *
162
-	 * @return IDocumentAccess
163
-	 */
164
-	public function setGroups(array $groups): IDocumentAccess;
165
-
166
-	/**
167
-	 * Add an entry to the list of groups that have read access to the document.
168
-	 *
169
-	 * @since 16.0.0
170
-	 *
171
-	 * @param string $group
172
-	 *
173
-	 * @return IDocumentAccess
174
-	 */
175
-	public function addGroup(string $group): IDocumentAccess;
176
-
177
-	/**
178
-	 * Add multiple entries to the list of groups that have read access to the
179
-	 * document.
180
-	 *
181
-	 * @since 16.0.0
182
-	 *
183
-	 * @param array $groups
184
-	 *
185
-	 * @return IDocumentAccess
186
-	 */
187
-	public function addGroups(array $groups);
188
-
189
-	/**
190
-	 * Get the complete list of groups that have read access to the document.
191
-	 *
192
-	 * @since 16.0.0
193
-	 *
194
-	 * @return array
195
-	 */
196
-	public function getGroups(): array;
197
-
198
-
199
-	/**
200
-	 * Set the list of circles that have read access to the document.
201
-	 *
202
-	 * @since 16.0.0
203
-	 *
204
-	 * @param array $circles
205
-	 *
206
-	 * @return IDocumentAccess
207
-	 */
208
-	public function setCircles(array $circles): IDocumentAccess;
209
-
210
-	/**
211
-	 * Add an entry to the list of circles that have read access to the document.
212
-	 *
213
-	 * @since 16.0.0
214
-	 *
215
-	 * @param string $circle
216
-	 *
217
-	 * @return IDocumentAccess
218
-	 */
219
-	public function addCircle(string $circle): IDocumentAccess;
220
-
221
-	/**
222
-	 * Add multiple entries to the list of groups that have read access to the
223
-	 * document.
224
-	 *
225
-	 * @since 16.0.0
226
-	 *
227
-	 * @param array $circles
228
-	 *
229
-	 * @return IDocumentAccess
230
-	 */
231
-	public function addCircles(array $circles): IDocumentAccess;
232
-
233
-	/**
234
-	 * Get the complete list of circles that have read access to the document.
235
-	 *
236
-	 * @since 16.0.0
237
-	 *
238
-	 * @return array
239
-	 */
240
-	public function getCircles(): array;
241
-
242
-
243
-	/**
244
-	 * Set the list of links that have read access to the document.
245
-	 *
246
-	 * @since 16.0.0
247
-	 *
248
-	 * @param array $links
249
-	 *
250
-	 * @return IDocumentAccess
251
-	 */
252
-	public function setLinks(array $links): IDocumentAccess;
253
-
254
-	/**
255
-	 * Get the list of links that have read access to the document.
256
-	 *
257
-	 * @since 16.0.0
258
-	 *
259
-	 * @return array
260
-	 */
261
-	public function getLinks(): array;
57
+    /**
58
+     * Owner of the document can be set at the init of the object.
59
+     *
60
+     * @since 16.0.0
61
+     *
62
+     * IDocumentAccess constructor.
63
+     *
64
+     * @param string $ownerId
65
+     */
66
+    public function __construct(string $ownerId = '');
67
+
68
+
69
+    /**
70
+     * Set the Owner of the document.
71
+     *
72
+     * @since 16.0.0
73
+     *
74
+     * @param string $ownerId
75
+     *
76
+     * @return IDocumentAccess
77
+     */
78
+    public function setOwnerId(string $ownerId): IDocumentAccess;
79
+
80
+    /**
81
+     * Get the Owner of the document.
82
+     *
83
+     * @since 16.0.0
84
+     *
85
+     * @return string
86
+     */
87
+    public function getOwnerId(): string;
88
+
89
+
90
+    /**
91
+     * Set the viewer of the document.
92
+     *
93
+     * @since 16.0.0
94
+     *
95
+     * @param string $viewerId
96
+     *
97
+     * @return IDocumentAccess
98
+     */
99
+    public function setViewerId(string $viewerId): IDocumentAccess;
100
+
101
+    /**
102
+     * Get the viewer of the document.
103
+     *
104
+     * @since 16.0.0
105
+     *
106
+     * @return string
107
+     */
108
+    public function getViewerId(): string;
109
+
110
+
111
+    /**
112
+     * Set the list of users that have read access to the document.
113
+     *
114
+     * @since 16.0.0
115
+     *
116
+     * @param array $users
117
+     *
118
+     * @return IDocumentAccess
119
+     */
120
+    public function setUsers(array $users): IDocumentAccess;
121
+
122
+    /**
123
+     * Add an entry to the list of users that have read access to the document.
124
+     *
125
+     * @since 16.0.0
126
+     *
127
+     * @param string $user
128
+     *
129
+     * @return IDocumentAccess
130
+     */
131
+    public function addUser(string $user): IDocumentAccess;
132
+
133
+    /**
134
+     * Add multiple entries to the list of users that have read access to the
135
+     * document.
136
+     *
137
+     * @since 16.0.0
138
+     *
139
+     * @param array $users
140
+     *
141
+     * @return IDocumentAccess
142
+     */
143
+    public function addUsers($users): IDocumentAccess;
144
+
145
+    /**
146
+     * Get the complete list of users that have read access to the document.
147
+     *
148
+     * @since 16.0.0
149
+     *
150
+     * @return array
151
+     */
152
+    public function getUsers(): array;
153
+
154
+
155
+    /**
156
+     * Set the list of groups that have read access to the document.
157
+     *
158
+     * @since 16.0.0
159
+     *
160
+     * @param array $groups
161
+     *
162
+     * @return IDocumentAccess
163
+     */
164
+    public function setGroups(array $groups): IDocumentAccess;
165
+
166
+    /**
167
+     * Add an entry to the list of groups that have read access to the document.
168
+     *
169
+     * @since 16.0.0
170
+     *
171
+     * @param string $group
172
+     *
173
+     * @return IDocumentAccess
174
+     */
175
+    public function addGroup(string $group): IDocumentAccess;
176
+
177
+    /**
178
+     * Add multiple entries to the list of groups that have read access to the
179
+     * document.
180
+     *
181
+     * @since 16.0.0
182
+     *
183
+     * @param array $groups
184
+     *
185
+     * @return IDocumentAccess
186
+     */
187
+    public function addGroups(array $groups);
188
+
189
+    /**
190
+     * Get the complete list of groups that have read access to the document.
191
+     *
192
+     * @since 16.0.0
193
+     *
194
+     * @return array
195
+     */
196
+    public function getGroups(): array;
197
+
198
+
199
+    /**
200
+     * Set the list of circles that have read access to the document.
201
+     *
202
+     * @since 16.0.0
203
+     *
204
+     * @param array $circles
205
+     *
206
+     * @return IDocumentAccess
207
+     */
208
+    public function setCircles(array $circles): IDocumentAccess;
209
+
210
+    /**
211
+     * Add an entry to the list of circles that have read access to the document.
212
+     *
213
+     * @since 16.0.0
214
+     *
215
+     * @param string $circle
216
+     *
217
+     * @return IDocumentAccess
218
+     */
219
+    public function addCircle(string $circle): IDocumentAccess;
220
+
221
+    /**
222
+     * Add multiple entries to the list of groups that have read access to the
223
+     * document.
224
+     *
225
+     * @since 16.0.0
226
+     *
227
+     * @param array $circles
228
+     *
229
+     * @return IDocumentAccess
230
+     */
231
+    public function addCircles(array $circles): IDocumentAccess;
232
+
233
+    /**
234
+     * Get the complete list of circles that have read access to the document.
235
+     *
236
+     * @since 16.0.0
237
+     *
238
+     * @return array
239
+     */
240
+    public function getCircles(): array;
241
+
242
+
243
+    /**
244
+     * Set the list of links that have read access to the document.
245
+     *
246
+     * @since 16.0.0
247
+     *
248
+     * @param array $links
249
+     *
250
+     * @return IDocumentAccess
251
+     */
252
+    public function setLinks(array $links): IDocumentAccess;
253
+
254
+    /**
255
+     * Get the list of links that have read access to the document.
256
+     *
257
+     * @since 16.0.0
258
+     *
259
+     * @return array
260
+     */
261
+    public function getLinks(): array;
262 262
 
263 263
 }
264 264
 
Please login to merge, or discard this patch.
lib/public/FullTextSearch/Model/ISearchResult.php 1 patch
Indentation   +137 added lines, -137 removed lines patch added patch discarded remove patch
@@ -56,143 +56,143 @@
 block discarded – undo
56 56
 interface ISearchResult {
57 57
 
58 58
 
59
-	/**
60
-	 * Get the original SearchRequest.
61
-	 *
62
-	 * @see ISearchRequest
63
-	 *
64
-	 * @since 15.0.0
65
-	 *
66
-	 * @return ISearchRequest
67
-	 */
68
-	public function getRequest(): ISearchRequest;
69
-
70
-	/**
71
-	 * Get the targeted Content Provider.
72
-	 *
73
-	 * @since 15.0.0
74
-	 *
75
-	 * @return IFullTextSearchProvider
76
-	 */
77
-	public function getProvider(): IFullTextSearchProvider;
78
-
79
-
80
-	/**
81
-	 * Add an IIndexDocument as one of the result of the search request.
82
-	 *
83
-	 * @since 15.0.0
84
-	 *
85
-	 * @param IIndexDocument $document
86
-	 *
87
-	 * @return ISearchResult
88
-	 */
89
-	public function addDocument(IIndexDocument $document): ISearchResult;
90
-
91
-	/**
92
-	 * Returns all result of the search request, in an array of IIndexDocument.
93
-	 *
94
-	 * @since 15.0.0
95
-	 *
96
-	 * @return IIndexDocument[]
97
-	 */
98
-	public function getDocuments(): array;
99
-
100
-	/**
101
-	 * Set an array of IIndexDocument as the result of the search request.
102
-	 *
103
-	 * @since 15.0.0
104
-	 *
105
-	 * @param IIndexDocument[] $documents
106
-	 *
107
-	 * @return ISearchResult
108
-	 */
109
-	public function setDocuments(array $documents): ISearchResult;
110
-
111
-
112
-	/**
113
-	 * Add an aggregation to the result.
114
-	 *
115
-	 * @since 15.0.0
116
-	 *
117
-	 * @param string $category
118
-	 * @param string $value
119
-	 * @param int $count
120
-	 *
121
-	 * @return ISearchResult
122
-	 */
123
-	public function addAggregation(string $category, string $value, int $count): ISearchResult;
124
-
125
-	/**
126
-	 * Get all aggregations.
127
-	 *
128
-	 * @since 15.0.0
129
-	 *
130
-	 * @param string $category
131
-	 *
132
-	 * @return array
133
-	 */
134
-	public function getAggregations(string $category): array;
135
-
136
-
137
-	/**
138
-	 * Set the raw result of the request.
139
-	 *
140
-	 * @since 15.0.0
141
-	 *
142
-	 * @param string $result
143
-	 *
144
-	 * @return ISearchResult
145
-	 */
146
-	public function setRawResult(string $result): ISearchResult;
147
-
148
-
149
-	/**
150
-	 * Set the total number of results for the search request.
151
-	 * Used by pagination.
152
-	 *
153
-	 * @since 15.0.0
154
-	 *
155
-	 * @param int $total
156
-	 *
157
-	 * @return ISearchResult
158
-	 */
159
-	public function setTotal(int $total): ISearchResult;
160
-
161
-
162
-	/**
163
-	 * Set the top score for the search request.
164
-	 *
165
-	 * @since 15.0.0
166
-	 *
167
-	 * @param int $score
168
-	 *
169
-	 * @return ISearchResult
170
-	 */
171
-	public function setMaxScore(int $score): ISearchResult;
172
-
173
-
174
-	/**
175
-	 * Set the time spent by the request to perform the search.
176
-	 *
177
-	 * @since 15.0.0
178
-	 *
179
-	 * @param int $time
180
-	 *
181
-	 * @return ISearchResult
182
-	 */
183
-	public function setTime(int $time): ISearchResult;
184
-
185
-
186
-	/**
187
-	 * Set to true if the request timed out.
188
-	 *
189
-	 * @since 15.0.0
190
-	 *
191
-	 * @param bool $timedOut
192
-	 *
193
-	 * @return ISearchResult
194
-	 */
195
-	public function setTimedOut(bool $timedOut): ISearchResult;
59
+    /**
60
+     * Get the original SearchRequest.
61
+     *
62
+     * @see ISearchRequest
63
+     *
64
+     * @since 15.0.0
65
+     *
66
+     * @return ISearchRequest
67
+     */
68
+    public function getRequest(): ISearchRequest;
69
+
70
+    /**
71
+     * Get the targeted Content Provider.
72
+     *
73
+     * @since 15.0.0
74
+     *
75
+     * @return IFullTextSearchProvider
76
+     */
77
+    public function getProvider(): IFullTextSearchProvider;
78
+
79
+
80
+    /**
81
+     * Add an IIndexDocument as one of the result of the search request.
82
+     *
83
+     * @since 15.0.0
84
+     *
85
+     * @param IIndexDocument $document
86
+     *
87
+     * @return ISearchResult
88
+     */
89
+    public function addDocument(IIndexDocument $document): ISearchResult;
90
+
91
+    /**
92
+     * Returns all result of the search request, in an array of IIndexDocument.
93
+     *
94
+     * @since 15.0.0
95
+     *
96
+     * @return IIndexDocument[]
97
+     */
98
+    public function getDocuments(): array;
99
+
100
+    /**
101
+     * Set an array of IIndexDocument as the result of the search request.
102
+     *
103
+     * @since 15.0.0
104
+     *
105
+     * @param IIndexDocument[] $documents
106
+     *
107
+     * @return ISearchResult
108
+     */
109
+    public function setDocuments(array $documents): ISearchResult;
110
+
111
+
112
+    /**
113
+     * Add an aggregation to the result.
114
+     *
115
+     * @since 15.0.0
116
+     *
117
+     * @param string $category
118
+     * @param string $value
119
+     * @param int $count
120
+     *
121
+     * @return ISearchResult
122
+     */
123
+    public function addAggregation(string $category, string $value, int $count): ISearchResult;
124
+
125
+    /**
126
+     * Get all aggregations.
127
+     *
128
+     * @since 15.0.0
129
+     *
130
+     * @param string $category
131
+     *
132
+     * @return array
133
+     */
134
+    public function getAggregations(string $category): array;
135
+
136
+
137
+    /**
138
+     * Set the raw result of the request.
139
+     *
140
+     * @since 15.0.0
141
+     *
142
+     * @param string $result
143
+     *
144
+     * @return ISearchResult
145
+     */
146
+    public function setRawResult(string $result): ISearchResult;
147
+
148
+
149
+    /**
150
+     * Set the total number of results for the search request.
151
+     * Used by pagination.
152
+     *
153
+     * @since 15.0.0
154
+     *
155
+     * @param int $total
156
+     *
157
+     * @return ISearchResult
158
+     */
159
+    public function setTotal(int $total): ISearchResult;
160
+
161
+
162
+    /**
163
+     * Set the top score for the search request.
164
+     *
165
+     * @since 15.0.0
166
+     *
167
+     * @param int $score
168
+     *
169
+     * @return ISearchResult
170
+     */
171
+    public function setMaxScore(int $score): ISearchResult;
172
+
173
+
174
+    /**
175
+     * Set the time spent by the request to perform the search.
176
+     *
177
+     * @since 15.0.0
178
+     *
179
+     * @param int $time
180
+     *
181
+     * @return ISearchResult
182
+     */
183
+    public function setTime(int $time): ISearchResult;
184
+
185
+
186
+    /**
187
+     * Set to true if the request timed out.
188
+     *
189
+     * @since 15.0.0
190
+     *
191
+     * @param bool $timedOut
192
+     *
193
+     * @return ISearchResult
194
+     */
195
+    public function setTimedOut(bool $timedOut): ISearchResult;
196 196
 
197 197
 }
198 198
 
Please login to merge, or discard this patch.
lib/public/FullTextSearch/IFullTextSearchPlatform.php 1 patch
Indentation   +141 added lines, -141 removed lines patch added patch discarded remove patch
@@ -80,147 +80,147 @@
 block discarded – undo
80 80
 interface IFullTextSearchPlatform {
81 81
 
82 82
 
83
-	/**
84
-	 * Must returns a unique Id used to identify the Search Platform.
85
-	 * Id must contains only alphanumeric chars, with no space.
86
-	 *
87
-	 * @since 15.0.0
88
-	 *
89
-	 * @return string
90
-	 */
91
-	public function getId(): string;
92
-
93
-
94
-	/**
95
-	 * Must returns a descriptive name of the Search Platform.
96
-	 * This is used mainly in the admin settings page to display the list of
97
-	 * available Search Platform
98
-	 *
99
-	 * @since 15.0.0
100
-	 *
101
-	 * @return string
102
-	 */
103
-	public function getName(): string;
104
-
105
-
106
-	/**
107
-	 * should returns the current configuration of the Search Platform.
108
-	 * This is used to display the configuration when using the
109
-	 * ./occ fulltextsearch:check command line.
110
-	 *
111
-	 * @since 15.0.0
112
-	 *
113
-	 * @return array
114
-	 */
115
-	public function getConfiguration(): array;
116
-
117
-
118
-	/**
119
-	 * Set the wrapper of the currently executed process.
120
-	 * Because the index process can be long and heavy, and because errors can
121
-	 * be encountered during the process, the IRunner is a wrapper that allow the
122
-	 * Search Platform to communicate with the process initiated by
123
-	 * FullTextSearch.
124
-	 *
125
-	 * The IRunner is coming with some methods so the Search Platform can
126
-	 * returns important information and errors to be displayed to the admin.
127
-	 *
128
-	 * @since 15.0.0
129
-	 *
130
-	 * @param IRunner $runner
131
-	 */
132
-	public function setRunner(IRunner $runner);
133
-
134
-
135
-	/**
136
-	 * Called when FullTextSearch is loading your Search Platform.
137
-	 *
138
-	 * @since 15.0.0
139
-	 */
140
-	public function loadPlatform();
141
-
142
-
143
-	/**
144
-	 * Called to check that your Search Platform is correctly configured and that
145
-	 * This is also the right place to check that the Search Service is available.
146
-	 *
147
-	 * @since 15.0.0
148
-	 *
149
-	 * @return bool
150
-	 */
151
-	public function testPlatform(): bool;
152
-
153
-
154
-	/**
155
-	 * Called before an index is initiated.
156
-	 * Best place to initiate some stuff on the Search Server (mapping, ...)
157
-	 *
158
-	 * @since 15.0.0
159
-	 */
160
-	public function initializeIndex();
161
-
162
-
163
-	/**
164
-	 * Reset the indexes for a specific providerId.
165
-	 * $providerId can be 'all' if it is a global reset.
166
-	 *
167
-	 * @since 15.0.0
168
-	 *
169
-	 * @param string $providerId
170
-	 */
171
-	public function resetIndex(string $providerId);
172
-
173
-
174
-	/**
175
-	 * Deleting some IIndex, sent in an array
176
-	 *
177
-	 * @see IIndex
178
-	 *
179
-	 * @since 15.0.0
180
-	 *
181
-	 * @param IIndex[] $indexes
182
-	 */
183
-	public function deleteIndexes(array $indexes);
184
-
185
-
186
-	/**
187
-	 * Indexing a document.
188
-	 *
189
-	 * @see IndexDocument
190
-	 *
191
-	 * @since 15.0.0
192
-	 *
193
-	 * @param IIndexDocument $document
194
-	 *
195
-	 * @return IIndex
196
-	 */
197
-	public function indexDocument(IIndexDocument $document): IIndex;
198
-
199
-
200
-	/**
201
-	 * Searching documents, ISearchResult should be updated with the result of
202
-	 * the search.
203
-	 *
204
-	 * @since 15.0.0
205
-	 *
206
-	 * @param ISearchResult $result
207
-	 * @param IDocumentAccess $access
208
-	 */
209
-	public function searchRequest(ISearchResult $result, IDocumentAccess $access);
210
-
211
-
212
-	/**
213
-	 * Return a document based on its Id and the Provider.
214
-	 * This is used when an admin execute ./occ fulltextsearch:document:platform
215
-	 *
216
-	 * @since 15.0.0
217
-	 *
218
-	 * @param string $providerId
219
-	 * @param string $documentId
220
-	 *
221
-	 * @return IIndexDocument
222
-	 */
223
-	public function getDocument(string $providerId, string $documentId): IIndexDocument;
83
+    /**
84
+     * Must returns a unique Id used to identify the Search Platform.
85
+     * Id must contains only alphanumeric chars, with no space.
86
+     *
87
+     * @since 15.0.0
88
+     *
89
+     * @return string
90
+     */
91
+    public function getId(): string;
92
+
93
+
94
+    /**
95
+     * Must returns a descriptive name of the Search Platform.
96
+     * This is used mainly in the admin settings page to display the list of
97
+     * available Search Platform
98
+     *
99
+     * @since 15.0.0
100
+     *
101
+     * @return string
102
+     */
103
+    public function getName(): string;
104
+
105
+
106
+    /**
107
+     * should returns the current configuration of the Search Platform.
108
+     * This is used to display the configuration when using the
109
+     * ./occ fulltextsearch:check command line.
110
+     *
111
+     * @since 15.0.0
112
+     *
113
+     * @return array
114
+     */
115
+    public function getConfiguration(): array;
116
+
117
+
118
+    /**
119
+     * Set the wrapper of the currently executed process.
120
+     * Because the index process can be long and heavy, and because errors can
121
+     * be encountered during the process, the IRunner is a wrapper that allow the
122
+     * Search Platform to communicate with the process initiated by
123
+     * FullTextSearch.
124
+     *
125
+     * The IRunner is coming with some methods so the Search Platform can
126
+     * returns important information and errors to be displayed to the admin.
127
+     *
128
+     * @since 15.0.0
129
+     *
130
+     * @param IRunner $runner
131
+     */
132
+    public function setRunner(IRunner $runner);
133
+
134
+
135
+    /**
136
+     * Called when FullTextSearch is loading your Search Platform.
137
+     *
138
+     * @since 15.0.0
139
+     */
140
+    public function loadPlatform();
141
+
142
+
143
+    /**
144
+     * Called to check that your Search Platform is correctly configured and that
145
+     * This is also the right place to check that the Search Service is available.
146
+     *
147
+     * @since 15.0.0
148
+     *
149
+     * @return bool
150
+     */
151
+    public function testPlatform(): bool;
152
+
153
+
154
+    /**
155
+     * Called before an index is initiated.
156
+     * Best place to initiate some stuff on the Search Server (mapping, ...)
157
+     *
158
+     * @since 15.0.0
159
+     */
160
+    public function initializeIndex();
161
+
162
+
163
+    /**
164
+     * Reset the indexes for a specific providerId.
165
+     * $providerId can be 'all' if it is a global reset.
166
+     *
167
+     * @since 15.0.0
168
+     *
169
+     * @param string $providerId
170
+     */
171
+    public function resetIndex(string $providerId);
172
+
173
+
174
+    /**
175
+     * Deleting some IIndex, sent in an array
176
+     *
177
+     * @see IIndex
178
+     *
179
+     * @since 15.0.0
180
+     *
181
+     * @param IIndex[] $indexes
182
+     */
183
+    public function deleteIndexes(array $indexes);
184
+
185
+
186
+    /**
187
+     * Indexing a document.
188
+     *
189
+     * @see IndexDocument
190
+     *
191
+     * @since 15.0.0
192
+     *
193
+     * @param IIndexDocument $document
194
+     *
195
+     * @return IIndex
196
+     */
197
+    public function indexDocument(IIndexDocument $document): IIndex;
198
+
199
+
200
+    /**
201
+     * Searching documents, ISearchResult should be updated with the result of
202
+     * the search.
203
+     *
204
+     * @since 15.0.0
205
+     *
206
+     * @param ISearchResult $result
207
+     * @param IDocumentAccess $access
208
+     */
209
+    public function searchRequest(ISearchResult $result, IDocumentAccess $access);
210
+
211
+
212
+    /**
213
+     * Return a document based on its Id and the Provider.
214
+     * This is used when an admin execute ./occ fulltextsearch:document:platform
215
+     *
216
+     * @since 15.0.0
217
+     *
218
+     * @param string $providerId
219
+     * @param string $documentId
220
+     *
221
+     * @return IIndexDocument
222
+     */
223
+    public function getDocument(string $providerId, string $documentId): IIndexDocument;
224 224
 
225 225
 
226 226
 }
Please login to merge, or discard this patch.
lib/public/FullTextSearch/IFullTextSearchProvider.php 1 patch
Indentation   +240 added lines, -240 removed lines patch added patch discarded remove patch
@@ -80,245 +80,245 @@
 block discarded – undo
80 80
 interface IFullTextSearchProvider {
81 81
 
82 82
 
83
-	/**
84
-	 * Must returns a unique Id used to identify the Content Provider.
85
-	 * Id must contains only alphanumeric chars, with no space.
86
-	 *
87
-	 * @since 15.0.0
88
-	 *
89
-	 * @return string
90
-	 */
91
-	public function getId(): string;
92
-
93
-
94
-	/**
95
-	 * Must returns a descriptive name of the Content Provider.
96
-	 * This is used in multiple places, so better use a clear display name.
97
-	 *
98
-	 * @since 15.0.0
99
-	 *
100
-	 * @return string
101
-	 */
102
-	public function getName(): string;
103
-
104
-
105
-	/**
106
-	 * Should returns the current configuration of the Content Provider.
107
-	 * This is used to display the configuration when using the
108
-	 * ./occ fulltextsearch:check command line.
109
-	 *
110
-	 * @since 15.0.0
111
-	 *
112
-	 * @return array
113
-	 */
114
-	public function getConfiguration(): array;
115
-
116
-
117
-	/**
118
-	 * Must returns a ISearchTemplate that contains displayable items and
119
-	 * available options to users when searching.
120
-	 *
121
-	 * @see ISearchTemplate
122
-	 *
123
-	 * @since 15.0.0
124
-	 *
125
-	 * @return ISearchTemplate
126
-	 */
127
-	public function getSearchTemplate(): ISearchTemplate;
128
-
129
-
130
-	/**
131
-	 * Called when FullTextSearch is loading your Content Provider.
132
-	 *
133
-	 * @since 15.0.0
134
-	 */
135
-	public function loadProvider();
136
-
137
-
138
-	/**
139
-	 * Set the wrapper of the currently executed process.
140
-	 * Because the index process can be long and heavy, and because errors can
141
-	 * be encountered during the process, the IRunner is a wrapper that allow the
142
-	 * Content Provider to communicate with the process initiated by
143
-	 * FullTextSearch.
144
-	 *
145
-	 * The IRunner is coming with some methods so the Content Provider can
146
-	 * returns important information and errors to be displayed to the admin.
147
-	 *
148
-	 * @since 15.0.0
149
-	 *
150
-	 * @param IRunner $runner
151
-	 */
152
-	public function setRunner(IRunner $runner);
153
-
154
-
155
-	/**
156
-	 * This method is called when the administrator specify options when running
157
-	 * the ./occ fulltextsearch:index or ./occ fulltextsearch:live
158
-	 *
159
-	 * @since 15.0.0
160
-	 *
161
-	 * @param IIndexOptions $options
162
-	 */
163
-	public function setIndexOptions(IIndexOptions $options);
164
-
165
-
166
-	/**
167
-	 * Allow the provider to generate a list of chunk to split a huge list of
168
-	 * indexable documents
169
-	 *
170
-	 * During the indexing the generateIndexableDocuments method will be called
171
-	 * for each entry of the returned array.
172
-	 * If the returned array is empty, the generateIndexableDocuments() will be
173
-	 * called only once (per user).
174
-	 *
175
-	 * @since 16.0.0
176
-	 *
177
-	 * @param string $userId
178
-	 *
179
-	 * @return string[]
180
-	 */
181
-	public function generateChunks(string $userId): array;
182
-
183
-
184
-	/**
185
-	 * Returns all indexable document for a user as an array of IIndexDocument.
186
-	 *
187
-	 * There is no need to fill each IIndexDocument with content; at this point,
188
-	 * only fill the object with the minimum information to not waste memory while
189
-	 * still being able to identify the document it is referring to.
190
-	 *
191
-	 * FullTextSearch will call 2 other methods of this interface for each
192
-	 * IIndexDocument of the array, prior to their indexing:
193
-	 *
194
-	 * - first, to compare the date of the last index,
195
-	 * - then, to fill each IIndexDocument with complete data
196
-	 *
197
-	 * @see IIndexDocument
198
-	 *
199
-	 * @since 15.0.0
200
-	 *  -> 16.0.0: the parameter "$chunk" was added
201
-	 *
202
-	 * @param string $userId
203
-	 * @param string $chunk
204
-	 *
205
-	 * @return IIndexDocument[]
206
-	 */
207
-	public function generateIndexableDocuments(string $userId, string $chunk): array;
208
-
209
-
210
-	/**
211
-	 * Called to verify that the document is not already indexed and that the
212
-	 * old index is not up-to-date, using the IIndex from
213
-	 * IIndexDocument->getIndex()
214
-	 *
215
-	 * Returning true will not queue the current IIndexDocument to any further
216
-	 * operation and will continue on the next element from the list returned by
217
-	 * generateIndexableDocuments().
218
-	 *
219
-	 * @since 15.0.0
220
-	 *
221
-	 * @param IIndexDocument $document
222
-	 *
223
-	 * @return bool
224
-	 */
225
-	public function isDocumentUpToDate(IIndexDocument $document): bool;
226
-
227
-
228
-	/**
229
-	 * Must fill IIndexDocument with all information relative to the document,
230
-	 * before its indexing by the Search Platform.
231
-	 *
232
-	 * Method is called for each element returned previously by
233
-	 * generateIndexableDocuments().
234
-	 *
235
-	 * @see IIndexDocument
236
-	 *
237
-	 * @since 15.0.0
238
-	 *
239
-	 * @param IIndexDocument $document
240
-	 */
241
-	public function fillIndexDocument(IIndexDocument $document);
242
-
243
-
244
-	/**
245
-	 * The Search Provider must create and return an IIndexDocument
246
-	 * based on the IIndex and its status. The IIndexDocument must contains all
247
-	 * information as it will be send for indexing.
248
-	 *
249
-	 * Method is called during a cron or a ./occ fulltextsearch:live after a
250
-	 * new document is created, or an old document is set as modified.
251
-	 *
252
-	 * @since 15.0.0
253
-	 *
254
-	 * @param IIndex $index
255
-	 *
256
-	 * @return IIndexDocument
257
-	 */
258
-	public function updateDocument(IIndex $index): IIndexDocument;
259
-
260
-
261
-	/**
262
-	 * Called when an index is initiated by the administrator.
263
-	 * This is should only be used in case of a specific mapping is needed.
264
-	 * (ie. _almost_ never)
265
-	 *
266
-	 * @since 15.0.0
267
-	 *
268
-	 * @param IFullTextSearchPlatform $platform
269
-	 */
270
-	public function onInitializingIndex(IFullTextSearchPlatform $platform);
271
-
272
-
273
-	/**
274
-	 * Called when administrator is resetting the index.
275
-	 * This is should only be used in case of a specific mapping has been
276
-	 * created.
277
-	 *
278
-	 * @since 15.0.0
279
-	 *
280
-	 * @param IFullTextSearchPlatform $platform
281
-	 */
282
-	public function onResettingIndex(IFullTextSearchPlatform $platform);
283
-
284
-
285
-	/**
286
-	 * Method is called when a search request is initiated by a user, prior to
287
-	 * be sent to the Search Platform.
288
-	 *
289
-	 * Your Content Provider can interact with the ISearchRequest to apply the
290
-	 * search options and make the search more precise.
291
-	 *
292
-	 * @see ISearchRequest
293
-	 *
294
-	 * @since 15.0.0
295
-	 *
296
-	 * @param ISearchRequest $searchRequest
297
-	 */
298
-	public function improveSearchRequest(ISearchRequest $searchRequest);
299
-
300
-
301
-	/**
302
-	 * Method is called after results of a search are returned by the
303
-	 * Search Platform.
304
-	 *
305
-	 * Your Content Provider can detail each entry with local data to improve
306
-	 * the display of the search result.
307
-	 *
308
-	 * @see ISearchResult
309
-	 *
310
-	 * @since 15.0.0
311
-	 *
312
-	 * @param ISearchResult $searchResult
313
-	 */
314
-	public function improveSearchResult(ISearchResult $searchResult);
315
-
316
-
317
-	/**
318
-	 * not used yet.
319
-	 *
320
-	 * @since 15.0.0
321
-	 */
322
-	public function unloadProvider();
83
+    /**
84
+     * Must returns a unique Id used to identify the Content Provider.
85
+     * Id must contains only alphanumeric chars, with no space.
86
+     *
87
+     * @since 15.0.0
88
+     *
89
+     * @return string
90
+     */
91
+    public function getId(): string;
92
+
93
+
94
+    /**
95
+     * Must returns a descriptive name of the Content Provider.
96
+     * This is used in multiple places, so better use a clear display name.
97
+     *
98
+     * @since 15.0.0
99
+     *
100
+     * @return string
101
+     */
102
+    public function getName(): string;
103
+
104
+
105
+    /**
106
+     * Should returns the current configuration of the Content Provider.
107
+     * This is used to display the configuration when using the
108
+     * ./occ fulltextsearch:check command line.
109
+     *
110
+     * @since 15.0.0
111
+     *
112
+     * @return array
113
+     */
114
+    public function getConfiguration(): array;
115
+
116
+
117
+    /**
118
+     * Must returns a ISearchTemplate that contains displayable items and
119
+     * available options to users when searching.
120
+     *
121
+     * @see ISearchTemplate
122
+     *
123
+     * @since 15.0.0
124
+     *
125
+     * @return ISearchTemplate
126
+     */
127
+    public function getSearchTemplate(): ISearchTemplate;
128
+
129
+
130
+    /**
131
+     * Called when FullTextSearch is loading your Content Provider.
132
+     *
133
+     * @since 15.0.0
134
+     */
135
+    public function loadProvider();
136
+
137
+
138
+    /**
139
+     * Set the wrapper of the currently executed process.
140
+     * Because the index process can be long and heavy, and because errors can
141
+     * be encountered during the process, the IRunner is a wrapper that allow the
142
+     * Content Provider to communicate with the process initiated by
143
+     * FullTextSearch.
144
+     *
145
+     * The IRunner is coming with some methods so the Content Provider can
146
+     * returns important information and errors to be displayed to the admin.
147
+     *
148
+     * @since 15.0.0
149
+     *
150
+     * @param IRunner $runner
151
+     */
152
+    public function setRunner(IRunner $runner);
153
+
154
+
155
+    /**
156
+     * This method is called when the administrator specify options when running
157
+     * the ./occ fulltextsearch:index or ./occ fulltextsearch:live
158
+     *
159
+     * @since 15.0.0
160
+     *
161
+     * @param IIndexOptions $options
162
+     */
163
+    public function setIndexOptions(IIndexOptions $options);
164
+
165
+
166
+    /**
167
+     * Allow the provider to generate a list of chunk to split a huge list of
168
+     * indexable documents
169
+     *
170
+     * During the indexing the generateIndexableDocuments method will be called
171
+     * for each entry of the returned array.
172
+     * If the returned array is empty, the generateIndexableDocuments() will be
173
+     * called only once (per user).
174
+     *
175
+     * @since 16.0.0
176
+     *
177
+     * @param string $userId
178
+     *
179
+     * @return string[]
180
+     */
181
+    public function generateChunks(string $userId): array;
182
+
183
+
184
+    /**
185
+     * Returns all indexable document for a user as an array of IIndexDocument.
186
+     *
187
+     * There is no need to fill each IIndexDocument with content; at this point,
188
+     * only fill the object with the minimum information to not waste memory while
189
+     * still being able to identify the document it is referring to.
190
+     *
191
+     * FullTextSearch will call 2 other methods of this interface for each
192
+     * IIndexDocument of the array, prior to their indexing:
193
+     *
194
+     * - first, to compare the date of the last index,
195
+     * - then, to fill each IIndexDocument with complete data
196
+     *
197
+     * @see IIndexDocument
198
+     *
199
+     * @since 15.0.0
200
+     *  -> 16.0.0: the parameter "$chunk" was added
201
+     *
202
+     * @param string $userId
203
+     * @param string $chunk
204
+     *
205
+     * @return IIndexDocument[]
206
+     */
207
+    public function generateIndexableDocuments(string $userId, string $chunk): array;
208
+
209
+
210
+    /**
211
+     * Called to verify that the document is not already indexed and that the
212
+     * old index is not up-to-date, using the IIndex from
213
+     * IIndexDocument->getIndex()
214
+     *
215
+     * Returning true will not queue the current IIndexDocument to any further
216
+     * operation and will continue on the next element from the list returned by
217
+     * generateIndexableDocuments().
218
+     *
219
+     * @since 15.0.0
220
+     *
221
+     * @param IIndexDocument $document
222
+     *
223
+     * @return bool
224
+     */
225
+    public function isDocumentUpToDate(IIndexDocument $document): bool;
226
+
227
+
228
+    /**
229
+     * Must fill IIndexDocument with all information relative to the document,
230
+     * before its indexing by the Search Platform.
231
+     *
232
+     * Method is called for each element returned previously by
233
+     * generateIndexableDocuments().
234
+     *
235
+     * @see IIndexDocument
236
+     *
237
+     * @since 15.0.0
238
+     *
239
+     * @param IIndexDocument $document
240
+     */
241
+    public function fillIndexDocument(IIndexDocument $document);
242
+
243
+
244
+    /**
245
+     * The Search Provider must create and return an IIndexDocument
246
+     * based on the IIndex and its status. The IIndexDocument must contains all
247
+     * information as it will be send for indexing.
248
+     *
249
+     * Method is called during a cron or a ./occ fulltextsearch:live after a
250
+     * new document is created, or an old document is set as modified.
251
+     *
252
+     * @since 15.0.0
253
+     *
254
+     * @param IIndex $index
255
+     *
256
+     * @return IIndexDocument
257
+     */
258
+    public function updateDocument(IIndex $index): IIndexDocument;
259
+
260
+
261
+    /**
262
+     * Called when an index is initiated by the administrator.
263
+     * This is should only be used in case of a specific mapping is needed.
264
+     * (ie. _almost_ never)
265
+     *
266
+     * @since 15.0.0
267
+     *
268
+     * @param IFullTextSearchPlatform $platform
269
+     */
270
+    public function onInitializingIndex(IFullTextSearchPlatform $platform);
271
+
272
+
273
+    /**
274
+     * Called when administrator is resetting the index.
275
+     * This is should only be used in case of a specific mapping has been
276
+     * created.
277
+     *
278
+     * @since 15.0.0
279
+     *
280
+     * @param IFullTextSearchPlatform $platform
281
+     */
282
+    public function onResettingIndex(IFullTextSearchPlatform $platform);
283
+
284
+
285
+    /**
286
+     * Method is called when a search request is initiated by a user, prior to
287
+     * be sent to the Search Platform.
288
+     *
289
+     * Your Content Provider can interact with the ISearchRequest to apply the
290
+     * search options and make the search more precise.
291
+     *
292
+     * @see ISearchRequest
293
+     *
294
+     * @since 15.0.0
295
+     *
296
+     * @param ISearchRequest $searchRequest
297
+     */
298
+    public function improveSearchRequest(ISearchRequest $searchRequest);
299
+
300
+
301
+    /**
302
+     * Method is called after results of a search are returned by the
303
+     * Search Platform.
304
+     *
305
+     * Your Content Provider can detail each entry with local data to improve
306
+     * the display of the search result.
307
+     *
308
+     * @see ISearchResult
309
+     *
310
+     * @since 15.0.0
311
+     *
312
+     * @param ISearchResult $searchResult
313
+     */
314
+    public function improveSearchResult(ISearchResult $searchResult);
315
+
316
+
317
+    /**
318
+     * not used yet.
319
+     *
320
+     * @since 15.0.0
321
+     */
322
+    public function unloadProvider();
323 323
 
324 324
 }
Please login to merge, or discard this patch.
lib/private/FullTextSearch/Model/SearchOption.php 1 patch
Indentation   +243 added lines, -243 removed lines patch added patch discarded remove patch
@@ -45,247 +45,247 @@
 block discarded – undo
45 45
 final class SearchOption implements ISearchOption, JsonSerializable {
46 46
 
47 47
 
48
-	/** @var string */
49
-	private $name = '';
50
-
51
-	/** @var string */
52
-	private $title = '';
53
-
54
-	/** @var string */
55
-	private $type = '';
56
-
57
-	/** @var string */
58
-	private $size = '';
59
-
60
-	/** @var string */
61
-	private $placeholder = '';
62
-
63
-
64
-	/**
65
-	 *     *
66
-	 *
67
-	 * The array can be empty in case no search options are available.
68
-	 * The format of the array must be like this:
69
-	 *
70
-	 * [
71
-	 *   'panel' => [
72
-	 *     'options' => [
73
-	 *         OPTION1,
74
-	 *         OPTION2,
75
-	 *         OPTION3
76
-	 *     ]
77
-	 *   ],
78
-	 *   'navigation' => [
79
-	 *     'icon'    => 'css-class-of-the-icon',
80
-	 *     'options' => [
81
-	 *         OPTION1,
82
-	 *         OPTION2,
83
-	 *         OPTION3
84
-	 *     ]
85
-	 *   ]
86
-	 * ]
87
-	 *
88
-	 * - PANEL contains entries that will be displayed in the app itself, when
89
-	 *   a search is initiated.
90
-	 * - NAVIGATION contains entries that will be available when using the
91
-	 *   FullTextSearch navigation page
92
-	 * - OPTION is an element that define each option available to the user.
93
-	 *
94
-	 * The format for the options must be like this:
95
-	 *
96
-	 * [
97
-	 *   'name'        => 'name_of_the_option',
98
-	 *   'title'       => 'Name displayed in the panel',
99
-	 *   'type'        => '',
100
-	 *   'size'        => ''   (optional),
101
-	 *   'placeholder' => ''   (optional)
102
-	 * ]
103
-	 *
104
-	 * - NAME is the variable name that is sent to the IFullTextSearchProvider
105
-	 *   when a ISearchRequest is requested. (keys in the array returned by the
106
-	 *   ISearchRequest->getOptions())
107
-	 * - TYPE can be 'input' or 'checkbox'
108
-	 * - SIZE is only used in case TYPE='input', default is 'large' but can be
109
-	 *   'small'
110
-	 * - PLACEHOLDER is only used in case TYPE='input', default is empty.
111
-	 */
112
-
113
-	/**
114
-	 * ISearchOption constructor.
115
-	 *
116
-	 * Some value can be setduring the creation of the object.
117
-	 *
118
-	 * @since 15.0.0
119
-	 *
120
-	 * @param string $name
121
-	 * @param string $title
122
-	 * @param string $type
123
-	 * @param string $size
124
-	 * @param string $placeholder
125
-	 */
126
-	public function __construct(string $name = '', string $title = '', string $type = '', string $size = '', string $placeholder = '') {
127
-		$this->name = $name;
128
-		$this->title = $title;
129
-		$this->type = $type;
130
-		$this->size = $size;
131
-		$this->placeholder = $placeholder;
132
-	}
133
-
134
-
135
-	/**
136
-	 * Set the name/key of the option.
137
-	 * The string should only contains alphanumerical chars and underscore.
138
-	 * The key can be retrieve when using ISearchRequest::getOption
139
-	 *
140
-	 * @see ISearchRequest::getOption
141
-	 *
142
-	 * @since 15.0.0
143
-	 *
144
-	 * @param string $name
145
-	 *
146
-	 * @return ISearchOption
147
-	 */
148
-	public function setName(string $name): ISearchOption {
149
-		$this->name = $name;
150
-
151
-		return $this;
152
-	}
153
-
154
-	/**
155
-	 * Get the name/key of the option.
156
-	 *
157
-	 * @since 15.0.0
158
-	 *
159
-	 * @return string
160
-	 */
161
-	public function getName(): string {
162
-		return $this->name;
163
-	}
164
-
165
-
166
-	/**
167
-	 * Set the title/display name of the option.
168
-	 *
169
-	 * @since 15.0.0
170
-	 *
171
-	 * @param string $title
172
-	 *
173
-	 * @return ISearchOption
174
-	 */
175
-	public function setTitle(string $title): ISearchOption {
176
-		$this->title = $title;
177
-
178
-		return $this;
179
-	}
180
-
181
-	/**
182
-	 * Get the title of the option.
183
-	 *
184
-	 * @since 15.0.0
185
-	 *
186
-	 * @return string
187
-	 */
188
-	public function getTitle(): string {
189
-		return $this->title;
190
-	}
191
-
192
-
193
-	/**
194
-	 * Set the type of the option.
195
-	 * $type can be ISearchOption::CHECKBOX or ISearchOption::INPUT
196
-	 *
197
-	 * @since 15.0.0
198
-	 *
199
-	 * @param string $type
200
-	 *
201
-	 * @return ISearchOption
202
-	 */
203
-	public function setType(string $type): ISearchOption {
204
-		$this->type = $type;
205
-
206
-		return $this;
207
-	}
208
-
209
-	/**
210
-	 * Get the type of the option.
211
-	 *
212
-	 * @since 15.0.0
213
-	 *
214
-	 * @return string
215
-	 */
216
-	public function getType(): string {
217
-		return $this->type;
218
-	}
219
-
220
-
221
-	/**
222
-	 * In case of Type is INPUT, set the size of the input field.
223
-	 * Value can be ISearchOption::INPUT_SMALL or not defined.
224
-	 *
225
-	 * @since 15.0.0
226
-	 *
227
-	 * @param string $size
228
-	 *
229
-	 * @return ISearchOption
230
-	 */
231
-	public function setSize(string $size): ISearchOption {
232
-		$this->size = $size;
233
-
234
-		return $this;
235
-	}
236
-
237
-	/**
238
-	 * Get the size of the INPUT.
239
-	 *
240
-	 * @since 15.0.0
241
-	 *
242
-	 * @return string
243
-	 */
244
-	public function getSize(): string {
245
-		return $this->size;
246
-	}
247
-
248
-
249
-	/**
250
-	 * In case of Type is , set the placeholder to be displayed in the input
251
-	 * field.
252
-	 *
253
-	 * @since 15.0.0
254
-	 *
255
-	 * @param string $placeholder
256
-	 *
257
-	 * @return ISearchOption
258
-	 */
259
-	public function setPlaceholder(string $placeholder): ISearchOption {
260
-		$this->placeholder = $placeholder;
261
-
262
-		return $this;
263
-	}
264
-
265
-	/**
266
-	 * Get the placeholder.
267
-	 *
268
-	 * @since 15.0.0
269
-	 *
270
-	 * @return string
271
-	 */
272
-	public function getPlaceholder(): string {
273
-		return $this->placeholder;
274
-	}
275
-
276
-
277
-	/**
278
-	 * @since 15.0.0
279
-	 *
280
-	 * @return array
281
-	 */
282
-	public function jsonSerialize(): array {
283
-		return [
284
-			'name' => $this->getName(),
285
-			'title' => $this->getTitle(),
286
-			'type' => $this->getType(),
287
-			'size' => $this->getSize(),
288
-			'placeholder' => $this->getPlaceholder()
289
-		];
290
-	}
48
+    /** @var string */
49
+    private $name = '';
50
+
51
+    /** @var string */
52
+    private $title = '';
53
+
54
+    /** @var string */
55
+    private $type = '';
56
+
57
+    /** @var string */
58
+    private $size = '';
59
+
60
+    /** @var string */
61
+    private $placeholder = '';
62
+
63
+
64
+    /**
65
+     *     *
66
+     *
67
+     * The array can be empty in case no search options are available.
68
+     * The format of the array must be like this:
69
+     *
70
+     * [
71
+     *   'panel' => [
72
+     *     'options' => [
73
+     *         OPTION1,
74
+     *         OPTION2,
75
+     *         OPTION3
76
+     *     ]
77
+     *   ],
78
+     *   'navigation' => [
79
+     *     'icon'    => 'css-class-of-the-icon',
80
+     *     'options' => [
81
+     *         OPTION1,
82
+     *         OPTION2,
83
+     *         OPTION3
84
+     *     ]
85
+     *   ]
86
+     * ]
87
+     *
88
+     * - PANEL contains entries that will be displayed in the app itself, when
89
+     *   a search is initiated.
90
+     * - NAVIGATION contains entries that will be available when using the
91
+     *   FullTextSearch navigation page
92
+     * - OPTION is an element that define each option available to the user.
93
+     *
94
+     * The format for the options must be like this:
95
+     *
96
+     * [
97
+     *   'name'        => 'name_of_the_option',
98
+     *   'title'       => 'Name displayed in the panel',
99
+     *   'type'        => '',
100
+     *   'size'        => ''   (optional),
101
+     *   'placeholder' => ''   (optional)
102
+     * ]
103
+     *
104
+     * - NAME is the variable name that is sent to the IFullTextSearchProvider
105
+     *   when a ISearchRequest is requested. (keys in the array returned by the
106
+     *   ISearchRequest->getOptions())
107
+     * - TYPE can be 'input' or 'checkbox'
108
+     * - SIZE is only used in case TYPE='input', default is 'large' but can be
109
+     *   'small'
110
+     * - PLACEHOLDER is only used in case TYPE='input', default is empty.
111
+     */
112
+
113
+    /**
114
+     * ISearchOption constructor.
115
+     *
116
+     * Some value can be setduring the creation of the object.
117
+     *
118
+     * @since 15.0.0
119
+     *
120
+     * @param string $name
121
+     * @param string $title
122
+     * @param string $type
123
+     * @param string $size
124
+     * @param string $placeholder
125
+     */
126
+    public function __construct(string $name = '', string $title = '', string $type = '', string $size = '', string $placeholder = '') {
127
+        $this->name = $name;
128
+        $this->title = $title;
129
+        $this->type = $type;
130
+        $this->size = $size;
131
+        $this->placeholder = $placeholder;
132
+    }
133
+
134
+
135
+    /**
136
+     * Set the name/key of the option.
137
+     * The string should only contains alphanumerical chars and underscore.
138
+     * The key can be retrieve when using ISearchRequest::getOption
139
+     *
140
+     * @see ISearchRequest::getOption
141
+     *
142
+     * @since 15.0.0
143
+     *
144
+     * @param string $name
145
+     *
146
+     * @return ISearchOption
147
+     */
148
+    public function setName(string $name): ISearchOption {
149
+        $this->name = $name;
150
+
151
+        return $this;
152
+    }
153
+
154
+    /**
155
+     * Get the name/key of the option.
156
+     *
157
+     * @since 15.0.0
158
+     *
159
+     * @return string
160
+     */
161
+    public function getName(): string {
162
+        return $this->name;
163
+    }
164
+
165
+
166
+    /**
167
+     * Set the title/display name of the option.
168
+     *
169
+     * @since 15.0.0
170
+     *
171
+     * @param string $title
172
+     *
173
+     * @return ISearchOption
174
+     */
175
+    public function setTitle(string $title): ISearchOption {
176
+        $this->title = $title;
177
+
178
+        return $this;
179
+    }
180
+
181
+    /**
182
+     * Get the title of the option.
183
+     *
184
+     * @since 15.0.0
185
+     *
186
+     * @return string
187
+     */
188
+    public function getTitle(): string {
189
+        return $this->title;
190
+    }
191
+
192
+
193
+    /**
194
+     * Set the type of the option.
195
+     * $type can be ISearchOption::CHECKBOX or ISearchOption::INPUT
196
+     *
197
+     * @since 15.0.0
198
+     *
199
+     * @param string $type
200
+     *
201
+     * @return ISearchOption
202
+     */
203
+    public function setType(string $type): ISearchOption {
204
+        $this->type = $type;
205
+
206
+        return $this;
207
+    }
208
+
209
+    /**
210
+     * Get the type of the option.
211
+     *
212
+     * @since 15.0.0
213
+     *
214
+     * @return string
215
+     */
216
+    public function getType(): string {
217
+        return $this->type;
218
+    }
219
+
220
+
221
+    /**
222
+     * In case of Type is INPUT, set the size of the input field.
223
+     * Value can be ISearchOption::INPUT_SMALL or not defined.
224
+     *
225
+     * @since 15.0.0
226
+     *
227
+     * @param string $size
228
+     *
229
+     * @return ISearchOption
230
+     */
231
+    public function setSize(string $size): ISearchOption {
232
+        $this->size = $size;
233
+
234
+        return $this;
235
+    }
236
+
237
+    /**
238
+     * Get the size of the INPUT.
239
+     *
240
+     * @since 15.0.0
241
+     *
242
+     * @return string
243
+     */
244
+    public function getSize(): string {
245
+        return $this->size;
246
+    }
247
+
248
+
249
+    /**
250
+     * In case of Type is , set the placeholder to be displayed in the input
251
+     * field.
252
+     *
253
+     * @since 15.0.0
254
+     *
255
+     * @param string $placeholder
256
+     *
257
+     * @return ISearchOption
258
+     */
259
+    public function setPlaceholder(string $placeholder): ISearchOption {
260
+        $this->placeholder = $placeholder;
261
+
262
+        return $this;
263
+    }
264
+
265
+    /**
266
+     * Get the placeholder.
267
+     *
268
+     * @since 15.0.0
269
+     *
270
+     * @return string
271
+     */
272
+    public function getPlaceholder(): string {
273
+        return $this->placeholder;
274
+    }
275
+
276
+
277
+    /**
278
+     * @since 15.0.0
279
+     *
280
+     * @return array
281
+     */
282
+    public function jsonSerialize(): array {
283
+        return [
284
+            'name' => $this->getName(),
285
+            'title' => $this->getTitle(),
286
+            'type' => $this->getType(),
287
+            'size' => $this->getSize(),
288
+            'placeholder' => $this->getPlaceholder()
289
+        ];
290
+    }
291 291
 }
Please login to merge, or discard this patch.
lib/private/FullTextSearch/Model/IndexDocument.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -389,7 +389,7 @@
 block discarded – undo
389 389
 		foreach ($ak as $source) {
390 390
 			$tags = $this->subTags[$source];
391 391
 			foreach ($tags as $tag) {
392
-				$subTags[] = $source . '_' . $tag;
392
+				$subTags[] = $source.'_'.$tag;
393 393
 			}
394 394
 		}
395 395
 
Please login to merge, or discard this patch.
Indentation   +934 added lines, -934 removed lines patch added patch discarded remove patch
@@ -49,940 +49,940 @@
 block discarded – undo
49 49
 class IndexDocument implements IIndexDocument, JsonSerializable {
50 50
 
51 51
 
52
-	/** @var string */
53
-	protected $id = '';
52
+    /** @var string */
53
+    protected $id = '';
54 54
 
55
-	/** @var string */
56
-	protected $providerId = '';
55
+    /** @var string */
56
+    protected $providerId = '';
57 57
 
58
-	/** @var DocumentAccess */
59
-	protected $access;
60
-
61
-	/** @var IIndex */
62
-	protected $index;
63
-
64
-	/** @var int */
65
-	protected $modifiedTime = 0;
66
-
67
-	/** @var string */
68
-	protected $source = '';
69
-
70
-	/** @var array */
71
-	protected $tags = [];
72
-
73
-	/** @var array */
74
-	protected $metaTags = [];
75
-
76
-	/** @var array */
77
-	protected $subTags = [];
78
-
79
-	/** @var string */
80
-	protected $title = '';
81
-
82
-	/** @var string */
83
-	protected $content = '';
84
-
85
-	/** @var string */
86
-	protected $hash = '';
87
-
88
-	/** @var array */
89
-	protected $parts = [];
90
-
91
-	/** @var string */
92
-	protected $link = '';
93
-
94
-	/** @var array */
95
-	protected $more = [];
96
-
97
-	/** @var array */
98
-	protected $excerpts = [];
99
-
100
-	/** @var string */
101
-	protected $score = '';
102
-
103
-	/** @var array */
104
-	protected $info = [];
105
-
106
-	/** @var int */
107
-	protected $contentEncoded = 0;
108
-
109
-
110
-	/**
111
-	 * IIndexDocument constructor.
112
-	 *
113
-	 * On creation, we assure the uniqueness of the object using the providerId
114
-	 * and the Id of the original document.
115
-	 *
116
-	 * @since 15.0.0
117
-	 *
118
-	 * @param string $providerId
119
-	 * @param string $documentId
120
-	 */
121
-	public function __construct(string $providerId, string $documentId) {
122
-		$this->providerId = $providerId;
123
-		$this->id = $documentId;
124
-	}
125
-
126
-
127
-	/**
128
-	 * Returns the Id of the original document.
129
-	 *
130
-	 * @since 15.0.0
131
-	 *
132
-	 * @return string
133
-	 */
134
-	final public function getId(): string {
135
-		return $this->id;
136
-	}
137
-
138
-
139
-	/**
140
-	 * Returns the Id of the provider.
141
-	 *
142
-	 * @since 15.0.0
143
-	 *
144
-	 * @return string
145
-	 */
146
-	final public function getProviderId(): string {
147
-		return $this->providerId;
148
-	}
149
-
150
-
151
-	/**
152
-	 * Set the Index related to the IIndexDocument.
153
-	 *
154
-	 * @see IIndex
155
-	 *
156
-	 * @since 15.0.0
157
-	 *
158
-	 * @param IIndex $index
159
-	 *
160
-	 * @return IIndexDocument
161
-	 */
162
-	final public function setIndex(IIndex $index): IIndexDocument {
163
-		$this->index = $index;
164
-
165
-		return $this;
166
-	}
167
-
168
-	/**
169
-	 * Get the Index.
170
-	 *
171
-	 * @since 15.0.0
172
-	 *
173
-	 * @return IIndex
174
-	 */
175
-	final public function getIndex(): IIndex {
176
-		return $this->index;
177
-	}
178
-
179
-	/**
180
-	 * return if Index is defined.
181
-	 *
182
-	 * @since 16.0.0
183
-	 *
184
-	 * @return bool
185
-	 */
186
-	final public function hasIndex(): bool {
187
-		return ($this->index !== null);
188
-	}
189
-
190
-
191
-	/**
192
-	 * Set the modified time of the original document.
193
-	 *
194
-	 * @since 15.0.0
195
-	 *
196
-	 * @param int $modifiedTime
197
-	 *
198
-	 * @return IIndexDocument
199
-	 */
200
-	final public function setModifiedTime(int $modifiedTime): IIndexDocument {
201
-		$this->modifiedTime = $modifiedTime;
202
-
203
-		return $this;
204
-	}
205
-
206
-	/**
207
-	 * Get the modified time of the original document.
208
-	 *
209
-	 * @since 15.0.0
210
-	 *
211
-	 * @return int
212
-	 */
213
-	final public function getModifiedTime(): int {
214
-		return $this->modifiedTime;
215
-	}
216
-
217
-	/**
218
-	 * Check if the original document of the IIndexDocument is older than $time.
219
-	 *
220
-	 * @since 15.0.0
221
-	 *
222
-	 * @param int $time
223
-	 *
224
-	 * @return bool
225
-	 */
226
-	final public function isOlderThan(int $time): bool {
227
-		return ($this->modifiedTime < $time);
228
-	}
229
-
230
-
231
-	/**
232
-	 * Set the read rights of the original document using a IDocumentAccess.
233
-	 *
234
-	 * @see IDocumentAccess
235
-	 *
236
-	 * @since 15.0.0
237
-	 *
238
-	 * @param IDocumentAccess $access
239
-	 *
240
-	 * @return $this
241
-	 */
242
-	final public function setAccess(IDocumentAccess $access): IIndexDocument {
243
-		$this->access = $access;
244
-
245
-		return $this;
246
-	}
247
-
248
-	/**
249
-	 * Get the IDocumentAccess related to the original document.
250
-	 *
251
-	 * @since 15.0.0
252
-	 *
253
-	 * @return IDocumentAccess
254
-	 */
255
-	final public function getAccess(): IDocumentAccess {
256
-		return $this->access;
257
-	}
258
-
259
-
260
-	/**
261
-	 * Add a tag to the list.
262
-	 *
263
-	 * @since 15.0.0
264
-	 *
265
-	 * @param string $tag
266
-	 *
267
-	 * @return IIndexDocument
268
-	 */
269
-	final public function addTag(string $tag): IIndexDocument {
270
-		$this->tags[] = $tag;
271
-
272
-		return $this;
273
-	}
274
-
275
-	/**
276
-	 * Set the list of tags assigned to the original document.
277
-	 *
278
-	 * @since 15.0.0
279
-	 *
280
-	 * @param array $tags
281
-	 *
282
-	 * @return IIndexDocument
283
-	 */
284
-	final public function setTags(array $tags): IIndexDocument {
285
-		$this->tags = $tags;
286
-
287
-		return $this;
288
-	}
289
-
290
-	/**
291
-	 * Get the list of tags assigned to the original document.
292
-	 *
293
-	 * @since 15.0.0
294
-	 *
295
-	 * @return array
296
-	 */
297
-	final public function getTags(): array {
298
-		return $this->tags;
299
-	}
300
-
301
-
302
-	/**
303
-	 * Add a meta tag to the list.
304
-	 *
305
-	 * @since 15.0.0
306
-	 *
307
-	 * @param string $tag
308
-	 *
309
-	 * @return IIndexDocument
310
-	 */
311
-	final public function addMetaTag(string $tag): IIndexDocument {
312
-		$this->metaTags[] = $tag;
313
-
314
-		return $this;
315
-	}
316
-
317
-	/**
318
-	 * Set the list of meta tags assigned to the original document.
319
-	 *
320
-	 * @since 15.0.0
321
-	 *
322
-	 * @param array $tags
323
-	 *
324
-	 * @return IIndexDocument
325
-	 */
326
-	final public function setMetaTags(array $tags): IIndexDocument {
327
-		$this->metaTags = $tags;
328
-
329
-		return $this;
330
-	}
331
-
332
-	/**
333
-	 * Get the list of meta tags assigned to the original document.
334
-	 *
335
-	 * @since 15.0.0
336
-	 *
337
-	 * @return array
338
-	 */
339
-	final public function getMetaTags(): array {
340
-		return $this->metaTags;
341
-	}
342
-
343
-
344
-	/**
345
-	 * Add a sub tag to the list.
346
-	 *
347
-	 * @since 15.0.0
348
-	 *
349
-	 * @param string $sub
350
-	 * @param string $tag
351
-	 *
352
-	 * @return IIndexDocument
353
-	 */
354
-	final public function addSubTag(string $sub, string $tag): IIndexDocument {
355
-		if (!array_key_exists($sub, $this->subTags)) {
356
-			$this->subTags[$sub] = [];
357
-		}
358
-
359
-		$this->subTags[$sub][] = $tag;
360
-
361
-		return $this;
362
-	}
363
-
364
-
365
-	/**
366
-	 * Set the list of sub tags assigned to the original document.
367
-	 *
368
-	 * @since 15.0.0
369
-	 *
370
-	 * @param array $tags
371
-	 *
372
-	 * @return IIndexDocument
373
-	 */
374
-	final public function setSubTags(array $tags): IIndexDocument {
375
-		$this->subTags = $tags;
376
-
377
-		return $this;
378
-	}
379
-
380
-	/**
381
-	 * Get the list of sub tags assigned to the original document.
382
-	 * If $formatted is true, the result will be formatted in a one
383
-	 * dimensional array.
384
-	 *
385
-	 * @since 15.0.0
386
-	 *
387
-	 * @param bool $formatted
388
-	 *
389
-	 * @return array
390
-	 */
391
-	final public function getSubTags(bool $formatted = false): array {
392
-		if ($formatted === false) {
393
-			return $this->subTags;
394
-		}
395
-
396
-		$subTags = [];
397
-		$ak = array_keys($this->subTags);
398
-		foreach ($ak as $source) {
399
-			$tags = $this->subTags[$source];
400
-			foreach ($tags as $tag) {
401
-				$subTags[] = $source . '_' . $tag;
402
-			}
403
-		}
404
-
405
-		return $subTags;
406
-	}
407
-
408
-
409
-	/**
410
-	 * Set the source of the original document.
411
-	 *
412
-	 * @since 15.0.0
413
-	 *
414
-	 * @param string $source
415
-	 *
416
-	 * @return IIndexDocument
417
-	 */
418
-	final public function setSource(string $source): IIndexDocument {
419
-		$this->source = $source;
420
-
421
-		return $this;
422
-	}
423
-
424
-	/**
425
-	 * Get the source of the original document.
426
-	 *
427
-	 * @since 15.0.0
428
-	 *
429
-	 * @return string
430
-	 */
431
-	final public function getSource(): string {
432
-		return $this->source;
433
-	}
434
-
435
-
436
-	/**
437
-	 * Set the title of the original document.
438
-	 *
439
-	 * @since 15.0.0
440
-	 *
441
-	 * @param string $title
442
-	 *
443
-	 * @return IIndexDocument
444
-	 */
445
-	final public function setTitle(string $title): IIndexDocument {
446
-		$this->title = $title;
447
-
448
-		return $this;
449
-	}
450
-
451
-	/**
452
-	 * Get the title of the original document.
453
-	 *
454
-	 * @since 15.0.0
455
-	 *
456
-	 * @return string
457
-	 */
458
-	final public function getTitle(): string {
459
-		return $this->title;
460
-	}
461
-
462
-
463
-	/**
464
-	 * Set the content of the document.
465
-	 * $encoded can be NOT_ENCODED or ENCODED_BASE64 if the content is raw or
466
-	 * encoded in base64.
467
-	 *
468
-	 * @since 15.0.0
469
-	 *
470
-	 * @param string $content
471
-	 * @param int $encoded
472
-	 *
473
-	 * @return IIndexDocument
474
-	 */
475
-	final public function setContent(string $content, int $encoded = 0): IIndexDocument {
476
-		$this->content = $content;
477
-		$this->contentEncoded = $encoded;
478
-
479
-		return $this;
480
-	}
481
-
482
-	/**
483
-	 * Get the content of the original document.
484
-	 *
485
-	 * @since 15.0.0
486
-	 *
487
-	 * @return string
488
-	 */
489
-	final public function getContent(): string {
490
-		return $this->content;
491
-	}
492
-
493
-	/**
494
-	 * Returns the type of the encoding on the content.
495
-	 *
496
-	 * @since 15.0.0
497
-	 *
498
-	 * @return int
499
-	 */
500
-	final public function isContentEncoded(): int {
501
-		return $this->contentEncoded;
502
-	}
503
-
504
-	/**
505
-	 * Return the size of the content.
506
-	 *
507
-	 * @since 15.0.0
508
-	 *
509
-	 * @return int
510
-	 */
511
-	final public function getContentSize(): int {
512
-		return strlen($this->getContent());
513
-	}
514
-
515
-
516
-	/**
517
-	 * Generate an hash, based on the content of the original document.
518
-	 *
519
-	 * @since 15.0.0
520
-	 *
521
-	 * @return IIndexDocument
522
-	 */
523
-	final public function initHash(): IIndexDocument {
524
-		if ($this->getContent() === '' || is_null($this->getContent())) {
525
-			return $this;
526
-		}
527
-
528
-		$this->hash = hash("md5", $this->getContent());
529
-
530
-		return $this;
531
-	}
532
-
533
-	/**
534
-	 * Set the hash of the original document.
535
-	 *
536
-	 * @since 15.0.0
537
-	 *
538
-	 * @param string $hash
539
-	 *
540
-	 * @return IIndexDocument
541
-	 */
542
-	final public function setHash(string $hash): IIndexDocument {
543
-		$this->hash = $hash;
544
-
545
-		return $this;
546
-	}
547
-
548
-	/**
549
-	 * Get the hash of the original document.
550
-	 *
551
-	 * @since 15.0.0
552
-	 *
553
-	 * @return string
554
-	 */
555
-	final public function getHash(): string {
556
-		return $this->hash;
557
-	}
558
-
559
-
560
-	/**
561
-	 * Add a part, identified by a string, and its content.
562
-	 *
563
-	 * It is strongly advised to use alphanumerical chars with no space in the
564
-	 * $part string.
565
-	 *
566
-	 * @since 15.0.0
567
-	 *
568
-	 * @param string $part
569
-	 * @param string $content
570
-	 *
571
-	 * @return IIndexDocument
572
-	 */
573
-	final public function addPart(string $part, string $content): IIndexDocument {
574
-		$this->parts[$part] = $content;
575
-
576
-		return $this;
577
-	}
578
-
579
-	/**
580
-	 * Set all parts and their content.
581
-	 *
582
-	 * @since 15.0.0
583
-	 *
584
-	 * @param array $parts
585
-	 *
586
-	 * @return IIndexDocument
587
-	 */
588
-	final public function setParts(array $parts): IIndexDocument {
589
-		$this->parts = $parts;
590
-
591
-		return $this;
592
-	}
593
-
594
-	/**
595
-	 * Get all parts of the IIndexDocument.
596
-	 *
597
-	 * @since 15.0.0
598
-	 *
599
-	 * @return array
600
-	 */
601
-	final public function getParts(): array {
602
-		return $this->parts;
603
-	}
604
-
605
-
606
-	/**
607
-	 * Add a link, usable by the frontend.
608
-	 *
609
-	 * @since 15.0.0
610
-	 *
611
-	 * @param string $link
612
-	 *
613
-	 * @return IIndexDocument
614
-	 */
615
-	final public function setLink(string $link): IIndexDocument {
616
-		$this->link = $link;
617
-
618
-		return $this;
619
-	}
620
-
621
-	/**
622
-	 * Get the link.
623
-	 *
624
-	 * @since 15.0.0
625
-	 *
626
-	 * @return string
627
-	 */
628
-	final public function getLink(): string {
629
-		return $this->link;
630
-	}
631
-
632
-
633
-	/**
634
-	 * Set more information that couldn't be set using other method.
635
-	 *
636
-	 * @since 15.0.0
637
-	 *
638
-	 * @param array $more
639
-	 *
640
-	 * @return IIndexDocument
641
-	 */
642
-	final public function setMore(array $more): IIndexDocument {
643
-		$this->more = $more;
644
-
645
-		return $this;
646
-	}
647
-
648
-	/**
649
-	 * Get more information.
650
-	 *
651
-	 * @since 15.0.0
652
-	 *
653
-	 * @return array
654
-	 */
655
-	final public function getMore(): array {
656
-		return $this->more;
657
-	}
658
-
659
-
660
-	/**
661
-	 * Add some excerpt of the content of the original document, usually based
662
-	 * on the search request.
663
-	 *
664
-	 * @since 16.0.0
665
-	 *
666
-	 * @param string $source
667
-	 * @param string $excerpt
668
-	 *
669
-	 * @return IIndexDocument
670
-	 */
671
-	final public function addExcerpt(string $source, string $excerpt): IIndexDocument {
672
-		$this->excerpts[] =
673
-			[
674
-				'source' => $source,
675
-				'excerpt' => $this->cleanExcerpt($excerpt)
676
-			];
677
-
678
-		return $this;
679
-	}
680
-
681
-
682
-	/**
683
-	 * Set all excerpts of the content of the original document.
684
-	 *
685
-	 * @since 16.0.0
686
-	 *
687
-	 * @param array $excerpts
688
-	 *
689
-	 * @return IIndexDocument
690
-	 */
691
-	final public function setExcerpts(array $excerpts): IIndexDocument {
692
-		$new = [];
693
-		foreach ($excerpts as $entry) {
694
-			$new[] = [
695
-				'source' => $entry['source'],
696
-				'excerpt' => $this->cleanExcerpt($entry['excerpt'])
697
-			];
698
-		}
699
-
700
-		$this->excerpts = $new;
701
-
702
-		return $this;
703
-	}
704
-
705
-	/**
706
-	 * Get all excerpts of the content of the original document.
707
-	 *
708
-	 * @since 15.0.0
709
-	 *
710
-	 * @return array
711
-	 */
712
-	final public function getExcerpts(): array {
713
-		return $this->excerpts;
714
-	}
715
-
716
-	/**
717
-	 * Clean excerpt.
718
-	 *
719
-	 * @since 16.0.0
720
-	 *
721
-	 * @param string $excerpt
722
-	 * @return string
723
-	 */
724
-	private function cleanExcerpt(string $excerpt): string {
725
-		$excerpt = str_replace("\\n", ' ', $excerpt);
726
-		$excerpt = str_replace("\\r", ' ', $excerpt);
727
-		$excerpt = str_replace("\\t", ' ', $excerpt);
728
-		$excerpt = str_replace("\n", ' ', $excerpt);
729
-		$excerpt = str_replace("\r", ' ', $excerpt);
730
-		$excerpt = str_replace("\t", ' ', $excerpt);
731
-
732
-		return $excerpt;
733
-	}
734
-
735
-
736
-	/**
737
-	 * Set the score to the result assigned to this document during a search
738
-	 * request.
739
-	 *
740
-	 * @since 15.0.0
741
-	 *
742
-	 * @param string $score
743
-	 *
744
-	 * @return IIndexDocument
745
-	 */
746
-	final public function setScore(string $score): IIndexDocument {
747
-		$this->score = $score;
748
-
749
-		return $this;
750
-	}
751
-
752
-	/**
753
-	 * Get the score.
754
-	 *
755
-	 * @since 15.0.0
756
-	 *
757
-	 * @return string
758
-	 */
759
-	final public function getScore(): string {
760
-		return $this->score;
761
-	}
762
-
763
-
764
-	/**
765
-	 * Set some information about the original document that will be available
766
-	 * to the front-end when displaying search result. (as string)
767
-	 * Because this information will not be indexed, this method can also be
768
-	 * used to manage some data while filling the IIndexDocument before its
769
-	 * indexing.
770
-	 *
771
-	 * @since 15.0.0
772
-	 *
773
-	 * @param string $info
774
-	 * @param string $value
775
-	 *
776
-	 * @return IIndexDocument
777
-	 */
778
-	final public function setInfo(string $info, string $value): IIndexDocument {
779
-		$this->info[$info] = $value;
780
-
781
-		return $this;
782
-	}
783
-
784
-	/**
785
-	 * Get an information about a document. (string)
786
-	 *
787
-	 * @since 15.0.0
788
-	 *
789
-	 * @param string $info
790
-	 * @param string $default
791
-	 *
792
-	 * @return string
793
-	 */
794
-	final public function getInfo(string $info, string $default = ''): string {
795
-		if (!key_exists($info, $this->info)) {
796
-			return $default;
797
-		}
798
-
799
-		return $this->info[$info];
800
-	}
801
-
802
-	/**
803
-	 * Set some information about the original document that will be available
804
-	 * to the front-end when displaying search result. (as array)
805
-	 * Because this information will not be indexed, this method can also be
806
-	 * used to manage some data while filling the IIndexDocument before its
807
-	 * indexing.
808
-	 *
809
-	 * @since 15.0.0
810
-	 *
811
-	 * @param string $info
812
-	 * @param array $value
813
-	 *
814
-	 * @return IIndexDocument
815
-	 */
816
-	final public function setInfoArray(string $info, array $value): IIndexDocument {
817
-		$this->info[$info] = $value;
818
-
819
-		return $this;
820
-	}
821
-
822
-	/**
823
-	 * Get an information about a document. (array)
824
-	 *
825
-	 * @since 15.0.0
826
-	 *
827
-	 * @param string $info
828
-	 * @param array $default
829
-	 *
830
-	 * @return array
831
-	 */
832
-	final public function getInfoArray(string $info, array $default = []): array {
833
-		if (!key_exists($info, $this->info)) {
834
-			return $default;
835
-		}
836
-
837
-		return $this->info[$info];
838
-	}
839
-
840
-	/**
841
-	 * Set some information about the original document that will be available
842
-	 * to the front-end when displaying search result. (as int)
843
-	 * Because this information will not be indexed, this method can also be
844
-	 * used to manage some data while filling the IIndexDocument before its
845
-	 * indexing.
846
-	 *
847
-	 * @since 15.0.0
848
-	 *
849
-	 * @param string $info
850
-	 * @param int $value
851
-	 *
852
-	 * @return IIndexDocument
853
-	 */
854
-	final public function setInfoInt(string $info, int $value): IIndexDocument {
855
-		$this->info[$info] = $value;
856
-
857
-		return $this;
858
-	}
859
-
860
-	/**
861
-	 * Get an information about a document. (int)
862
-	 *
863
-	 * @since 15.0.0
864
-	 *
865
-	 * @param string $info
866
-	 * @param int $default
867
-	 *
868
-	 * @return int
869
-	 */
870
-	final public function getInfoInt(string $info, int $default = 0): int {
871
-		if (!key_exists($info, $this->info)) {
872
-			return $default;
873
-		}
874
-
875
-		return $this->info[$info];
876
-	}
877
-
878
-	/**
879
-	 * Set some information about the original document that will be available
880
-	 * to the front-end when displaying search result. (as bool)
881
-	 * Because this information will not be indexed, this method can also be
882
-	 * used to manage some data while filling the IIndexDocument before its
883
-	 * indexing.
884
-	 *
885
-	 * @since 15.0.0
886
-	 *
887
-	 * @param string $info
888
-	 * @param bool $value
889
-	 *
890
-	 * @return IIndexDocument
891
-	 */
892
-	final public function setInfoBool(string $info, bool $value): IIndexDocument {
893
-		$this->info[$info] = $value;
894
-
895
-		return $this;
896
-	}
897
-
898
-	/**
899
-	 * Get an information about a document. (bool)
900
-	 *
901
-	 * @since 15.0.0
902
-	 *
903
-	 * @param string $info
904
-	 * @param bool $default
905
-	 *
906
-	 * @return bool
907
-	 */
908
-	final public function getInfoBool(string $info, bool $default = false): bool {
909
-		if (!key_exists($info, $this->info)) {
910
-			return $default;
911
-		}
912
-
913
-		return $this->info[$info];
914
-	}
915
-
916
-	/**
917
-	 * Get all info.
918
-	 *
919
-	 * @since 15.0.0
920
-	 *
921
-	 * @return array
922
-	 */
923
-	final public function getInfoAll(): array {
924
-		$info = [];
925
-		foreach ($this->info as $k => $v) {
926
-			if (substr($k, 0, 1) === '_') {
927
-				continue;
928
-			}
929
-
930
-			$info[$k] = $v;
931
-		}
932
-
933
-		return $info;
934
-	}
935
-
936
-
937
-	/**
938
-	 * @since 15.0.0
939
-	 *
940
-	 * On some version of PHP, it is better to force destruct the object.
941
-	 * And during the index, the number of generated IIndexDocument can be
942
-	 * _huge_.
943
-	 */
944
-	public function __destruct() {
945
-		unset($this->id);
946
-		unset($this->providerId);
947
-		unset($this->access);
948
-		unset($this->modifiedTime);
949
-		unset($this->title);
950
-		unset($this->content);
951
-		unset($this->hash);
952
-		unset($this->link);
953
-		unset($this->source);
954
-		unset($this->tags);
955
-		unset($this->metaTags);
956
-		unset($this->subTags);
957
-		unset($this->more);
958
-		unset($this->excerpts);
959
-		unset($this->score);
960
-		unset($this->info);
961
-		unset($this->contentEncoded);
962
-	}
963
-
964
-	/**
965
-	 * @since 15.0.0
966
-	 */
967
-	public function jsonSerialize(): array {
968
-		return [
969
-			'id' => $this->getId(),
970
-			'providerId' => $this->getProviderId(),
971
-			'access' => $this->access,
972
-			'modifiedTime' => $this->getModifiedTime(),
973
-			'title' => $this->getTitle(),
974
-			'link' => $this->getLink(),
975
-			'index' => $this->index,
976
-			'source' => $this->getSource(),
977
-			'info' => $this->getInfoAll(),
978
-			'hash' => $this->getHash(),
979
-			'contentSize' => $this->getContentSize(),
980
-			'tags' => $this->getTags(),
981
-			'metatags' => $this->getMetaTags(),
982
-			'subtags' => $this->getSubTags(),
983
-			'more' => $this->getMore(),
984
-			'excerpts' => $this->getExcerpts(),
985
-			'score' => $this->getScore()
986
-		];
987
-	}
58
+    /** @var DocumentAccess */
59
+    protected $access;
60
+
61
+    /** @var IIndex */
62
+    protected $index;
63
+
64
+    /** @var int */
65
+    protected $modifiedTime = 0;
66
+
67
+    /** @var string */
68
+    protected $source = '';
69
+
70
+    /** @var array */
71
+    protected $tags = [];
72
+
73
+    /** @var array */
74
+    protected $metaTags = [];
75
+
76
+    /** @var array */
77
+    protected $subTags = [];
78
+
79
+    /** @var string */
80
+    protected $title = '';
81
+
82
+    /** @var string */
83
+    protected $content = '';
84
+
85
+    /** @var string */
86
+    protected $hash = '';
87
+
88
+    /** @var array */
89
+    protected $parts = [];
90
+
91
+    /** @var string */
92
+    protected $link = '';
93
+
94
+    /** @var array */
95
+    protected $more = [];
96
+
97
+    /** @var array */
98
+    protected $excerpts = [];
99
+
100
+    /** @var string */
101
+    protected $score = '';
102
+
103
+    /** @var array */
104
+    protected $info = [];
105
+
106
+    /** @var int */
107
+    protected $contentEncoded = 0;
108
+
109
+
110
+    /**
111
+     * IIndexDocument constructor.
112
+     *
113
+     * On creation, we assure the uniqueness of the object using the providerId
114
+     * and the Id of the original document.
115
+     *
116
+     * @since 15.0.0
117
+     *
118
+     * @param string $providerId
119
+     * @param string $documentId
120
+     */
121
+    public function __construct(string $providerId, string $documentId) {
122
+        $this->providerId = $providerId;
123
+        $this->id = $documentId;
124
+    }
125
+
126
+
127
+    /**
128
+     * Returns the Id of the original document.
129
+     *
130
+     * @since 15.0.0
131
+     *
132
+     * @return string
133
+     */
134
+    final public function getId(): string {
135
+        return $this->id;
136
+    }
137
+
138
+
139
+    /**
140
+     * Returns the Id of the provider.
141
+     *
142
+     * @since 15.0.0
143
+     *
144
+     * @return string
145
+     */
146
+    final public function getProviderId(): string {
147
+        return $this->providerId;
148
+    }
149
+
150
+
151
+    /**
152
+     * Set the Index related to the IIndexDocument.
153
+     *
154
+     * @see IIndex
155
+     *
156
+     * @since 15.0.0
157
+     *
158
+     * @param IIndex $index
159
+     *
160
+     * @return IIndexDocument
161
+     */
162
+    final public function setIndex(IIndex $index): IIndexDocument {
163
+        $this->index = $index;
164
+
165
+        return $this;
166
+    }
167
+
168
+    /**
169
+     * Get the Index.
170
+     *
171
+     * @since 15.0.0
172
+     *
173
+     * @return IIndex
174
+     */
175
+    final public function getIndex(): IIndex {
176
+        return $this->index;
177
+    }
178
+
179
+    /**
180
+     * return if Index is defined.
181
+     *
182
+     * @since 16.0.0
183
+     *
184
+     * @return bool
185
+     */
186
+    final public function hasIndex(): bool {
187
+        return ($this->index !== null);
188
+    }
189
+
190
+
191
+    /**
192
+     * Set the modified time of the original document.
193
+     *
194
+     * @since 15.0.0
195
+     *
196
+     * @param int $modifiedTime
197
+     *
198
+     * @return IIndexDocument
199
+     */
200
+    final public function setModifiedTime(int $modifiedTime): IIndexDocument {
201
+        $this->modifiedTime = $modifiedTime;
202
+
203
+        return $this;
204
+    }
205
+
206
+    /**
207
+     * Get the modified time of the original document.
208
+     *
209
+     * @since 15.0.0
210
+     *
211
+     * @return int
212
+     */
213
+    final public function getModifiedTime(): int {
214
+        return $this->modifiedTime;
215
+    }
216
+
217
+    /**
218
+     * Check if the original document of the IIndexDocument is older than $time.
219
+     *
220
+     * @since 15.0.0
221
+     *
222
+     * @param int $time
223
+     *
224
+     * @return bool
225
+     */
226
+    final public function isOlderThan(int $time): bool {
227
+        return ($this->modifiedTime < $time);
228
+    }
229
+
230
+
231
+    /**
232
+     * Set the read rights of the original document using a IDocumentAccess.
233
+     *
234
+     * @see IDocumentAccess
235
+     *
236
+     * @since 15.0.0
237
+     *
238
+     * @param IDocumentAccess $access
239
+     *
240
+     * @return $this
241
+     */
242
+    final public function setAccess(IDocumentAccess $access): IIndexDocument {
243
+        $this->access = $access;
244
+
245
+        return $this;
246
+    }
247
+
248
+    /**
249
+     * Get the IDocumentAccess related to the original document.
250
+     *
251
+     * @since 15.0.0
252
+     *
253
+     * @return IDocumentAccess
254
+     */
255
+    final public function getAccess(): IDocumentAccess {
256
+        return $this->access;
257
+    }
258
+
259
+
260
+    /**
261
+     * Add a tag to the list.
262
+     *
263
+     * @since 15.0.0
264
+     *
265
+     * @param string $tag
266
+     *
267
+     * @return IIndexDocument
268
+     */
269
+    final public function addTag(string $tag): IIndexDocument {
270
+        $this->tags[] = $tag;
271
+
272
+        return $this;
273
+    }
274
+
275
+    /**
276
+     * Set the list of tags assigned to the original document.
277
+     *
278
+     * @since 15.0.0
279
+     *
280
+     * @param array $tags
281
+     *
282
+     * @return IIndexDocument
283
+     */
284
+    final public function setTags(array $tags): IIndexDocument {
285
+        $this->tags = $tags;
286
+
287
+        return $this;
288
+    }
289
+
290
+    /**
291
+     * Get the list of tags assigned to the original document.
292
+     *
293
+     * @since 15.0.0
294
+     *
295
+     * @return array
296
+     */
297
+    final public function getTags(): array {
298
+        return $this->tags;
299
+    }
300
+
301
+
302
+    /**
303
+     * Add a meta tag to the list.
304
+     *
305
+     * @since 15.0.0
306
+     *
307
+     * @param string $tag
308
+     *
309
+     * @return IIndexDocument
310
+     */
311
+    final public function addMetaTag(string $tag): IIndexDocument {
312
+        $this->metaTags[] = $tag;
313
+
314
+        return $this;
315
+    }
316
+
317
+    /**
318
+     * Set the list of meta tags assigned to the original document.
319
+     *
320
+     * @since 15.0.0
321
+     *
322
+     * @param array $tags
323
+     *
324
+     * @return IIndexDocument
325
+     */
326
+    final public function setMetaTags(array $tags): IIndexDocument {
327
+        $this->metaTags = $tags;
328
+
329
+        return $this;
330
+    }
331
+
332
+    /**
333
+     * Get the list of meta tags assigned to the original document.
334
+     *
335
+     * @since 15.0.0
336
+     *
337
+     * @return array
338
+     */
339
+    final public function getMetaTags(): array {
340
+        return $this->metaTags;
341
+    }
342
+
343
+
344
+    /**
345
+     * Add a sub tag to the list.
346
+     *
347
+     * @since 15.0.0
348
+     *
349
+     * @param string $sub
350
+     * @param string $tag
351
+     *
352
+     * @return IIndexDocument
353
+     */
354
+    final public function addSubTag(string $sub, string $tag): IIndexDocument {
355
+        if (!array_key_exists($sub, $this->subTags)) {
356
+            $this->subTags[$sub] = [];
357
+        }
358
+
359
+        $this->subTags[$sub][] = $tag;
360
+
361
+        return $this;
362
+    }
363
+
364
+
365
+    /**
366
+     * Set the list of sub tags assigned to the original document.
367
+     *
368
+     * @since 15.0.0
369
+     *
370
+     * @param array $tags
371
+     *
372
+     * @return IIndexDocument
373
+     */
374
+    final public function setSubTags(array $tags): IIndexDocument {
375
+        $this->subTags = $tags;
376
+
377
+        return $this;
378
+    }
379
+
380
+    /**
381
+     * Get the list of sub tags assigned to the original document.
382
+     * If $formatted is true, the result will be formatted in a one
383
+     * dimensional array.
384
+     *
385
+     * @since 15.0.0
386
+     *
387
+     * @param bool $formatted
388
+     *
389
+     * @return array
390
+     */
391
+    final public function getSubTags(bool $formatted = false): array {
392
+        if ($formatted === false) {
393
+            return $this->subTags;
394
+        }
395
+
396
+        $subTags = [];
397
+        $ak = array_keys($this->subTags);
398
+        foreach ($ak as $source) {
399
+            $tags = $this->subTags[$source];
400
+            foreach ($tags as $tag) {
401
+                $subTags[] = $source . '_' . $tag;
402
+            }
403
+        }
404
+
405
+        return $subTags;
406
+    }
407
+
408
+
409
+    /**
410
+     * Set the source of the original document.
411
+     *
412
+     * @since 15.0.0
413
+     *
414
+     * @param string $source
415
+     *
416
+     * @return IIndexDocument
417
+     */
418
+    final public function setSource(string $source): IIndexDocument {
419
+        $this->source = $source;
420
+
421
+        return $this;
422
+    }
423
+
424
+    /**
425
+     * Get the source of the original document.
426
+     *
427
+     * @since 15.0.0
428
+     *
429
+     * @return string
430
+     */
431
+    final public function getSource(): string {
432
+        return $this->source;
433
+    }
434
+
435
+
436
+    /**
437
+     * Set the title of the original document.
438
+     *
439
+     * @since 15.0.0
440
+     *
441
+     * @param string $title
442
+     *
443
+     * @return IIndexDocument
444
+     */
445
+    final public function setTitle(string $title): IIndexDocument {
446
+        $this->title = $title;
447
+
448
+        return $this;
449
+    }
450
+
451
+    /**
452
+     * Get the title of the original document.
453
+     *
454
+     * @since 15.0.0
455
+     *
456
+     * @return string
457
+     */
458
+    final public function getTitle(): string {
459
+        return $this->title;
460
+    }
461
+
462
+
463
+    /**
464
+     * Set the content of the document.
465
+     * $encoded can be NOT_ENCODED or ENCODED_BASE64 if the content is raw or
466
+     * encoded in base64.
467
+     *
468
+     * @since 15.0.0
469
+     *
470
+     * @param string $content
471
+     * @param int $encoded
472
+     *
473
+     * @return IIndexDocument
474
+     */
475
+    final public function setContent(string $content, int $encoded = 0): IIndexDocument {
476
+        $this->content = $content;
477
+        $this->contentEncoded = $encoded;
478
+
479
+        return $this;
480
+    }
481
+
482
+    /**
483
+     * Get the content of the original document.
484
+     *
485
+     * @since 15.0.0
486
+     *
487
+     * @return string
488
+     */
489
+    final public function getContent(): string {
490
+        return $this->content;
491
+    }
492
+
493
+    /**
494
+     * Returns the type of the encoding on the content.
495
+     *
496
+     * @since 15.0.0
497
+     *
498
+     * @return int
499
+     */
500
+    final public function isContentEncoded(): int {
501
+        return $this->contentEncoded;
502
+    }
503
+
504
+    /**
505
+     * Return the size of the content.
506
+     *
507
+     * @since 15.0.0
508
+     *
509
+     * @return int
510
+     */
511
+    final public function getContentSize(): int {
512
+        return strlen($this->getContent());
513
+    }
514
+
515
+
516
+    /**
517
+     * Generate an hash, based on the content of the original document.
518
+     *
519
+     * @since 15.0.0
520
+     *
521
+     * @return IIndexDocument
522
+     */
523
+    final public function initHash(): IIndexDocument {
524
+        if ($this->getContent() === '' || is_null($this->getContent())) {
525
+            return $this;
526
+        }
527
+
528
+        $this->hash = hash("md5", $this->getContent());
529
+
530
+        return $this;
531
+    }
532
+
533
+    /**
534
+     * Set the hash of the original document.
535
+     *
536
+     * @since 15.0.0
537
+     *
538
+     * @param string $hash
539
+     *
540
+     * @return IIndexDocument
541
+     */
542
+    final public function setHash(string $hash): IIndexDocument {
543
+        $this->hash = $hash;
544
+
545
+        return $this;
546
+    }
547
+
548
+    /**
549
+     * Get the hash of the original document.
550
+     *
551
+     * @since 15.0.0
552
+     *
553
+     * @return string
554
+     */
555
+    final public function getHash(): string {
556
+        return $this->hash;
557
+    }
558
+
559
+
560
+    /**
561
+     * Add a part, identified by a string, and its content.
562
+     *
563
+     * It is strongly advised to use alphanumerical chars with no space in the
564
+     * $part string.
565
+     *
566
+     * @since 15.0.0
567
+     *
568
+     * @param string $part
569
+     * @param string $content
570
+     *
571
+     * @return IIndexDocument
572
+     */
573
+    final public function addPart(string $part, string $content): IIndexDocument {
574
+        $this->parts[$part] = $content;
575
+
576
+        return $this;
577
+    }
578
+
579
+    /**
580
+     * Set all parts and their content.
581
+     *
582
+     * @since 15.0.0
583
+     *
584
+     * @param array $parts
585
+     *
586
+     * @return IIndexDocument
587
+     */
588
+    final public function setParts(array $parts): IIndexDocument {
589
+        $this->parts = $parts;
590
+
591
+        return $this;
592
+    }
593
+
594
+    /**
595
+     * Get all parts of the IIndexDocument.
596
+     *
597
+     * @since 15.0.0
598
+     *
599
+     * @return array
600
+     */
601
+    final public function getParts(): array {
602
+        return $this->parts;
603
+    }
604
+
605
+
606
+    /**
607
+     * Add a link, usable by the frontend.
608
+     *
609
+     * @since 15.0.0
610
+     *
611
+     * @param string $link
612
+     *
613
+     * @return IIndexDocument
614
+     */
615
+    final public function setLink(string $link): IIndexDocument {
616
+        $this->link = $link;
617
+
618
+        return $this;
619
+    }
620
+
621
+    /**
622
+     * Get the link.
623
+     *
624
+     * @since 15.0.0
625
+     *
626
+     * @return string
627
+     */
628
+    final public function getLink(): string {
629
+        return $this->link;
630
+    }
631
+
632
+
633
+    /**
634
+     * Set more information that couldn't be set using other method.
635
+     *
636
+     * @since 15.0.0
637
+     *
638
+     * @param array $more
639
+     *
640
+     * @return IIndexDocument
641
+     */
642
+    final public function setMore(array $more): IIndexDocument {
643
+        $this->more = $more;
644
+
645
+        return $this;
646
+    }
647
+
648
+    /**
649
+     * Get more information.
650
+     *
651
+     * @since 15.0.0
652
+     *
653
+     * @return array
654
+     */
655
+    final public function getMore(): array {
656
+        return $this->more;
657
+    }
658
+
659
+
660
+    /**
661
+     * Add some excerpt of the content of the original document, usually based
662
+     * on the search request.
663
+     *
664
+     * @since 16.0.0
665
+     *
666
+     * @param string $source
667
+     * @param string $excerpt
668
+     *
669
+     * @return IIndexDocument
670
+     */
671
+    final public function addExcerpt(string $source, string $excerpt): IIndexDocument {
672
+        $this->excerpts[] =
673
+            [
674
+                'source' => $source,
675
+                'excerpt' => $this->cleanExcerpt($excerpt)
676
+            ];
677
+
678
+        return $this;
679
+    }
680
+
681
+
682
+    /**
683
+     * Set all excerpts of the content of the original document.
684
+     *
685
+     * @since 16.0.0
686
+     *
687
+     * @param array $excerpts
688
+     *
689
+     * @return IIndexDocument
690
+     */
691
+    final public function setExcerpts(array $excerpts): IIndexDocument {
692
+        $new = [];
693
+        foreach ($excerpts as $entry) {
694
+            $new[] = [
695
+                'source' => $entry['source'],
696
+                'excerpt' => $this->cleanExcerpt($entry['excerpt'])
697
+            ];
698
+        }
699
+
700
+        $this->excerpts = $new;
701
+
702
+        return $this;
703
+    }
704
+
705
+    /**
706
+     * Get all excerpts of the content of the original document.
707
+     *
708
+     * @since 15.0.0
709
+     *
710
+     * @return array
711
+     */
712
+    final public function getExcerpts(): array {
713
+        return $this->excerpts;
714
+    }
715
+
716
+    /**
717
+     * Clean excerpt.
718
+     *
719
+     * @since 16.0.0
720
+     *
721
+     * @param string $excerpt
722
+     * @return string
723
+     */
724
+    private function cleanExcerpt(string $excerpt): string {
725
+        $excerpt = str_replace("\\n", ' ', $excerpt);
726
+        $excerpt = str_replace("\\r", ' ', $excerpt);
727
+        $excerpt = str_replace("\\t", ' ', $excerpt);
728
+        $excerpt = str_replace("\n", ' ', $excerpt);
729
+        $excerpt = str_replace("\r", ' ', $excerpt);
730
+        $excerpt = str_replace("\t", ' ', $excerpt);
731
+
732
+        return $excerpt;
733
+    }
734
+
735
+
736
+    /**
737
+     * Set the score to the result assigned to this document during a search
738
+     * request.
739
+     *
740
+     * @since 15.0.0
741
+     *
742
+     * @param string $score
743
+     *
744
+     * @return IIndexDocument
745
+     */
746
+    final public function setScore(string $score): IIndexDocument {
747
+        $this->score = $score;
748
+
749
+        return $this;
750
+    }
751
+
752
+    /**
753
+     * Get the score.
754
+     *
755
+     * @since 15.0.0
756
+     *
757
+     * @return string
758
+     */
759
+    final public function getScore(): string {
760
+        return $this->score;
761
+    }
762
+
763
+
764
+    /**
765
+     * Set some information about the original document that will be available
766
+     * to the front-end when displaying search result. (as string)
767
+     * Because this information will not be indexed, this method can also be
768
+     * used to manage some data while filling the IIndexDocument before its
769
+     * indexing.
770
+     *
771
+     * @since 15.0.0
772
+     *
773
+     * @param string $info
774
+     * @param string $value
775
+     *
776
+     * @return IIndexDocument
777
+     */
778
+    final public function setInfo(string $info, string $value): IIndexDocument {
779
+        $this->info[$info] = $value;
780
+
781
+        return $this;
782
+    }
783
+
784
+    /**
785
+     * Get an information about a document. (string)
786
+     *
787
+     * @since 15.0.0
788
+     *
789
+     * @param string $info
790
+     * @param string $default
791
+     *
792
+     * @return string
793
+     */
794
+    final public function getInfo(string $info, string $default = ''): string {
795
+        if (!key_exists($info, $this->info)) {
796
+            return $default;
797
+        }
798
+
799
+        return $this->info[$info];
800
+    }
801
+
802
+    /**
803
+     * Set some information about the original document that will be available
804
+     * to the front-end when displaying search result. (as array)
805
+     * Because this information will not be indexed, this method can also be
806
+     * used to manage some data while filling the IIndexDocument before its
807
+     * indexing.
808
+     *
809
+     * @since 15.0.0
810
+     *
811
+     * @param string $info
812
+     * @param array $value
813
+     *
814
+     * @return IIndexDocument
815
+     */
816
+    final public function setInfoArray(string $info, array $value): IIndexDocument {
817
+        $this->info[$info] = $value;
818
+
819
+        return $this;
820
+    }
821
+
822
+    /**
823
+     * Get an information about a document. (array)
824
+     *
825
+     * @since 15.0.0
826
+     *
827
+     * @param string $info
828
+     * @param array $default
829
+     *
830
+     * @return array
831
+     */
832
+    final public function getInfoArray(string $info, array $default = []): array {
833
+        if (!key_exists($info, $this->info)) {
834
+            return $default;
835
+        }
836
+
837
+        return $this->info[$info];
838
+    }
839
+
840
+    /**
841
+     * Set some information about the original document that will be available
842
+     * to the front-end when displaying search result. (as int)
843
+     * Because this information will not be indexed, this method can also be
844
+     * used to manage some data while filling the IIndexDocument before its
845
+     * indexing.
846
+     *
847
+     * @since 15.0.0
848
+     *
849
+     * @param string $info
850
+     * @param int $value
851
+     *
852
+     * @return IIndexDocument
853
+     */
854
+    final public function setInfoInt(string $info, int $value): IIndexDocument {
855
+        $this->info[$info] = $value;
856
+
857
+        return $this;
858
+    }
859
+
860
+    /**
861
+     * Get an information about a document. (int)
862
+     *
863
+     * @since 15.0.0
864
+     *
865
+     * @param string $info
866
+     * @param int $default
867
+     *
868
+     * @return int
869
+     */
870
+    final public function getInfoInt(string $info, int $default = 0): int {
871
+        if (!key_exists($info, $this->info)) {
872
+            return $default;
873
+        }
874
+
875
+        return $this->info[$info];
876
+    }
877
+
878
+    /**
879
+     * Set some information about the original document that will be available
880
+     * to the front-end when displaying search result. (as bool)
881
+     * Because this information will not be indexed, this method can also be
882
+     * used to manage some data while filling the IIndexDocument before its
883
+     * indexing.
884
+     *
885
+     * @since 15.0.0
886
+     *
887
+     * @param string $info
888
+     * @param bool $value
889
+     *
890
+     * @return IIndexDocument
891
+     */
892
+    final public function setInfoBool(string $info, bool $value): IIndexDocument {
893
+        $this->info[$info] = $value;
894
+
895
+        return $this;
896
+    }
897
+
898
+    /**
899
+     * Get an information about a document. (bool)
900
+     *
901
+     * @since 15.0.0
902
+     *
903
+     * @param string $info
904
+     * @param bool $default
905
+     *
906
+     * @return bool
907
+     */
908
+    final public function getInfoBool(string $info, bool $default = false): bool {
909
+        if (!key_exists($info, $this->info)) {
910
+            return $default;
911
+        }
912
+
913
+        return $this->info[$info];
914
+    }
915
+
916
+    /**
917
+     * Get all info.
918
+     *
919
+     * @since 15.0.0
920
+     *
921
+     * @return array
922
+     */
923
+    final public function getInfoAll(): array {
924
+        $info = [];
925
+        foreach ($this->info as $k => $v) {
926
+            if (substr($k, 0, 1) === '_') {
927
+                continue;
928
+            }
929
+
930
+            $info[$k] = $v;
931
+        }
932
+
933
+        return $info;
934
+    }
935
+
936
+
937
+    /**
938
+     * @since 15.0.0
939
+     *
940
+     * On some version of PHP, it is better to force destruct the object.
941
+     * And during the index, the number of generated IIndexDocument can be
942
+     * _huge_.
943
+     */
944
+    public function __destruct() {
945
+        unset($this->id);
946
+        unset($this->providerId);
947
+        unset($this->access);
948
+        unset($this->modifiedTime);
949
+        unset($this->title);
950
+        unset($this->content);
951
+        unset($this->hash);
952
+        unset($this->link);
953
+        unset($this->source);
954
+        unset($this->tags);
955
+        unset($this->metaTags);
956
+        unset($this->subTags);
957
+        unset($this->more);
958
+        unset($this->excerpts);
959
+        unset($this->score);
960
+        unset($this->info);
961
+        unset($this->contentEncoded);
962
+    }
963
+
964
+    /**
965
+     * @since 15.0.0
966
+     */
967
+    public function jsonSerialize(): array {
968
+        return [
969
+            'id' => $this->getId(),
970
+            'providerId' => $this->getProviderId(),
971
+            'access' => $this->access,
972
+            'modifiedTime' => $this->getModifiedTime(),
973
+            'title' => $this->getTitle(),
974
+            'link' => $this->getLink(),
975
+            'index' => $this->index,
976
+            'source' => $this->getSource(),
977
+            'info' => $this->getInfoAll(),
978
+            'hash' => $this->getHash(),
979
+            'contentSize' => $this->getContentSize(),
980
+            'tags' => $this->getTags(),
981
+            'metatags' => $this->getMetaTags(),
982
+            'subtags' => $this->getSubTags(),
983
+            'more' => $this->getMore(),
984
+            'excerpts' => $this->getExcerpts(),
985
+            'score' => $this->getScore()
986
+        ];
987
+    }
988 988
 }
Please login to merge, or discard this patch.
lib/private/FullTextSearch/Model/SearchTemplate.php 1 patch
Indentation   +191 added lines, -191 removed lines patch added patch discarded remove patch
@@ -65,196 +65,196 @@
 block discarded – undo
65 65
 final class SearchTemplate implements ISearchTemplate, JsonSerializable {
66 66
 
67 67
 
68
-	/** @var string */
69
-	private $icon = '';
70
-
71
-	/** @var string */
72
-	private $css = '';
73
-
74
-	/** @var string */
75
-	private $template = '';
76
-
77
-	/** @var SearchOption[] */
78
-	private $panelOptions = [];
79
-
80
-	/** @var SearchOption[] */
81
-	private $navigationOptions = [];
82
-
83
-
84
-	/**
85
-	 * ISearchTemplate constructor.
86
-	 *
87
-	 * the class of the icon and the css file to be loaded can be set during the
88
-	 * creation of the object.
89
-	 *
90
-	 * @since 15.0.0
91
-	 *
92
-	 * @param string $icon
93
-	 * @param string $css
94
-	 */
95
-	public function __construct(string $icon = '', string $css = '') {
96
-		$this->icon = $icon;
97
-		$this->css = $css;
98
-	}
99
-
100
-
101
-	/**
102
-	 * Set the class of the icon to be displayed in the left panel of the
103
-	 * FullTextSearch navigation page, in front of the related Content Provider.
104
-	 *
105
-	 * @since 15.0.0
106
-	 *
107
-	 * @param string $class
108
-	 *
109
-	 * @return ISearchTemplate
110
-	 */
111
-	public function setIcon(string $class): ISearchTemplate {
112
-		$this->icon = $class;
113
-
114
-		return $this;
115
-	}
116
-
117
-	/**
118
-	 * Get the class of the icon.
119
-	 *
120
-	 * @since 15.0.0
121
-	 *
122
-	 * @return string
123
-	 */
124
-	public function getIcon(): string {
125
-		return $this->icon;
126
-	}
127
-
128
-
129
-	/**
130
-	 * Set the path of a CSS file that will be loaded when needed.
131
-	 *
132
-	 * @since 15.0.0
133
-	 *
134
-	 * @param string $css
135
-	 *
136
-	 * @return ISearchTemplate
137
-	 */
138
-	public function setCss(string $css): ISearchTemplate {
139
-		$this->css = $css;
140
-
141
-		return $this;
142
-	}
143
-
144
-	/**
145
-	 * Get the path of the CSS file.
146
-	 *
147
-	 * @since 15.0.0
148
-	 *
149
-	 * @return string
150
-	 */
151
-	public function getCss(): string {
152
-		return $this->css;
153
-	}
154
-
155
-
156
-	/**
157
-	 * Set the path of the file of a template that the HTML will be displayed
158
-	 * below the Options.
159
-	 * This should only be used if your Content Provider needs to set options in
160
-	 * a way not generated by FullTextSearch
161
-	 *
162
-	 * @since 15.0.0
163
-	 *
164
-	 * @param string $template
165
-	 *
166
-	 * @return ISearchTemplate
167
-	 */
168
-	public function setTemplate(string $template): ISearchTemplate {
169
-		$this->template = $template;
170
-
171
-		return $this;
172
-	}
173
-
174
-	/**
175
-	 * Get the path of the template file.
176
-	 *
177
-	 * @since 15.0.0
178
-	 *
179
-	 * @return string
180
-	 */
181
-	public function getTemplate(): string {
182
-		return $this->template;
183
-	}
184
-
185
-
186
-	/**
187
-	 * Add an option in the Panel that is displayed when the user start a search
188
-	 * within the app that generate the content.
189
-	 *
190
-	 * @see ISearchOption
191
-	 *
192
-	 * @since 15.0.0
193
-	 *
194
-	 * @param ISearchOption $option
195
-	 *
196
-	 * @return ISearchTemplate
197
-	 */
198
-	public function addPanelOption(ISearchOption $option): ISearchTemplate {
199
-		$this->panelOptions[] = $option;
200
-
201
-		return $this;
202
-	}
203
-
204
-	/**
205
-	 * Get all options to be displayed in the Panel.
206
-	 *
207
-	 * @since 15.0.0
208
-	 *
209
-	 * @return SearchOption[]
210
-	 */
211
-	public function getPanelOptions(): array {
212
-		return $this->panelOptions;
213
-	}
214
-
215
-
216
-	/**
217
-	 * Add an option in the left panel of the FullTextSearch navigation page.
218
-	 *
219
-	 * @see ISearchOption
220
-	 *
221
-	 * @since 15.0.0
222
-	 *
223
-	 * @param ISearchOption $option
224
-	 *
225
-	 * @return ISearchTemplate
226
-	 */
227
-	public function addNavigationOption(ISearchOption $option): ISearchTemplate {
228
-		$this->navigationOptions[] = $option;
229
-
230
-		return $this;
231
-	}
232
-
233
-	/**
234
-	 * Get all options to be displayed in the FullTextSearch navigation page.
235
-	 *
236
-	 * @since 15.0.0
237
-	 *
238
-	 * @return array
239
-	 */
240
-	public function getNavigationOptions(): array {
241
-		return $this->navigationOptions;
242
-	}
243
-
244
-
245
-	/**
246
-	 * @since 15.0.0
247
-	 *
248
-	 * @return array
249
-	 */
250
-	public function jsonSerialize(): array {
251
-		return [
252
-			'icon' => $this->getIcon(),
253
-			'css' => $this->getCss(),
254
-			'template' => $this->getTemplate(),
255
-			'panel' => $this->getPanelOptions(),
256
-			'navigation' => $this->getNavigationOptions()
257
-		];
258
-	}
68
+    /** @var string */
69
+    private $icon = '';
70
+
71
+    /** @var string */
72
+    private $css = '';
73
+
74
+    /** @var string */
75
+    private $template = '';
76
+
77
+    /** @var SearchOption[] */
78
+    private $panelOptions = [];
79
+
80
+    /** @var SearchOption[] */
81
+    private $navigationOptions = [];
82
+
83
+
84
+    /**
85
+     * ISearchTemplate constructor.
86
+     *
87
+     * the class of the icon and the css file to be loaded can be set during the
88
+     * creation of the object.
89
+     *
90
+     * @since 15.0.0
91
+     *
92
+     * @param string $icon
93
+     * @param string $css
94
+     */
95
+    public function __construct(string $icon = '', string $css = '') {
96
+        $this->icon = $icon;
97
+        $this->css = $css;
98
+    }
99
+
100
+
101
+    /**
102
+     * Set the class of the icon to be displayed in the left panel of the
103
+     * FullTextSearch navigation page, in front of the related Content Provider.
104
+     *
105
+     * @since 15.0.0
106
+     *
107
+     * @param string $class
108
+     *
109
+     * @return ISearchTemplate
110
+     */
111
+    public function setIcon(string $class): ISearchTemplate {
112
+        $this->icon = $class;
113
+
114
+        return $this;
115
+    }
116
+
117
+    /**
118
+     * Get the class of the icon.
119
+     *
120
+     * @since 15.0.0
121
+     *
122
+     * @return string
123
+     */
124
+    public function getIcon(): string {
125
+        return $this->icon;
126
+    }
127
+
128
+
129
+    /**
130
+     * Set the path of a CSS file that will be loaded when needed.
131
+     *
132
+     * @since 15.0.0
133
+     *
134
+     * @param string $css
135
+     *
136
+     * @return ISearchTemplate
137
+     */
138
+    public function setCss(string $css): ISearchTemplate {
139
+        $this->css = $css;
140
+
141
+        return $this;
142
+    }
143
+
144
+    /**
145
+     * Get the path of the CSS file.
146
+     *
147
+     * @since 15.0.0
148
+     *
149
+     * @return string
150
+     */
151
+    public function getCss(): string {
152
+        return $this->css;
153
+    }
154
+
155
+
156
+    /**
157
+     * Set the path of the file of a template that the HTML will be displayed
158
+     * below the Options.
159
+     * This should only be used if your Content Provider needs to set options in
160
+     * a way not generated by FullTextSearch
161
+     *
162
+     * @since 15.0.0
163
+     *
164
+     * @param string $template
165
+     *
166
+     * @return ISearchTemplate
167
+     */
168
+    public function setTemplate(string $template): ISearchTemplate {
169
+        $this->template = $template;
170
+
171
+        return $this;
172
+    }
173
+
174
+    /**
175
+     * Get the path of the template file.
176
+     *
177
+     * @since 15.0.0
178
+     *
179
+     * @return string
180
+     */
181
+    public function getTemplate(): string {
182
+        return $this->template;
183
+    }
184
+
185
+
186
+    /**
187
+     * Add an option in the Panel that is displayed when the user start a search
188
+     * within the app that generate the content.
189
+     *
190
+     * @see ISearchOption
191
+     *
192
+     * @since 15.0.0
193
+     *
194
+     * @param ISearchOption $option
195
+     *
196
+     * @return ISearchTemplate
197
+     */
198
+    public function addPanelOption(ISearchOption $option): ISearchTemplate {
199
+        $this->panelOptions[] = $option;
200
+
201
+        return $this;
202
+    }
203
+
204
+    /**
205
+     * Get all options to be displayed in the Panel.
206
+     *
207
+     * @since 15.0.0
208
+     *
209
+     * @return SearchOption[]
210
+     */
211
+    public function getPanelOptions(): array {
212
+        return $this->panelOptions;
213
+    }
214
+
215
+
216
+    /**
217
+     * Add an option in the left panel of the FullTextSearch navigation page.
218
+     *
219
+     * @see ISearchOption
220
+     *
221
+     * @since 15.0.0
222
+     *
223
+     * @param ISearchOption $option
224
+     *
225
+     * @return ISearchTemplate
226
+     */
227
+    public function addNavigationOption(ISearchOption $option): ISearchTemplate {
228
+        $this->navigationOptions[] = $option;
229
+
230
+        return $this;
231
+    }
232
+
233
+    /**
234
+     * Get all options to be displayed in the FullTextSearch navigation page.
235
+     *
236
+     * @since 15.0.0
237
+     *
238
+     * @return array
239
+     */
240
+    public function getNavigationOptions(): array {
241
+        return $this->navigationOptions;
242
+    }
243
+
244
+
245
+    /**
246
+     * @since 15.0.0
247
+     *
248
+     * @return array
249
+     */
250
+    public function jsonSerialize(): array {
251
+        return [
252
+            'icon' => $this->getIcon(),
253
+            'css' => $this->getCss(),
254
+            'template' => $this->getTemplate(),
255
+            'panel' => $this->getPanelOptions(),
256
+            'navigation' => $this->getNavigationOptions()
257
+        ];
258
+    }
259 259
 }
260 260
 
Please login to merge, or discard this patch.