<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit;
$db = \Typecho\Db::get();
$actionTable = $db->getPrefix() . 'mirai_actions';
$userBaseUrl = \Typecho\Common::url('/user', $this->options->index);
$uid = (int)$this->user->uid;

$postsCount = (int)$db->fetchObject($db->select('COUNT(*) AS num')->from('table.contents')->where('authorId = ?', $uid)->where('type = ?', 'post'))->num;
$commentsCount = (int)$db->fetchObject($db->select('COUNT(*) AS num')->from('table.comments')->where('authorId = ?', $uid))->num;
$favoritesCount = 0; $likesCount = 0;
try { $likesCount = (int)$db->fetchObject($db->select('COUNT(*) AS num')->from($actionTable)->where('uid = ?', $uid)->where('type = ?', 'like'))->num; } catch (\Exception $e) {}
try { $favoritesCount = (int)$db->fetchObject($db->select('COUNT(*) AS num')->from($actionTable)->where('uid = ?', $uid)->where('type = ?', 'collect'))->num; } catch (\Exception $e) {}

$wallet = Mirai_payGetWallet($uid);
$walletBalance = isset($wallet['balance']) ? (float)$wallet['balance'] : 0;

$pointsEnabled = false; $pointsBalance = 0; $pointsName = '积分';
if (function_exists('Mirai_pointsEnabled') && Mirai_pointsEnabled()) {
    $pointsEnabled = true;
    $pointsBalance = function_exists('Mirai_pointsGetBalance') ? Mirai_pointsGetBalance($uid) : 0;
    $pointsName = function_exists('Mirai_pointsName') ? Mirai_pointsName() : '积分';
}

$levelEnabled = false; $levelVal = 1; $levelName = 'LV1'; $levelExp = 0; $nextExp = 0; $levelPct = 100;
if (function_exists('Mirai_levelEnabled') && Mirai_levelEnabled()) {
    $levelEnabled = true;
    $levelVal = function_exists('Mirai_levelGet') ? Mirai_levelGet($uid) : 1;
    $levelName = function_exists('Mirai_levelGetName') ? Mirai_levelGetName($levelVal) : 'LV' . $levelVal;
    $levelExp = function_exists('Mirai_expGet') ? Mirai_expGet($uid) : 0;
    $nextLevel = $levelVal + 1;
    $maxLevel = function_exists('Mirai_levelGetMax') ? Mirai_levelGetMax() : 10;
    if ($nextLevel <= $maxLevel) {
        $nextExp = function_exists('Mirai_levelGetExpThreshold') ? Mirai_levelGetExpThreshold($nextLevel) : 0;
        if ($nextExp > 0) $levelPct = min(100, floor(($levelExp / $nextExp) * 100));
    }
}

$vipInfo = null; $vipEnabled = function_exists('Mirai_vipEnabled') && Mirai_vipEnabled();
if ($vipEnabled) $vipInfo = function_exists('Mirai_vipGetUserInfo') ? Mirai_vipGetUserInfo($uid) : null;

$inviteCode = '';
if (function_exists('Mirai_referralGetCode')) $inviteCode = Mirai_referralGetCode($uid);

$recentPosts = $db->fetchAll($db->select()->from('table.contents')
    ->where('authorId = ?', $uid)->where('type = ?', 'post')
    ->order('created', \Typecho\Db::SORT_DESC)->limit(5));

$recentComments = $db->fetchAll($db->select()->from('table.comments')
    ->where('authorId = ?', $uid)
    ->order('created', \Typecho\Db::SORT_DESC)->limit(3));

$statsData = [
    ['label' => '文章', 'icon' => 'ri-file-text-line',   'color' => '#3b82f6', 'bg' => '59,130,246',  'count' => $postsCount,      'url' => $userBaseUrl . '/posts'],
    ['label' => '评论', 'icon' => 'ri-chat-3-line',       'color' => '#22c55e', 'bg' => '34,197,94',    'count' => $commentsCount,   'url' => $userBaseUrl . '/comments'],
    ['label' => '点赞', 'icon' => 'ri-thumb-up-line',      'color' => '#ec4899', 'bg' => '236,72,153',   'count' => $likesCount,     'url' => $userBaseUrl . '/likes'],
    ['label' => '收藏', 'icon' => 'ri-star-line',         'color' => '#06b6d4', 'bg' => '6,182,212',    'count' => $favoritesCount, 'url' => $userBaseUrl . '/favorites'],
];

$quickActions = [
    ['icon' => 'ri-edit-line',            'color' => '#3b82f6', 'label' => '发文',   'url' => $userBaseUrl . '/write'],
];
if ($vipEnabled) $quickActions[] = ['icon' => 'ri-vip-diamond-line',     'color' => '#f59e0b', 'label' => ($vipInfo && $vipInfo['level']>0 ? '会员' : '开通会员'), 'url' => $userBaseUrl . '/vip'];
$quickActions[] = ['icon' => 'ri-wallet-3-line',        'color' => '#14b8a6', 'label' => '钱包',     'url' => $userBaseUrl . '/wallet'];
$quickActions[] = ['icon' => 'ri-file-list-2-line',      'color' => '#6366f1', 'label' => '订单',     'url' => $userBaseUrl . '/orders'];
?>

<div class="uc-overview">

    <?php if ($vipEnabled && (!$vipInfo || empty($vipInfo['level']) || $vipInfo['level'] <= 0)): ?>
    <div class="ov-promo">
        <div class="ov-promo-left"><i class="ri-vip-crown-2-fill"></i></div>
        <div class="ov-promo-body">
            <div class="ov-promo-title">开通会员 · 解锁专属特权</div>
            <div class="ov-promo-desc">隐藏内容免费看、专属标识、更多权益</div>
        </div>
        <a href="<?php echo $userBaseUrl . '/vip'; ?>" class="ov-promo-btn">立即开通</a>
    </div>
    <?php endif; ?>

    <div class="ov-grid ov-grid-2">
        <div class="ov-card ov-card-balance" onclick="location.href='<?php echo $userBaseUrl . '/wallet'; ?>'">
            <div class="ov-card-label">余额</div>
            <div class="ov-card-value ov-money">￥<?php echo number_format($walletBalance, 2); ?></div>
            <div class="ov-card-hint">点击查看详情 →</div>
        </div>
        <?php if ($pointsEnabled): ?>
        <div class="ov-card ov-card-points" onclick="location.href='<?php echo $userBaseUrl . '/points'; ?>'">
            <div class="ov-card-label"><?php echo htmlspecialchars($pointsName); ?></div>
            <div class="ov-card-value ov-points"><?php echo number_format($pointsBalance, 0); ?></div>
            <div class="ov-card-hint">点击查看明细 →</div>
        </div>
        <?php endif; ?>
        <?php if ($levelEnabled): ?>
        <div class="ov-card ov-card-level" onclick="location.href='<?php echo $userBaseUrl . '/level'; ?>'">
            <div class="ov-level-header">
                <span class="ov-level-name"><?php echo htmlspecialchars($levelName); ?></span>
                <?php if ($inviteCode): ?><span class="ov-invite-badge" onclick="event.stopPropagation();copyInviteCode(this)" data-code="<?php echo htmlspecialchars($inviteCode,ENT_QUOTES,'UTF-8'); ?>">邀请码</span><?php endif; ?>
            </div>
            <div class="ov-level-bar-wrap">
                <div class="ov-level-bar" style="width:<?php echo $levelPct; ?>%"></div>
            </div>
            <div class="ov-level-footer">
                <span>经验 <?php echo $levelExp; ?>/<?php echo $nextExp; ?></span>
                <span class="ov-pct"><?php echo $levelPct; ?>%</span>
            </div>
        </div>
        <?php endif; ?>
        <?php if ($vipEnabled && $vipInfo && !empty($vipInfo['level']) && $vipInfo['level'] > 0):
            $expDate = isset($vipInfo['exp_date']) ? $vipInfo['exp_date'] : '';
            $isPerm = isset($vipInfo['is_permanent']) && $vipInfo['is_permanent'];
            $vipDisplayName = function_exists('Mirai_vipGetName') ? Mirai_vipGetName($vipInfo['level']) : 'VIP' . $vipInfo['level'];
        ?>
        <div class="ov-card ov-card-vip level-<?php echo $vipInfo['level']; ?>" onclick="location.href='<?php echo $userBaseUrl . '/vip'; ?>'">
            <div class="ov-vip-header">
                <i class="ri-vip-crown-2-fill"></i>
                <span><?php echo htmlspecialchars($vipDisplayName); ?></span>
                <?php if ($isPerm): ?><span class="ov-vip-perm">永久有效</span>
                <?php elseif ($expDate): ?><span class="ov-vip-date"><?php echo (new \Typecho\Date(strtotime($expDate)))->format('Y-m-d'); ?> 到期</span><?php endif; ?>
            </div>
            <div class="ov-vip-body">点击管理会员</div>
        </div>
        <?php elseif ($vipEnabled): ?>
        <div class="ov-card ov-card-vip level-0" onclick="location.href='<?php echo $userBaseUrl . '/vip'; ?>'">
            <div class="ov-vip-header">
                <i class="ri-vip-crown-2-line"></i>
                <span>开通会员</span>
            </div>
            <div class="ov-vip-desc">解锁专属特权与隐藏内容</div>
            <div class="ov-vip-body">点击立即开通</div>
        </div>
        <?php endif; ?>
    </div>

    <div class="ov-stats-row">
        <?php foreach ($statsData as $s): ?>
        <a href="<?php echo $s['url']; ?>" class="ov-stat-item">
            <div class="ov-stat-icon" style="color:<?php echo $s['color']; ?>;background:rgba(<?php echo $s['bg']; ?>,0.08)"><i class="<?php echo $s['icon']; ?>"></i></div>
            <div class="ov-stat-info">
                <span class="ov-stat-label"><?php echo $s['label']; ?></span>
                <span class="ov-stat-count"><?php echo $s['count']; ?></span>
            </div>
        </a>
        <?php endforeach; ?>
    </div>

    <div class="ov-section">
        <div class="ov-section-header">
            <h3 class="ov-section-title">快捷操作</h3>
        </div>
        <div class="ov-actions-row">
            <?php foreach ($quickActions as $qa): ?>
            <a href="<?php echo $qa['url']; ?>" class="ov-action-item">
                <div class="ov-action-icon" style="color:<?php echo $qa['color']; ?>;background:rgba(<?php echo substr($qa['color'],1,2); ?>,<?php echo substr($qa['color'],3,2); ?>,<?php echo substr($qa['color'],5,2); ?>,0.1)"><i class="<?php echo $qa['icon']; ?>"></i></div>
                <span><?php echo $qa['label']; ?></span>
            </a>
            <?php endforeach; ?>
        </div>
    </div>

    <div class="ov-grid ov-grid-2">
        <div class="ov-section ov-posts-section">
            <div class="ov-section-header">
                <h3 class="ov-section-title">最近发布</h3>
                <a href="<?php echo $userBaseUrl . '/posts'; ?>" class="ov-more">全部 →</a>
            </div>
            <div class="ov-post-list">
                <?php if (empty($recentPosts)): ?>
                    <div class="ov-empty"><img src="<?php $this->options->themeUrl('assets/images/no.svg'); ?>" alt="暂无文章">暂无文章</div>
                <?php else: ?>
                    <?php foreach (array_slice($recentPosts, 0, 3) as $post): ?>
                    <div class="ov-post-item">
                        <a href="<?php echo \Typecho\Router::url('post', $post, $this->options->index); ?>" class="ov-post-title"><?php echo $post['title']; ?></a>
                        <div class="ov-post-meta">
                            <span class="ov-post-time"><?php echo (new \Typecho\Date($post['created']))->format('Y-m-d H:i'); ?></span>
                        </div>
                    </div>
                    <?php endforeach; ?>
                <?php endif; ?>
            </div>
        </div>

        <div class="ov-section ov-comments-section">
            <div class="ov-section-header">
                <h3 class="ov-section-title">最近评论</h3>
                <a href="<?php echo $userBaseUrl . '/comments'; ?>" class="ov-more">全部 →</a>
            </div>
            <div class="ov-comment-list">
                <?php if (empty($recentComments)): ?>
                    <div class="ov-empty"><img src="<?php $this->options->themeUrl('assets/images/no.svg'); ?>" alt="暂无评论">暂无评论</div>
                <?php else: ?>
                    <?php foreach ($recentComments as $comment):
                        $parentPost = null;
                        try { $parentPost = $db->fetchRow($db->select('cid','title','slug')->from('table.contents')->where('cid=?',$comment['cid'])->limit(1)); } catch(\Exception $e) {}
                    ?>
                    <div class="ov-comment-item">
                        <div class="ov-comment-text"><?php echo mb_substr(strip_tags($comment['text']), 0, 50); ?><?php echo mb_strlen(strip_tags($comment['text'])) > 50 ? '...' : ''; ?></div>
                        <div class="ov-comment-meta">
                            <?php if ($parentPost): ?><span>《<?php echo $parentPost['title']; ?>》</span><?php endif; ?>
                            <span><?php echo (new \Typecho\Date($comment['created']))->format('Y-m-d H:i'); ?></span>
                        </div>
                    </div>
                    <?php endforeach; ?>
                <?php endif; ?>
            </div>
        </div>
    </div>

</div>

<script>
function copyInviteCode(el) {
    var code = el.getAttribute('data-code');
    if (navigator.clipboard) navigator.clipboard.writeText(code).then(function() {
        var o = el.innerHTML; el.innerHTML = '<i class="ri-check-line"></i> 已复制';
        setTimeout(function() { el.innerHTML = o; }, 1200);
    });
}
</script>
