本文由 FlintHub 开发文档归档发布。原始文档日期见标题前缀,来源:暂存20260913/docs/品牌重命名与MySQL清理改造计划 (2).md。
FlintHub(原 SoSite)— MySQL 残留清理 + 品牌重命名检查结果与改造计划
文档状态:待确认(2026-08-13)
目标:① 清理全部 MySQL 相关残留(纯 SQLite 化收尾)② 品牌重命名:
sosite→flinthub,so(sosite 缩写)→fh③ 版本号统一为 1.0.0原则:只改代码/注释/配置/文档,不改用户数据(
data/extern/、data/bucket/中帖子正文属用户内容,含历史 SoSite/MySQL 字样,一律不动)
一、MySQL 残留清单(已全库扫描确认)
1.1 活动代码残留
| # | 文件 | 残留内容 | 处置 |
|---|---|---|---|
| M1 | app/Helpers/Search.php | 整段 MySQL FULLTEXT 死代码:initFTS()/isFTSAvailable()(查 information_schema.statistics,SQLite 下必然失败)、searchMySQLFulltext()(私有,无调用方,MATCH...AGAINST 语法)、rebuildFTS()(@deprecated 无调用方,ALTER TABLE ... FULLTEXT 在 SQLite 必报错)、syncThreadFTS()/syncBlogFTS()(空实现 + MySQL 注释) | 删除死代码;sync*FTS 有 6 处调用点(PostController/ThreadController/BlogController/Admin ThreadController)→ 一并删除方法与调用点 |
| M2 | app/Core/Database.php:4 | 注释「原 Database(MySQL 单例 PDO)重写为 SplitDB 门面」 | 注释改写(历史说明 → 直接描述当前门面) |
| M3 | app/Views/admin/index.php:146 | 硬编码「数据库: MySQL」 | 改为「SplitDB(SQLite 分片)」(与 DashboardController 一致) |
| M4 | app/Views/admin/maintenance.php:12 | $dbType = $this->getData('dbType', 'mysql') 默认值 mysql,且 MaintenanceController 从未传 dbType → 页面恒显 mysql | 视图改默认/删字段,或控制器传值 |
| M5 | cli/migrate.php | 旧 MySQL 迁移脚本(MIGRATE_DB_* 环境变量 / fastbb 默认连接 / MySqlMigrateSource) | 决策点:迁移工具本身功能即「连旧 MySQL」——保留(作为历史迁移工具)还是删除?建议保留,但加注释声明为一次性工具 |
| M6 | cli/migrate_plugins.php | 同上(插件表迁移) | 同上 |
| M7 | protected/database/legacy/ | 旧 MySQL 初始化死代码归档(init.php/install.php/schema.sql,含 DB_HOST/pdo_mysql 等) | 决策点:P0 曾决策「保留安全备份供查阅」;若彻底清理可删除,建议保留(不属活动源码,无风险) |
| M8 | update/ 镜像目录 | 与根目录同步的 M1~M4 同类残留(Search.php 等 65+ 处) | 与根目录同步修改(哈希比对) |
| M9 | 文档(说明.md、update/CHANGELOG.md、各计划 md) | 历史记录中的 MySQL 描述(迁移过程、DB_* 配置等) | 属历史档案,建议保留原样(可选标注「历史」) |
| — | data/extern/、data/bucket/ | 帖子正文 HTML 中含 MySQL/DB_TYPE=mysql 字样 | 用户数据,不动 |
1.2 已确认无残留
config.php:已无DB_TYPE/DB_HOST/DB_PORT/DB_NAME/DB_USER/DB_PASS/DB_CHARSET(仅SPLITDB_DATA_PATH/SPLITDB_BUCKET_SIZE)install.php:全 SQLite 化(smoke_install.php有断言「无 MySQL 残留」)app/Controllers/Admin/DashboardController.php:getDbVersion()已改sqlite_version()
二、sosite → flinthub 字样分布(已统计)
2.1 统计
| 范围 | 数量 | 说明 |
|---|---|---|
| 根目录 PHP 文件 | 181 个 | 绝大多数是文件头注释 SoSite — 轻量级 PHP 社区系统 |
update/ 镜像 PHP 文件 | 65 个 | 与根目录同步 |
| 资源/视图/配置 | 若干 | 见下方明细 |
2.2 关键功能位(非注释,改动需谨慎)
| # | 位置 | 现状 | 改动 |
|---|---|---|---|
| B1 | config.php | define('SOSITE_VERSION', 'V1.0.0') | 常量改名 FLINTHUB_VERSION(或保留常量名仅改值——决策点) |
| B2 | config.php | MAIL_PASS_KEY = 'SoSite_AES_Key_2026!@#...' | ⚠️ 高风险:此值是 AES-256 加密密钥,改名会破坏已加密的 SMTP 密码(无法解密)。改或留需确认 |
| B3 | config.php | MAIL_FROM_NAME = 'SoSite 论坛'、DEFAULT_SITE_NAME = 'SoSite 精品论坛' | 改 FlintHub;注意站点名存于 DB settings,改常量只影响新装/默认 |
| B4 | install.php | 模板 SOSITE_VERSION、'SoSite 安装向导'、'V1.0.0' | 同步改 |
| B5 | app/Controllers/Admin/DashboardController.php | ['label' => 'SoSite 版本', ...] | 改 FlintHub 版本 |
| B6 | app/Views/layouts/main.php | footer sosite-badge.svg、基于 SoSite 构建、基于SoSite SOSITE_VERSION | 改 flinthub-badge.svg + 文案 |
| B7 | 根目录 sosite-badge.svg | 文件名含 sosite | 改名 flinthub-badge.svg(同步 B6 引用) |
| B8 | app/Views/admin/settings_basic.php | placeholder 如 /sosite | 改 如 /flinthub |
| B9 | 类名 | SoSiteMailer ×2、SoSiteCaptcha_ ×1 | 改 FlintHubMailer / FlintHubCaptcha(同步全部引用) |
| B10 | 文档 | 说明.md(sosite-plugin-dev/ 引用、SoSite-插件仓库开发计划.md) | ⚠️ 扫描确认 sosite-plugin-dev/ 目录不存在(文档引用悬空);相关 md 文件名/内容改或不改需确认 |
2.3 批量注释头(低风险)
- 181 个根目录 PHP 文件头
SoSite — 轻量级 PHP 社区系统→FlintHub — 轻量级 PHP 社区系统 - 对应
update/镜像 65 个文件 - 插件文件头
@package Plugin\...不含 SoSite(命名空间是Plugin\Xxx),无需改
三、so(sosite 缩写)→ fh 使用点(已确认,未误扫普通单词)
说明:只改「作为 sosite 缩写」的
so。普通英文词(some/sort/soft…)、sosite全名、SOSITE全名常量不在此列。已确认无so_PHP 标识符、无so-CSS 类、无Plugin\So命名空间、无/soURL。
| # | 位置 | 现状 | 改动 |
|---|---|---|---|
| S1 | assets/lib/sostate.js | 文件名 + 文件头注释(SoSite 前端状态管理、SoState) | 改名 fhstate.js + 头注释 FlintHub/FhState(⚠️ 实际指令前缀是 x-(Alpine),非 s-,注释里「统一 s- 前缀」是过时设计说明) |
| S2 | assets/lib/soajax.js | 文件名 + 头注释(SoSite AJAX、SoAjax) | 改名 fhajax.js + 头注释(实际 hx- 前缀,htmx) |
| S3 | app/Views/layouts/main.php | 引用 lib/sostate.js、lib/soajax.js,注释 SoState (Alpine.js)、SoAjax (htmx) | 同步 S1/S2 |
| S4 | install.php | <script src="/assets/lib/sostate.js"> | 同步 |
| S5 | update/ 镜像 | update/app/Views/layouts/main.php、update/install.php | 同步 |
| S6 | 文档 | 说明.md、update/CHANGELOG.md、update/队列调度模式改造执行计划.md 提及 sostate.js/SoState/SoAjax | 同步或保留历史 |
四、版本号现状(已确认)
| # | 位置 | 现状 | 处置 |
|---|---|---|---|
| V1 | config.php | SOSITE_VERSION = 'V1.0.0' | ✓ 已是 1.0.0 |
| V2 | install.php 模板 + 安装向导页 | V1.0.0 | ✓ 已是 1.0.0 |
| V3 | update/install.php | V1.0.0 | ✓ 同步 |
| V4 | protected/database/legacy/install.php | V5.0.0 | 旧归档,不动 |
| V5 | 16 个插件 plugin.json | 各自版本(1.0.0~2.0.0) | 插件独立版本,不动 |
| V6 | app/Helpers/Plugin.php | 默认 '1.0.0'(插件版本默认值) | 不动 |
| V7 | app/Views/layouts/main.php | footer SOSITE_VERSION | 随 B1 常量改名同步 |
结论:系统版本已是 1.0.0,无需改值;仅当 B1 决策「常量改名
FLINTHUB_VERSION」时,需同步 V1/V2/V7 及DashboardController引用。
五、改造执行计划(待确认后串行,每步自测)
| # | 任务 | 交付物 | 验证方式 |
|---|---|---|---|
| P1 | MySQL 死代码清理:Search.php 删 initFTS/isFTSAvailable/searchMySQLFulltext/rebuildFTS + syncThreadFTS/syncBlogFTS 及 6 处调用点;admin/index.php 数据库文案;maintenance.php dbType;Database.php 注释 | 4 个活动文件 | php -l;搜索无 `mysql |
| P2 | 常量/配置/视图品牌位(B1~B9):FLINTHUB_VERSION(若确认改名)、MAIL_FROM_NAME、DEFAULT_SITE_NAME、安装向导、Dashboard、footer、badge.svg 改名、settings placeholder、SoSiteMailer/Captcha 类名 | config/install/views/assets | 页面渲染正常;php -l;grep 确认功能位无 sosite |
| P3 | 批量注释头替换:181 个根目录 PHP + 65 个 update 镜像文件头 SoSite — → FlintHub — | 批量替换 | 抽样 diff;php -l 全过 |
| P4 | so→fh:sostate.js→fhstate.js、soajax.js→fhajax.js + 引用点(layouts/main、install.php)+ 注释 SoState→FhState/SoAjax→FhAjax | 2 个改名文件 + 引用点 | 前端 SoState/SoAjax 功能走查(投票/分页/htmx 局部刷新) |
| P5 | 决策项收尾:M5/M6 迁移脚本去留、M7 legacy 去留、B2 MAIL_PASS_KEY 改否、B10 文档引用 | — | 与用户确认后执行 |
| P6 | 交付:update/ 镜像同步 + CHANGELOG.md 追加 | 交付物 | 与根目录 diff 一致;php -l 全过;全库 grep 复检 |
六、风险与红线
- B2 MAIL_PASS_KEY 谨慎:改值 → 已存 SMTP 密码全部无法解密(历史坑)。建议不改(内部密钥常量,非品牌展示位),或确认后同步迁移密码
- B1 常量改名牵连:
SOSITE_VERSION改名需同步 DashboardController、layouts footer、install.php 模板三处;漏改即报未定义常量 - S1/S2 文件改名牵连:改名后所有引用点(2 个视图 + 1 个 install.php)必须同步,否则前端 JS 加载 404
- 用户数据红线:
data/extern/、data/bucket/中帖子正文含 SoSite/MySQL 字样 → 绝不批量替换(会破坏帖子内容) - 插件版本号不动:plugin.json 版本与系统版本独立,勿混改
- 全部文件 UTF-8 no BOM + LF;
php -l校验;update/镜像哈希比对同步
七、待用户确认点
- B1:系统版本常量是否改名
SOSITE_VERSION→FLINTHUB_VERSION?(推荐改,品牌彻底;风险见六-2) - B2:
MAIL_PASS_KEY(AES 密钥,含 SoSite 字样)是否改名?(推荐不改,避免破坏已存 SMTP 密码) - M5/M6:
cli/migrate.php、cli/migrate_plugins.php(旧 MySQL 迁移工具)保留还是删除? - M7:
protected/database/legacy/(旧 MySQL 归档)保留还是删除? - B10:文档中
sosite-plugin-dev/(目录实际不存在)与SoSite-插件仓库开发计划.md的引用如何处理? - 范围:
update/镜像与文档 md(历史记录)是否同步改名,还是仅活动代码?
确认后按 P1→P6 串行执行;未确认项默认按「推荐」执行。