Added basic support of search for objects.
This commit is contained in:
@ -362,4 +362,61 @@ function embedEventCalendar(array $arguments):string {
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function for embedding search results from MD.
|
||||
*
|
||||
* @param array $arguments Arguments / GET parameters for urls to query.
|
||||
* @param array $settings Settings variable.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function searchMDObjects(array $arguments, array $settings):string {
|
||||
|
||||
$toIgnore = ["t=", "output=", "mod="];
|
||||
$srcArgs = "done=yes";
|
||||
foreach ($arguments as $arg) {
|
||||
if (startsWithAny($arg, $toIgnore)) continue;
|
||||
$srcArgs .= "&" . $arg;
|
||||
}
|
||||
$srcArgs .= "&output=json&mod=complete";
|
||||
|
||||
$contents = json_decode(queryCachePage($settings['mdVersion'] . "?$srcArgs", "search", $settings), true);
|
||||
|
||||
$output = '
|
||||
<div class="searchGrid">
|
||||
';
|
||||
|
||||
foreach ($contents as $object) {
|
||||
$output .= '
|
||||
<div class="objTile">
|
||||
';
|
||||
|
||||
if (isset($object['image']) > 0) {
|
||||
$output .= '
|
||||
<img src="' . $settings['mdVersion'] . $object['image'] . '" />';
|
||||
}
|
||||
|
||||
$output .= '
|
||||
<div>
|
||||
|
||||
<h4>' . $object['objekt_name'] . '</h4>
|
||||
|
||||
<div>
|
||||
<a href="./object.php?id=' . $object['objekt_id'] . '" class="toTranslate" data-content="More"></a>
|
||||
<a href="' . $settings['mdVersion'] . '?t=objekt&oges=' . $object['objekt_id'] . '" class="toTranslate" data-content="MoreAtMuseumDigital">' . $object['objekt_name'] . '</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
';
|
||||
}
|
||||
|
||||
$output .= '
|
||||
</div>
|
||||
';
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
?>
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
|
Reference in New Issue
Block a user