<?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 page-header margin-top-0"> <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></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 text-muted" : ""; ?> <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' ?>> Keep current profile picture </label> </div> <div class="radio"> <label> <input type="radio" name="pfp_action" id="pfp_action_2" value="remove"<?= empty($user->profilePicture) ? ' checked' : '' ?>> <?php if (empty($user->profilePicture)): ?> No profile picture <?php else: ?> Remove profile picture <?php endif; ?> </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() { function _hide() { $("#i_pfp").hide().prop("disabled", true).prop("required", false); $("#i_pfp + .file-input-group").hide().find("button").prop("disabled", true); } _hide(); setTimeout(_hide, 10); $("[name='pfp_action']").on("change input check click", function() { if ($("#pfp_action_3").is(":checked")) { $("#i_pfp").show().prop("disabled", false).prop("required", true); $("#i_pfp + .file-input-group").show().find("button").prop("disabled", false); } else { _hide(); } }) }); <?php endif; ?> </script>