0); if ($res !== false) { mysqli_free_result($res); } mysqli_stmt_close($stmt); return $exists; } $queryText = gs_param(array('q', 'query', 'search', 'term', 's', 'text'), ''); $queryType = strtolower(gs_param(array('type', 'category', 'scope', 't'), 'all')); $typeAlias = array( 'person' => 'people', 'avatars' => 'people', 'avatar' => 'people', 'group' => 'groups', 'place' => 'places', 'regions' => 'places', 'region' => 'places', 'classified' => 'classifieds', 'classifieds' => 'classifieds', ); if (isset($typeAlias[$queryType])) { $queryType = $typeAlias[$queryType]; } $allowedTypes = array('all', 'people', 'groups', 'places', 'classifieds'); if (!in_array($queryType, $allowedTypes, true)) { $queryType = 'all'; } $mysqli = @mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME); if ($mysqli === false) { http_response_code(500); echo 'Datenbankverbindung fehlgeschlagen.'; exit; } $rows = array(); $warnings = array(); if ($queryText !== '') { $needle = '%' . gs_escape_like($queryText) . '%'; if ($queryType === 'all' || $queryType === 'people') { $sql = 'SELECT FirstName, LastName FROM UserAccounts WHERE FirstName LIKE ? OR LastName LIKE ? ORDER BY FirstName, LastName LIMIT 100'; $stmt = mysqli_prepare($mysqli, $sql); if ($stmt !== false) { mysqli_stmt_bind_param($stmt, 'ss', $needle, $needle); mysqli_stmt_execute($stmt); $res = mysqli_stmt_get_result($stmt); if ($res !== false) { while ($r = mysqli_fetch_assoc($res)) { $rows[] = array( 'type' => 'People', 'name' => trim(($r['FirstName'] ?? '') . ' ' . ($r['LastName'] ?? '')), 'extra' => '', ); } mysqli_free_result($res); } mysqli_stmt_close($stmt); } } if ($queryType === 'all' || $queryType === 'groups') { $sql = 'SELECT Name, Charter FROM os_groups_groups WHERE Name LIKE ? OR Charter LIKE ? ORDER BY Name LIMIT 100'; $stmt = mysqli_prepare($mysqli, $sql); if ($stmt !== false) { mysqli_stmt_bind_param($stmt, 'ss', $needle, $needle); mysqli_stmt_execute($stmt); $res = mysqli_stmt_get_result($stmt); if ($res !== false) { while ($r = mysqli_fetch_assoc($res)) { $rows[] = array( 'type' => 'Groups', 'name' => (string) ($r['Name'] ?? ''), 'extra' => (string) ($r['Charter'] ?? ''), ); } mysqli_free_result($res); } mysqli_stmt_close($stmt); } } if ($queryType === 'all' || $queryType === 'places') { $sql = 'SELECT regionName, serverIP, serverPort FROM regions WHERE regionName LIKE ? ORDER BY regionName LIMIT 100'; $stmt = mysqli_prepare($mysqli, $sql); if ($stmt !== false) { mysqli_stmt_bind_param($stmt, 's', $needle); mysqli_stmt_execute($stmt); $res = mysqli_stmt_get_result($stmt); if ($res !== false) { while ($r = mysqli_fetch_assoc($res)) { $extra = (string) ($r['serverIP'] ?? ''); if (isset($r['serverPort']) && $r['serverPort'] !== '') { $extra .= ':' . $r['serverPort']; } $rows[] = array( 'type' => 'Places', 'name' => (string) ($r['regionName'] ?? ''), 'extra' => $extra, ); } mysqli_free_result($res); } mysqli_stmt_close($stmt); } } if ($queryType === 'all' || $queryType === 'classifieds') { if (gs_table_exists($mysqli, 'classifieds')) { $sql = 'SELECT name, simname, parcelname FROM classifieds WHERE name LIKE ? OR description LIKE ? OR simname LIKE ? ORDER BY expirationdate DESC LIMIT 100'; $stmt = mysqli_prepare($mysqli, $sql); if ($stmt !== false) { mysqli_stmt_bind_param($stmt, 'sss', $needle, $needle, $needle); mysqli_stmt_execute($stmt); $res = mysqli_stmt_get_result($stmt); if ($res !== false) { while ($r = mysqli_fetch_assoc($res)) { $rows[] = array( 'type' => 'Classifieds', 'name' => (string) ($r['name'] ?? ''), 'extra' => trim((string) ($r['simname'] ?? '') . ' / ' . (string) ($r['parcelname'] ?? ''), ' /'), ); } mysqli_free_result($res); } mysqli_stmt_close($stmt); } } elseif ($queryType === 'classifieds') { $warnings[] = 'Classifieds table not found in this database.'; } } } mysqli_close($mysqli); ?>
Search parameter can be passed by viewer as `q`, `query`, `search` or `term`.
Results:
| Type | Name | Extra |
|---|---|---|
| No results found. | ||