ILIAS  trunk Revision v12.0_alpha-16-g3e876e53c80
ILIAS\Search\GUI\Direct\SearcherImpl Class Reference
+ Inheritance diagram for ILIAS\Search\GUI\Direct\SearcherImpl:
+ Collaboration diagram for ILIAS\Search\GUI\Direct\SearcherImpl:

Public Member Functions

 __construct (protected ilSearchSettings $settings, protected ilGlobalTemplateInterface $tpl, protected UIRenderer $ui_renderer, protected ResultPresenter $presenter, protected ilLanguage $lng)
 
 performSearchAndRenderResults (int $usr_id, ilUserSearchCache $cache, ViewControlInfos $view_control_infos, SearchStateHandler $state_handler)
 Note that the cache doubles here as an actual cache, but also as a data object bundling all inputs needed to search. More...
 
 readSavedResultsAndRenderResults (int $usr_id, ilUserSearchCache $cache, ViewControlInfos $view_control_infos)
 
 performSearchAndRenderResults (int $usr_id, ilUserSearchCache $cache, ViewControlInfos $view_control_infos, SearchStateHandler $state_handler)
 Note that the cache doubles here as an actual cache, but also as a data object bundling all inputs needed to search. More...
 
 readSavedResultsAndRenderResults (int $usr_id, ilUserSearchCache $cache, ViewControlInfos $view_control_infos)
 

Protected Member Functions

 renderResults (ilSearchResult $results, string $term, ViewControlInfos $view_control_infos)
 
 parseQueryString (string $term)
 
 searchObjects (ilQueryParser $query_parser, ilUserSearchCache $cache)
 Search in object title, desctiption. More...
 
 searchLOM (string $field, ilQueryParser $query_parser, ilUserSearchCache $cache)
 
 searchDetails (ilQueryParser $query_parser, ilUserSearchCache $cache, ilSearchResult $result)
 
 parseCreationFilter (ilObjectSearch $search, ilUserSearchCache $cache)
 
 parseStartDateFromCreationFilter (ilUserSearchCache $cache)
 
 parseEndDateFromCreationFilter (ilUserSearchCache $cache)
 
 parseTypeFilter (ilUserSearchCache $cache)
 

Detailed Description

Definition at line 40 of file SearcherImpl.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\Search\GUI\Direct\SearcherImpl::__construct ( protected ilSearchSettings  $settings,
protected ilGlobalTemplateInterface  $tpl,
protected UIRenderer  $ui_renderer,
protected ResultPresenter  $presenter,
protected ilLanguage  $lng 
)

Definition at line 42 of file SearcherImpl.php.

48 {
49 }

Member Function Documentation

◆ parseCreationFilter()

ILIAS\Search\GUI\Direct\SearcherImpl::parseCreationFilter ( ilObjectSearch  $search,
ilUserSearchCache  $cache 
)
protected

Definition at line 300 of file SearcherImpl.php.

303 : void {
304 $date_start = $this->parseStartDateFromCreationFilter($cache);
305 $date_end = $this->parseEndDateFromCreationFilter($cache);
306
307 if (is_null($date_start) && is_null($date_end)) {
308 return;
309 }
310
311 $search->setCreationDateFilterStartDate($date_start);
312 $search->setCreationDateFilterEndDate($date_end);
313 }
parseEndDateFromCreationFilter(ilUserSearchCache $cache)
parseStartDateFromCreationFilter(ilUserSearchCache $cache)
setCreationDateFilterStartDate(?ilDate $day)
setCreationDateFilterEndDate(?ilDate $day)

◆ parseEndDateFromCreationFilter()

ILIAS\Search\GUI\Direct\SearcherImpl::parseEndDateFromCreationFilter ( ilUserSearchCache  $cache)
protected

Definition at line 324 of file SearcherImpl.php.

324 : ?ilDate
325 {
326 $options = $cache->getCreationFilter();
327 if (!($options['date_end'] ?? false)) {
328 return null;
329 }
330 return new ilDate($options['date_end'], IL_CAL_DATE);
331 }
const IL_CAL_DATE
Class for single dates.

References ILIAS\UI\Implementation\Component\Input\Field\$options, ilUserSearchCache\getCreationFilter(), and IL_CAL_DATE.

+ Here is the call graph for this function:

◆ parseQueryString()

ILIAS\Search\GUI\Direct\SearcherImpl::parseQueryString ( string  $term)
protected

Definition at line 157 of file SearcherImpl.php.

157 : ilQueryParser|string
158 {
159 $query_parser = new ilQueryParser(ilUtil::stripSlashes($term));
160 $query_parser->setCombination(
161 $this->settings->getDefaultOperator() === ilSearchSettings::OPERATOR_AND ?
163 );
164 $query_parser->parse();
165
166 if (!$query_parser->validate()) {
167 return $query_parser->getMessage();
168 }
169 return $query_parser;
170 }
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")

References ilSearchSettings\OPERATOR_AND, ilQueryParser\QP_COMBINATION_AND, ilQueryParser\QP_COMBINATION_OR, ILIAS\Repository\settings(), and ilUtil\stripSlashes().

+ Here is the call graph for this function:

◆ parseStartDateFromCreationFilter()

ILIAS\Search\GUI\Direct\SearcherImpl::parseStartDateFromCreationFilter ( ilUserSearchCache  $cache)
protected

Definition at line 315 of file SearcherImpl.php.

315 : ?ilDate
316 {
317 $options = $cache->getCreationFilter();
318 if (!($options['date_start'] ?? false)) {
319 return null;
320 }
321 return new ilDate($options['date_start'], IL_CAL_DATE);
322 }

References ILIAS\UI\Implementation\Component\Input\Field\$options, ilUserSearchCache\getCreationFilter(), and IL_CAL_DATE.

+ Here is the call graph for this function:

◆ parseTypeFilter()

ILIAS\Search\GUI\Direct\SearcherImpl::parseTypeFilter ( ilUserSearchCache  $cache)
protected

Definition at line 333 of file SearcherImpl.php.

333 : array
334 {
335 $filter = [];
336 foreach ($cache->getItemFilter() as $type => $enabled) {
337 if (!$enabled) {
338 continue;
339 }
340
341 switch ($type) {
342 case 'lms':
343 $filter[] = 'lm';
344 $filter[] = 'pg';
345 $filter[] = 'st';
346 $filter[] = 'sahs';
347 $filter[] = 'htlm';
348 break;
349
350 case 'frm':
351 $filter[] = 'frm';
352 break;
353
354 case 'glo':
355 $filter[] = 'glo';
356 break;
357
358 case 'exc':
359 $filter[] = 'exc';
360 break;
361
362 case 'mcst':
363 $filter[] = 'mcst';
364 break;
365
366 case 'tst':
367 $filter[] = 'tst';
368 $filter[] = 'svy';
369 $filter[] = 'qpl';
370 $filter[] = 'spl';
371 break;
372
373 case 'mep':
374 $filter[] = 'mep';
375 $filter[] = 'mob';
376 break;
377
378 case 'fil':
379 $filter[] = 'file';
380 break;
381
382 case 'wiki':
383 $filter[] = 'wiki';
384 $filter[] = 'wpg';
385 break;
386
387 default:
388 $filter[] = $type;
389 }
390 }
391 return $filter;
392 }

References ilUserSearchCache\getItemFilter().

+ Here is the call graph for this function:

◆ performSearchAndRenderResults()

ILIAS\Search\GUI\Direct\SearcherImpl::performSearchAndRenderResults ( int  $usr_id,
ilUserSearchCache  $cache,
ViewControlInfos  $view_control_infos,
SearchStateHandler  $state_handler 
)

Note that the cache doubles here as an actual cache, but also as a data object bundling all inputs needed to search.

Maybe split that up in the future?

This should not be here. As soon as we have a unified format for search results, this should be done by the GUI.

Implements ILIAS\Search\GUI\Searcher.

Definition at line 51 of file SearcherImpl.php.

56 : void {
57 // Step 1: parse query string
58 if (!is_object($query_parser = $this->parseQueryString($cache->getQuery()))) {
59 $this->tpl->setOnScreenMessage(GlobalTemplate::MESSAGE_TYPE_INFO, $query_parser);
60 return;
61 }
62 // Step 2: perform object search. Get an ObjectSearch object via factory. Depends on fulltext or like search type.
63 $result = $this->searchObjects($query_parser, $cache);
64
65 // Step 3: perform meta keyword search. Get an MetaDataSearch object.
66 $result_meta = $this->searchLOM('keyword', $query_parser, $cache);
67 $result->mergeEntries($result_meta);
68
69 $result_meta = $this->searchLOM('contribute', $query_parser, $cache);
70 $result->mergeEntries($result_meta);
71
72 $result_meta = $this->searchLOM('title', $query_parser, $cache);
73 $result->mergeEntries($result_meta);
74
75 $result_meta = $this->searchLOM('description', $query_parser, $cache);
76 $result->mergeEntries($result_meta);
77
78 // Step 4: Perform details search in object specific tables
79 $result = $this->searchDetails($query_parser, $cache, $result);
80
81
82 // Step 5: merge and validate results
83 $result->filter(
84 $cache->getRoot(),
86 $this->parseStartDateFromCreationFilter($cache),
87 $this->parseEndDateFromCreationFilter($cache),
88 $cache->getCopyrightFilter()
89 );
90 $result->save();
91
96 if (
97 $view_control_infos->currentPage() === $view_control_infos->maxPages() &&
98 $result->isLimitReached()
99 ) {
100 $view_control_infos = $this->presenter->getViewControlInfos(
101 $view_control_infos->sortation(),
102 $view_control_infos->currentPage(),
103 $view_control_infos->maxPages() + 1,
104 $view_control_infos->pageSize(),
105 $view_control_infos->paginationAction(),
106 $view_control_infos->pageParam(),
107 $view_control_infos->sortationAction(),
108 $view_control_infos->sortationParam()
109 );
110 $state_handler->updateMaxPage($view_control_infos->maxPages());
111 }
112
113 $this->renderResults($result, $cache->getQuery(), $view_control_infos);
114 }
renderResults(ilSearchResult $results, string $term, ViewControlInfos $view_control_infos)
searchLOM(string $field, ilQueryParser $query_parser, ilUserSearchCache $cache)
searchObjects(ilQueryParser $query_parser, ilUserSearchCache $cache)
Search in object title, desctiption.
searchDetails(ilQueryParser $query_parser, ilUserSearchCache $cache, ilSearchResult $result)

References ILIAS\UICore\GlobalTemplate\MESSAGE_TYPE_INFO.

◆ readSavedResultsAndRenderResults()

ILIAS\Search\GUI\Direct\SearcherImpl::readSavedResultsAndRenderResults ( int  $usr_id,
ilUserSearchCache  $cache,
ViewControlInfos  $view_control_infos 
)

Implements ILIAS\Search\GUI\Searcher.

Definition at line 116 of file SearcherImpl.php.

120 : void {
121 $results = new ilSearchResult($usr_id);
122 $results->read();
123 $results->filterResults($cache->getRoot());
124 $this->renderResults($results, $cache->getQuery(), $view_control_infos);
125 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$results

◆ renderResults()

ILIAS\Search\GUI\Direct\SearcherImpl::renderResults ( ilSearchResult  $results,
string  $term,
ViewControlInfos  $view_control_infos 
)
protected

Definition at line 127 of file SearcherImpl.php.

131 : void {
132 if ($results->getResults()) {
133 $result_panel_and_modals = $this->presenter->getDirectSearchResultAsPanel(
134 $results,
135 $view_control_infos
136 );
137 $this->tpl->setVariable(
138 'SEARCH_RESULTS',
139 $this->ui_renderer->render($result_panel_and_modals)
140 );
141 } elseif ($term !== '') {
142 $this->tpl->setOnScreenMessage(
144 sprintf(
145 $this->lng->txt('search_no_match_hint'),
146 $term
147 )
148 );
149 } else {
150 $this->tpl->setOnScreenMessage(
152 $this->lng->txt('search_no_match')
153 );
154 }
155 }

References $results.

◆ searchDetails()

ILIAS\Search\GUI\Direct\SearcherImpl::searchDetails ( ilQueryParser  $query_parser,
ilUserSearchCache  $cache,
ilSearchResult  $result 
)
protected

Definition at line 216 of file SearcherImpl.php.

221 foreach ($cache->getItemFilter() as $type => $enabled) {
222 if (!$enabled) {
223 continue;
224 }
225
226 switch ($type) {
227 case 'crs':
228 $crs_search = ilObjectSearchFactory::_getObjectSearchInstance($query_parser);
229 $crs_search->setFilter(['crs']);
230 $result->mergeEntries($crs_search->performSearch());
231 break;
232
233 case 'grp':
234 $grp_search = ilObjectSearchFactory::_getObjectSearchInstance($query_parser);
235 $grp_search->setFilter(['grp']);
236 $result->mergeEntries($grp_search->performSearch());
237 break;
238
239 case 'lms':
240 $content_search = ilObjectSearchFactory::_getLMContentSearchInstance($query_parser);
241 $content_search->setFilter($this->parseTypeFilter($cache));
242 $result->mergeEntries($content_search->performSearch());
243 break;
244
245 case 'frm':
246 $forum_search = ilObjectSearchFactory::_getForumSearchInstance($query_parser);
247 $forum_search->setFilter($this->parseTypeFilter($cache));
248 $result->mergeEntries($forum_search->performSearch());
249 break;
250
251 case 'glo':
252 // Glossary term definition pages
253 $gdf_search = ilObjectSearchFactory::_getLMContentSearchInstance($query_parser);
254 $gdf_search->setFilter(['term']);
255 $result->mergeEntries($gdf_search->performSearch());
256 // Glossary terms
257 $gdf_term_search = ilObjectSearchFactory::_getGlossaryDefinitionSearchInstance($query_parser);
258 $result->mergeEntries($gdf_term_search->performSearch());
259 break;
260
261 case 'exc':
262 $exc_search = ilObjectSearchFactory::_getExerciseSearchInstance($query_parser);
263 $exc_search->setFilter($this->parseTypeFilter($cache));
264 $result->mergeEntries($exc_search->performSearch());
265 break;
266
267 case 'mcst':
268 $mcst_search = ilObjectSearchFactory::_getMediacastSearchInstance($query_parser);
269 $result->mergeEntries($mcst_search->performSearch());
270 break;
271
272 case 'tst':
273 $tst_search = ilObjectSearchFactory::_getTestSearchInstance($query_parser);
274 $tst_search->setFilter($this->parseTypeFilter($cache));
275 $result->mergeEntries($tst_search->performSearch());
276 break;
277
278 case 'mep':
279 $mep_search = ilObjectSearchFactory::_getMediaPoolSearchInstance($query_parser);
280 $mep_search->setFilter($this->parseTypeFilter($cache));
281 $result->mergeEntries($mep_search->performSearch());
282
283 // Mob keyword search
284 $mob_search = ilObjectSearchFactory::_getMediaPoolSearchInstance($query_parser);
285 $mob_search->setFilter($this->parseTypeFilter($cache));
286 $result->mergeEntries($mob_search->performKeywordSearch());
287
288 break;
289
290 case 'wiki':
291 $wiki_search = ilObjectSearchFactory::_getWikiContentSearchInstance($query_parser);
292 $wiki_search->setFilter($this->parseTypeFilter($cache));
293 $result->mergeEntries($wiki_search->performSearch());
294 break;
295 }
296 }
297 return $result;
298 }
parseTypeFilter(ilUserSearchCache $cache)
static _getObjectSearchInstance(ilQueryParser $query_parser)
static _getForumSearchInstance(ilQueryParser $query_parser)
static _getMediacastSearchInstance(ilQueryParser $query_parser)
static _getGlossaryDefinitionSearchInstance(ilQueryParser $query_parser)
static _getMediaPoolSearchInstance(ilQueryParser $query_parser)
static _getExerciseSearchInstance(ilQueryParser $query_parser)
static _getWikiContentSearchInstance(ilQueryParser $query_parser)
static _getLMContentSearchInstance(ilQueryParser $query_parser)
static _getTestSearchInstance(ilQueryParser $query_parser)
mergeEntries(ilSearchResult $result_obj)
merge entries of this instance and another result object

References ilObjectSearchFactory\_getExerciseSearchInstance(), ilObjectSearchFactory\_getForumSearchInstance(), ilObjectSearchFactory\_getGlossaryDefinitionSearchInstance(), ilObjectSearchFactory\_getLMContentSearchInstance(), ilObjectSearchFactory\_getMediacastSearchInstance(), ilObjectSearchFactory\_getMediaPoolSearchInstance(), ilObjectSearchFactory\_getObjectSearchInstance(), ilObjectSearchFactory\_getTestSearchInstance(), ilObjectSearchFactory\_getWikiContentSearchInstance(), and ilSearchResult\mergeEntries().

+ Here is the call graph for this function:

◆ searchLOM()

ILIAS\Search\GUI\Direct\SearcherImpl::searchLOM ( string  $field,
ilQueryParser  $query_parser,
ilUserSearchCache  $cache 
)
protected

Definition at line 187 of file SearcherImpl.php.

192 $meta_search = ilObjectSearchFactory::_getMetaDataSearchInstance($query_parser);
193 if (($type_filter = $this->parseTypeFilter($cache)) !== []) {
194 $meta_search->setFilter($type_filter);
195 }
196 switch ($field) {
197 case 'keyword':
198 $meta_search->setMode('keyword');
199 break;
200
201 case 'contribute':
202 $meta_search->setMode('contribute');
203 break;
204
205 case 'title':
206 $meta_search->setMode('title');
207 break;
208
209 case 'description':
210 $meta_search->setMode('description');
211 break;
212 }
213 return $meta_search->performSearch();
214 }
static _getMetaDataSearchInstance(ilQueryParser $query_parser)

◆ searchObjects()

ILIAS\Search\GUI\Direct\SearcherImpl::searchObjects ( ilQueryParser  $query_parser,
ilUserSearchCache  $cache 
)
protected

Search in object title, desctiption.

Definition at line 175 of file SearcherImpl.php.

179 $obj_search = ilObjectSearchFactory::_getObjectSearchInstance($query_parser);
180 if (($type_filter = $this->parseTypeFilter($cache)) !== []) {
181 $obj_search->setFilter($type_filter);
182 }
183 $this->parseCreationFilter($obj_search, $cache);
184 return $obj_search->performSearch();
185 }
parseCreationFilter(ilObjectSearch $search, ilUserSearchCache $cache)

The documentation for this class was generated from the following file: