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> |