diff --git a/README.md b/README.md index cb660ffe..0b82b35b 100644 --- a/README.md +++ b/README.md @@ -46,17 +46,24 @@ AKSRT-theme/ │ ├── bootstrap.php # 自动加载器(统一 require 所有模块) │ ├── core-hooks.php # 核心功能钩子(Gravatar/SMTP/评论/CPT等) │ │ -│ ├── classes/ # ← 所有类文件集中在此 -│ │ ├── class-aksrt-setup.php # 主题初始化(侧边栏/CPT/菜单支持) -│ │ ├── class-aksrt-scripts.php # 前端/后台资源加载(CSS/JS/内联变量) -│ │ ├── class-aksrt-admin.php # SPA 后台面板(REST API/Vue3容器) -│ │ ├── class-aksrt-settings.php # 设置门面(统一静态入口 + 聚合输出) -│ │ ├── class-aksrt-oauth.php # OAuth 第三方登录 -│ │ ├── class-aksrt-user.php # 用户系统(路由/AJAX资料保存) -│ │ ├── class-aksrt-widgets.php # 小工具 -│ │ ├── class-aksrt-captcha.php # 人机验证集成 -│ │ ├── class-aksrt-moderation.php # 评论审核 -│ │ └── class-aksrt-templates.php # 页面模板注册与加载 +│ ├── classes/ # ← 类文件按领域目录组织 +│ │ ├── core/ # 主题壳层(setup/scripts/templates/SEO/DB…) +│ │ ├── frontend/ # 前端渲染辅助(inline style / custom code…) +│ │ ├── settings/ # 设置门面 + 运行时 delegates +│ │ ├── admin/ # SPA 编排 + 域控制器 + schema + native ops +│ │ ├── auth/ # 登录/OAuth/验证码/审核/邮箱 +│ │ ├── user/ # 用户中心/主页/徽章/等级/关注 +│ │ ├── credits/ # 积分/钱包/签到/邀请 +│ │ ├── content/ # 下载 token / 付费内容 / VIP / 可见性 +│ │ ├── payment/ # 订单/网关/售后/物流/充值卡/分成 +│ │ │ └── gateways/ # 支付宝/微信/PayPal/Stripe +│ │ ├── forum/ # 论坛服务 + 收银台 + meta box +│ │ ├── shop/ # 商城服务 + meta box + 评价 +│ │ ├── sms/ # 短信编排 + 各云厂商 adapter +│ │ ├── ai/ # AI / SEO prompt +│ │ ├── messages/ # 站内信/私信/公告/举报 +│ │ ├── extensions/ # MeiliSearch / 推送 / IP / 内容审核 +│ │ └── widgets/ # 小工具实现 + 注册中心 │ │ │ └── helpers/ # ← 辅助函数文件 │ ├── aksrt-icons.php # SVG 图标系统(读取/缓存/映射) @@ -160,7 +167,7 @@ WordPress 后台左侧 **Admin Bar** → ⚡ **AKSRT 主题设置** - `class-aksrt-settings-category-runtime.php` - `class-aksrt-settings-forum-shop.php` - `class-aksrt-settings-capabilities.php` -- `inc/bootstrap.php` 会先加载 `class-aksrt-settings.php`,再按领域加载这些 delegate 类 +- `inc/bootstrap.php` 会先加载 `settings/class-aksrt-settings.php`,再按领域加载这些 delegate 类 - 新增设置运行时逻辑时,优先放入对应 settings 子类;仅把聚合输出、统一入口和跨域装配保留在 `AKSRT_Settings` ### 添加新辅助函数 diff --git a/inc/bootstrap.php b/inc/bootstrap.php index c5e1091f..2414e6c0 100644 --- a/inc/bootstrap.php +++ b/inc/bootstrap.php @@ -3,10 +3,10 @@ * AKSRT Theme Bootstrap Loader * * 统一加载入口:辅助函数 → 类文件 → 实例初始化 - * 所有 require_once 路径集中管理,方便维护。 + * 类文件按领域目录组织(inc/classes/{domain}/),路径集中在此维护。 * * @package AKSRT - * @version 3.2.0 + * @version 3.4.0 */ defined('ABSPATH') || exit; @@ -16,8 +16,6 @@ defined('ABSPATH') || exit; // 由 AKSRT_Setup::load_textdomain() 处理 // ============================================================ -// ============================================================ -// 阶段1:加载辅助函数(必须在类之前,类会调用这些函数) // ============================================================ // 阶段1:加载辅助函数(必须在类之前,类会调用这些函数) // ============================================================ @@ -59,24 +57,29 @@ require_once AKSRT_DIR . '/inc/helpers/aksrt-shortcodes.php'; // ============================================================ // 阶段2:加载类文件(settings 必须在 admin 之前) +// 领域目录:core / frontend / settings / admin / auth / user / +// credits / content / payment / forum / shop / sms / ai / +// messages / extensions / widgets // ============================================================ -require_once AKSRT_DIR . '/inc/classes/setup-traits/trait-aksrt-setup-part-1.php'; -require_once AKSRT_DIR . '/inc/classes/setup-traits/trait-aksrt-setup-part-2.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-setup.php'; -require_once AKSRT_DIR . '/inc/classes/scripts-traits/trait-aksrt-scripts-part-1b.php'; -require_once AKSRT_DIR . '/inc/classes/scripts-traits/trait-aksrt-scripts-part-2.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-scripts.php'; + +// --- core: setup / scripts / frontend render helpers --- +require_once AKSRT_DIR . '/inc/classes/core/setup-traits/trait-aksrt-setup-part-1.php'; +require_once AKSRT_DIR . '/inc/classes/core/setup-traits/trait-aksrt-setup-part-2.php'; +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-setup.php'; +require_once AKSRT_DIR . '/inc/classes/core/scripts-traits/trait-aksrt-scripts-part-1b.php'; +require_once AKSRT_DIR . '/inc/classes/core/scripts-traits/trait-aksrt-scripts-part-2.php'; +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-scripts.php'; require_once AKSRT_DIR . '/inc/classes/frontend/class-aksrt-inline-style-builder.php'; require_once AKSRT_DIR . '/inc/classes/frontend/class-aksrt-custom-code-renderer.php'; require_once AKSRT_DIR . '/inc/classes/frontend/class-aksrt-loading-overlay-renderer.php'; + +// --- settings: groups + runtime delegates + facade --- require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-domain-groups.php'; require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-display-page-groups.php'; require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-credits-payment-groups.php'; require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-category-integration-groups.php'; require_once AKSRT_DIR . '/inc/classes/settings/trait-aksrt-settings-auth-reader.php'; require_once AKSRT_DIR . '/inc/classes/settings/trait-aksrt-settings-homepage-reader.php'; - -// Settings facade delegates(按领域分组加载,必须早于 admin) require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-mail.php'; require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-theme-search.php'; require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-post-display.php'; @@ -90,8 +93,9 @@ require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-integration require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-extension-runtime.php'; require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-forum-shop.php'; require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-capabilities.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-settings.php'; -// 加载后台控制器基类和业务域控制器(必须在 admin 之前) +require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings.php'; + +// --- admin: SPA controllers + schema + native ops --- require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-controller-base.php'; require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-user-controller-invite-operations.php'; require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-user-controller-report-operations.php'; @@ -157,26 +161,12 @@ require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-for require_once AKSRT_DIR . '/inc/classes/admin/import-export-traits/trait-aksrt-admin-import-export-controller-part-1.php'; require_once AKSRT_DIR . '/inc/classes/admin/import-export-traits/trait-aksrt-admin-import-export-controller-part-2.php'; require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-import-export-controller.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-shop-controller-product-admin-columns.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-shop-controller-frontend-flow-operations.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-shop-controller-product-operations.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-shop-controller-order-operations.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-shop-controller-fulfillment-operations.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-shop-controller-coupon-gateway-operations.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-shop-controller-variant-export-operations.php'; require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-shop-controller.php'; require_once AKSRT_DIR . '/inc/classes/admin/forum-ctrl-traits/trait-aksrt-admin-forum-controller-part-1.php'; require_once AKSRT_DIR . '/inc/classes/admin/forum-ctrl-traits/trait-aksrt-admin-forum-controller-part-2.php'; require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-forum-controller.php'; require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-extension-controller.php'; require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-comment-controller.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-comment-actions.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-go-redirect.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-site-notice.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-api-audit.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-meilisearch.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-update-checker.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-category-rewrite.php'; require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-message-controller.php'; require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-pay-menus.php'; require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-pay-coupons.php'; @@ -190,142 +180,111 @@ require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-pay-withdr require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-pay-income.php'; require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-pay-rebate.php'; require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-users-menus.php'; +require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-admin.php'; +// --- core: presentation / infra shells used by admin + front --- +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-comment-actions.php'; +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-go-redirect.php'; +require_once AKSRT_DIR . '/inc/classes/messages/class-aksrt-site-notice.php'; +require_once AKSRT_DIR . '/inc/classes/extensions/class-aksrt-api-audit.php'; +require_once AKSRT_DIR . '/inc/classes/extensions/class-aksrt-meilisearch.php'; +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-update-checker.php'; +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-category-rewrite.php'; + +// --- auth --- require_once AKSRT_DIR . '/inc/classes/auth/class-aksrt-auth-email-verification.php'; -require_once AKSRT_DIR . '/inc/classes/auth-traits/trait-aksrt-auth-service-part-1a.php'; -require_once AKSRT_DIR . '/inc/classes/auth-traits/trait-aksrt-auth-service-part-1b.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-auth-service.php'; -require_once AKSRT_DIR . '/inc/classes/oauth-traits/trait-aksrt-oauth-part-1.php'; -require_once AKSRT_DIR . '/inc/classes/oauth-traits/trait-aksrt-oauth-part-2.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-oauth.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-oauth-proxy-client.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-oauth-proxy-server.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-captcha.php'; -require_once AKSRT_DIR . '/inc/classes/moderation-traits/trait-aksrt-moderation-part-1.php'; -require_once AKSRT_DIR . '/inc/classes/moderation-traits/trait-aksrt-moderation-part-2.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-moderation.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-user.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-user-center.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-user-home.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-user-restriction.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-auth-router.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-templates.php'; +require_once AKSRT_DIR . '/inc/classes/auth/auth-traits/trait-aksrt-auth-service-part-1a.php'; +require_once AKSRT_DIR . '/inc/classes/auth/auth-traits/trait-aksrt-auth-service-part-1b.php'; +require_once AKSRT_DIR . '/inc/classes/auth/class-aksrt-auth-service.php'; +require_once AKSRT_DIR . '/inc/classes/auth/oauth-traits/trait-aksrt-oauth-part-1.php'; +require_once AKSRT_DIR . '/inc/classes/auth/oauth-traits/trait-aksrt-oauth-part-2.php'; +require_once AKSRT_DIR . '/inc/classes/auth/class-aksrt-oauth.php'; +require_once AKSRT_DIR . '/inc/classes/auth/class-aksrt-oauth-proxy-client.php'; +require_once AKSRT_DIR . '/inc/classes/auth/class-aksrt-oauth-proxy-server.php'; +require_once AKSRT_DIR . '/inc/classes/auth/class-aksrt-captcha.php'; +require_once AKSRT_DIR . '/inc/classes/auth/moderation-traits/trait-aksrt-moderation-part-1.php'; +require_once AKSRT_DIR . '/inc/classes/auth/moderation-traits/trait-aksrt-moderation-part-2.php'; +require_once AKSRT_DIR . '/inc/classes/auth/class-aksrt-moderation.php'; +require_once AKSRT_DIR . '/inc/classes/auth/class-aksrt-auth-router.php'; +require_once AKSRT_DIR . '/inc/classes/auth/class-aksrt-email-rollback.php'; -// 加载访问量统计系统 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-stats-tracker.php'; +// --- user --- +require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-user.php'; +require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-user-center.php'; +require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-user-home.php'; +require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-user-restriction.php'; +require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-user-credits-admin.php'; +require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-user-balance-admin.php'; +require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-user-badges.php'; +require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-user-badges-admin.php'; +require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-user-level.php'; +require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-user-metrics.php'; +require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-follow.php'; -// 邮箱回滚(14 天窗口) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-email-rollback.php'; +// --- core: templates + stats + DB migrator --- +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-templates.php'; +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-stats-tracker.php'; +require_once AKSRT_DIR . '/inc/classes/core/db-traits/trait-aksrt-db-migrator-part-2.php'; +require_once AKSRT_DIR . '/inc/classes/core/db-traits/trait-aksrt-db-migrator-part-3.php'; +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-db-migrator.php'; -// 原生用户菜单:积分管理 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-user-credits-admin.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-user-balance-admin.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-user-badges.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-user-badges-admin.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-user-level.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-user-metrics.php'; +// --- credits / wallet --- +require_once AKSRT_DIR . '/inc/classes/credits/class-aksrt-credits.php'; +require_once AKSRT_DIR . '/inc/classes/credits/class-aksrt-balance.php'; +require_once AKSRT_DIR . '/inc/classes/credits/class-aksrt-balance-service.php'; +require_once AKSRT_DIR . '/inc/classes/credits/class-aksrt-points-free.php'; +require_once AKSRT_DIR . '/inc/classes/credits/class-aksrt-credits-earn.php'; +require_once AKSRT_DIR . '/inc/classes/credits/class-aksrt-signin.php'; +require_once AKSRT_DIR . '/inc/classes/credits/class-aksrt-invite.php'; -// 加载数据表迁移器(CMS / 积分 / 下载 token) -require_once AKSRT_DIR . '/inc/classes/db-traits/trait-aksrt-db-migrator-part-2.php'; -require_once AKSRT_DIR . '/inc/classes/db-traits/trait-aksrt-db-migrator-part-3.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-db-migrator.php'; +// --- content pay / download / VIP --- +require_once AKSRT_DIR . '/inc/classes/content/class-aksrt-download.php'; +require_once AKSRT_DIR . '/inc/classes/content/class-aksrt-content-pay.php'; +require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-topic-pay.php'; +require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-plate-follow-pay.php'; +require_once AKSRT_DIR . '/inc/classes/content/class-aksrt-vip-service.php'; +require_once AKSRT_DIR . '/inc/classes/content/class-aksrt-download-state.php'; +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-docs-presenter.php'; +// CMS 首页模块(类存在;模板侧目前主要通过 helpers 渲染) +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-home-modules.php'; +require_once AKSRT_DIR . '/inc/classes/content/class-aksrt-content-visibility.php'; -// 加载积分服务 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-credits.php'; -// 站内现金钱包(与积分分离) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-balance.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-balance-service.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-points-free.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-credits-earn.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-signin.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-invite.php'; +// --- extensions --- +require_once AKSRT_DIR . '/inc/classes/extensions/class-aksrt-ip-geo.php'; +require_once AKSRT_DIR . '/inc/classes/extensions/class-aksrt-content-audit.php'; +require_once AKSRT_DIR . '/inc/classes/extensions/class-aksrt-search-push.php'; -// 加载下载服务(CMS / 资源 token 流程) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-download.php'; +// --- sms --- +require_once AKSRT_DIR . '/inc/classes/sms/class-aksrt-sms-signature-helper.php'; +require_once AKSRT_DIR . '/inc/classes/sms/class-aksrt-sms-provider.php'; +require_once AKSRT_DIR . '/inc/classes/sms/class-aksrt-sms-provider-aliyun.php'; +require_once AKSRT_DIR . '/inc/classes/sms/class-aksrt-sms-provider-tencent.php'; +require_once AKSRT_DIR . '/inc/classes/sms/class-aksrt-sms-provider-huawei.php'; +require_once AKSRT_DIR . '/inc/classes/sms/class-aksrt-sms-provider-custom.php'; +require_once AKSRT_DIR . '/inc/classes/sms/class-aksrt-sms-provider-factory.php'; +require_once AKSRT_DIR . '/inc/classes/sms/class-aksrt-sms.php'; -// 付费内容收银台(post/_aksrt_pay → resource 订单) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-content-pay.php'; +// --- payment --- +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-wechat-notify.php'; +require_once AKSRT_DIR . '/inc/classes/messages/class-aksrt-message.php'; +require_once AKSRT_DIR . '/inc/classes/messages/class-aksrt-private-message.php'; +require_once AKSRT_DIR . '/inc/classes/messages/class-aksrt-report-center.php'; +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-coupon.php'; +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-order.php'; +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-order-repository.php'; +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-payment-gateway.php'; +require_once AKSRT_DIR . '/inc/classes/payment/gateways/class-aksrt-alipay-gateway.php'; +require_once AKSRT_DIR . '/inc/classes/payment/gateways/class-aksrt-wechatpay-gateway.php'; +require_once AKSRT_DIR . '/inc/classes/payment/gateways/class-aksrt-paypal-gateway.php'; +require_once AKSRT_DIR . '/inc/classes/payment/gateways/class-aksrt-stripe-gateway.php'; +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-revenue.php'; +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-creator-revenue.php'; +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-withdrawal.php'; -// 论坛主题收银台(visibility=pay → resource 订单 + 多网关) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-topic-pay.php'; +// --- core: front submit --- +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-front-submit.php'; -// 版块付费关注收银台(plate_follow 订单 + 多网关) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-plate-follow-pay.php'; - -// VIP 开通服务(package → ORDER_PRODUCT_VIP) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-vip-service.php'; - -// 下载状态统一解析器 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-download-state.php'; - -// 文档模式 Presenter(章节树、面包屑、章节导航) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-docs-presenter.php'; - -// 加载 CMS 首页模块系统 - -// 隐藏内容权限系统 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-content-visibility.php'; - -// 扩展服务层:IP 归属地、内容审核、搜索引擎推送 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-ip-geo.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-content-audit.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-search-push.php'; - -// 短信服务(签名助手 + Provider 接口 + Factory + 4 个 Adapter + 编排层) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-sms-signature-helper.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-sms-provider.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-sms-provider-aliyun.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-sms-provider-tencent.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-sms-provider-huawei.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-sms-provider-custom.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-sms-provider-factory.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-sms.php'; - -// 微信通知骨架 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-wechat-notify.php'; - -// 站内消息系统骨架 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-message.php'; - -// 站内私信/会话系统 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-private-message.php'; - -// 举报治理骨架 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-report-center.php'; - -// 关注系统 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-follow.php'; - -// 优惠券系统 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-coupon.php'; - -// 订单系统骨架 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-order.php'; - -// 订单仓储(表存储 + 迁移兼容桥) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-order-repository.php'; - -// 支付网关接口与管理器 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-payment-gateway.php'; -require_once AKSRT_DIR . '/inc/classes/gateways/class-aksrt-alipay-gateway.php'; -require_once AKSRT_DIR . '/inc/classes/gateways/class-aksrt-wechatpay-gateway.php'; -require_once AKSRT_DIR . '/inc/classes/gateways/class-aksrt-paypal-gateway.php'; -require_once AKSRT_DIR . '/inc/classes/gateways/class-aksrt-stripe-gateway.php'; - -// 收益台账 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-revenue.php'; - -// 创作分成结算(监听 aksrt_order_paid,把作者分成写入收益台账) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-creator-revenue.php'; - -// 提现台账 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-withdrawal.php'; - -// 前台投稿系统骨架 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-front-submit.php'; - -// 论坛系统骨架 +// --- forum --- require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-forum-permission-service.php'; require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-forum-draft-service.php'; require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-forum-comment-service.php'; @@ -343,10 +302,9 @@ require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-forum-moderation-servic require_once AKSRT_DIR . '/inc/classes/forum/view-builder-traits/trait-aksrt-forum-view-builder-part-1.php'; require_once AKSRT_DIR . '/inc/classes/forum/view-builder-traits/trait-aksrt-forum-view-builder-part-2.php'; require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-forum-view-builder.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-forum.php'; +require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-forum.php'; -// 商城系统骨架 -// 商城服务层 +// --- shop --- require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-shop-cart-service.php'; require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-shop-checkout-service.php'; require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-shop-address-service.php'; @@ -360,69 +318,46 @@ require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-plate-admin-list.php'; require_once AKSRT_DIR . '/inc/classes/shop/shop-traits/trait-aksrt-shop-part-1.php'; require_once AKSRT_DIR . '/inc/classes/shop/shop-traits/trait-aksrt-shop-part-2.php'; require_once AKSRT_DIR . '/inc/classes/shop/shop-traits/trait-aksrt-shop-part-3.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-shop.php'; +require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-shop.php'; -// 售后服务 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-after-sale.php'; +// --- payment: after-sale / shipping / charge-card / rebate / discount --- +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-after-sale.php'; +require_once AKSRT_DIR . '/inc/classes/payment/shipping-traits/trait-aksrt-shipping-part-1.php'; +require_once AKSRT_DIR . '/inc/classes/payment/shipping-traits/trait-aksrt-shipping-part-2.php'; +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-shipping.php'; +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-charge-card.php'; +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-rebate.php'; +require_once AKSRT_DIR . '/inc/classes/payment/class-aksrt-discount.php'; -// 物流管理 -require_once AKSRT_DIR . '/inc/classes/shipping-traits/trait-aksrt-shipping-part-1.php'; -require_once AKSRT_DIR . '/inc/classes/shipping-traits/trait-aksrt-shipping-part-2.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-shipping.php'; - -// 充值卡系统 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-charge-card.php'; - -// 返佣系统 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-rebate.php'; - -// AI 子系统 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-ai.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-ai-seo.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-ai-prompt.php'; +// --- ai --- +require_once AKSRT_DIR . '/inc/classes/ai/class-aksrt-ai.php'; +require_once AKSRT_DIR . '/inc/classes/ai/class-aksrt-ai-seo.php'; +require_once AKSRT_DIR . '/inc/classes/ai/class-aksrt-ai-prompt.php'; require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-ai-controller.php'; -require_once AKSRT_DIR . '/inc/classes/class-aksrt-seo-meta-box.php'; -// SEO head 单一装配器(站点/单篇 SEO、OG/Twitter、JSON-LD、canonical、robots) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-seo-head.php'; +// --- core: SEO / term / post meta boxes --- +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-seo-meta-box.php'; +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-seo-head.php'; +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-term-meta.php'; +require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-shop-term-meta.php'; +require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-product-review.php'; +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-post-meta-box.php'; +require_once AKSRT_DIR . '/inc/classes/core/class-aksrt-resource-meta-box.php'; -// 分类/标签 term meta(局部配置能力) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-term-meta.php'; - -// 商城 taxonomy term meta + 优惠活动 taxonomy 注册 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-shop-term-meta.php'; - -// 优惠计算引擎 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-discount.php'; - -// 商品评价/评分系统 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-product-review.php'; - -// 文章局部配置 meta box -require_once AKSRT_DIR . '/inc/classes/class-aksrt-post-meta-box.php'; - -// 资源 CPT 编辑器 meta box(仅后台用,前台无副作用) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-resource-meta-box.php'; - -// 加载原有小工具类(用户中心、分类目录、最新文章、标签云) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-widgets-original.php'; - -// 加载新增小工具(热榜文章、多栏目 Tab 切换) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-widgets-new.php'; - -// 加载第一批通用小工具(搜索、公告、最新评论、友链、图标卡片、按钮组、HTML间距) -require_once AKSRT_DIR . '/inc/classes/class-aksrt-widgets-batch1.php'; - -// 自动加载 widgets 目录下的所有小工具文件 +// --- widgets --- +require_once AKSRT_DIR . '/inc/classes/widgets/class-aksrt-widgets-original.php'; +require_once AKSRT_DIR . '/inc/classes/widgets/class-aksrt-widgets-new.php'; +require_once AKSRT_DIR . '/inc/classes/widgets/class-aksrt-widgets-batch1.php'; +// 自动加载 widgets 目录下的所有小工具文件(含 registry 之外的独立 widget) $aksrt_widgets_dir = AKSRT_DIR . '/inc/classes/widgets/'; if (is_dir($aksrt_widgets_dir)) { foreach (glob($aksrt_widgets_dir . 'class-*.php') as $aksrt_widget_file) { + // Registry 文件单独 require,避免与下方显式加载重复声明;glob 会再次命中 + // 但 require_once 幂等,安全。 require_once $aksrt_widget_file; } } - -// 加载小工具注册中心 -require_once AKSRT_DIR . '/inc/classes/class-aksrt-widgets.php'; +require_once AKSRT_DIR . '/inc/classes/widgets/class-aksrt-widgets.php'; // ============================================================ // 阶段3:核心功能模块(Gravatar替换 / SMTP邮件) @@ -474,4 +409,3 @@ add_action('aksrt_email_verification_backfill_batch', function ($offset = 0) { // ============================================================ add_action('admin_init', function () { }, 5); - diff --git a/inc/classes/class-aksrt-admin.php b/inc/classes/admin/class-aksrt-admin.php similarity index 100% rename from inc/classes/class-aksrt-admin.php rename to inc/classes/admin/class-aksrt-admin.php diff --git a/inc/classes/class-aksrt-ai-prompt.php b/inc/classes/ai/class-aksrt-ai-prompt.php similarity index 100% rename from inc/classes/class-aksrt-ai-prompt.php rename to inc/classes/ai/class-aksrt-ai-prompt.php diff --git a/inc/classes/class-aksrt-ai-seo.php b/inc/classes/ai/class-aksrt-ai-seo.php similarity index 100% rename from inc/classes/class-aksrt-ai-seo.php rename to inc/classes/ai/class-aksrt-ai-seo.php diff --git a/inc/classes/class-aksrt-ai.php b/inc/classes/ai/class-aksrt-ai.php similarity index 100% rename from inc/classes/class-aksrt-ai.php rename to inc/classes/ai/class-aksrt-ai.php diff --git a/inc/classes/auth-traits/trait-aksrt-auth-service-part-1a.php b/inc/classes/auth/auth-traits/trait-aksrt-auth-service-part-1a.php similarity index 100% rename from inc/classes/auth-traits/trait-aksrt-auth-service-part-1a.php rename to inc/classes/auth/auth-traits/trait-aksrt-auth-service-part-1a.php diff --git a/inc/classes/auth-traits/trait-aksrt-auth-service-part-1b.php b/inc/classes/auth/auth-traits/trait-aksrt-auth-service-part-1b.php similarity index 100% rename from inc/classes/auth-traits/trait-aksrt-auth-service-part-1b.php rename to inc/classes/auth/auth-traits/trait-aksrt-auth-service-part-1b.php diff --git a/inc/classes/class-aksrt-auth-router.php b/inc/classes/auth/class-aksrt-auth-router.php similarity index 100% rename from inc/classes/class-aksrt-auth-router.php rename to inc/classes/auth/class-aksrt-auth-router.php diff --git a/inc/classes/class-aksrt-auth-service.php b/inc/classes/auth/class-aksrt-auth-service.php similarity index 100% rename from inc/classes/class-aksrt-auth-service.php rename to inc/classes/auth/class-aksrt-auth-service.php diff --git a/inc/classes/class-aksrt-captcha.php b/inc/classes/auth/class-aksrt-captcha.php similarity index 100% rename from inc/classes/class-aksrt-captcha.php rename to inc/classes/auth/class-aksrt-captcha.php diff --git a/inc/classes/class-aksrt-email-rollback.php b/inc/classes/auth/class-aksrt-email-rollback.php similarity index 100% rename from inc/classes/class-aksrt-email-rollback.php rename to inc/classes/auth/class-aksrt-email-rollback.php diff --git a/inc/classes/class-aksrt-moderation.php b/inc/classes/auth/class-aksrt-moderation.php similarity index 100% rename from inc/classes/class-aksrt-moderation.php rename to inc/classes/auth/class-aksrt-moderation.php diff --git a/inc/classes/class-aksrt-oauth-proxy-client.php b/inc/classes/auth/class-aksrt-oauth-proxy-client.php similarity index 100% rename from inc/classes/class-aksrt-oauth-proxy-client.php rename to inc/classes/auth/class-aksrt-oauth-proxy-client.php diff --git a/inc/classes/class-aksrt-oauth-proxy-server.php b/inc/classes/auth/class-aksrt-oauth-proxy-server.php similarity index 100% rename from inc/classes/class-aksrt-oauth-proxy-server.php rename to inc/classes/auth/class-aksrt-oauth-proxy-server.php diff --git a/inc/classes/class-aksrt-oauth.php b/inc/classes/auth/class-aksrt-oauth.php similarity index 100% rename from inc/classes/class-aksrt-oauth.php rename to inc/classes/auth/class-aksrt-oauth.php diff --git a/inc/classes/moderation-traits/trait-aksrt-moderation-part-1.php b/inc/classes/auth/moderation-traits/trait-aksrt-moderation-part-1.php similarity index 100% rename from inc/classes/moderation-traits/trait-aksrt-moderation-part-1.php rename to inc/classes/auth/moderation-traits/trait-aksrt-moderation-part-1.php diff --git a/inc/classes/moderation-traits/trait-aksrt-moderation-part-2.php b/inc/classes/auth/moderation-traits/trait-aksrt-moderation-part-2.php similarity index 100% rename from inc/classes/moderation-traits/trait-aksrt-moderation-part-2.php rename to inc/classes/auth/moderation-traits/trait-aksrt-moderation-part-2.php diff --git a/inc/classes/oauth-traits/trait-aksrt-oauth-part-1.php b/inc/classes/auth/oauth-traits/trait-aksrt-oauth-part-1.php similarity index 100% rename from inc/classes/oauth-traits/trait-aksrt-oauth-part-1.php rename to inc/classes/auth/oauth-traits/trait-aksrt-oauth-part-1.php diff --git a/inc/classes/oauth-traits/trait-aksrt-oauth-part-2.php b/inc/classes/auth/oauth-traits/trait-aksrt-oauth-part-2.php similarity index 100% rename from inc/classes/oauth-traits/trait-aksrt-oauth-part-2.php rename to inc/classes/auth/oauth-traits/trait-aksrt-oauth-part-2.php diff --git a/inc/classes/class-aksrt-content-pay.php b/inc/classes/content/class-aksrt-content-pay.php similarity index 100% rename from inc/classes/class-aksrt-content-pay.php rename to inc/classes/content/class-aksrt-content-pay.php diff --git a/inc/classes/class-aksrt-content-visibility.php b/inc/classes/content/class-aksrt-content-visibility.php similarity index 100% rename from inc/classes/class-aksrt-content-visibility.php rename to inc/classes/content/class-aksrt-content-visibility.php diff --git a/inc/classes/class-aksrt-download-state.php b/inc/classes/content/class-aksrt-download-state.php similarity index 100% rename from inc/classes/class-aksrt-download-state.php rename to inc/classes/content/class-aksrt-download-state.php diff --git a/inc/classes/class-aksrt-download.php b/inc/classes/content/class-aksrt-download.php similarity index 100% rename from inc/classes/class-aksrt-download.php rename to inc/classes/content/class-aksrt-download.php diff --git a/inc/classes/class-aksrt-vip-service.php b/inc/classes/content/class-aksrt-vip-service.php similarity index 100% rename from inc/classes/class-aksrt-vip-service.php rename to inc/classes/content/class-aksrt-vip-service.php diff --git a/inc/classes/class-aksrt-category-rewrite.php b/inc/classes/core/class-aksrt-category-rewrite.php similarity index 100% rename from inc/classes/class-aksrt-category-rewrite.php rename to inc/classes/core/class-aksrt-category-rewrite.php diff --git a/inc/classes/class-aksrt-comment-actions.php b/inc/classes/core/class-aksrt-comment-actions.php similarity index 100% rename from inc/classes/class-aksrt-comment-actions.php rename to inc/classes/core/class-aksrt-comment-actions.php diff --git a/inc/classes/class-aksrt-db-migrator.php b/inc/classes/core/class-aksrt-db-migrator.php similarity index 100% rename from inc/classes/class-aksrt-db-migrator.php rename to inc/classes/core/class-aksrt-db-migrator.php diff --git a/inc/classes/class-aksrt-docs-presenter.php b/inc/classes/core/class-aksrt-docs-presenter.php similarity index 100% rename from inc/classes/class-aksrt-docs-presenter.php rename to inc/classes/core/class-aksrt-docs-presenter.php diff --git a/inc/classes/class-aksrt-front-submit.php b/inc/classes/core/class-aksrt-front-submit.php similarity index 100% rename from inc/classes/class-aksrt-front-submit.php rename to inc/classes/core/class-aksrt-front-submit.php diff --git a/inc/classes/class-aksrt-go-redirect.php b/inc/classes/core/class-aksrt-go-redirect.php similarity index 100% rename from inc/classes/class-aksrt-go-redirect.php rename to inc/classes/core/class-aksrt-go-redirect.php diff --git a/inc/classes/class-aksrt-home-modules.php b/inc/classes/core/class-aksrt-home-modules.php similarity index 100% rename from inc/classes/class-aksrt-home-modules.php rename to inc/classes/core/class-aksrt-home-modules.php diff --git a/inc/classes/class-aksrt-post-meta-box.php b/inc/classes/core/class-aksrt-post-meta-box.php similarity index 100% rename from inc/classes/class-aksrt-post-meta-box.php rename to inc/classes/core/class-aksrt-post-meta-box.php diff --git a/inc/classes/class-aksrt-resource-meta-box.php b/inc/classes/core/class-aksrt-resource-meta-box.php similarity index 100% rename from inc/classes/class-aksrt-resource-meta-box.php rename to inc/classes/core/class-aksrt-resource-meta-box.php diff --git a/inc/classes/class-aksrt-scripts.php b/inc/classes/core/class-aksrt-scripts.php similarity index 100% rename from inc/classes/class-aksrt-scripts.php rename to inc/classes/core/class-aksrt-scripts.php diff --git a/inc/classes/class-aksrt-seo-head.php b/inc/classes/core/class-aksrt-seo-head.php similarity index 100% rename from inc/classes/class-aksrt-seo-head.php rename to inc/classes/core/class-aksrt-seo-head.php diff --git a/inc/classes/class-aksrt-seo-meta-box.php b/inc/classes/core/class-aksrt-seo-meta-box.php similarity index 100% rename from inc/classes/class-aksrt-seo-meta-box.php rename to inc/classes/core/class-aksrt-seo-meta-box.php diff --git a/inc/classes/class-aksrt-setup.php b/inc/classes/core/class-aksrt-setup.php similarity index 100% rename from inc/classes/class-aksrt-setup.php rename to inc/classes/core/class-aksrt-setup.php diff --git a/inc/classes/class-aksrt-stats-tracker.php b/inc/classes/core/class-aksrt-stats-tracker.php similarity index 100% rename from inc/classes/class-aksrt-stats-tracker.php rename to inc/classes/core/class-aksrt-stats-tracker.php diff --git a/inc/classes/class-aksrt-templates.php b/inc/classes/core/class-aksrt-templates.php similarity index 100% rename from inc/classes/class-aksrt-templates.php rename to inc/classes/core/class-aksrt-templates.php diff --git a/inc/classes/class-aksrt-term-meta.php b/inc/classes/core/class-aksrt-term-meta.php similarity index 100% rename from inc/classes/class-aksrt-term-meta.php rename to inc/classes/core/class-aksrt-term-meta.php diff --git a/inc/classes/class-aksrt-update-checker.php b/inc/classes/core/class-aksrt-update-checker.php similarity index 100% rename from inc/classes/class-aksrt-update-checker.php rename to inc/classes/core/class-aksrt-update-checker.php diff --git a/inc/classes/db-traits/trait-aksrt-db-migrator-part-2.php b/inc/classes/core/db-traits/trait-aksrt-db-migrator-part-2.php similarity index 100% rename from inc/classes/db-traits/trait-aksrt-db-migrator-part-2.php rename to inc/classes/core/db-traits/trait-aksrt-db-migrator-part-2.php diff --git a/inc/classes/db-traits/trait-aksrt-db-migrator-part-3.php b/inc/classes/core/db-traits/trait-aksrt-db-migrator-part-3.php similarity index 100% rename from inc/classes/db-traits/trait-aksrt-db-migrator-part-3.php rename to inc/classes/core/db-traits/trait-aksrt-db-migrator-part-3.php diff --git a/inc/classes/scripts-traits/trait-aksrt-scripts-part-1b.php b/inc/classes/core/scripts-traits/trait-aksrt-scripts-part-1b.php similarity index 100% rename from inc/classes/scripts-traits/trait-aksrt-scripts-part-1b.php rename to inc/classes/core/scripts-traits/trait-aksrt-scripts-part-1b.php diff --git a/inc/classes/scripts-traits/trait-aksrt-scripts-part-2.php b/inc/classes/core/scripts-traits/trait-aksrt-scripts-part-2.php similarity index 100% rename from inc/classes/scripts-traits/trait-aksrt-scripts-part-2.php rename to inc/classes/core/scripts-traits/trait-aksrt-scripts-part-2.php diff --git a/inc/classes/setup-traits/trait-aksrt-setup-part-1.php b/inc/classes/core/setup-traits/trait-aksrt-setup-part-1.php similarity index 100% rename from inc/classes/setup-traits/trait-aksrt-setup-part-1.php rename to inc/classes/core/setup-traits/trait-aksrt-setup-part-1.php diff --git a/inc/classes/setup-traits/trait-aksrt-setup-part-2.php b/inc/classes/core/setup-traits/trait-aksrt-setup-part-2.php similarity index 100% rename from inc/classes/setup-traits/trait-aksrt-setup-part-2.php rename to inc/classes/core/setup-traits/trait-aksrt-setup-part-2.php diff --git a/inc/classes/class-aksrt-balance-service.php b/inc/classes/credits/class-aksrt-balance-service.php similarity index 100% rename from inc/classes/class-aksrt-balance-service.php rename to inc/classes/credits/class-aksrt-balance-service.php diff --git a/inc/classes/class-aksrt-balance.php b/inc/classes/credits/class-aksrt-balance.php similarity index 100% rename from inc/classes/class-aksrt-balance.php rename to inc/classes/credits/class-aksrt-balance.php diff --git a/inc/classes/class-aksrt-credits-earn.php b/inc/classes/credits/class-aksrt-credits-earn.php similarity index 100% rename from inc/classes/class-aksrt-credits-earn.php rename to inc/classes/credits/class-aksrt-credits-earn.php diff --git a/inc/classes/class-aksrt-credits.php b/inc/classes/credits/class-aksrt-credits.php similarity index 100% rename from inc/classes/class-aksrt-credits.php rename to inc/classes/credits/class-aksrt-credits.php diff --git a/inc/classes/class-aksrt-invite.php b/inc/classes/credits/class-aksrt-invite.php similarity index 100% rename from inc/classes/class-aksrt-invite.php rename to inc/classes/credits/class-aksrt-invite.php diff --git a/inc/classes/class-aksrt-points-free.php b/inc/classes/credits/class-aksrt-points-free.php similarity index 100% rename from inc/classes/class-aksrt-points-free.php rename to inc/classes/credits/class-aksrt-points-free.php diff --git a/inc/classes/class-aksrt-signin.php b/inc/classes/credits/class-aksrt-signin.php similarity index 100% rename from inc/classes/class-aksrt-signin.php rename to inc/classes/credits/class-aksrt-signin.php diff --git a/inc/classes/class-aksrt-api-audit.php b/inc/classes/extensions/class-aksrt-api-audit.php similarity index 100% rename from inc/classes/class-aksrt-api-audit.php rename to inc/classes/extensions/class-aksrt-api-audit.php diff --git a/inc/classes/class-aksrt-content-audit.php b/inc/classes/extensions/class-aksrt-content-audit.php similarity index 100% rename from inc/classes/class-aksrt-content-audit.php rename to inc/classes/extensions/class-aksrt-content-audit.php diff --git a/inc/classes/class-aksrt-ip-geo.php b/inc/classes/extensions/class-aksrt-ip-geo.php similarity index 100% rename from inc/classes/class-aksrt-ip-geo.php rename to inc/classes/extensions/class-aksrt-ip-geo.php diff --git a/inc/classes/class-aksrt-meilisearch.php b/inc/classes/extensions/class-aksrt-meilisearch.php similarity index 100% rename from inc/classes/class-aksrt-meilisearch.php rename to inc/classes/extensions/class-aksrt-meilisearch.php diff --git a/inc/classes/class-aksrt-search-push.php b/inc/classes/extensions/class-aksrt-search-push.php similarity index 100% rename from inc/classes/class-aksrt-search-push.php rename to inc/classes/extensions/class-aksrt-search-push.php diff --git a/inc/classes/class-aksrt-forum.php b/inc/classes/forum/class-aksrt-forum.php similarity index 99% rename from inc/classes/class-aksrt-forum.php rename to inc/classes/forum/class-aksrt-forum.php index 19fb412c..18d85d94 100644 --- a/inc/classes/class-aksrt-forum.php +++ b/inc/classes/forum/class-aksrt-forum.php @@ -94,7 +94,10 @@ class AKSRT_Forum { private function draft_service(): AKSRT_Forum_Draft_Service { if (!$this->draft_svc) { - require_once __DIR__ . '/forum/class-aksrt-forum-draft-service.php'; + // Draft service is loaded by bootstrap before this class. + if (!class_exists('AKSRT_Forum_Draft_Service', false)) { + require_once __DIR__ . '/class-aksrt-forum-draft-service.php'; + } $this->draft_svc = new AKSRT_Forum_Draft_Service($this); } return $this->draft_svc; diff --git a/inc/classes/class-aksrt-plate-follow-pay.php b/inc/classes/forum/class-aksrt-plate-follow-pay.php similarity index 100% rename from inc/classes/class-aksrt-plate-follow-pay.php rename to inc/classes/forum/class-aksrt-plate-follow-pay.php diff --git a/inc/classes/class-aksrt-topic-pay.php b/inc/classes/forum/class-aksrt-topic-pay.php similarity index 100% rename from inc/classes/class-aksrt-topic-pay.php rename to inc/classes/forum/class-aksrt-topic-pay.php diff --git a/inc/classes/class-aksrt-message.php b/inc/classes/messages/class-aksrt-message.php similarity index 100% rename from inc/classes/class-aksrt-message.php rename to inc/classes/messages/class-aksrt-message.php diff --git a/inc/classes/class-aksrt-private-message.php b/inc/classes/messages/class-aksrt-private-message.php similarity index 100% rename from inc/classes/class-aksrt-private-message.php rename to inc/classes/messages/class-aksrt-private-message.php diff --git a/inc/classes/class-aksrt-report-center.php b/inc/classes/messages/class-aksrt-report-center.php similarity index 100% rename from inc/classes/class-aksrt-report-center.php rename to inc/classes/messages/class-aksrt-report-center.php diff --git a/inc/classes/class-aksrt-site-notice.php b/inc/classes/messages/class-aksrt-site-notice.php similarity index 100% rename from inc/classes/class-aksrt-site-notice.php rename to inc/classes/messages/class-aksrt-site-notice.php diff --git a/inc/classes/class-aksrt-after-sale.php b/inc/classes/payment/class-aksrt-after-sale.php similarity index 100% rename from inc/classes/class-aksrt-after-sale.php rename to inc/classes/payment/class-aksrt-after-sale.php diff --git a/inc/classes/class-aksrt-charge-card.php b/inc/classes/payment/class-aksrt-charge-card.php similarity index 100% rename from inc/classes/class-aksrt-charge-card.php rename to inc/classes/payment/class-aksrt-charge-card.php diff --git a/inc/classes/class-aksrt-coupon.php b/inc/classes/payment/class-aksrt-coupon.php similarity index 100% rename from inc/classes/class-aksrt-coupon.php rename to inc/classes/payment/class-aksrt-coupon.php diff --git a/inc/classes/class-aksrt-creator-revenue.php b/inc/classes/payment/class-aksrt-creator-revenue.php similarity index 100% rename from inc/classes/class-aksrt-creator-revenue.php rename to inc/classes/payment/class-aksrt-creator-revenue.php diff --git a/inc/classes/class-aksrt-discount.php b/inc/classes/payment/class-aksrt-discount.php similarity index 100% rename from inc/classes/class-aksrt-discount.php rename to inc/classes/payment/class-aksrt-discount.php diff --git a/inc/classes/class-aksrt-order-repository.php b/inc/classes/payment/class-aksrt-order-repository.php similarity index 100% rename from inc/classes/class-aksrt-order-repository.php rename to inc/classes/payment/class-aksrt-order-repository.php diff --git a/inc/classes/class-aksrt-order.php b/inc/classes/payment/class-aksrt-order.php similarity index 100% rename from inc/classes/class-aksrt-order.php rename to inc/classes/payment/class-aksrt-order.php diff --git a/inc/classes/class-aksrt-payment-gateway.php b/inc/classes/payment/class-aksrt-payment-gateway.php similarity index 100% rename from inc/classes/class-aksrt-payment-gateway.php rename to inc/classes/payment/class-aksrt-payment-gateway.php diff --git a/inc/classes/class-aksrt-rebate.php b/inc/classes/payment/class-aksrt-rebate.php similarity index 100% rename from inc/classes/class-aksrt-rebate.php rename to inc/classes/payment/class-aksrt-rebate.php diff --git a/inc/classes/class-aksrt-revenue.php b/inc/classes/payment/class-aksrt-revenue.php similarity index 100% rename from inc/classes/class-aksrt-revenue.php rename to inc/classes/payment/class-aksrt-revenue.php diff --git a/inc/classes/class-aksrt-shipping.php b/inc/classes/payment/class-aksrt-shipping.php similarity index 100% rename from inc/classes/class-aksrt-shipping.php rename to inc/classes/payment/class-aksrt-shipping.php diff --git a/inc/classes/class-aksrt-wechat-notify.php b/inc/classes/payment/class-aksrt-wechat-notify.php similarity index 100% rename from inc/classes/class-aksrt-wechat-notify.php rename to inc/classes/payment/class-aksrt-wechat-notify.php diff --git a/inc/classes/class-aksrt-withdrawal.php b/inc/classes/payment/class-aksrt-withdrawal.php similarity index 100% rename from inc/classes/class-aksrt-withdrawal.php rename to inc/classes/payment/class-aksrt-withdrawal.php diff --git a/inc/classes/gateways/class-aksrt-alipay-gateway.php b/inc/classes/payment/gateways/class-aksrt-alipay-gateway.php similarity index 100% rename from inc/classes/gateways/class-aksrt-alipay-gateway.php rename to inc/classes/payment/gateways/class-aksrt-alipay-gateway.php diff --git a/inc/classes/gateways/class-aksrt-paypal-gateway.php b/inc/classes/payment/gateways/class-aksrt-paypal-gateway.php similarity index 100% rename from inc/classes/gateways/class-aksrt-paypal-gateway.php rename to inc/classes/payment/gateways/class-aksrt-paypal-gateway.php diff --git a/inc/classes/gateways/class-aksrt-stripe-gateway.php b/inc/classes/payment/gateways/class-aksrt-stripe-gateway.php similarity index 100% rename from inc/classes/gateways/class-aksrt-stripe-gateway.php rename to inc/classes/payment/gateways/class-aksrt-stripe-gateway.php diff --git a/inc/classes/gateways/class-aksrt-wechatpay-gateway.php b/inc/classes/payment/gateways/class-aksrt-wechatpay-gateway.php similarity index 100% rename from inc/classes/gateways/class-aksrt-wechatpay-gateway.php rename to inc/classes/payment/gateways/class-aksrt-wechatpay-gateway.php diff --git a/inc/classes/shipping-traits/trait-aksrt-shipping-part-1.php b/inc/classes/payment/shipping-traits/trait-aksrt-shipping-part-1.php similarity index 100% rename from inc/classes/shipping-traits/trait-aksrt-shipping-part-1.php rename to inc/classes/payment/shipping-traits/trait-aksrt-shipping-part-1.php diff --git a/inc/classes/shipping-traits/trait-aksrt-shipping-part-2.php b/inc/classes/payment/shipping-traits/trait-aksrt-shipping-part-2.php similarity index 100% rename from inc/classes/shipping-traits/trait-aksrt-shipping-part-2.php rename to inc/classes/payment/shipping-traits/trait-aksrt-shipping-part-2.php diff --git a/inc/classes/class-aksrt-settings.php b/inc/classes/settings/class-aksrt-settings.php similarity index 100% rename from inc/classes/class-aksrt-settings.php rename to inc/classes/settings/class-aksrt-settings.php diff --git a/inc/classes/class-aksrt-product-review.php b/inc/classes/shop/class-aksrt-product-review.php similarity index 100% rename from inc/classes/class-aksrt-product-review.php rename to inc/classes/shop/class-aksrt-product-review.php diff --git a/inc/classes/class-aksrt-shop-term-meta.php b/inc/classes/shop/class-aksrt-shop-term-meta.php similarity index 100% rename from inc/classes/class-aksrt-shop-term-meta.php rename to inc/classes/shop/class-aksrt-shop-term-meta.php diff --git a/inc/classes/class-aksrt-shop.php b/inc/classes/shop/class-aksrt-shop.php similarity index 100% rename from inc/classes/class-aksrt-shop.php rename to inc/classes/shop/class-aksrt-shop.php diff --git a/inc/classes/class-aksrt-sms-provider-aliyun.php b/inc/classes/sms/class-aksrt-sms-provider-aliyun.php similarity index 100% rename from inc/classes/class-aksrt-sms-provider-aliyun.php rename to inc/classes/sms/class-aksrt-sms-provider-aliyun.php diff --git a/inc/classes/class-aksrt-sms-provider-custom.php b/inc/classes/sms/class-aksrt-sms-provider-custom.php similarity index 100% rename from inc/classes/class-aksrt-sms-provider-custom.php rename to inc/classes/sms/class-aksrt-sms-provider-custom.php diff --git a/inc/classes/class-aksrt-sms-provider-factory.php b/inc/classes/sms/class-aksrt-sms-provider-factory.php similarity index 100% rename from inc/classes/class-aksrt-sms-provider-factory.php rename to inc/classes/sms/class-aksrt-sms-provider-factory.php diff --git a/inc/classes/class-aksrt-sms-provider-huawei.php b/inc/classes/sms/class-aksrt-sms-provider-huawei.php similarity index 100% rename from inc/classes/class-aksrt-sms-provider-huawei.php rename to inc/classes/sms/class-aksrt-sms-provider-huawei.php diff --git a/inc/classes/class-aksrt-sms-provider-tencent.php b/inc/classes/sms/class-aksrt-sms-provider-tencent.php similarity index 100% rename from inc/classes/class-aksrt-sms-provider-tencent.php rename to inc/classes/sms/class-aksrt-sms-provider-tencent.php diff --git a/inc/classes/class-aksrt-sms-provider.php b/inc/classes/sms/class-aksrt-sms-provider.php similarity index 100% rename from inc/classes/class-aksrt-sms-provider.php rename to inc/classes/sms/class-aksrt-sms-provider.php diff --git a/inc/classes/class-aksrt-sms-signature-helper.php b/inc/classes/sms/class-aksrt-sms-signature-helper.php similarity index 100% rename from inc/classes/class-aksrt-sms-signature-helper.php rename to inc/classes/sms/class-aksrt-sms-signature-helper.php diff --git a/inc/classes/class-aksrt-sms.php b/inc/classes/sms/class-aksrt-sms.php similarity index 100% rename from inc/classes/class-aksrt-sms.php rename to inc/classes/sms/class-aksrt-sms.php diff --git a/inc/classes/class-aksrt-follow.php b/inc/classes/user/class-aksrt-follow.php similarity index 100% rename from inc/classes/class-aksrt-follow.php rename to inc/classes/user/class-aksrt-follow.php diff --git a/inc/classes/class-aksrt-user-badges-admin.php b/inc/classes/user/class-aksrt-user-badges-admin.php similarity index 100% rename from inc/classes/class-aksrt-user-badges-admin.php rename to inc/classes/user/class-aksrt-user-badges-admin.php diff --git a/inc/classes/class-aksrt-user-badges.php b/inc/classes/user/class-aksrt-user-badges.php similarity index 100% rename from inc/classes/class-aksrt-user-badges.php rename to inc/classes/user/class-aksrt-user-badges.php diff --git a/inc/classes/class-aksrt-user-balance-admin.php b/inc/classes/user/class-aksrt-user-balance-admin.php similarity index 100% rename from inc/classes/class-aksrt-user-balance-admin.php rename to inc/classes/user/class-aksrt-user-balance-admin.php diff --git a/inc/classes/class-aksrt-user-center.php b/inc/classes/user/class-aksrt-user-center.php similarity index 100% rename from inc/classes/class-aksrt-user-center.php rename to inc/classes/user/class-aksrt-user-center.php diff --git a/inc/classes/class-aksrt-user-credits-admin.php b/inc/classes/user/class-aksrt-user-credits-admin.php similarity index 100% rename from inc/classes/class-aksrt-user-credits-admin.php rename to inc/classes/user/class-aksrt-user-credits-admin.php diff --git a/inc/classes/class-aksrt-user-home.php b/inc/classes/user/class-aksrt-user-home.php similarity index 100% rename from inc/classes/class-aksrt-user-home.php rename to inc/classes/user/class-aksrt-user-home.php diff --git a/inc/classes/class-aksrt-user-level.php b/inc/classes/user/class-aksrt-user-level.php similarity index 100% rename from inc/classes/class-aksrt-user-level.php rename to inc/classes/user/class-aksrt-user-level.php diff --git a/inc/classes/class-aksrt-user-metrics.php b/inc/classes/user/class-aksrt-user-metrics.php similarity index 100% rename from inc/classes/class-aksrt-user-metrics.php rename to inc/classes/user/class-aksrt-user-metrics.php diff --git a/inc/classes/class-aksrt-user-notifications.php b/inc/classes/user/class-aksrt-user-notifications.php similarity index 100% rename from inc/classes/class-aksrt-user-notifications.php rename to inc/classes/user/class-aksrt-user-notifications.php diff --git a/inc/classes/class-aksrt-user-restriction.php b/inc/classes/user/class-aksrt-user-restriction.php similarity index 100% rename from inc/classes/class-aksrt-user-restriction.php rename to inc/classes/user/class-aksrt-user-restriction.php diff --git a/inc/classes/class-aksrt-user.php b/inc/classes/user/class-aksrt-user.php similarity index 99% rename from inc/classes/class-aksrt-user.php rename to inc/classes/user/class-aksrt-user.php index a7f45f0f..3cd5560a 100644 --- a/inc/classes/class-aksrt-user.php +++ b/inc/classes/user/class-aksrt-user.php @@ -900,7 +900,10 @@ function aksrt_get_verify_email_url(int $user_id = 0, array $args = []): string } endif; -require_once __DIR__ . '/class-aksrt-user-notifications.php'; +// Notifications live in the same user/ domain; bootstrap also loads it. +if (!class_exists('AKSRT_User_Notifications', false) && file_exists(__DIR__ . '/class-aksrt-user-notifications.php')) { + require_once __DIR__ . '/class-aksrt-user-notifications.php'; +} // ============================================================ // 六、作者链接改写 diff --git a/inc/classes/class-aksrt-widgets-batch1.php b/inc/classes/widgets/class-aksrt-widgets-batch1.php similarity index 100% rename from inc/classes/class-aksrt-widgets-batch1.php rename to inc/classes/widgets/class-aksrt-widgets-batch1.php diff --git a/inc/classes/class-aksrt-widgets-new.php b/inc/classes/widgets/class-aksrt-widgets-new.php similarity index 100% rename from inc/classes/class-aksrt-widgets-new.php rename to inc/classes/widgets/class-aksrt-widgets-new.php diff --git a/inc/classes/class-aksrt-widgets-original.php b/inc/classes/widgets/class-aksrt-widgets-original.php similarity index 100% rename from inc/classes/class-aksrt-widgets-original.php rename to inc/classes/widgets/class-aksrt-widgets-original.php diff --git a/inc/classes/class-aksrt-widgets.php b/inc/classes/widgets/class-aksrt-widgets.php similarity index 100% rename from inc/classes/class-aksrt-widgets.php rename to inc/classes/widgets/class-aksrt-widgets.php diff --git a/slim-forum.php b/slim-forum.php index e1c29846..520b3853 100644 --- a/slim-forum.php +++ b/slim-forum.php @@ -3,7 +3,7 @@ * Script to replace method bodies with delegation stubs in class-aksrt-forum.php */ -$file = __DIR__ . '/inc/classes/class-aksrt-forum.php'; +$file = __DIR__ . '/inc/classes/forum/class-aksrt-forum.php'; $content = file_get_contents($file); if ($content === false) { echo "ERROR: Cannot read file\n";