db->prepared_query("SELECT ID, Username FROM users_main WHERE {$where}=?", $param); if ($this->db->record_count() === 0) { json_error("Could not find interviewer"); } $user = $this->db->next_record(); $interviewer_id = $user['ID']; $interviewer_name = $user['Username']; $email = $_GET['email'] ?? ''; if (!empty($_GET['email'])) { if ($this->db->scalar("SELECT 1 FROM users_main WHERE Email = ?", $email)) { json_error("Email address already in use"); } if ($this->db->scalar("SELECT 1 FROM invites WHERE Email = ?", $email)) { json_error("Invite code already generated for this email address"); } } $key = randomString(); $this->db->prepared_query( "INSERT INTO invites (InviterID, InviteKey, Email, Reason, Expires) VALUES (?, ?, ?, ?, now() + INTERVAL 3 DAY)", $interviewer_id, $key, $email, "Passed Interview" ); $site_url = SITE_URL . "/register.php?invite={$key}"; if (!empty($_GET['email'])) { $body = $this->twig->render('email/invite.twig', [ 'inviter_name' => $interviewer_name, 'inviter_key' => $key, 'email' => $_GET['email'], ]); \Misc::send_email($_GET['email'], 'New account confirmation at '.SITE_NAME, $body, 'noreply'); } return ["key" => $key, "invite_url" => $site_url]; } }