├── MinecraftUUID.php ├── accounts.php ├── addcategory.php ├── addfaq.php ├── admin.php ├── ajax.php ├── assets ├── css │ ├── .DS_Store │ ├── jquery.sweet-modal.min.css │ └── main.css ├── inc │ ├── faq.inc.php │ └── sidebar.inc.php ├── js │ ├── .DS_Store │ └── jquery.sweet-modal.min.js └── languages │ ├── lang_cn.php │ ├── lang_de.php │ └── lang_en.php ├── createticket.php ├── datamanager.php ├── editaccount.php ├── faq.php ├── index.php ├── login.php ├── logout.php ├── mytickets.php ├── register.php ├── search.php ├── settings.php ├── setup ├── index.php ├── step2.php └── step3.php ├── team.php └── ticket.php /MinecraftUUID.php: -------------------------------------------------------------------------------- 1 | username = $username; 14 | $this->uuid = $uuid; 15 | $this->properties = $properties; 16 | } 17 | 18 | /** 19 | * @return string The player's username. 20 | */ 21 | public function getUsername() { 22 | return $this->username; 23 | } 24 | 25 | /** 26 | * @return string The player's UUID. 27 | */ 28 | public function getUUID() { 29 | return $this->uuid; 30 | } 31 | 32 | /** 33 | * @return array The player's properties listed on their mojang profile. 34 | */ 35 | public function getProperties() { 36 | return $this->properties; 37 | } 38 | 39 | /** 40 | * @return array Returns an array with keys of 'properties, usernname and uuid'. 41 | */ 42 | public function getProfileAsArray() { 43 | return array("username" => $this->username, "uuid" => $this->uuid, "properties" => $this->properties); 44 | } 45 | } 46 | 47 | class ProfileUtils { 48 | /** 49 | * @param string $identifier Either the player's Username or UUID. 50 | * @param int $timeout The length in seconds of the http request timeout. 51 | * @return MinecraftProfile|null Returns null if fetching of profile failed. Else returns completed user profile. 52 | */ 53 | public static function getProfile($identifier, $timeout = 5) { 54 | if(strlen($identifier) <= 16){ 55 | $identifier = ProfileUtils::getUUIDFromUsername($identifier, $timeout); 56 | $url = "https://sessionserver.mojang.com/session/minecraft/profile/".$identifier['uuid']; 57 | } else { 58 | $url = "https://sessionserver.mojang.com/session/minecraft/profile/".$identifier; 59 | } 60 | $ctx = stream_context_create( 61 | array( 62 | 'http' => array( 63 | 'timeout' => $timeout 64 | ) 65 | ) 66 | ); 67 | $ret = file_get_contents($url, 0, $ctx); 68 | if(isset($ret) && $ret != null && $ret != false) { 69 | $data = json_decode($ret, true); 70 | return new MinecraftProfile($data['name'], $data['id'], $data['properties']); 71 | }else { 72 | return null; 73 | } 74 | } 75 | 76 | /** 77 | * @param int $timeout http timeout in seconds 78 | * @param $username string Minecraft username. 79 | * @return array (Key => Value) "username" => Minecraft username (properly capitalized) "uuid" => Minecraft UUID 80 | */ 81 | public static function getUUIDFromUsername($username, $timeout = 5) { 82 | if(strlen($username) > 16) 83 | return array("username" => "", "uuid" => ""); 84 | $url = 'https://api.mojang.com/profiles/minecraft'; 85 | $options = array( 86 | 'http' => array( 87 | 'header' => "Content-type: application/json\r\n", 88 | 'method' => 'POST', 89 | 'content' => '["'.$username.'"]', 90 | 'timeout' => $timeout 91 | ), 92 | ); 93 | $context = stream_context_create($options); 94 | $result = file_get_contents($url, false, $context); 95 | 96 | // Verification 97 | if(isset($result) && $result != null && $result != false) 98 | { 99 | $ress = json_decode($result, true); 100 | $ress = $ress[0]; 101 | $res = Array("username" => $ress['name'], "uuid" => $ress['id']); 102 | return $res; 103 | } 104 | else 105 | return null; 106 | } 107 | 108 | /** 109 | * @param $usernames array of usernames to be collected. Maximum of 100 usernames. 110 | * @param int $timeout http timeout in seconds 111 | * @return array of array (Key => Value) "username" => Minecraft username (properly capitalized) "uuid" => Minecraft UUID 112 | */ 113 | public static function getUUIDsFromUsernames($usernames, $timeout = 5){ 114 | $usernames = array_splice($usernames, 0, 100); 115 | foreach($usernames as $user) 116 | if(strlen($user) > 16) 117 | return array("username" => "", "uuid" => ""); 118 | 119 | $url = 'https://api.mojang.com/profiles/minecraft'; 120 | $first = true; 121 | $contents = "["; 122 | foreach ($usernames as $user) { 123 | if(!$first) { 124 | $contents .= ", "; 125 | } 126 | $contents .= '"' . $user . '"'; 127 | $first = false; 128 | } 129 | $contents = "]"; 130 | 131 | $options = array( 132 | 'http' => array( 133 | 'header' => "Content-type: application/json\r\n", 134 | 'method' => 'POST', 135 | 'content' => $contents, 136 | 'timeout' => $timeout 137 | ) 138 | ); 139 | 140 | $context = stream_context_create($options); 141 | $result = file_get_contents($url, false, $context); 142 | 143 | // Verification 144 | if(isset($result) && $result != null && $result != false) 145 | { 146 | $output = array(); 147 | $ress = json_decode($result, true); 148 | for($i = 0; $i < count($ress); $i++){ 149 | $ress = $ress[$i]; 150 | $res = Array("username" => $ress['name'], "uuid" => $ress['id']); 151 | array_push($output, $res); 152 | } 153 | 154 | return $output; 155 | } 156 | else 157 | return null; 158 | } 159 | 160 | /** 161 | * @param $uuid string UUID to format 162 | * @return string Properly formatted UUID (According to UUID v4 Standards xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx WHERE y = 8,9,A,or B and x = random digits.) 163 | */ 164 | public static function formatUUID($uuid) { 165 | $uid = ""; 166 | $uid .= substr($uuid, 0, 8)."-"; 167 | $uid .= substr($uuid, 8, 4)."-"; 168 | $uid .= substr($uuid, 12, 4)."-"; 169 | $uid .= substr($uuid, 16, 4)."-"; 170 | $uid .= substr($uuid, 20); 171 | return $uid; 172 | } 173 | } 174 | -------------------------------------------------------------------------------- /accounts.php: -------------------------------------------------------------------------------- 1 | 11 | 12 | 1){ 15 | ?> 16 | 17 | 21 | 22 | 23 |
24 | 25 |Username | 61 |Last login | 63 |First login | 64 |Rank | 65 |Action | 66 ||
---|---|---|---|---|---|
72 | | 73 | | 74 | | 75 | | 84 | | 87 | 88 | 91 | 92 | 93 | | 94 |
Name | 72 |73 | |
---|---|
79 | | " class="btn"> | 80 |
127 | | 128 | | 129 | |
---|---|---|
135 | | 136 | | " class="btn"> | 137 |
ID | 167 |168 | | 170 | | 171 | | |
---|---|---|---|---|
177 | | 178 | | 179 | | 188 | | " class="btn"> | 189 |
在服务器中使用指令 /ticket createacc Email Password创建
"); 89 | //register.php 90 | define("REGISTER", "注册"); 91 | define("REGISTER_USER_ERR", "用户名冲突"); 92 | define("REGISTER_EMAIL_ERR", "邮箱已使用"); 93 | define("REGISTER_PW_ERR", "密码不匹配"); 94 | define("REGISTER_OK", "账号创建成功"); 95 | define("DISABLED_HEADER", "错误"); 96 | define("DISABLED_MESSAGE", "网页注册已被管理员关闭,请前往服务器注册"); 97 | //editaccount.php 98 | define("SAVED_CHANGE", "更变已保存."); 99 | define("EDIT_NO_PERMS", "你不可以编辑这个用户"); 100 | define("EDIT_NOT_YOU", "你不可以编辑自己"); 101 | define("NO_REQUEST", "没有用户"); 102 | //search.php 103 | define("SEARCH", "搜索"); 104 | define("SEARCH_KEY", "关键词"); 105 | define("NO_SEARCH_RESULT", "没有结果"); 106 | ?> 107 | -------------------------------------------------------------------------------- /assets/languages/lang_de.php: -------------------------------------------------------------------------------- 1 | Google ReCaptcha (Wird nur benötigt wenn du das Captcha aktiviert hast!)'); 33 | define("SAVE", "Speichern"); 34 | define("SAVED", "Deine Änderungen wurden gespeichert."); 35 | define("CAPTCHA_PUBLIC_KEY", "Dein Webseitenschlüssel"); 36 | define("CAPTCHA_PRIVATE_KEY", "Dein privater Schlüssel"); 37 | define("LANGUAGE", "Sprache"); 38 | define("MC_REGISTER", "Minecraft Registrierung"); 39 | define("MC_REGISTER_DESC", "Wenn du diese Funktion aktivierst benötigst du das Minecraft Plugin damit Benutzer sich einen Account anlegen können."); 40 | //Addfaq.php 41 | define("FAQ_CREATE_HEADING", "Neuen FAQ Eintrag erstellen"); 42 | define("ADD", "Hinzufügen"); 43 | //Addcategory.php 44 | define("CAT_CREATE_HEADING", "Neue Kategorie erstellen"); 45 | define("CATEGORY", "Kategorie"); 46 | //Createticket.php 47 | define("TICKET_CREATE_HEADING", "Neues Ticket erstellen"); 48 | define("SEND", "Senden"); 49 | define("SUBJECT", "Betreff"); 50 | define("MESSAGE", "Deine Nachricht"); 51 | define("CAPTCHA_FAIL", "Du musst das Captcha ausfüllen."); 52 | //Mytickets.php 53 | define("TITLE", "Titel"); 54 | define("CREATED_AT", "Erstellt am"); 55 | define("LAST_ANSWER_AT", "Letzte Antwort am"); 56 | define("NONE", "Keine"); 57 | define("OPEN", "Offen"); 58 | define("CLOSED", "Geschlossen"); 59 | define("NO_TICKET", "Du hast derzeit keine Tickets."); 60 | define("MY_TICKETS", "Meine Tickets"); 61 | //team.php 62 | define("OPEN_TICKETS", "Offene Tickets"); 63 | define("ALL_TICKETS", "Alle Tickets"); 64 | define("NO_OPEN", "Derzeit gibt es keine offene Tickets."); 65 | //ticket.php 66 | define("CREATED_BY", "Erstellt von"); 67 | define("CLOSE_BTN", "Ticket schließen"); 68 | define("TICKET_CLOSED", "Dieses Ticket ist geschlossen!"); 69 | define("TICKET_ERROR", "Es wurde kein Ticket angefordert."); 70 | define("TICKET_POSTED", "Deine Antwort wurde gepostet."); 71 | define("TICKET_POSTED_ERR", "Dieses Ticket wurde geschlossen. Du kannst keine Antwort zu einem geschlossenen Ticket verfassen."); 72 | define("TICKET_CLOSED_SUCCESS", "Das Ticket wurde geschlossen."); 73 | define("TICKET_ALREADY_CLOSED", "Das Ticket ist bereits geschlossen."); 74 | define("TICKET_ANSWER_HEADING", "Antworte auf dieses Ticket"); 75 | define("POST", "Posten"); 76 | //settings.php 77 | define("PW_ERR", "Dein neues Passwort stimmt nicht überein. Bitte überprüfe es nochmal."); 78 | define("PW_FORM", "Neues Passwort"); 79 | define("PW_FORM_2", "Neues Passwort wiederholen"); 80 | define("LASTLOGIN", "letzter Login"); 81 | define("FIRSTLOGIN", "erster Login"); 82 | //login.php 83 | define("PASSWORD", "Passwort"); 84 | define("PASSWORD_AGAIN", "Passwort wiederholen"); 85 | define("LOGIN_ERR", "Der Login ist fehlgeschlagen. Überprüfe deine Eingabe."); 86 | define("LOGIN_BTN", "Erstelle einen neuen Account"); 87 | define("LOGIN_BTN_DESC", "Benutze auf dem Server den Befehl /ticket createacc Email Passwort um einen Account zu erstellen.
"); 89 | //register.php 90 | define("REGISTER", "Registrieren"); 91 | define("REGISTER_USER_ERR", "Dieser Benutzername ist bereits vergeben"); 92 | define("REGISTER_EMAIL_ERR", "Diese Email ist bereits vergeben"); 93 | define("REGISTER_PW_ERR", "Deine Passwörter stimmen nicht überein"); 94 | define("REGISTER_OK", "Dein Account wurde erfolgreich erstellt"); 95 | define("DISABLED_HEADER", "Fehler"); 96 | define("DISABLED_MESSAGE", "Die manuelle Registierung wurde von einem Administrator deaktiviert. Bitte benutze den Befehl auf dem Minecraft Server um einen Account zu erstellen."); 97 | //editaccount.php 98 | define("SAVED_CHANGE", "Deine Änderungen wurden gespeichert."); 99 | define("EDIT_NO_PERMS", "Du kannst diesen Benutzer nicht verändern."); 100 | define("EDIT_NOT_YOU", "Du kannst dich nicht selbst bearbeiten."); 101 | define("NO_REQUEST", "Es wurde kein Benutzer angefordert."); 102 | //search.php 103 | define("SEARCH", "Suche"); 104 | define("SEARCH_KEY", "Suchbegriff"); 105 | define("NO_SEARCH_RESULT", "Es wurden keine Suchergebnisse gefunden."); 106 | ?> 107 | -------------------------------------------------------------------------------- /assets/languages/lang_en.php: -------------------------------------------------------------------------------- 1 | Google ReCaptcha (Only needed if captcha enabled!)'); 33 | define("SAVE", "Save"); 34 | define("SAVED", "Your changes was saved."); 35 | define("CAPTCHA_PUBLIC_KEY", "Your website key"); 36 | define("CAPTCHA_PRIVATE_KEY", "Your secret key"); 37 | define("LANGUAGE", "Language"); 38 | define("MC_REGISTER", "Minecraft Register"); 39 | define("MC_REGISTER_DESC", "When you enable this function you need the Minecraft plugin that users can create a new account."); 40 | //Addfaq.php 41 | define("FAQ_CREATE_HEADING", "Create FAQ entry"); 42 | define("ADD", "Add"); 43 | //Addcategory.php 44 | define("CAT_CREATE_HEADING", "Create new category"); 45 | define("CATEGORY", "Category"); 46 | //Createticket.php 47 | define("TICKET_CREATE_HEADING", "Create a ticket"); 48 | define("SEND", "Send"); 49 | define("SUBJECT", "Subject"); 50 | define("MESSAGE", "Your message"); 51 | define("CAPTCHA_FAIL", "You have to fill in the captcha."); 52 | //Mytickets.php 53 | define("TITLE", "Title"); 54 | define("CREATED_AT", "Created at"); 55 | define("LAST_ANSWER_AT", "Last answer at"); 56 | define("NONE", "None"); 57 | define("OPEN", "Open"); 58 | define("CLOSED", "Closed"); 59 | define("NO_TICKET", "You don't have currently created a ticket."); 60 | define("MY_TICKETS", "My tickets"); 61 | //team.php 62 | define("OPEN_TICKETS", "Open tickets"); 63 | define("ALL_TICKETS", "All tickets"); 64 | define("NO_OPEN", "Currently are no tickets open."); 65 | //ticket.php 66 | define("CREATED_BY", "Created by"); 67 | define("CLOSE_BTN", "Close ticket"); 68 | define("TICKET_CLOSED", "This ticket is closed!"); 69 | define("TICKET_ERROR", "No ticket was requested."); 70 | define("TICKET_POSTED", "Your answer was posted."); 71 | define("TICKET_POSTED_ERR", "The ticket is closed. You can't write a answer to closed tickets."); 72 | define("TICKET_CLOSED_SUCCESS", "The ticket was closed."); 73 | define("TICKET_ALREADY_CLOSED", "The ticket is already closed."); 74 | define("TICKET_ANSWER_HEADING", "Answer to this ticket"); 75 | define("POST", "Post"); 76 | //settings.php 77 | define("PW_ERR", "Your new password is not the same. Please check it again."); 78 | define("PW_FORM", "New password"); 79 | define("PW_FORM_2", "New password again"); 80 | define("LASTLOGIN", "Last login"); 81 | define("FIRSTLOGIN", "First login"); 82 | //login.php 83 | define("PASSWORD", "Password"); 84 | define("PASSWORD_AGAIN", "Password again"); 85 | define("LOGIN_ERR", "Login failed. Please check your entered username and password."); 86 | define("LOGIN_BTN", "Create a new account"); 87 | define("LOGIN_BTN_DESC", "Use the command /ticket createacc Email Password on the Minecraft server to create a command.
"); 89 | //register.php 90 | define("REGISTER", "Register"); 91 | define("REGISTER_USER_ERR", "Sorry but this username is taken"); 92 | define("REGISTER_EMAIL_ERR", "Sorry but this email is taken"); 93 | define("REGISTER_PW_ERR", "Sorry but your passwords do not match"); 94 | define("REGISTER_OK", "Your account was successfully created"); 95 | define("DISABLED_HEADER", "Error"); 96 | define("DISABLED_MESSAGE", "The manual registration was disabled by an admin. Please use the command at the Minecraft server to create an account."); 97 | //editaccount.php 98 | define("SAVED_CHANGE", "Your changes was successfully saved."); 99 | define("EDIT_NO_PERMS", "You can't edit this user."); 100 | define("EDIT_NOT_YOU", "You can't edit yourself."); 101 | define("NO_REQUEST", "No user was requested."); 102 | //search.php 103 | define("SEARCH", "Search"); 104 | define("SEARCH_KEY", "Keyword"); 105 | define("NO_SEARCH_RESULT", "No search results were found."); 106 | ?> 107 | -------------------------------------------------------------------------------- /createticket.php: -------------------------------------------------------------------------------- 1 | 11 | 12 | prepare("INSERT INTO tickets (CREATOR, TITLE, CATEGORY, MESSAGE, CREATIONDATE, LASTANSWERDATE, STATUS) 18 | VALUES (:accid, :title, :catid, :msg, :now, null, 0)"); 19 | $id = getAccountID($_SESSION["username"]); 20 | $stmt->bindParam(":accid", $id, PDO::PARAM_INT); 21 | $stmt->bindParam(":title", $_POST["subject"], PDO::PARAM_STR); 22 | $stmt->bindParam(":catid", $_POST["category"], PDO::PARAM_INT); 23 | $stmt->bindParam(":msg", $_POST["msg"], PDO::PARAM_STR); 24 | $now = time(); 25 | $stmt->bindParam(":now", $now, PDO::PARAM_STR); 26 | $stmt->execute(); 27 | ?> 28 | 29 | 32 | 33 | 34 | 35 | 36 |:
52 |:
53 |ID | 55 |56 | | 57 | | 58 | | 59 | | Status | 60 |61 | |
---|---|---|---|---|---|---|
67 | | 68 | | 69 | | 70 | | 77 | | 84 | | " class="btn"> | 85 |
ID | 71 |72 | | 73 | | 74 | | 75 | | Status | 76 |77 | |
---|---|---|---|---|---|---|
83 | | 84 | | 85 | | 86 | | 93 | | 100 | | " class="btn"> | 101 |
:
74 |:
75 |:
76 |Please setting up your MySQL database.
51 | 58 |Please create now an admin account.
148 | 155 |Installation failed. Reason: Can't write mysql.php
25 | Please make sure that the ProfessionalTickets folder is writable.
Now you can change the default settings.
77 |ID | 82 |83 | | 84 | | 85 | | 86 | | Status | 87 |88 | |
---|---|---|---|---|---|---|
94 | | 95 | | 96 | | 97 | | 104 | | 111 | | " class="btn"> | 112 |
:
88 | :
-
130 |