<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;

$userCenterEnabled = Mirai_featureEnabled('user_center');
if (!$userCenterEnabled) {
    $this->response->redirect($this->options->siteUrl);
    exit;
}

$pathInfo = $this->request->getPathInfo();
$tab = '';
if (preg_match('#^/user/([^/]+)#', $pathInfo, $matches)) {
    $tab = $matches[1];
}

if ($tab === 'points') {
    $this->response->redirect(\Typecho\Common::url('/user/wallet?subtab=points', $this->options->index));
    exit;
}

if ($tab === 'login' || $tab === 'register') {
    $homeUrl = $this->options->siteUrl;
    $hash = $tab === 'login' ? '#login' : '#register';
    $this->response->redirect($homeUrl . $hash);
    exit;
}

$isGuest = !$this->user->hasLogin();
if ($isGuest) {
    if (!Mirai_isUserCenterAuthEnabled($this->options)) {
        $this->response->redirect($this->options->siteUrl);
        exit;
    }
    $tab = '';
}

if (!$isGuest) {
$db = \Typecho\Db::get();
$user = $this->user;

$message = '';
$messageType = '';

if ($this->request->isPost()) {
    $action = $this->request->get('action');
    
    if ($action == 'write_post' && $user->pass('contributor', true)) {
        $title = $this->request->get('title');
        $text = $this->request->get('text');

        if (!preg_match('/^<!--markdown-->/i', (string)$text)) {
            $text = '<!--markdown-->' . $text;
        }
        
        $category = intval($this->request->get('category'));
        $tags = $this->request->get('tags');
        $cover = $this->request->get('cover');
        $excerpt = $this->request->get('excerpt');
        $keywords = $this->request->get('keywords');
        $description = $this->request->get('description');
        $cid = $this->request->get('cid');
        $do = $this->request->get('do');
        
        // 确定目标状态
        if ($do == 'draft') {
            $targetStatus = 'hidden';
        } elseif ($user->pass('editor', true)) {
            $targetStatus = 'publish';
        } else {
            $targetStatus = 'waiting';
        }
        
        if (empty($title) || empty($text)) {
            $message = '标题和内容不能为空';
            $messageType = 'error';
        } else {
            try {
                $oldCatMid = 0;

                if ($cid) {
                    $exist = $db->fetchRow($db->select()->from('table.contents')
                        ->where('cid = ?', $cid)
                        ->where('authorId = ?', $user->uid)
                        ->where('type = ?', 'post'));
                    if (!$exist) {
                        throw new Exception('文章不存在或无权编辑');
                    }
                    
                    $updateData = [
                        'title' => $title,
                        'text' => $text,
                        'modified' => time(),
                        'status' => $targetStatus
                    ];
                    $db->query($db->update('table.contents')->rows($updateData)->where('cid = ?', $cid));
                    
                    $currCatRel = $db->fetchRow($db->select('table.relationships.mid')->from('table.relationships')
                        ->join('table.metas', 'table.relationships.mid = table.metas.mid')
                        ->where('cid = ?', $cid)
                        ->where('table.metas.type = ?', 'category'));
                    if ($currCatRel) {
                        $oldCatMid = $currCatRel['mid'];
                    }
                    
                    $oldTags = $db->fetchAll($db->select('table.relationships.mid')->from('table.relationships')
                        ->join('table.metas', 'table.relationships.mid = table.metas.mid')
                        ->where('cid = ?', $cid)
                        ->where('table.metas.type = ?', 'tag'));
                        
                    foreach ($oldTags as $ot) {
                        $db->query($db->delete('table.relationships')->where('cid = ?', $cid)->where('mid = ?', $ot['mid']));
                        $db->query($db->update('table.metas')->expression('count', 'count - 1')->where('mid = ?', $ot['mid']));
                    }
                    
                    $message = '文章更新成功';
                    
                } else {
                    $data = [
                        'title'     => $title,
                        'slug'      => NULL,
                        'created'   => time(),
                        'modified'  => time(),
                        'text'      => $text,
                        'authorId'  => $user->uid,
                        'type'      => 'post',
                        'status'    => $targetStatus,
                        'allowComment' => 1,
                        'allowPing' => 1,
                        'allowFeed' => 1
                    ];
            
                    $cid = $db->query($db->insert('table.contents')->rows($data));
                    
                    $db->query($db->update('table.contents')->rows(['slug' => $cid])->where('cid = ?', $cid));
                    
                    $message = '投稿成功';
                }
                
                if (!empty($cover)) {
                    $db->query($db->update('table.contents')->rows(['cover' => $cover])->where('cid = ?', $cid));
                } else {
                    $db->query($db->update('table.contents')->rows(['cover' => ''])->where('cid = ?', $cid));
                }
                
                $prefix = $db->getPrefix();
                $edkTable = $prefix . 'mirai_contents_edk';
                if ($db->fetchRow("SHOW TABLES LIKE '{$edkTable}'")) {
                    $existEdk = $db->fetchRow($db->select()->from('table.mirai_contents_edk')->where('cid = ?', $cid));
                    $edkData = [
                        'excerpt' => $excerpt ?? '',
                        'keywords' => $keywords ?? '',
                        'description' => $description ?? ''
                    ];
                    
                    if (!empty(array_filter($edkData))) {
                        if ($existEdk) {
                            $db->query($db->update('table.mirai_contents_edk')->rows($edkData)->where('cid = ?', $cid));
                        } else {
                            $edkData['cid'] = $cid;
                            $db->query($db->insert('table.mirai_contents_edk')->rows($edkData));
                        }
                    } else if ($existEdk) {
                        $db->query($db->delete('table.mirai_contents_edk')->where('cid = ?', $cid));
                    }
                }
                
                if ($category != $oldCatMid) {
                    if ($oldCatMid > 0) {
                        $db->query($db->delete('table.relationships')->where('cid = ?', $cid)->where('mid = ?', $oldCatMid));
                        $db->query($db->update('table.metas')->expression('count', 'count - 1')->where('mid = ?', $oldCatMid));
                    }
                    if ($category > 0) {
                        $db->query($db->insert('table.relationships')->rows(['cid' => $cid, 'mid' => $category]));
                        $db->query($db->update('table.metas')->expression('count', 'count + 1')->where('mid = ?', $category));
                    }
                }
                
                if (!empty($tags)) {
                    $tagArr = explode(',', str_replace('，', ',', $tags));
                    foreach ($tagArr as $tagName) {
                        $tagName = trim($tagName);
                        if (empty($tagName)) continue;
                        
                        $tag = $db->fetchRow($db->select()->from('table.metas')->where('type = ?', 'tag')->where('name = ?', $tagName));
                        if (!$tag) {
                            $mid = $db->query($db->insert('table.metas')->rows([
                                'name' => $tagName,
                                'slug' => $tagName,
                                'type' => 'tag',
                                'count' => 1
                            ]));
                        } else {
                            $mid = $tag['mid'];
                            $db->query($db->update('table.metas')->expression('count', 'count + 1')->where('mid = ?', $mid));
                        }
                        $db->query($db->insert('table.relationships')->rows(['cid' => $cid, 'mid' => $mid]));
                    }
                }
                
                $messageType = 'success';
            } catch (Exception $e) {
                $message = '操作失败: ' . $e->getMessage();
                $messageType = 'error';
            }
        }
    }
    
    if ($action == 'update_profile') {
        $screenName = $this->request->get('screenName');
        $mail = $this->request->get('mail');
        $url = $this->request->get('url');
        $motto = $this->request->get('motto');
        $cover = $this->request->get('cover');
        
        $updateData = [];
        if (!empty($screenName)) $updateData['screenName'] = $screenName;
        if (!empty($mail)) $updateData['mail'] = $mail;
        $updateData['url'] = $url;
        $updateData['motto'] = $motto;
        $updateData['cover'] = $cover;
        if (!empty($_FILES['avatar']) && $_FILES['avatar']['error'] !== UPLOAD_ERR_NO_FILE) {
            $uploadResult = Mirai_uploadAvatar($_FILES['avatar'], $user->uid);
            if ($uploadResult['success']) {
                $oldAvatar = $db->fetchRow($db->select('avatar')->from('table.users')->where('uid = ?', $user->uid));
                if (!empty($oldAvatar['avatar'])) {
                    Mirai_deleteOldAvatar($oldAvatar['avatar']);
                }
                $updateData['avatar'] = $uploadResult['url'];
                $message = '头像更新成功';
                $messageType = 'success';
            } else {
                $message = $uploadResult['message'];
                $messageType = 'error';
            }
        }
        
        if (!empty($updateData)) {
            $db->query($db->update('table.users')->rows($updateData)->where('uid = ?', $user->uid));
            $message = empty($message) ? '资料更新成功' : $message . '，资料更新成功';
            $messageType = 'success';
        }
        if ($messageType === 'success') {
            $this->response->redirect($this->request->getRequestUrl());
            exit;
        }
    }
    
    if ($action == 'update_password') {
        $currentPassword = $this->request->get('current_password');
        $password = $this->request->get('password');
        $confirm = $this->request->get('confirm');
        $userRow = $db->fetchRow($db->select('password')->from('table.users')->where('uid = ?', $user->uid)->limit(1));
        
        if (empty($currentPassword)) {
            $message = '请输入当前密码';
            $messageType = 'error';
        } elseif (empty($userRow) || empty($userRow['password'])) {
            $message = '用户信息异常，请重新登录后重试';
            $messageType = 'error';
        } else {
            $hasher = new \Utils\PasswordHash(8, true);
            if (!$hasher->checkPassword($currentPassword, $userRow['password'])) {
                $message = '当前密码不正确';
                $messageType = 'error';
            } elseif (strlen($password) < 6) {
                $message = '密码长度至少6位';
                $messageType = 'error';
            } elseif ($password !== $confirm) {
                $message = '两次输入的密码不一致';
                $messageType = 'error';
            } elseif ($hasher->checkPassword($password, $userRow['password'])) {
                $message = '新密码不能与当前密码相同';
                $messageType = 'error';
            } else {
                $hash = $hasher->hashPassword($password);
                $db->query($db->update('table.users')->rows(['password' => $hash])->where('uid = ?', $user->uid));
                $this->response->redirect($this->request->getRequestUrl());
                exit;
            }
        }
    }
}
}

$this->hideThemeSidebar = true;

$this->need('header.php');

if (empty($tab)) {
    $tab = $this->request->get('tab', 'overview');
}

$userBaseUrl = \Typecho\Common::url('/user', $this->options->index);
$frontendLoginEnabled = Mirai_isUserCenterAuthEnabled($this->options);
$allowRegister = $this->options->allowRegister;
?>

<link rel="stylesheet" href="<?php $this->options->themeUrl('assets/css/mirai.user.css'); ?>?v=<?php echo MIRAI_VERSION; ?>">
<script src="<?php $this->options->themeUrl('assets/js/mirai.user.js'); ?>?v=<?php echo MIRAI_VERSION; ?>" defer></script>

<div class="mirai-user-center container">
    <?php if ($tab !== 'write'):
    if ($isGuest) {
        $_topUid = 0;
        $_topAvatar = Mirai_getDefaultAvatar();
        $_topGroup = '访客';
        $_topVipOn = false;
        $_topIsVip = false;
        $_topVipLevel = 0;
        $_topVipName = '';
        $_topInvite = '';
    } else {
        $_topUid = (int)$this->user->uid;
        $_topAvatar = Mirai_getUserAvatar($_topUid);
        $_topGroups = ['subscriber'=>'订阅者','contributor'=>'贡献者','editor'=>'编辑','administrator'=>'管理员'];
        $_topGroup = isset($_topGroups[$this->user->group]) ? $_topGroups[$this->user->group] : $this->user->group;
        $_topVipOn = function_exists('Mirai_vipEnabled') && Mirai_vipEnabled();
        $_topVipInfo = $_topVipOn ? (function_exists('Mirai_vipGetUserInfo') ? Mirai_vipGetUserInfo($_topUid) : null) : null;
        $_topIsVip = $_topVipInfo && !empty($_topVipInfo['level']) && $_topVipInfo['level'] > 0;
        $_topVipLevel = $_topIsVip ? $_topVipInfo['level'] : 0;
        $_topVipName = $_topIsVip && function_exists('Mirai_vipGetName') ? Mirai_vipGetName($_topVipLevel) : '';
        $_topInvite = function_exists('Mirai_referralGetCode') ? Mirai_referralGetCode($_topUid) : '';
    }
    ?>
    <div class="uc-profile-header">
        <div class="uc-header-bg"></div>
        <div class="uc-header-content">
            <div class="uc-header-main">
                <div class="uc-avatar<?php echo $_topIsVip ? ' is-vip' : ''; ?>">
                    <img src="<?php echo $_topAvatar; ?>" alt="<?php echo $isGuest ? '未登录' : $this->user->screenName; ?>">
                    <?php if($_topIsVip): ?>
                    <div class="uc-avatar-vip-badge level-<?php echo $_topVipLevel; ?>"><i class="ri-vip-crown-fill"></i></div>
                    <?php endif; ?>
                </div>
                <div class="uc-user-info">
                    <div class="uc-name-wrap">
                        <?php if ($isGuest): ?>
                        <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="uc-name" style="color:#fff;text-decoration:none">点击登录</a>
                        <?php else: ?>
                        <h1 class="uc-name"><?php $this->user->screenName(); ?></h1>
                        <span class="uc-id-tag">ID: <?php echo $this->user->uid; ?></span>
                        <?php endif; ?>
                    </div>
                    <div class="uc-tags-row">
                        <?php if ($isGuest): ?>
                        <?php if ($allowRegister): ?>
                        <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('register');}" class="uc-badge uc-badge-vip-upgrade">
                            <i class="ri-user-add-line"></i> 注册账号
                        </a>
                        <?php endif; ?>
                        <?php else: ?>
                        <?php if($_topIsVip): ?>
                        <span class="uc-badge uc-badge-vip level-<?php echo $_topVipLevel; ?>">
                            <i class="ri-vip-diamond-fill"></i> <?php echo htmlspecialchars($_topVipName); ?>
                        </span>
                        <?php elseif($_topVipOn): ?>
                        <a href="<?php echo \Typecho\Common::url('/user/vip',$this->options->index); ?>" class="uc-badge uc-badge-vip-upgrade">
                            <i class="ri-vip-crown-line"></i> 开通会员
                        </a>
                        <?php endif; ?>
                        <span class="uc-badge uc-badge-group">
                            <i class="ri-user-star-line"></i> <?php echo $_topGroup; ?>
                        </span>
                        <?php if($_topInvite): ?>
                        <span class="uc-badge uc-badge-invite" onclick="copyInviteCode(this)" data-code="<?php echo htmlspecialchars($_topInvite,ENT_QUOTES,'UTF-8'); ?>">
                            <i class="ri-gift-line"></i> 邀请码: <?php echo $_topInvite; ?>
                        </span>
                        <?php endif; ?>
                        <?php endif; ?>
                    </div>
                </div>
            </div>
            <?php if (!$isGuest): ?>
            <div class="uc-header-actions">
                <button type="button" class="uc-action-btn" onclick="toggleMobileMore()" title="更多功能">
                    <i class="ri-settings-4-line"></i>
                </button>
            </div>
            <?php endif; ?>
        </div>
    </div>
    <?php endif; ?>

    <?php if ($isGuest): ?>
    <div class="user-center-layout">
        <div class="user-content">
            <div class="uc-overview">
                <?php $_gVipEnabled = function_exists('Mirai_vipEnabled') && Mirai_vipEnabled(); ?>
                <?php if ($_gVipEnabled): ?>
                <div class="ov-promo" onclick="if(window.openLoginModal){openLoginModal('login');}">
                    <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="javascript:;" onclick="event.stopPropagation();if(window.openLoginModal){openLoginModal('login');}" class="ov-promo-btn">立即开通</a>
                </div>
                <?php endif; ?>

                <div class="ov-grid ov-grid-2">
                    <div class="ov-card ov-card-balance" onclick="if(window.openLoginModal){openLoginModal('login');}">
                        <div class="ov-card-label">余额</div>
                        <div class="ov-card-value ov-money">￥0.00</div>
                        <div class="ov-card-hint">点击查看详情 →</div>
                    </div>
                    <?php if (function_exists('Mirai_pointsEnabled') && Mirai_pointsEnabled()): ?>
                    <div class="ov-card ov-card-points" onclick="if(window.openLoginModal){openLoginModal('login');}">
                        <div class="ov-card-label"><?php echo htmlspecialchars(function_exists('Mirai_pointsName') ? Mirai_pointsName() : '积分'); ?></div>
                        <div class="ov-card-value ov-points">0</div>
                        <div class="ov-card-hint">点击查看明细 →</div>
                    </div>
                    <?php endif; ?>
                    <?php if (function_exists('Mirai_levelEnabled') && Mirai_levelEnabled()): ?>
                    <div class="ov-card ov-card-level" onclick="if(window.openLoginModal){openLoginModal('login');}">
                        <div class="ov-level-header"><span class="ov-level-name"><?php echo htmlspecialchars(function_exists('Mirai_levelGetName') ? Mirai_levelGetName(1) : 'LV1'); ?></span></div>
                        <div class="ov-level-bar-wrap"><div class="ov-level-bar" style="width:0%"></div></div>
                        <div class="ov-level-footer"><span>经验 0/???</span><span class="ov-pct">0%</span></div>
                    </div>
                    <?php endif; ?>
                    <?php if ($_gVipEnabled): ?>
                    <div class="ov-card ov-card-vip level-0" onclick="if(window.openLoginModal){openLoginModal('login');}">
                        <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">
                    <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="ov-stat-item">
                        <div class="ov-stat-icon" style="color:#3b82f6;background:rgba(59,130,246,0.08)"><i class="ri-file-text-line"></i></div>
                        <div class="ov-stat-info"><span class="ov-stat-label">文章</span><span class="ov-stat-count">0</span></div>
                    </a>
                    <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="ov-stat-item">
                        <div class="ov-stat-icon" style="color:#22c55e;background:rgba(34,197,94,0.08)"><i class="ri-chat-3-line"></i></div>
                        <div class="ov-stat-info"><span class="ov-stat-label">评论</span><span class="ov-stat-count">0</span></div>
                    </a>
                    <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="ov-stat-item">
                        <div class="ov-stat-icon" style="color:#ec4899;background:rgba(236,72,153,0.08)"><i class="ri-thumb-up-line"></i></div>
                        <div class="ov-stat-info"><span class="ov-stat-label">点赞</span><span class="ov-stat-count">0</span></div>
                    </a>
                    <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="ov-stat-item">
                        <div class="ov-stat-icon" style="color:#06b6d4;background:rgba(6,182,212,0.08)"><i class="ri-star-line"></i></div>
                        <div class="ov-stat-info"><span class="ov-stat-label">收藏</span><span class="ov-stat-count">0</span></div>
                    </a>
                </div>

                <div class="ov-section">
                    <div class="ov-section-header"><h3 class="ov-section-title">快捷操作</h3></div>
                    <div class="ov-actions-row">
                        <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="ov-action-item">
                            <div class="ov-action-icon" style="color:#3b82f6;background:rgba(59,130,246,0.1)"><i class="ri-edit-line"></i></div>
                            <span>发文</span>
                        </a>
                        <?php if ($_gVipEnabled): ?>
                        <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="ov-action-item">
                            <div class="ov-action-icon" style="color:#f59e0b;background:rgba(245,158,11,0.1)"><i class="ri-vip-diamond-line"></i></div>
                            <span>开通会员</span>
                        </a>
                        <?php endif; ?>
                        <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="ov-action-item">
                            <div class="ov-action-icon" style="color:#14b8a6;background:rgba(20,184,166,0.1)"><i class="ri-wallet-3-line"></i></div>
                            <span>钱包</span>
                        </a>
                        <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="ov-action-item">
                            <div class="ov-action-icon" style="color:#6366f1;background:rgba(99,102,241,0.1)"><i class="ri-file-list-2-line"></i></div>
                            <span>订单</span>
                        </a>
                    </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="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="ov-more">全部 →</a>
                        </div>
                        <div class="ov-post-list">
                            <div class="ov-empty"><img src="<?php $this->options->themeUrl('assets/images/no.svg'); ?>" alt="暂无文章">暂无文章</div>
                        </div>
                    </div>

                    <div class="ov-section ov-comments-section">
                        <div class="ov-section-header">
                            <h3 class="ov-section-title">最近评论</h3>
                            <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="ov-more">全部 →</a>
                        </div>
                        <div class="ov-comment-list">
                            <div class="ov-empty"><img src="<?php $this->options->themeUrl('assets/images/no.svg'); ?>" alt="暂无评论">暂无评论</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <nav class="mobile-tab-bar">
        <?php
        $tabItems = Mirai_getUserCenterBottomTabItems();
        $tabActiveMap = [
            '' => ['', 'overview'],
            '/' => ['/'],
            'posts' => ['posts'],
            'wallet' => ['wallet'],
            'comments' => ['comments', 'likes', 'favorites'],
            'profile' => ['profile'],
            'write' => ['write'],
            'orders' => ['orders'],
            'income' => ['income'],
            'password' => ['password'],
            'level' => ['level'],
            'vip' => ['vip'],
            'referral' => ['referral'],
        ];
        foreach ($tabItems as $tItem):
            $tName = $tItem['name'];
            $tUrl = $tItem['url'];
            $tIcon = $tItem['icon'] ?: 'ri-more-fill';
            $isMore = ($tUrl === '#more');
            $isActive = false;

            if ($isMore) {
                $isActiveClass = '';
            } else {
                $tUrlKey = ($tUrl === '/') ? '/' : preg_replace('#^/#', '', $tUrl);
                $activeTabs = isset($tabActiveMap[$tUrlKey]) ? $tabActiveMap[$tUrlKey] : [$tUrlKey];
                $isActive = in_array($tab, $activeTabs);
                $isActiveClass = $isActive ? ' active' : '';

                if (empty($tUrl)) {
                    $finalUrl = $userBaseUrl;
                } elseif ($tUrl === '/') {
                    $finalUrl = $this->options->siteUrl;
                } elseif (strpos($tUrl, 'http') === 0) {
                    $finalUrl = $tUrl;
                } elseif (strpos($tUrl, '/') === 0) {
                    $finalUrl = $tUrl;
                } else {
                    $finalUrl = $userBaseUrl . '/' . $tUrl;
                }
            }
        ?>
        <?php if ($isMore): ?>
        <div class="mobile-tab-item mobile-more-btn<?php echo $isActiveClass; ?>" id="mobileMoreBtn">
            <div class="mobile-tab-icon"><i class="<?php echo htmlspecialchars($tIcon); ?>"></i></div>
            <span><?php echo htmlspecialchars($tName); ?></span>
        </div>
        <?php elseif ($tUrl === '/' || strpos($tUrl, 'http') === 0 || strpos($tUrl, '/') === 0): ?>
        <a href="<?php echo htmlspecialchars($finalUrl); ?>" class="mobile-tab-item<?php echo $isActiveClass; ?>">
            <div class="mobile-tab-icon"><i class="<?php echo htmlspecialchars($tIcon); ?>"></i></div>
            <span><?php echo htmlspecialchars($tName); ?></span>
        </a>
        <?php else: ?>
        <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="mobile-tab-item<?php echo $isActiveClass; ?>">
            <div class="mobile-tab-icon"><i class="<?php echo htmlspecialchars($tIcon); ?>"></i></div>
            <span><?php echo htmlspecialchars($tName); ?></span>
        </a>
        <?php endif; ?>
        <?php endforeach; ?>
    </nav>

    <div class="mobile-more-menu" id="mobileMoreMenu">
        <div class="more-menu-overlay" onclick="toggleMobileMore()"></div>
        <div class="more-menu-content">
            <div class="more-menu-header">
                <span><i class="ri-apps-line"></i> 全部功能</span>
                <i class="ri-close-line" onclick="toggleMobileMore()"></i>
            </div>
            <div class="more-menu-grid">
                <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="more-menu-item">
                    <i class="ri-user-settings-line"></i><span>基本资料</span>
                </a>
                <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="more-menu-item">
                    <i class="ri-edit-line"></i><span>写文章</span>
                </a>
                <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="more-menu-item">
                    <i class="ri-file-list-2-line"></i><span>我的订单</span>
                </a>
                <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="more-menu-item">
                    <i class="ri-money-cny-circle-line"></i><span>收益中心</span>
                </a>
                <?php if (function_exists('Mirai_levelEnabled') && Mirai_levelEnabled()): ?>
                <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="more-menu-item">
                    <i class="ri-bar-chart-grouped-line"></i><span>我的等级</span>
                </a>
                <?php endif; ?>
                <?php if (function_exists('Mirai_vipEnabled') && Mirai_vipEnabled()): ?>
                <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="more-menu-item">
                    <i class="ri-vip-diamond-line"></i><span>开通会员</span>
                </a>
                <?php endif; ?>
                <?php if (function_exists('Mirai_referralIsEnabled') && Mirai_referralIsEnabled()): ?>
                <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="more-menu-item">
                    <i class="ri-share-forward-line"></i><span>推广返佣</span>
                </a>
                <?php endif; ?>
                <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="more-menu-item">
                    <i class="ri-thumb-up-line"></i><span>我的点赞</span>
                </a>
                <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="more-menu-item">
                    <i class="ri-star-line"></i><span>我的收藏</span>
                </a>
                <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="more-menu-item">
                    <i class="ri-lock-password-line"></i><span>修改密码</span>
                </a>
            </div>
            <div class="more-menu-footer">
                <a href="<?php echo $this->options->siteUrl; ?>" class="more-menu-home"><i class="ri-home-4-line"></i>返回首页</a>
                <a href="javascript:;" onclick="if(window.openLoginModal){openLoginModal('login');}" class="more-menu-logout"><i class="ri-login-box-line"></i>登录账号</a>
            </div>
        </div>
    </div>

    <?php else: ?>

    <div class="user-center-layout <?php echo $tab === 'write' ? 'is-write-mode' : ''; ?>">
        <?php if ($tab !== 'write'): ?>
        <?php require __DIR__ . '/sidebar.php'; ?>
        <?php endif; ?>
        
        <div class="user-content">
            <?php 
            $allowedTabs = ['overview', 'posts', 'write', 'orders', 'wallet', 'income', 'comments', 'likes', 'favorites', 'profile', 'password', 'referral', 'level'];
            if (function_exists('Mirai_vipEnabled') && Mirai_vipEnabled()) {
                $allowedTabs[] = 'vip';
            }
            if (function_exists('Mirai_referralIsEnabled') && Mirai_referralIsEnabled()) {
                if (!in_array('referral', $allowedTabs)) $allowedTabs[] = 'referral';
            }
            if (function_exists('Mirai_levelEnabled') && Mirai_levelEnabled()) {
                if (!in_array('level', $allowedTabs)) $allowedTabs[] = 'level';
            }
            
            if (in_array($tab, $allowedTabs)) {
                require __DIR__ . '/' . $tab . '.php';
            } else {
                require __DIR__ . '/overview.php';
            }
            ?>
        </div>
    </div>

    <nav class="mobile-tab-bar">
        <?php
        $tabItems = Mirai_getUserCenterBottomTabItems();
        $tabActiveMap = [
            '' => ['', 'overview'],
            '/' => ['/'],
            'posts' => ['posts'],
            'wallet' => ['wallet'],
            'comments' => ['comments', 'likes', 'favorites'],
            'profile' => ['profile'],
            'write' => ['write'],
            'orders' => ['orders'],
            'income' => ['income'],
            'password' => ['password'],
            'level' => ['level'],
            'vip' => ['vip'],
            'referral' => ['referral'],
        ];
        foreach ($tabItems as $tItem):
            $tName = $tItem['name'];
            $tUrl = $tItem['url'];
            $tIcon = $tItem['icon'] ?: 'ri-more-fill';
            $isMore = ($tUrl === '#more');
            $isActive = false;

            if ($isMore) {
                $isActiveClass = '';
            } else {
                $tUrlKey = ($tUrl === '/') ? '/' : preg_replace('#^/#', '', $tUrl);
                $activeTabs = isset($tabActiveMap[$tUrlKey]) ? $tabActiveMap[$tUrlKey] : [$tUrlKey];
                $isActive = in_array($tab, $activeTabs);
                $isActiveClass = $isActive ? ' active' : '';

                if (empty($tUrl)) {
                    $finalUrl = $userBaseUrl;
                } elseif ($tUrl === '/') {
                    $finalUrl = $this->options->siteUrl;
                } elseif (strpos($tUrl, 'http') === 0) {
                    $finalUrl = $tUrl;
                } elseif (strpos($tUrl, '/') === 0) {
                    $finalUrl = $tUrl;
                } else {
                    $finalUrl = $userBaseUrl . '/' . $tUrl;
                }
            }
        ?>
        <?php if ($isMore): ?>
        <div class="mobile-tab-item mobile-more-btn<?php echo $isActiveClass; ?>" id="mobileMoreBtn">
            <div class="mobile-tab-icon"><i class="<?php echo htmlspecialchars($tIcon); ?>"></i></div>
            <span><?php echo htmlspecialchars($tName); ?></span>
        </div>
        <?php else: ?>
        <a href="<?php echo htmlspecialchars($finalUrl); ?>" class="mobile-tab-item<?php echo $isActiveClass; ?>">
            <div class="mobile-tab-icon"><i class="<?php echo htmlspecialchars($tIcon); ?>"></i></div>
            <span><?php echo htmlspecialchars($tName); ?></span>
        </a>
        <?php endif; ?>
        <?php endforeach; ?>
    </nav>

    <div class="mobile-more-menu" id="mobileMoreMenu">
        <div class="more-menu-overlay" onclick="toggleMobileMore()"></div>
        <div class="more-menu-content">
            <div class="more-menu-header">
                <span><i class="ri-apps-line"></i> 全部功能</span>
                <i class="ri-close-line" onclick="toggleMobileMore()"></i>
            </div>
            <div class="more-menu-grid">
                <a href="<?php echo $userBaseUrl; ?>/profile" class="more-menu-item <?php echo $tab === 'profile' ? 'active' : ''; ?>">
                    <i class="ri-user-settings-line"></i><span>基本资料</span>
                </a>
                <a href="<?php echo $userBaseUrl; ?>/write" class="more-menu-item <?php echo $tab === 'write' ? 'active' : ''; ?>">
                    <i class="ri-edit-line"></i><span>写文章</span>
                </a>
                <a href="<?php echo $userBaseUrl; ?>/orders" class="more-menu-item <?php echo $tab === 'orders' ? 'active' : ''; ?>">
                    <i class="ri-file-list-2-line"></i><span>我的订单</span>
                </a>
                <a href="<?php echo $userBaseUrl; ?>/income" class="more-menu-item <?php echo $tab === 'income' ? 'active' : ''; ?>">
                    <i class="ri-money-cny-circle-line"></i><span>收益中心</span>
                </a>
                <?php if (function_exists('Mirai_levelEnabled') && Mirai_levelEnabled()): ?>
                <a href="<?php echo $userBaseUrl; ?>/level" class="more-menu-item <?php echo $tab === 'level' ? 'active' : ''; ?>">
                    <i class="ri-bar-chart-grouped-line"></i><span>我的等级</span>
                </a>
                <?php endif; ?>
                <?php
                $_menuVipInfo = null;
                $_menuVipEnabled = function_exists('Mirai_vipEnabled') && Mirai_vipEnabled();
                if ($_menuVipEnabled) {
                    $_menuVipInfo = function_exists('Mirai_vipGetUserInfo') ? Mirai_vipGetUserInfo((int)$this->user->uid) : null;
                }
                ?>
                <?php if ($_menuVipEnabled): ?>
                <a href="<?php echo $userBaseUrl; ?>/vip" class="more-menu-item <?php echo $tab === 'vip' ? 'active' : ''; ?>">
                    <i class="ri-vip-diamond-line"></i><span><?php echo ($_menuVipInfo && !empty($_menuVipInfo['level']) && $_menuVipInfo['level'] > 0) ? '会员中心' : '开通会员'; ?></span>
                </a>
                <?php endif; ?>
                <?php if (function_exists('Mirai_referralIsEnabled') && Mirai_referralIsEnabled()): ?>
                <a href="<?php echo $userBaseUrl; ?>/referral" class="more-menu-item <?php echo $tab === 'referral' ? 'active' : ''; ?>">
                    <i class="ri-share-forward-line"></i><span>推广返佣</span>
                </a>
                <?php endif; ?>
                <a href="<?php echo $userBaseUrl; ?>/likes" class="more-menu-item <?php echo $tab === 'likes' ? 'active' : ''; ?>">
                    <i class="ri-thumb-up-line"></i><span>我的点赞</span>
                </a>
                <a href="<?php echo $userBaseUrl; ?>/favorites" class="more-menu-item <?php echo $tab === 'favorites' ? 'active' : ''; ?>">
                    <i class="ri-star-line"></i><span>我的收藏</span>
                </a>
                <a href="<?php echo $userBaseUrl; ?>/password" class="more-menu-item <?php echo $tab === 'password' ? 'active' : ''; ?>">
                    <i class="ri-lock-password-line"></i><span>修改密码</span>
                </a>
            </div>
            <div class="more-menu-footer">
                <a href="<?php echo $this->options->siteUrl; ?>" class="more-menu-home"><i class="ri-home-4-line"></i>返回首页</a>
                <a href="<?php echo $this->options->logoutUrl(); ?>" class="more-menu-logout"><i class="ri-logout-box-r-line"></i>退出登录</a>
            </div>
        </div>
    </div>
    <?php endif; ?>
</div>

<?php $this->need('footer.php'); ?>
