<?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&user=<?= htmlentities(urlencode($postAuthor->id)) ?>" width="64" height="64"> <?php else: ?> <a href="?_action=viewuser&user=<?= htmlentities(urlencode($postAuthor->id)) ?>"> <img class="media-object" alt="<?= __("Profile picture") ?>" src="?_action=profilepicture&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&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&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&attachment=<?= htmlentities(urlencode($attachment->id)) ?>" title="<?= htmlentities($attachment->name) ?>" data-attachment-id="<?= htmlentities($attachment->id) ?>"> <img class="image-attachment-image" src="?_action=thumb&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&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; ?>