prepare("SELECT * FROM users WHERE login = ?"); $s->bind_param("s", $login); $s->execute(); return (bool)$s->get_result()->fetch_assoc(); } /* * FUNCTION * Check if user with supplied ID exists */ function User_IDExist ($id): bool { global $db; $s = $db->prepare("SELECT * FROM users WHERE id = ?"); $s->bind_param("s", $id); $s->execute(); return (bool)$s->get_result()->fetch_assoc(); } /* * FUNCTION * Check if user has specified role */ function User_HasRole ($id, $role) { global $db; $s = $db->prepare("SELECT * FROM users WHERE id = ?"); $s->bind_param("s", $id); $s->execute(); $d = $s->get_result()->fetch_assoc(); if (!(bool)$d) return null; if ($d["role"] == $role) return true; return false; } /* * FUNCTION * Check if user is moderator (or higher) */ function User_IsMod ($id) { global $db; $s = $db->prepare("SELECT * FROM users WHERE id = ?"); $s->bind_param("s", $id); $s->execute(); $d = $s->get_result()->fetch_assoc(); if (!(bool)$d) { return null; } return in_array($d["role"], array("mod", "admin")); } // Methods /* * METHOD * Get user information from DB */ function User_GetInfoByID_Method (array $req): ReturnT { global $db, $THIS_USER, $LOGGED_IN; // Input sanity checks $id = null; if (isset($req["id"])) { if (!ctype_digit($req["id"])) return new ReturnT(err_code: E_UIN_BADARGS, err_desc: "id must be numeric"); $id = intval($req["id"]); } else { if ($LOGGED_IN) $id = $THIS_USER; else return new ReturnT(err_code: E_UIN_BADARGS, err_desc: "id must be specified or valid session must be provided"); } // Actions $result = array(); $s = $db->prepare("SELECT * FROM users WHERE id = ?"); $s->bind_param("s", $id); $s->execute(); $d = $s->get_result()->fetch_assoc(); if (!(bool)$d) return new ReturnT(err_code: E_UIN_WRONGID, err_desc: "user not found in database"); //return new ReturnT(err_code: E_DBE_SELECTFAIL, err_desc: "failed to get user record"); $result["id"] = $d["id"]; $result["created_at"] = $d["created_at"]; $result["login"] = $d["login"]; $result["avatar_path"] = $d["avatar_path"]; $result["role"] = $d["role"]; $result["banned"] = $d["banned"]; if (($id === $THIS_USER) || User_IsMod($THIS_USER)) { // User himself and mods can see additional info $result["email"] = $d["email"]; $result["invite_id"] = $d["invite_id"]; } return new ReturnT(data: $result); } if (Utils_ThisFileIsRequested(__FILE__)) { require_once("../_json.php"); $result = User_GetInfoByID_Method($_REQUEST); if ($result->IsError()) $result->ThrowJSONError(); else JSON_ReturnData($result->GetData()); } ?>