2.1 版本文件

This commit is contained in:
2026-08-14 10:55:06 +08:00
commit a3434ec620
67 changed files with 12559 additions and 0 deletions
+109
View File
@@ -0,0 +1,109 @@
<?php
// 邀请好友:展示我的邀请码 / 邀请链接 / 邀请记录
require __DIR__ . '/includes/init.php';
requireLogin('invite.php');
$pageTitle = '邀请好友';
$user = currentUser();
$enabled = getSetting('points_enabled', '1') === '1';
$invPts = max(0, (int) getSetting('points_invite', '20'));
// 老用户(注册时尚未有邀请码)补一个
$myInviteCode = $user['invite_code'] ?? '';
if ($myInviteCode === '') {
$myInviteCode = genInviteCode();
db()->prepare('UPDATE ' . tn('users') . ' SET invite_code = ? WHERE id = ?')
->execute([$myInviteCode, $user['id']]);
}
$link = siteBaseUrl() . '/login.php?mode=register&inv=' . rawurlencode($myInviteCode);
// 邀请记录:谁通过我的邀请码注册
$stmt = db()->prepare(
'SELECT username, nickname, created_at FROM ' . tn('users') . ' WHERE invited_by = ? ORDER BY created_at DESC'
);
$stmt->execute([$user['id']]);
$invited = $stmt->fetchAll();
$earned = $invPts * count($invited);
?>
<?php require 'includes/header.php'; ?>
<section class="section">
<h2 class="sec-title"><i class="fas fa-gift"></i> 邀请好友</h2>
<?php if (!$enabled): ?>
<p class="form-err">积分系统当前已关闭,邀请功能暂不可用。</p>
<?php else: ?>
<div class="invite-card">
<div class="invite-head">
<div class="invite-reward">每成功邀请 1 位好友注册,你可得 <strong><?= $invPts ?></strong> 积分</div>
<div class="invite-earned">已成功邀请 <strong><?= count($invited) ?></strong> 人,累计获得 <strong><?= $earned ?></strong> 积分</div>
</div>
<div class="invite-code-box">
<div class="ic-label">我的邀请码</div>
<div class="ic-code" id="invCode"><?= h($myInviteCode) ?></div>
<button type="button" class="mini-btn" id="copyCode">复制邀请码</button>
</div>
<div class="invite-link-box">
<div class="ic-label">邀请链接(发给好友,通过它注册你和好友都算)</div>
<div class="invite-link-row">
<input type="text" id="invLink" value="<?= h($link) ?>" readonly>
<button type="button" class="mini-btn" id="copyLink">复制链接</button>
</div>
</div>
<div class="invite-tip muted">
<i class="fas fa-info-circle"></i> 好友通过你的邀请链接注册成功,系统会自动给你的账号加上积分,无需手动操作。
</div>
</div>
<div class="panel">
<h3>邀请记录(<?= count($invited) ?> 人)</h3>
<?php if (empty($invited)): ?>
<p class="empty">还没有好友通过你的邀请注册,快分享链接试试吧~</p>
<?php else: ?>
<table class="data-table">
<thead><tr><th>用户名</th><th>昵称</th><th>注册时间</th><th>奖励</th></tr></thead>
<tbody>
<?php foreach ($invited as $f): ?>
<tr>
<td><?= h($f['username']) ?></td>
<td><?= h($f['nickname'] ?: '—') ?></td>
<td><?= date('Y-m-d H:i', strtotime($f['created_at'])) ?></td>
<td><span class="badge-on">+<?= $invPts ?> 积分</span></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php endif; ?>
</div>
<?php endif; ?>
</section>
<script>
(function () {
function copy(text, btn) {
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(text).then(function () {
var old = btn.textContent;
btn.textContent = '已复制';
setTimeout(function () { btn.textContent = old; }, 1500);
});
} else {
var ta = document.createElement('textarea');
ta.value = text; document.body.appendChild(ta); ta.select();
try { document.execCommand('copy'); } catch (e) {}
document.body.removeChild(ta);
}
}
var code = document.getElementById('copyCode');
if (code) code.addEventListener('click', function () {
copy(document.getElementById('invCode').textContent.trim(), code);
});
var link = document.getElementById('copyLink');
if (link) link.addEventListener('click', function () {
copy(document.getElementById('invLink').value, link);
});
})();
</script>
<?php require 'includes/footer.php'; ?>