$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 "
You currently have =$CreatableTickets?> ticket creations remaining.
You must wait =$TimeRemaining?> before you can create a new invite ticket.
| Ticket | Used By | Created | |
|---|---|---|---|
=htmlspecialchars($Ticket->Ticket)?> |
UsedBy == NULL) { ?>
No One | =$Ticket->UsedByName?> | =date('j/n/Y', $Ticket->TimeCreated)?> |