$interval]); /* if (SESSION["user"]["CreatableInviteTickets"] != $CreatableTickets) { Database::singleton()->run( "UPDATE users SET CreatableInviteTickets = :CreatableTickets, LastInviteTicketCheck = UNIX_TIMESTAMP() WHERE id = :UserID", [":UserID" => SESSION["user"]["id"], ":CreatableTickets" => $CreatableTickets] ); } */ if (($LastCreation + strtotime($interval, 0)) < time()) { Database::singleton()->run( "UPDATE users SET CreatableInviteTickets = CreatableInviteTickets + 1, LastInviteTicketCheck = UNIX_TIMESTAMP() WHERE id = :UserID", [":UserID" => SESSION["user"]["id"]] ); } if ($_SERVER["REQUEST_METHOD"] == "POST" && $CreatableTickets > 0) { $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"]] ); Database::singleton()->run( "UPDATE users SET CreatableInviteTickets = CreatableInviteTickets - 1 WHERE id = :UserID", [":UserID" => SESSION["user"]["id"]] ); $CreatableTickets -= 1; $Alert = ["Text" => sprintf("Your key has been created! %s", $Ticket), "Color" => "success"]; } $Page = $_GET["Page"] ?? 1; $TicketCount = Database::singleton()->run( "SELECT COUNT(*) FROM InviteTickets WHERE CreatedBy = :UserID", [":UserID" => SESSION["user"]["id"]] )->fetchColumn(); $Pagination = Pagination($Page, $TicketCount, 20); $Tickets = Database::singleton()->run( "SELECT InviteTickets.*, UsedBy.username AS UsedByName FROM InviteTickets LEFT JOIN users AS UsedBy ON UsedBy.id = InviteTickets.UsedBy WHERE CreatedBy = :UserID ORDER BY TimeCreated DESC LIMIT 20 OFFSET :Offset", [":UserID" => SESSION["user"]["id"], ":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 ""; } GenerateTree(SESSION["user"]["username"], SESSION["user"]["id"], $InviteTree); $pageBuilder = new PageBuilder(["title" => "My Invitations"]); $pageBuilder->buildHeader(); ?>
px-2 py-1" role="alert">

My Invitations

0) { ?>

You currently have ticket creations remaining.

You must wait before you can create a new invite ticket.

0) { ?>
fetch(\PDO::FETCH_OBJ)) { ?> UsedBy == NULL) { ?>
Ticket Used By Created
Ticket)?> No One UsedByName?> TimeCreated)?>
Pages > 1) { ?>
buildFooter(); ?>