<?php

use mystic\forum\orm\UserPermissions;
use mystic\forum\orm\Attachment;

/** @var mystic\forum\orm\Post $post */
/** @var mystic\forum\orm\User $postAuthor */

$isImage = fn(string $m) => str_starts_with($m, "image/") || str_starts_with($m, "video/");

$fileAttachments = array_filter($attachments, fn(Attachment $a) => !$isImage($a->mimeType));
$imageAttachments = array_filter($attachments, fn(Attachment $a) => $isImage($a->mimeType));

$canReply = $GLOBALS["currentUser"]?->hasPermission(UserPermissions::CREATE_OWN_POST) ?? false;

$canEdit = ($GLOBALS["currentUser"]?->id === $postAuthor?->id && $postAuthor?->hasPermission(UserPermissions::EDIT_OWN_POST))
        || ($GLOBALS["currentUser"]?->hasPermission(UserPermissions::EDIT_OTHER_POST));

$canDelete = ($GLOBALS["currentUser"]?->id === $postAuthor?->id && $postAuthor?->hasPermission(UserPermissions::DELETE_OWN_POST))
          || ($GLOBALS["currentUser"]?->hasPermission(UserPermissions::DELETE_OTHER_POST));

$canViewAttachments = $GLOBALS["currentUser"] !== null;

$hide_actions ??= false;
$hide_pfp ??= false;
$your_are_the_author = $GLOBALS["currentUser"]?->id === $postAuthor?->id;
$is_op = $postAuthor?->id === $topicAuthor?->id && $postAuthor?->id !== null;

?>

<?php if ($post->deleted): ?>
<div class="media" id="post-<?= htmlentities($post->id) ?>">
<div class="media-left hidden-sm hidden-xs">
    <div class="media-object" style="width:64px"></div>
</div>
<div class="media-body">
    <div class="well icon-well text-warning">
        <span class="glyphicon glyphicon-exclamation-sign color-warning" aria-hidden="true"></span>
        <em><?= __("This post has been deleted") ?></em>
    </div>
</div>
</div>
<?php else: ?>
<div class="media" id="post-<?= htmlentities($post->id) ?>" data-text="<?= htmlentities($post->content) ?>">
<?php if (!$hide_pfp): ?>
    <div class="media-left hidden-sm hidden-xs">
        <?php if ($postAuthor): ?>
            <?php if ($hide_actions): ?>
                <img class="media-object" alt="<?= __("Profile picture") ?>" src="?_action=profilepicture&amp;user=<?= htmlentities(urlencode($postAuthor->id)) ?>" width="64" height="64">
            <?php else: ?>
                <a href="?_action=viewuser&amp;user=<?= htmlentities(urlencode($postAuthor->id)) ?>">
                    <img class="media-object" alt="<?= __("Profile picture") ?>" src="?_action=profilepicture&amp;user=<?= htmlentities(urlencode($postAuthor->id)) ?>" width="64" height="64">
                </a>
            <?php endif; ?>
        <?php else: ?>
            <div class="media-object" style="width:64px;height:64px"></div>
        <?php endif; ?>
    </div>
<?php endif; ?>
    <div class="media-body">
        <div class="panel panel-default">
            <div class="panel-heading">
                <div class="panel-title h3">
                    <?php if (!$hide_actions): ?>
                    <div class="pull-right">
                        <a href="#post-<?= htmlentities(urlencode($post->id)) ?>" class="btn btn-default"><span class="glyphicon glyphicon-link" aria-hidden="true"></span><span class="sr-only"><?= __("Permalink") ?></span></a>
                        <?php if ($canReply): ?>
                            <button data-post-id="<?= htmlentities($post->id) ?>" class="btn btn-default js-only _reply-post"><span class="glyphicon glyphicon-share-alt" aria-hidden="true"></span><span class="sr-only"><?= __("Reply to post") ?></span></button>
                        <?php endif; ?>
                        <?php if ($canEdit): ?>
                            <button data-post-id="<?= htmlentities($post->id) ?>" class="btn btn-default js-only _edit-post"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span><span class="sr-only"><?= __("Edit post") ?></span></button>
                        <?php endif; ?>
                        <?php if ($canDelete): ?>
                            <form action="?_action=deletepost" method="post" class="seamless-inline">
                                <input type="hidden" name="post" value="<?= htmlentities($post->id) ?>">
                                <button type="submit" class="btn btn-danger"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span><span class="sr-only"><?= __("Delete post") ?></span></button>
                            </form>
                        <?php endif; ?>
                    </div>
                    <?php endif; ?>
                    <?php if ($postAuthor): ?>
                        <?php if ($hide_actions): ?>
                            <?= htmlentities($postAuthor->displayName) ?>
                        <?php else: ?>
                            <a href="?_action=viewuser&amp;user=<?= htmlentities(urlencode($postAuthor->id)) ?>"><?= htmlentities($postAuthor->displayName) ?></a>
                            <?php if ($is_op): ?>
                                <span title="<?= __("Created this topic") ?>" class="text-info glyphicon glyphicon-comment"></span>
                            <?php endif; ?>
                        <?php endif; ?>
                        <?php if ($your_are_the_author): ?>
                            <span class="text-normal label label-primary"><?= __("You") ?></span>
                        <?php endif; ?>
                    <?php else: ?>
                        <em class="text-muted"><?= __("(deleted)") ?></em>
                    <?php endif; ?>
                </div>
                <span class="_time"><?= $post->postDate->format("c"); ?></span>
                <?php if ($post->edited): ?>
                    <em class="text-muted"><?= __("(edited)") ?></em>
                <?php endif; ?>
            </div>
            <div class="panel-body">
                <div class="post-content"><?= renderPost(trim($post->content)) ?></div>
                <?php if (count($imageAttachments) > 0): ?>
                <div class="post-images clearfix">
                    <?php /** @var Attachment $attachment */ foreach ($imageAttachments as $attachment): ?>
                        <?php if ($hide_actions): ?>
                            <span class="image-attachment" title="<?= htmlentities($attachment->name) ?>">
                                <img class="image-attachment-image" src="?_action=thumb&amp;attachment=<?= htmlentities(urlencode($attachment->id)) ?>" alt="" width="100">
                            </span>
                        <?php else: ?>
                            <a class="image-attachment attachment<?php if (str_starts_with($attachment->mimeType, "video/")): ?> video-attachment<?php endif; ?>" href="?_action=attachment&amp;attachment=<?= htmlentities(urlencode($attachment->id)) ?>" title="<?= htmlentities($attachment->name) ?>" data-attachment-id="<?= htmlentities($attachment->id) ?>">
                                <img class="image-attachment-image" src="?_action=thumb&amp;attachment=<?= htmlentities(urlencode($attachment->id)) ?>" alt="" width="100">
                                <?php if (!$canViewAttachments): ?>
                                    <span class="attachment-lock glyphicon glyphicon-ban-circle" aria-hidden="true"></span>
                                <?php elseif (str_starts_with($attachment->mimeType, "video/")): ?>
                                    <span class="video-player-icon glyphicon glyphicon-play" aria-hidden="true"></span>
                                <?php endif; ?>
                            </a>
                        <?php endif; ?>
                    <?php endforeach; ?>
                </div>
            <?php endif; ?>
            </div>
            <?php if (count($fileAttachments) > 0): ?>
                <div class="panel-footer">
                    <div class="btn-group">
                        <?php /** @var Attachment $attachment */ foreach ($fileAttachments as $attachment): ?>
                            <?php if ($hide_actions): ?>
                                <button class="btn btn-default"><?= htmlentities($attachment->name) ?></button>
                            <?php else: ?>
                                <a class="btn btn-default attachment" href="?_action=attachment&amp;attachment=<?= htmlentities(urlencode($attachment->id)) ?>">
                                    <?php if (!$canViewAttachments): ?>
                                        <span class="glyphicon glyphicon-ban-circle" aria-hidden="true"></span>
                                    <?php endif; ?>
                                    <?= htmlentities($attachment->name) ?>
                                </a>
                            <?php endif; ?>
                        <?php endforeach; ?>
                    </div>
                </div>
            <?php endif; ?>
        </div>
    </div>
</div>

<?php endif; ?>