<?php
require_once 'config/config.php';
require_once 'config/database.php';
require_once 'config/functions.php';
require_once 'config/encryption.php';
require_once 'config/session.php';
require_once 'config/logger.php';
require_once 'config/auth.php';

// 需要登录
requireLogin();

$db = Database::getInstance();
$session = Session::getInstance();
$logger = Logger::getInstance();

$user_id = $session->getUserId();

// 获取用户信息
$stmt = $db->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$user_id]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$user) {
    error_log("No user found with ID: " . $user_id);
    $session->setFlash('用户不存在', 'danger');
    header('Location: index.php');
    exit;
}

// 在页面顶部添加调试信息
if (DEBUG) {
    error_log("User ID: " . $user_id);
    error_log("User data: " . print_r($user, true));
}

// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    try {
        $email = trim($_POST['email']);
        $phone = trim($_POST['phone']);
        $current_password = $_POST['current_password'] ?? '';
        $new_password = $_POST['new_password'] ?? '';
        $confirm_password = $_POST['confirm_password'] ?? '';
        
        // 开始事务
        $db->begin_transaction();
        
        try {
            // 更新基本信息
            $stmt = $db->prepare("
                UPDATE users 
                SET email = ?, 
                    phone = ?, 
                    updated_at = NOW()
                WHERE id = ?
            ");
            
            $stmt->execute([$email, $phone, $user_id]);
            
            // 如果要修改密码
            if (!empty($new_password)) {
                // 验证当前密码
                $stmt = $db->prepare("SELECT password FROM users WHERE id = ?");
                $stmt->execute([$user_id]);
                $user = $stmt->fetch(PDO::FETCH_ASSOC);
                
                if (!password_verify($current_password, $user['password'])) {
                    throw new Exception('当前密码错误');
                }
                
                // 验证新密码
                if (strlen($new_password) < 6) {
                    throw new Exception('新密码长度不能少于6位');
                }
                
                if ($new_password !== $confirm_password) {
                    throw new Exception('两次输入的新密码不一致');
                }
                
                // 更新密码
                $password_hash = password_hash($new_password, PASSWORD_DEFAULT);
                $stmt = $db->prepare("
                    UPDATE users 
                    SET password = ?, 
                        updated_at = NOW() 
                    WHERE id = ?
                ");
                
                $stmt->execute([$password_hash, $user_id]);
                
                // 记录密码修改日志
                $logger->log('password_change', '用户修改了密码');
            }
            
            $db->commit();
            $session->setFlash('个人资料更新成功');
            
            // 记录操作日志
            $logger->log('profile_update', '用户更新了个人资料');
            
            header('Location: profile.php');
            exit;
            
        } catch (Exception $e) {
            $db->rollback();
            throw $e;
        }
        
    } catch (Exception $e) {
        $session->setFlash($e->getMessage(), 'danger');
    }
}

$page_title = '个人资料';
include 'templates/header.php';
?>

<div class="container-fluid mt-4">
    <div class="row">
        <!-- 左侧导航 -->
        <div class="col-md-2">
            <?php 
            if ($session->getRole() === 'admin' && strpos($_SERVER['PHP_SELF'], '/admin/') !== false) {
                include 'templates/admin/sidebar.php';
            } else {
                include 'templates/sidebar.php';
            }
            ?>
        </div>
        
        <!-- 主内容区 -->
        <div class="col-md-10">
            <div class="card">
                <div class="card-header">
                    <h5 class="mb-0">个人资料</h5>
                </div>
                <div class="card-body">
                    <form method="post">
                        <!-- 基本信息 -->
                        <div class="row mb-4">
                            <div class="col-12">
                                <h6 class="border-bottom pb-2">基本信息</h6>
                            </div>
                            
                            <div class="col-md-4">
                                <div class="mb-3">
                                    <label class="form-label">用户名</label>
                                    <input type="text" class="form-control" value="<?php echo htmlspecialchars($user['username']); ?>" readonly>
                                    <div class="form-text">用户名不可修改</div>
                                </div>
                            </div>
                            
                            <div class="col-md-4">
                                <div class="mb-3">
                                    <label class="form-label">邮箱</label>
                                    <input type="email" name="email" class="form-control" 
                                           value="<?php echo htmlspecialchars($user['email']); ?>" required>
                                </div>
                            </div>
                            
                            <div class="col-md-4">
                                <div class="mb-3">
                                    <label class="form-label">手机号码</label>
                                    <input type="tel" name="phone" class="form-control" 
                                           value="<?php echo htmlspecialchars($user['phone']); ?>" required>
                                </div>
                            </div>
                        </div>

                        <!-- 密码修改 -->
                        <div class="row mb-4">
                            <div class="col-12">
                                <h6 class="border-bottom pb-2">密码修改</h6>
                            </div>
                            
                            <div class="col-md-4">
                                <div class="mb-3">
                                    <label class="form-label">当前密码</label>
                                    <input type="password" name="current_password" class="form-control">
                                </div>
                            </div>
                            
                            <div class="col-md-4">
                                <div class="mb-3">
                                    <label class="form-label">新密码</label>
                                    <input type="password" name="new_password" class="form-control" minlength="6">
                                </div>
                            </div>
                            
                            <div class="col-md-4">
                                <div class="mb-3">
                                    <label class="form-label">确认新密码</label>
                                    <input type="password" name="confirm_password" class="form-control" minlength="6">
                                </div>
                            </div>
                        </div>

                        <!-- 按钮 -->
                        <div class="mt-4">
                            <button type="submit" class="btn btn-primary">保存更改</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

<?php include 'templates/footer.php'; ?> 