<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<?php
$uid = isset($this->user->uid) ? (int)$this->user->uid : 0;
$paySettings = function_exists('Mirai_payPostSettings') ? Mirai_payPostSettings($this->cid) : [];
$payCanUse = function_exists('Mirai_payEnabled') && function_exists('Mirai_payAvailableForPost') && Mirai_payEnabled() && Mirai_payAvailableForPost($paySettings);
$isPageAuthor = $uid > 0 && isset($this->authorId) && (int)$this->authorId === (int)$uid;
$payHasAccess = !$payCanUse ? true : ($isPageAuthor || (function_exists('Mirai_payHasPaid') && Mirai_payHasPaid($this->cid, $uid)));
$payToken = function_exists('Mirai_payEnabled') ? \Widget\Security::alloc()->getToken('api') : '';
?>
<?php $this->need('header.php'); ?>

<div class="gt-breadcrumb-wrap">
    <?php $this->need('modules/breadcrumb.php'); ?>
</div>
<article class="gt-article-main">
    <header>
        <h1><?php $this->title() ?></h1>
    </header>
    
    <div class="article-content-container">
        <div class="article-content">
            <?php 
            $content = $this->content;
            $payBoxInlineRendered = false;
            $payBoxHtml = '';
            $payLocked = false;
            try {
                if (Mirai_featureEnabled('seo') && (string)$this->options->nofollowExternalLinks !== '0') {
                    $content = Mirai_addNofollowToExternalLinks($content);
                }
            } catch (Throwable $e) {}
            try {
                if ($payCanUse && function_exists('Mirai_payFilterPostContent')) {
                    $payFiltered = Mirai_payFilterPostContent($content, $this, $payHasAccess);
                    $content = $payFiltered['content'];
                    $payLocked = !empty($payFiltered['locked']);
                    if (!$payHasAccess && $payLocked) {
                        $payBoxHtml = Mirai_payRenderPurchaseBox($this, $paySettings, (int)$uid, $payToken, 'inline');
                        if (strpos($content, '<!--MIRAI_PAYBOX_INLINE-->') !== false) {
                            $content = str_replace('<!--MIRAI_PAYBOX_INLINE-->', $payBoxHtml, $content);
                            $payBoxInlineRendered = true;
                        }
                    }
                } else {
                    if (function_exists('Mirai_payUnwrapShortcode')) {
                        $content = Mirai_payUnwrapShortcode($content);
                    }
                }
            } catch (Throwable $e) {
                if (function_exists('Mirai_payUnwrapShortcode')) {
                    $content = Mirai_payUnwrapShortcode($content);
                }
            }
            try {
                if (function_exists('Mirai_hideFilterContent')) {
                    $hideFiltered = Mirai_hideFilterContent($content, $this, $uid);
                    $content = $hideFiltered['content'];
                }
            } catch (Throwable $e) {}
            try {
                if (function_exists('Mirai_cloudFilterContent')) {
                    $content = Mirai_cloudFilterContent($content);
                }
            } catch (Throwable $e) {}
            try {
                if (function_exists('Mirai_musicFilterContent')) {
                    $content = Mirai_musicFilterContent($content);
                }
            } catch (Throwable $e) {}
            if (strpos($content, '[pay]') !== false || strpos($content, '[/pay]') !== false) {
                if (function_exists('Mirai_payUnwrapShortcode')) {
                    $content = Mirai_payUnwrapShortcode($content);
                }
            }
            echo $content;
            ?>
        </div>
    </div>
    <?php
    if ($payCanUse && !$payHasAccess && $payLocked && !$payBoxInlineRendered) {
        if ($payBoxHtml === '' && function_exists('Mirai_payRenderPurchaseBox')) {
            $payBoxHtml = Mirai_payRenderPurchaseBox($this, $paySettings, (int)$uid, $payToken);
        }
        echo $payBoxHtml;
    }
    ?>
</article>
<?php $this->need('footer.php'); ?>
