<?php require(__DIR__ . "/../libs/page.php"); require(__DIR__ . "/../libs/form.php"); require(__DIR__ . "/../libs/comment.php"); $roles = array(); page_header(); // this is a mess function get_handler() { global $db; global $username; global $user; global $bio; global $followers; global $following; global $roles; // there is 100% a better way to do this but i need to test if (!array_key_exists('id',$_GET)) { die(); } $user = $_GET['id']; if (array_key_exists('type',$_GET)) { $type = $_GET['type']; if ($type == 'follow') { follow(); } else if ($type == 'settings') { settings(); } } $stmt = $db->prepare("SELECT * FROM main.user WHERE UPPER(username) LIKE UPPER(?)"); //weirdly, this requires a schema name $stmt->execute([$user]); $result = $stmt->fetch(PDO::FETCH_ASSOC); $bio = isset($result) ? $result['bio'] : 'This user has not set a bio.'; $stmt = $db->prepare("SELECT * FROM main.follow WHERE target = ?"); $stmt->execute([$user]); $following = $stmt->fetchAll(PDO::FETCH_DEFAULT); $stmt = $db->prepare("SELECT * FROM main.follow WHERE username = ?"); $stmt->execute([$user]); $followers = $stmt->fetchAll(PDO::FETCH_DEFAULT); $stmt = $db->prepare("SELECT * FROM main.role WHERE username = ?"); $stmt->execute([$user]); $roles = $stmt->fetchAll(PDO::FETCH_DEFAULT); } function follow() { global $db; global $username; global $user; $stmt = $db->prepare("SELECT * FROM main.follow WHERE username = ? AND target = ?"); $stmt->execute([$user,$username]); $result = $stmt->fetch(PDO::FETCH_ASSOC); if (is_null($username)) return; if ($result) { $stmt = $db->prepare("DELETE FROM main.follow WHERE username = ? AND target = ?"); $stmt->execute([$user,$username]); } else { $stmt = $db->prepare("INSERT INTO main.follow (username,target) VALUES (?,?)"); $stmt->execute([$user,$username]); } } function settings() { global $db; global $username; global $user; if (is_null($username)) return; $stmt = $db->prepare("DELETE FROM main.user WHERE username = ?"); $stmt->execute([$username]); $stmt = $db->prepare("INSERT INTO main.user (username,bio) VALUES (?,?)"); $stmt->execute([$username,$_POST['desc']]); move_uploaded_file($_FILES['avatar']['tmp_name'], $_SERVER["DOCUMENT_ROOT"] . '/../docs/pfp/' . $username . '.png'); } get_handler(); ?> <form class="banner" enctype="multipart/form-data" method="POST" action="/user.php?id=<?php echo $user ?>&type=follow"> <img class="banner-background" src="/pfp/<?php echo $user ?>.png"> <div class="banner-content"> <div class="form-message"></div> <div class="avatar"> <img src="/pfp/<?php echo $user ?>.png" class="avatar-img"> <b>@<?php echo $user ?></b> <?php foreach ($roles as $role) { ?> [<?php echo htmlspecialchars($role['role']); ?>] <?php } ?> <input class="form-button" type="submit" value="Follow"> </div> <div class="avatar"> <b><?php echo count($followers) ?> followers</b> <b><?php echo count($following) ?> following</b> </div> <div class='avatar'> <a class='link' href='/meta.php?id=<?php echo $user?>'>More info</a> </div> <input name="target" hidden="" value="<?php echo $user ?>"> <pre><?php echo htmlspecialchars($bio) ?></pre> </div> </form> <?php if ($user == $username) { form("Your Settings", $form_message, array( array('key' => 'Bio', 'type' => 'textarea', 'name' => 'desc', 'default' => $bio), array('key' => 'Avatar', 'type' => 'file', 'name' => 'avatar', 'default' => '') ),'/user.php?id=' . $user . '&type=settings'); } comments('user',$user); page_footer(); ?>