Added basic support of search for objects.

This commit is contained in:
2018-06-15 13:31:31 +02:00
committed by Stefan Rohde-Enslin
parent 80485a98ab
commit 5c4f0eb5d9
6 changed files with 148 additions and 10 deletions

View File

@ -14,7 +14,7 @@
*
* @return array
*/
function searchInPages(string $searchTerm) {
function searchInPages(string $searchTerm):array {
$files = scanDirConts(__DIR__ . "/../data/static");
@ -34,19 +34,55 @@ function searchInPages(string $searchTerm) {
$curResults['title'] = $contents['title'];
// Sanitize content for snippets.
$snippet = preg_replace('/[\[{\(].*[\]}\)]/U' , '', strip_tags($contents['content']));
$snippet = preg_replace('/[\[{\(].*[\]}\)]/U', '', strip_tags($contents['content']));
$curResults['snippet'] = createTextSnippet($snippet, 180);
$results[$file] = $curResults;
}
usort($results, function($a, $b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
if ($a['priority'] == $b['priority']) return 0;
return ($a['priority'] > $b['priority']) ? -1 : 1;
});
return $results;
}
/**
* Function for generating and listing search results.
*
* @param string $searchTerm Search term.
*
* @return string
*/
function displaySearchResults(string $searchTerm):string {
$searchResults = searchInPages($searchTerm);
$output = '
<ul id="pagesSearchList">';
foreach ($searchResults as $file => $item) {
$output .= '
<li>
<a href="./?id=' . str_replace(".json", "", $file) . '"><h4>' . $item['title'] . '</h4></a>
<p>' . (string)($item['snippet']) . '</p>
<dl class="searchMetadataLine">
<dt class="toTranslate" data-content="Hits"></dt>
<dd>' . (string)($item['inTitle'] + $item['inDescription']) . '</dd>
</dl>
</li>
';
}
$output .= "
</ul>";
return $output;
}
?>