diff options
Diffstat (limited to 'src/application/views/view_user.php')
-rw-r--r-- | src/application/views/view_user.php | 154 |
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&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) ?> • <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&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> |