run(
"SELECT TimeCreated FROM InviteTickets WHERE CreatedBy = :UserID AND TimeCreated + 5 > UNIX_TIMESTAMP()",
[":UserID" => SESSION["user"]["id"]]
);
if($LastTicket->rowCount())
{
$Alert = ["Text" => "Please wait ".GetReadableTime($LastTicket->fetchColumn(), ["RelativeTime" => "5 seconds"])." before creating a new invite ticket", "Color" => "danger"];
}
else
{
$Ticket = sprintf("PolygonTicket(%s)", bin2hex(random_bytes(16)));
Database::singleton()->run(
"INSERT INTO InviteTickets (Ticket, TimeCreated, CreatedBy) VALUES (:Ticket, UNIX_TIMESTAMP(), :UserID)",
[":Ticket" => $Ticket, ":UserID" => SESSION["user"]["id"]]
);
Users::LogStaffAction(sprintf(
"[ Create Invite Ticket ] %s created an invite ticket with the key \"%s\"",
SESSION["user"]["username"], $Ticket
));
$Alert = ["Text" => sprintf("Your key has been created! %s", $Ticket), "Color" => "success"];
}
}
$Page = $_GET["Page"] ?? 1;
$TicketCount = Database::singleton()->run("SELECT COUNT(*) FROM InviteTickets")->fetchColumn();
$Pagination = Pagination($Page, $TicketCount, 20);
$Tickets = Database::singleton()->run(
"SELECT InviteTickets.*, Users1.username AS CreatedByName, Users2.username AS UsedByName FROM InviteTickets
INNER JOIN users AS Users1 ON Users1.id = InviteTickets.CreatedBy
LEFT JOIN users AS Users2 ON Users2.id = InviteTickets.UsedBy
ORDER BY TimeCreated DESC LIMIT 20 OFFSET :Offset",
[":Offset" => $Pagination->Offset]
);
// idk y i decided to code this on my 15th birthday for mercury but i did
$InviteTree = [];
function GenerateTree($UserName, $UserID, &$Node)
{
$CurrentNode = ["UserName" => $UserName, "UserID" => $UserID, "Invited" => []];
// $query = $pdo->prepare("SELECT users.username, users.id FROM invitekeys INNER JOIN users ON users.id = usedById WHERE creatorId = :uid AND keyUsed");
// $query->bindParam(":uid", $UserID, PDO::PARAM_INT);
// $query->execute();
$query = Database::singleton()->run(
"SELECT UsedBy.username, UsedBy.id FROM InviteTickets
INNER JOIN users AS UsedBy ON UsedBy.id = InviteTickets.UsedBy
WHERE CreatedBy = :UserID ORDER BY id DESC",
[":UserID" => $UserID]
);
while ($row = $query->fetch(PDO::FETCH_OBJ))
{
GenerateTree($row->username, $row->id, $CurrentNode["Invited"]);
}
$Node[] = $CurrentNode;
}
function DisplayTree($Tree)
{
echo "
| Ticket | Creator | Used By | Created | |
|---|---|---|---|---|
=htmlspecialchars($Ticket->Ticket)?> |
=$Ticket->CreatedByName?> | UsedBy == NULL) { ?>No One | =$Ticket->UsedByName?> | =date('j/n/Y', $Ticket->TimeCreated)?> |