summaryrefslogtreecommitdiff
path: root/src/application/views/view_user.php
diff options
context:
space:
mode:
authorJonas Kohl <git@jonaskohl.de>2024-09-13 19:57:43 +0200
committerJonas Kohl <git@jonaskohl.de>2024-09-13 19:57:43 +0200
commit93817fef3ead7cfd4fcde25ea2bcec02d01310a4 (patch)
tree60f6ab69bbf2360d7cc518023090b8bf61bfd5b1 /src/application/views/view_user.php
parent086e2d2668784469ec114f6e6fd2b3dace3d7c3b (diff)
A lot of changes again
Diffstat (limited to 'src/application/views/view_user.php')
-rw-r--r--src/application/views/view_user.php154
1 files changed, 153 insertions, 1 deletions
diff --git a/src/application/views/view_user.php b/src/application/views/view_user.php
index 334928b..23d2b71 100644
--- a/src/application/views/view_user.php
+++ b/src/application/views/view_user.php
@@ -1 +1,153 @@
-<h1><?= htmlentities($user->displayName) ?></h1>
+<?php
+
+use mystic\forum\orm\UserPermissions;
+use mystic\forum\utils\RequestUtils;
+use mystic\forum\utils\StringUtils;
+
+/** @var mystic\forum\orm\User $user */
+/** @var bool $lastNameChangeTooRecent */
+
+$canEdit = ($user->id === $GLOBALS["currentUser"]?->id && $user->hasPermission(UserPermissions::EDIT_OWN_USER))
+ || $GLOBALS["currentUser"]?->hasPermission(UserPermissions::EDIT_OTHER_USER);
+
+$isOwnProfile = $user->id === $GLOBALS["currentUser"]?->id;
+
+$sIsOwn_your = "";
+if ($isOwnProfile)
+ $sIsOwn_your = " your";
+
+$sUserPossessive = "";
+if ($isOwnProfile)
+ $sUserPossessive = "Your";
+else
+ $sUserPossessive = $user->displayName . "'s";
+
+$dateJoined = DateTime::createFromImmutable($user->created);
+$dateJoined->setTime(0, 0, 0, 0);
+?>
+
+<div class="clearfix">
+ <img class="pull-left margin-right" src="?_action=profilepicture&amp;user=<?= htmlentities(urlencode($user->id)) ?>">
+ <span class="h1"><?= htmlentities($user->displayName) ?></span>
+ <?php if ($isOwnProfile): ?>
+ <span class="label label-primary">You</span>
+ <?php endif; ?><br>
+ @<?= htmlentities($user->name) ?> &bull; <span class="text-muted">Member since <span class="_date"><?= htmlentities($dateJoined->format("c")); ?></span>
+</div>
+
+<?php if ($canEdit): ?>
+<div class="row">
+<div class="col-md-9">
+<?php endif; ?>
+
+<h3><?= $sUserPossessive ?> posts</h3>
+
+<?php if (count($posts) > 0): ?>
+ <div class="post-container">
+ <div class="post-container-posts">
+ <div class="list-group margin-top">
+ <?php foreach ($posts as $post): if ($post->deleted) continue; ?>
+ <a href="?_action=viewtopic&amp;topic=<?= htmlentities(urlencode($post->topicId)) ?>#post-<?= htmlentities(urlencode($post->id)) ?>" class="list-group-item">
+ <?= htmlentities(StringUtils::truncate(strip_tags(renderPost($post->content)), 100)) ?><br>
+ <span class="text-muted">posted on <span class="_time"><?= htmlentities($post->postDate->format("c")) ?></span> in <em><?= htmlentities($topics[$post->topicId]?->title ?? "unknown") ?></em></span>
+ </a>
+ <?php endforeach; ?>
+ </div>
+ </div>
+ <div class="post-container-controls">
+ <button class="btn btn-default">Show all posts</button>
+ </div>
+ </div>
+<?php else: ?>
+ <div class="well icon-well text-info margin-top margin-bottom">
+ <span class="glyphicon glyphicon-info-sign color-info" aria-hidden="true"></span>
+ <em>This user has not posted anything yet</em>
+ </div>
+<?php endif; ?>
+
+<?php if ($canEdit): ?>
+</div>
+
+<div class="col-md-3">
+<h3>Edit<?= $sIsOwn_your ?> profile</h3>
+<?php
+if (($_formError = RequestUtils::getAndClearFormError()) !== null) {
+ _view("alert_error", ["message" => $_formError]);
+}
+?>
+<form action="<?= htmlentities($_SERVER["REQUEST_URI"]) ?>" method="post" enctype="multipart/form-data">
+ <div class="form-group">
+ <label for="i_display_name">Display name:</label>
+ <input required class="form-control" type="text" name="display_name" id="i_display_name" value="<?= htmlentities($user->displayName) ?>">
+ </div>
+ <div class="form-group">
+ <label for="i_name">Login name:</label>
+ <?php if ($lastNameChangeTooRecent): ?>
+ <input required class="form-control" type="text" id="i_name" value="<?= htmlentities($user->name) ?>" disabled>
+ <small class="text-danger"><strong>You can only change your username every 30 days!</strong></small>
+ <?php else: ?>
+ <input required class="form-control" type="text" name="name" id="i_name" value="<?= htmlentities($user->name) ?>">
+ <?php endif; ?>
+ </div>
+ <div class="form-group">
+ <label for="i_email">Email address:</label>
+ <input required class="form-control" type="email" id="i_email" value="<?= htmlentities($user->email) ?>" disabled>
+ </div>
+ <div class="form-group">
+ <label>Profile picture:</label>
+<?php
+$_checkbox_disabled = empty($user->profilePicture);
+$_checkbox_disabled_class = $_checkbox_disabled ? " disabled" : "";
+?>
+ <div class="radio margin-top-0 <?= $_checkbox_disabled_class ?>">
+ <label>
+ <input type="radio" name="pfp_action" id="pfp_action_1" value="keep"<?= !empty($user->profilePicture) ? ' checked' : ' disabled' ?>>
+ Existing profile picture
+ </label>
+ </div>
+ <div class="radio">
+ <label>
+ <input type="radio" name="pfp_action" id="pfp_action_2" value="remove"<?= empty($user->profilePicture) ? ' checked' : '' ?>>
+ No profile picture
+ </label>
+ </div>
+ <div class="radio">
+ <label>
+ <input type="radio" name="pfp_action" value="replace" id="pfp_action_3">
+ Upload new profile picture
+ </label>
+ </div>
+ <input type="file" name="pfp" id="i_pfp" accept="image/png,image/jpeg" class="margin-left-3x">
+ </div>
+ <div class="form-group">
+ <button type="submit" class="btn btn-success">Save changes</button>
+ </div>
+</form>
+</div>
+
+</div>
+<?php endif; ?>
+
+<script>
+$(function() {
+ $(".post-container").each(function(i, e) {
+ if ($(e).height() > 900) { // more than 800 so it doesn't collapse just a few pixels
+ $(e).addClass("collapsed");
+ }
+ $(e).find(".post-container-controls button").click(function() {
+ $(e).removeClass("collapsed");
+ });
+ });
+});
+<?php if ($canEdit): ?>
+$(function() {
+ $("#i_pfp").hide().prop("disabled", true).prop("required", false);
+ $("[name='pfp_action']").on("change input check click", function() {
+ if ($("#pfp_action_3").is(":checked"))
+ $("#i_pfp").show().prop("disabled", false).prop("required", true);
+ else
+ $("#i_pfp").hide().prop("disabled", true).prop("required", false);
+ })
+});
+<?php endif; ?>
+</script>