<?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&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></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 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>