-
Notifications
You must be signed in to change notification settings - Fork 1
/
beatmapSearch.php
92 lines (77 loc) · 3.65 KB
/
beatmapSearch.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
include_once 'base.php';
$q=$_GET["q"];
// If it's a link in the query, we should just show the map.
if(preg_match('/https:\/\/osu\.ppy\.sh\/(beatmapsets|beatmapset|s)\/(\d+)/', $q, $matches)){
$setID = $matches[2];
$stmt = $conn->prepare("SELECT SetID, Title, Artist FROM `beatmapsets` WHERE `SetID`= ?;");
$stmt->bind_param('s', $setID);
$stmt->execute();
$res = $stmt->get_result();
$row = $res->fetch_row();
$value = $row ? $row : null;
if ($value == null){
die("Mapset not found!");
}
?>
<a href="/mapset/<?php echo $setID; ?>"><div style="margin:0;background-color:DarkSlateGrey;" ><?php echo $value[2] . " - " . $value[1]; ?></div></a>
<?php
die();
}
$stmt = $conn->prepare("(SELECT DISTINCT `UserID`, `Username` FROM users WHERE username LIKE ?) UNION (SELECT DISTINCT `UserID`, `Username` FROM mappernames WHERE username LIKE ?) LIMIT 5;");
$like = "%$q%";
$stmt->bind_param("ss", $like, $like);
$stmt->execute();
$stmt->bind_result($userID, $username);
$stmt->store_result();
if ($stmt->num_rows > 0){
echo "<div style='background-color:#182828;'><b>Users</b></div>";
while ($stmt->fetch()) {
?>
<div class="alternating-bg" style="padding:0.25em;display:flex;vertical-align: middle;" ><a href="/profile/<?php echo $userID; ?>" style="display:inline-block;width:100%;height:100%;margin:0;padding:0;"><img src="https://s.ppy.sh/a/<?php echo $userID; ?>" style="height:24px;width:24px;" title="<?php echo $username; ?>"/> <?php echo $username; ?></a></div>
<?php
}
}
$stmt->close();
$stmt = $conn->prepare("SELECT s.`SetID`, s.Title, s.Artist, b.DifficultyName
FROM `beatmaps` b
LEFT JOIN beatmapsets s ON b.SetID = s.SetID
WHERE (b.DifficultyName LIKE ? OR s.Artist LIKE ? OR s.Title LIKE ?)
AND b.Mode = ?
ORDER BY RatingCount DESC
LIMIT 25;");
$stmt->bind_param("sssi", $like, $like, $like, $mode);
$stmt->execute();
$stmt->bind_result($setId, $title, $artist, $difficultyName);
$stmt->store_result();
if ($stmt->num_rows > 0){
echo "<div style='background-color:#182828;'><b>Maps</b></div>";
while ($stmt->fetch()) {
?>
<div class="alternating-bg" style="margin:0;" ><a href="/mapset/<?php echo $setId; ?>"><?php echo $artist . " - " . $title . " [" . $difficultyName . "]"; ?></a></div>
<?php
}
}
$stmt->close();
$stmt = $conn->prepare("SELECT * FROM `lists` WHERE MATCH (Title) AGAINST (? IN NATURAL LANGUAGE MODE) LIMIT 5;");
$stmt->bind_param("s", $like);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0){
echo "<div style='background-color:#182828;'><b>Lists</b></div>";
while ($row = $result->fetch_assoc()) {
$stmt = $conn->prepare("SELECT * FROM list_items WHERE `ListID` = ? AND `order` = 1;");
$stmt->bind_param("i", $row["ListID"]);
$stmt->execute();
$item = $stmt->get_result()->fetch_assoc();
list($imageUrl, $title, $linkUrl) = getListItemDisplayInformation($item, $conn);
?>
<div class="alternating-bg" style="margin:0;">
<div>
<a href="/list/?id=<?php echo $row["ListID"]; ?>"><?php echo htmlspecialchars($row["Title"]); ?> <span class="subText">by <?php echo GetUserNameFromId($row["UserID"], $conn); ?></span></a>
</div>
</div>
<?php
}
}
$stmt->close();