From aaf458af1c5773216f2e25c237448ef54f693350 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 17 Jul 2026 13:29:22 +0800 Subject: [PATCH] refactor(autoload): migrate theme classes to Composer PSR-4 Move 288 types from global AKSRT_* + inc/classes manual requires into namespace AKSRT\{Domain} under src/AKSRT/, wire composer.json psr-4, and slim bootstrap to helpers/modules/hooks only. Split multi-class widget/gateway files, update admin contract audit paths, and document the layout in ADR/README. --- 404.php | 4 +- README.md | 65 +- category.php | 16 +- composer.json | 9 +- footer.php | 32 +- functions.php | 349 +- header.php | 18 +- image.php | 4 +- inc/bootstrap.php | 368 +-- .../class-aksrt-admin-schema-extensions.php | 25 - .../schema/class-aksrt-admin-schema-shop.php | 28 - .../schema/class-aksrt-admin-schema-tools.php | 24 - .../payment/class-aksrt-order-repository.php | 26 - inc/classes/user/class-aksrt-user.php | 15 - .../widgets/class-aksrt-widgets-batch1.php | 564 ---- inc/core-hooks/part-1.php | 16 +- inc/core-hooks/part-2.php | 38 +- inc/helpers/aksrt-archive.php | 8 +- inc/helpers/aksrt-auth-ui.php | 6 +- inc/helpers/aksrt-comments.php | 20 +- inc/helpers/aksrt-coupon-order.php | 8 +- inc/helpers/aksrt-credits.php | 8 +- inc/helpers/aksrt-domain-model.php | 445 +-- inc/helpers/aksrt-frontend-tags.php | 16 +- inc/helpers/aksrt-homepage.php | 94 +- inc/helpers/aksrt-identity.php | 10 +- inc/helpers/aksrt-pay.php | 136 +- inc/helpers/aksrt-posts-renderer.php | 18 +- inc/helpers/aksrt-resource.php | 44 +- inc/helpers/aksrt-rewards.php | 12 +- inc/helpers/aksrt-shortcodes.php | 332 +- inc/helpers/aksrt-single-components.php | 10 +- inc/helpers/aksrt-single-render.php | 10 +- inc/helpers/aksrt-single.php | 6 +- inc/helpers/aksrt-template-tags.php | 110 +- inc/helpers/aksrt-transactions.php | 32 +- inc/helpers/aksrt-user-center.php | 20 +- inc/helpers/aksrt-user-dashboard.php | 18 +- inc/helpers/aksrt-user-home.php | 20 +- inc/helpers/aksrt-vip.php | 26 +- inc/helpers/menu-decoration.php | 6 +- .../user-center-renderers/credits-balance.php | 12 +- .../user-center-renderers/credits-level.php | 10 +- .../credits-points-tasks.php | 14 +- .../user-center-renderers/credits-signin.php | 4 +- .../credits-transactions.php | 4 +- .../user-center-renderers/credits-vip.php | 14 +- .../user-center-renderers/credits-wallet.php | 42 +- .../user-center-renderers/profile-credits.php | 14 +- .../user-center-renderers/profile-header.php | 4 +- .../settings-bindings.php | 2 +- .../sidebar-commerce.php | 2 +- .../captcha.php} | 0 inc/modules/creator-revenue.php | 8 + inc/modules/user-hub.php | 15 + .../user-notifications.php} | 30 +- .../user-parts/account-ajax.php} | 14 +- .../user-parts/routing.php} | 0 .../user-parts/template-registry.php} | 0 .../user-parts/urls.php} | 4 +- .../widgets-register.php} | 50 +- page.php | 4 +- search.php | 12 +- slim-forum.php | 218 +- .../AKSRT/Admin/AIController.php | 54 +- .../AKSRT/Admin/Admin.php | 43 +- .../AKSRT/Admin/CommentController.php | 22 +- .../AKSRT/Admin/ControllerBase.php | 33 +- .../AKSRT/Admin/ExtensionController.php | 63 +- .../AKSRT/Admin/ForumController.php | 34 +- .../AKSRT/Admin/ForumControllerPart1.php | 46 +- .../AKSRT/Admin/ForumControllerPart2.php | 26 +- .../AKSRT/Admin/GlobalController.php | 68 +- .../AKSRT/Admin/GlobalControllerPart1.php | 32 +- .../AKSRT/Admin/GlobalControllerPart2.php | 26 +- .../AKSRT/Admin/HomepageSettingsRest.php | 29 +- .../AKSRT/Admin/ImportExportController.php | 39 +- .../Admin/ImportExportControllerPart1.php | 40 +- .../Admin/ImportExportControllerPart2.php | 16 +- .../AKSRT/Admin/MessageController.php | 63 +- .../AKSRT/Admin/Native/PayAfterSale.php | 36 +- .../AKSRT/Admin/Native/PayChargeCards.php | 20 +- .../AKSRT/Admin/Native/PayCoupons.php | 30 +- .../AKSRT/Admin/Native/PayDownloadLogs.php | 12 +- .../AKSRT/Admin/Native/PayIncome.php | 14 +- .../AKSRT/Admin/Native/PayMenus.php | 72 +- .../AKSRT/Admin/Native/PayOrders.php | 60 +- .../AKSRT/Admin/Native/PayProducts.php | 60 +- .../AKSRT/Admin/Native/PayRebate.php | 16 +- .../AKSRT/Admin/Native/PayShipping.php | 52 +- .../AKSRT/Admin/Native/PayWithdrawals.php | 16 +- .../AKSRT/Admin/Native/UsersMenus.php | 36 +- .../AKSRT/Admin/PageDisplayController.php | 22 +- .../AKSRT/Admin/PaymentController.php | 114 +- .../AKSRT/Admin/PermissionsController.php | 34 +- .../AKSRT/Admin/PostListController.php | 8 +- .../AKSRT/Admin/Schema/GlobalSchema.php | 6 +- .../Schema/PostList/SchemaPostListList.php | 9 +- src/AKSRT/Admin/Schema/SchemaExtensions.php | 25 + .../Admin/Schema/SchemaExtensionsAudit.php | 6 +- .../Admin/Schema/SchemaExtensionsDocsMode.php | 6 +- .../AKSRT/Admin/Schema/SchemaExtensionsIP.php | 6 +- .../Admin/Schema/SchemaExtensionsPush.php | 6 +- .../Admin/Schema/SchemaExtensionsSecurity.php | 6 +- .../AKSRT/Admin/Schema/SchemaForum.php | 32 +- .../AKSRT/Admin/Schema/SchemaForumBasic.php | 6 +- .../Admin/Schema/SchemaForumBoardPage.php | 6 +- .../AKSRT/Admin/Schema/SchemaForumCredits.php | 6 +- .../Admin/Schema/SchemaForumHomepage.php | 6 +- .../AKSRT/Admin/Schema/SchemaForumNames.php | 6 +- .../AKSRT/Admin/Schema/SchemaForumOther.php | 6 +- .../Admin/Schema/SchemaForumPermissions.php | 6 +- .../Admin/Schema/SchemaForumPostPage.php | 6 +- .../AKSRT/Admin/Schema/SchemaForumReply.php | 6 +- .../AKSRT/Admin/Schema/SchemaForumUpload.php | 6 +- .../AKSRT/Admin/Schema/SchemaPageDisplay.php | 6 +- .../AKSRT/Admin/Schema/SchemaPayment.php | 6 +- .../AKSRT/Admin/Schema/SchemaPermissions.php | 6 +- .../AKSRT/Admin/Schema/SchemaPostList.php | 8 +- src/AKSRT/Admin/Schema/SchemaShop.php | 28 + .../AKSRT/Admin/Schema/SchemaShopBasic.php | 6 +- .../AKSRT/Admin/Schema/SchemaShopContact.php | 6 +- .../AKSRT/Admin/Schema/SchemaShopList.php | 6 +- .../Schema/SchemaShopProductDefaults.php | 6 +- .../Admin/Schema/SchemaShopShippingConfig.php | 6 +- .../AKSRT/Admin/Schema/SchemaShopSingle.php | 6 +- .../AKSRT/Admin/Schema/SchemaShopTiming.php | 6 +- src/AKSRT/Admin/Schema/SchemaTools.php | 24 + .../AKSRT/Admin/Schema/SchemaToolsBackup.php | 6 +- .../Admin/Schema/SchemaToolsEmailRollback.php | 6 +- .../AKSRT/Admin/Schema/SchemaToolsHealth.php | 6 +- .../Admin/Schema/SchemaToolsImportExport.php | 6 +- .../AKSRT/Admin/Schema/SchemaUsers.php | 6 +- .../AKSRT/Admin/SchemaProvider.php | 33 +- .../AKSRT/Admin/ShopController.php | 25 +- .../ShopControllerCouponGatewayOperations.php | 30 +- .../ShopControllerFrontendFlowOperations.php | 160 +- .../ShopControllerFulfillmentOperations.php | 82 +- .../Admin/ShopControllerOrderOperations.php | 30 +- .../ShopControllerProductAdminColumns.php | 6 +- .../Admin/ShopControllerProductOperations.php | 44 +- .../ShopControllerVariantExportOperations.php | 50 +- .../AKSRT/Admin/ToolsController.php | 53 +- .../AKSRT/Admin/UserController.php | 124 +- .../UserControllerAuthPhoneOperations.php | 64 +- .../Admin/UserControllerFollowOperations.php | 32 +- .../Admin/UserControllerInviteOperations.php | 22 +- .../Admin/UserControllerReportOperations.php | 44 +- .../UserControllerRestrictionOperations.php | 30 +- .../UserControllerVerifyIntegrations.php | 50 +- .../class-aksrt-ai.php => src/AKSRT/Ai/AI.php | 12 +- .../AKSRT/Ai/AIPrompt.php | 10 +- .../AKSRT/Ai/AISEO.php | 38 +- .../AKSRT/Auth/EmailRollback.php | 23 +- .../AKSRT/Auth/EmailVerification.php | 178 +- .../AKSRT/Auth/Moderation.php | 13 +- .../AKSRT/Auth/ModerationPart1.php | 16 +- .../AKSRT/Auth/ModerationPart2.php | 16 +- .../AKSRT/Auth/OAuth.php | 26 +- .../AKSRT/Auth/OAuthPart1.php | 26 +- .../AKSRT/Auth/OAuthPart2.php | 12 +- .../AKSRT/Auth/OAuthProxyClient.php | 32 +- .../AKSRT/Auth/OAuthProxyServer.php | 21 +- .../AKSRT/Auth/Router.php | 18 +- .../AKSRT/Auth/Service.php | 37 +- .../AKSRT/Auth/ServicePart1a.php | 50 +- .../AKSRT/Auth/ServicePart1b.php | 50 +- .../AKSRT/Content/Download.php | 58 +- .../AKSRT/Content/DownloadState.php | 17 +- .../AKSRT/Content/Pay.php | 15 +- .../AKSRT/Content/PayHelpers.php | 96 +- .../AKSRT/Content/PayOrders.php | 120 +- .../AKSRT/Content/PayRest.php | 54 +- .../AKSRT/Content/VipService.php | 17 +- .../AKSRT/Content/VipServicePackages.php | 16 +- .../AKSRT/Content/VipServicePurchase.php | 134 +- .../AKSRT/Content/VipServiceRest.php | 34 +- .../AKSRT/Content/Visibility.php | 74 +- .../AKSRT/Core/CategoryRewrite.php | 20 +- .../AKSRT/Core/CommentActions.php | 10 +- .../AKSRT/Core/DBMigrator.php | 17 +- .../AKSRT/Core/DBMigratorPart2.php | 8 +- .../AKSRT/Core/DBMigratorPart3.php | 8 +- .../AKSRT/Core/DocsPresenter.php | 11 +- src/AKSRT/Core/DomainModel.php | 449 +++ .../AKSRT/Core/FrontSubmit.php | 25 +- .../AKSRT/Core/GoRedirect.php | 27 +- .../AKSRT/Core/HomeModules.php | 25 +- .../AKSRT/Core/PostMetaBox.php | 92 +- .../AKSRT/Core/ResourceMetaBox.php | 33 +- .../AKSRT/Core/SEOHead.php | 43 +- .../AKSRT/Core/SEOMetaBox.php | 25 +- .../AKSRT/Core/Scripts.php | 16 +- .../AKSRT/Core/ScriptsPart1b.php | 10 +- .../AKSRT/Core/ScriptsPart1c.php | 84 +- .../AKSRT/Core/ScriptsPart2.php | 20 +- .../AKSRT/Core/Setup.php | 56 +- .../AKSRT/Core/SetupPart1.php | 8 +- .../AKSRT/Core/SetupPart2.php | 12 +- src/AKSRT/Core/Shortcodes.php | 328 ++ .../AKSRT/Core/StatsTracker.php | 8 +- .../AKSRT/Core/Templates.php | 11 +- .../AKSRT/Core/TermMeta.php | 37 +- .../AKSRT/Core/UpdateChecker.php | 21 +- .../AKSRT/Credits/Balance.php | 44 +- .../AKSRT/Credits/BalanceService.php | 17 +- .../AKSRT/Credits/BalanceServiceCharge.php | 78 +- .../AKSRT/Credits/BalanceServicePoints.php | 66 +- .../AKSRT/Credits/BalanceServiceRest.php | 154 +- .../AKSRT/Credits/Credits.php | 38 +- .../AKSRT/Credits/Earn.php | 64 +- .../AKSRT/Credits/Invite.php | 87 +- .../AKSRT/Credits/PointsFree.php | 48 +- .../AKSRT/Credits/Signin.php | 60 +- .../AKSRT/Extensions/APIAudit.php | 13 +- .../AKSRT/Extensions/ContentAudit.php | 13 +- .../AKSRT/Extensions/IPGeo.php | 12 +- .../AKSRT/Extensions/MeiliSearch.php | 24 +- .../AKSRT/Extensions/SearchPush.php | 16 +- .../AKSRT/Forum/BoardService.php | 25 +- .../AKSRT/Forum/BoardServicePart1.php | 12 +- .../AKSRT/Forum/BoardServicePart2.php | 34 +- .../AKSRT/Forum/BoardServicePart3.php | 8 +- .../AKSRT/Forum/CommentService.php | 35 +- .../AKSRT/Forum/DraftService.php | 45 +- .../AKSRT/Forum/Forum.php | 70 +- .../AKSRT/Forum/ModerationService.php | 73 +- .../AKSRT/Forum/PermissionService.php | 13 +- .../AKSRT/Forum/PlateAdminList.php | 8 +- .../AKSRT/Forum/PlateFollowPay.php | 163 +- .../AKSRT/Forum/PlateMetaBox.php | 28 +- .../AKSRT/Forum/ScoreService.php | 67 +- .../AKSRT/Forum/TopicAdminList.php | 10 +- .../AKSRT/Forum/TopicMetaBox.php | 20 +- .../AKSRT/Forum/TopicPay.php | 165 +- .../AKSRT/Forum/TopicService.php | 66 +- .../AKSRT/Forum/TopicServicePart1.php | 102 +- .../AKSRT/Forum/TopicServicePart2.php | 10 +- .../AKSRT/Forum/TopicServicePart3.php | 86 +- .../AKSRT/Forum/TopicServicePart4.php | 8 +- .../AKSRT/Forum/ViewBuilder.php | 22 +- .../AKSRT/Forum/ViewBuilderPart1.php | 22 +- .../AKSRT/Forum/ViewBuilderPart2.php | 8 +- .../AKSRT/Frontend/CustomCodeRenderer.php | 30 +- .../AKSRT/Frontend/InlineStyleBuilder.php | 42 +- .../AKSRT/Frontend/LoadingOverlayRenderer.php | 18 +- .../AKSRT/Frontend/NavWalker.php | 12 +- .../AKSRT/Messages/Message.php | 13 +- .../AKSRT/Messages/PrivateMessage.php | 13 +- .../AKSRT/Messages/ReportCenter.php | 12 +- .../AKSRT/Messages/SiteNotice.php | 15 +- .../AKSRT/Payment/AfterSale.php | 56 +- .../AKSRT/Payment/BalanceGateway.php | 76 +- .../AKSRT/Payment/ChargeCard.php | 137 +- .../AKSRT/Payment/Coupon.php | 15 +- .../AKSRT/Payment/CreatorRevenue.php | 45 +- .../AKSRT/Payment/Discount.php | 12 +- src/AKSRT/Payment/Gateway.php | 344 ++ src/AKSRT/Payment/GatewayInterface.php | 72 + .../AKSRT/Payment/Gateways/AlipayGateway.php | 18 +- .../AKSRT/Payment/Gateways/PayPalGateway.php | 18 +- .../AKSRT/Payment/Gateways/StripeGateway.php | 18 +- .../Payment/Gateways/WechatPayGateway.php | 18 +- .../AKSRT/Payment/Order.php | 37 +- src/AKSRT/Payment/OrderRepository.php | 23 + .../AKSRT/Payment/OrderRepositoryAdmin.php | 32 +- .../AKSRT/Payment/OrderRepositoryCore.php | 28 +- .../AKSRT/Payment/Rebate.php | 14 +- .../AKSRT/Payment/Revenue.php | 10 +- .../AKSRT/Payment/Shipping.php | 22 +- .../AKSRT/Payment/ShippingPart1.php | 20 +- .../AKSRT/Payment/ShippingPart2.php | 16 +- .../AKSRT/Payment/WeChatNotify.php | 13 +- .../AKSRT/Payment/Withdrawal.php | 26 +- .../AKSRT/Settings/AuthReader.php | 8 +- .../AKSRT/Settings/Capabilities.php | 20 +- .../Settings/CategoryIntegrationGroups.php | 34 +- .../AKSRT/Settings/CategoryRuntime.php | 6 +- .../AKSRT/Settings/CreditsPaymentGroups.php | 50 +- .../AKSRT/Settings/CreditsRuntime.php | 10 +- .../AKSRT/Settings/DisplayPageGroups.php | 18 +- .../AKSRT/Settings/DisplayRuntime.php | 28 +- .../AKSRT/Settings/DomainGroups.php | 50 +- .../AKSRT/Settings/ExtensionRuntime.php | 14 +- .../AKSRT/Settings/FacadeBulk.php | 12 +- .../AKSRT/Settings/ForumShop.php | 10 +- .../AKSRT/Settings/HomeCms.php | 34 +- .../AKSRT/Settings/HomepageReader.php | 72 +- .../AKSRT/Settings/Integration.php | 34 +- .../AKSRT/Settings/Mail.php | 12 +- .../AKSRT/Settings/PaymentRuntime.php | 48 +- .../AKSRT/Settings/PostDisplay.php | 34 +- .../AKSRT/Settings/Settings.php | 198 +- .../AKSRT/Settings/ThemeSearch.php | 86 +- .../AKSRT/Settings/UserRuntime.php | 16 +- .../AKSRT/Shop/AddressService.php | 13 +- .../AKSRT/Shop/CartService.php | 19 +- .../AKSRT/Shop/CheckoutService.php | 55 +- .../AKSRT/Shop/Part1.php | 44 +- .../AKSRT/Shop/Part2.php | 44 +- .../AKSRT/Shop/Part3.php | 30 +- .../AKSRT/Shop/ProductMetaBox.php | 10 +- .../AKSRT/Shop/ProductReview.php | 52 +- .../AKSRT/Shop/ProductService.php | 22 +- .../AKSRT/Shop/ProductVariantsMetaBox.php | 18 +- .../AKSRT/Shop/Shop.php | 64 +- .../AKSRT/Shop/TermMeta.php | 23 +- .../AKSRT/Sms/ProviderInterface.php | 8 +- .../AKSRT/Sms/SMS.php | 31 +- .../AKSRT/Sms/SMSProviderAliyun.php | 18 +- .../AKSRT/Sms/SMSProviderCustom.php | 9 +- .../AKSRT/Sms/SMSProviderFactory.php | 23 +- .../AKSRT/Sms/SMSProviderHuawei.php | 10 +- .../AKSRT/Sms/SMSProviderTencent.php | 10 +- .../AKSRT/Sms/SMSSignatureHelper.php | 13 +- .../AKSRT/User/Badges.php | 74 +- .../AKSRT/User/BadgesAdmin.php | 28 +- .../AKSRT/User/BalanceAdmin.php | 34 +- .../AKSRT/User/Center.php | 24 +- .../AKSRT/User/CreditsAdmin.php | 46 +- .../AKSRT/User/Follow.php | 11 +- .../AKSRT/User/Home.php | 42 +- .../AKSRT/User/Level.php | 28 +- .../AKSRT/User/Metrics.php | 25 +- .../AKSRT/User/Restriction.php | 15 +- .../AKSRT/Widgets/AboutWidget.php | 155 +- src/AKSRT/Widgets/ButtonsWidget.php | 114 + src/AKSRT/Widgets/CategoriesWidget.php | 72 + src/AKSRT/Widgets/CategoryBlockWidget.php | 439 +++ .../AKSRT/Widgets/CategoryRecommendWidget.php | 34 +- src/AKSRT/Widgets/CategoryTabsWidget.php | 618 ++++ src/AKSRT/Widgets/CustomHtmlGapWidget.php | 67 + src/AKSRT/Widgets/FriendLinksWidget.php | 76 + src/AKSRT/Widgets/HotPostsWidget.php | 146 + src/AKSRT/Widgets/IconCardsWidget.php | 99 + src/AKSRT/Widgets/NoticeWidget.php | 72 + src/AKSRT/Widgets/RecentCommentsWidget.php | 89 + src/AKSRT/Widgets/SearchWidget.php | 57 + .../AKSRT/Widgets/TabPostsWidget.php | 162 +- src/AKSRT/Widgets/TagCloudWidget.php | 72 + .../AKSRT/Widgets/WidgetAnnouncement.php | 6 +- .../AKSRT/Widgets/WidgetCoverCards.php | 8 +- .../AKSRT/Widgets/WidgetForumBoardList.php | 28 +- src/AKSRT/Widgets/WidgetForumHotTopics.php | 111 + src/AKSRT/Widgets/WidgetForumRecentTopics.php | 183 ++ .../AKSRT/Widgets/WidgetLangSwitch.php | 6 +- src/AKSRT/Widgets/WidgetProductList.php | 232 ++ src/AKSRT/Widgets/WidgetProductOneline.php | 256 ++ .../AKSRT/Widgets/WidgetProductTab.php | 34 +- .../AKSRT/Widgets/WidgetUserCard.php | 12 +- .../AKSRT/Widgets/WidgetUserRanking.php | 10 +- .../AKSRT/Widgets/WidgetVideoPlayer.php | 8 +- .../AKSRT/Widgets/WidgetYiyan.php | 9 +- tag.php | 8 +- templates/forum/forum-board.php | 4 +- templates/forum/forum-compose.php | 4 +- templates/forum/forum-edit.php | 4 +- templates/forum/forum-plate-cat.php | 4 +- templates/forum/forum-plate.php | 4 +- templates/forum/forum-tag.php | 2 +- templates/forum/forum-topic.php | 12 +- templates/pages/page-bind-account.php | 10 +- templates/pages/page-categories.php | 8 +- templates/pages/page-documentnav.php | 4 +- templates/pages/page-download-file.php | 8 +- templates/pages/page-download.php | 18 +- templates/pages/page-forums.php | 4 +- templates/pages/page-messages.php | 10 +- templates/pages/page-orders.php | 20 +- templates/pages/page-product.php | 6 +- templates/pages/page-reset-password.php | 6 +- templates/pages/page-revenue.php | 6 +- templates/pages/page-sign.php | 28 +- templates/pages/page-special.php | 6 +- templates/pages/page-submit.php | 12 +- templates/pages/page-verify-email.php | 8 +- templates/parts/content-post-card.php | 10 +- templates/parts/docs/doc-chapter-nav.php | 4 +- templates/parts/docs/doc-sidebar.php | 6 +- templates/parts/download/download-hero.php | 4 +- .../download/download-permission-card.php | 6 +- .../parts/home-modules/module-banner.php | 2 +- .../module-category_recommend_cards.php | 10 +- templates/parts/home-modules/module-hero.php | 2 +- templates/parts/modal-auth.php | 18 +- templates/parts/page-header.php | 8 +- templates/parts/resource-download-box.php | 16 +- templates/parts/search-panel.php | 6 +- templates/parts/shop/product-card.php | 2 +- templates/parts/single-author-bar.php | 6 +- templates/parts/user-home/panel-follow.php | 2 +- templates/parts/user-home/panels-core.php | 4 +- templates/parts/user/author-hero.php | 6 +- templates/shop/product-cat.php | 2 +- templates/shop/product-tag.php | 2 +- templates/shortcodes/archive.php | 4 +- templates/shortcodes/profile.php | 6 +- tools/adr-classes-domain-placement.md | 75 +- tools/audit-admin-contracts.php | 48 +- tools/build-psr4-map.php | 373 +++ tools/psr4-fix-multi.php | 215 ++ tools/psr4-map/map.csv | 289 ++ tools/psr4-map/map.json | 2906 +++++++++++++++++ tools/psr4-migrate.php | 671 ++++ 404 files changed, 13602 insertions(+), 7705 deletions(-) delete mode 100644 inc/classes/admin/schema/class-aksrt-admin-schema-extensions.php delete mode 100644 inc/classes/admin/schema/class-aksrt-admin-schema-shop.php delete mode 100644 inc/classes/admin/schema/class-aksrt-admin-schema-tools.php delete mode 100644 inc/classes/payment/class-aksrt-order-repository.php delete mode 100644 inc/classes/user/class-aksrt-user.php delete mode 100644 inc/classes/widgets/class-aksrt-widgets-batch1.php rename inc/{classes/auth/class-aksrt-captcha.php => modules/captcha.php} (100%) create mode 100644 inc/modules/creator-revenue.php create mode 100644 inc/modules/user-hub.php rename inc/{classes/user/class-aksrt-user-notifications.php => modules/user-notifications.php} (92%) rename inc/{classes/user/user-parts/aksrt-user-account-ajax.php => modules/user-parts/account-ajax.php} (97%) rename inc/{classes/user/user-parts/aksrt-user-routing.php => modules/user-parts/routing.php} (100%) rename inc/{classes/user/user-parts/aksrt-user-template-registry.php => modules/user-parts/template-registry.php} (100%) rename inc/{classes/user/user-parts/aksrt-user-urls.php => modules/user-parts/urls.php} (97%) rename inc/{classes/widgets/class-aksrt-widgets.php => modules/widgets-register.php} (94%) rename inc/classes/admin/class-aksrt-admin-ai-controller.php => src/AKSRT/Admin/AIController.php (85%) rename inc/classes/admin/class-aksrt-admin.php => src/AKSRT/Admin/Admin.php (92%) rename inc/classes/admin/class-aksrt-admin-comment-controller.php => src/AKSRT/Admin/CommentController.php (95%) rename inc/classes/admin/class-aksrt-admin-controller-base.php => src/AKSRT/Admin/ControllerBase.php (82%) rename inc/classes/admin/class-aksrt-admin-extension-controller.php => src/AKSRT/Admin/ExtensionController.php (90%) rename inc/classes/admin/class-aksrt-admin-forum-controller.php => src/AKSRT/Admin/ForumController.php (93%) rename inc/classes/admin/forum-ctrl-traits/trait-aksrt-admin-forum-controller-part-1.php => src/AKSRT/Admin/ForumControllerPart1.php (90%) rename inc/classes/admin/forum-ctrl-traits/trait-aksrt-admin-forum-controller-part-2.php => src/AKSRT/Admin/ForumControllerPart2.php (87%) rename inc/classes/admin/class-aksrt-admin-global-controller.php => src/AKSRT/Admin/GlobalController.php (92%) rename inc/classes/admin/global-ctrl-traits/trait-aksrt-admin-global-controller-part-1.php => src/AKSRT/Admin/GlobalControllerPart1.php (90%) rename inc/classes/admin/global-ctrl-traits/trait-aksrt-admin-global-controller-part-2.php => src/AKSRT/Admin/GlobalControllerPart2.php (82%) rename inc/classes/admin/global-ctrl-traits/trait-aksrt-admin-homepage-settings-rest.php => src/AKSRT/Admin/HomepageSettingsRest.php (93%) rename inc/classes/admin/class-aksrt-admin-import-export-controller.php => src/AKSRT/Admin/ImportExportController.php (91%) rename inc/classes/admin/import-export-traits/trait-aksrt-admin-import-export-controller-part-1.php => src/AKSRT/Admin/ImportExportControllerPart1.php (89%) rename inc/classes/admin/import-export-traits/trait-aksrt-admin-import-export-controller-part-2.php => src/AKSRT/Admin/ImportExportControllerPart2.php (87%) rename inc/classes/admin/class-aksrt-admin-message-controller.php => src/AKSRT/Admin/MessageController.php (77%) rename inc/classes/admin/native/class-aksrt-admin-pay-after-sale.php => src/AKSRT/Admin/Native/PayAfterSale.php (93%) rename inc/classes/admin/native/class-aksrt-admin-pay-charge-cards.php => src/AKSRT/Admin/Native/PayChargeCards.php (96%) rename inc/classes/admin/native/class-aksrt-admin-pay-coupons.php => src/AKSRT/Admin/Native/PayCoupons.php (96%) rename inc/classes/admin/native/class-aksrt-admin-pay-download-logs.php => src/AKSRT/Admin/Native/PayDownloadLogs.php (96%) rename inc/classes/admin/native/class-aksrt-admin-pay-income.php => src/AKSRT/Admin/Native/PayIncome.php (95%) rename inc/classes/admin/native/class-aksrt-admin-pay-menus.php => src/AKSRT/Admin/Native/PayMenus.php (79%) rename inc/classes/admin/native/class-aksrt-admin-pay-orders.php => src/AKSRT/Admin/Native/PayOrders.php (94%) rename inc/classes/admin/native/class-aksrt-admin-pay-products.php => src/AKSRT/Admin/Native/PayProducts.php (86%) rename inc/classes/admin/native/class-aksrt-admin-pay-rebate.php => src/AKSRT/Admin/Native/PayRebate.php (95%) rename inc/classes/admin/native/class-aksrt-admin-pay-shipping.php => src/AKSRT/Admin/Native/PayShipping.php (92%) rename inc/classes/admin/native/class-aksrt-admin-pay-withdrawals.php => src/AKSRT/Admin/Native/PayWithdrawals.php (95%) rename inc/classes/admin/native/class-aksrt-admin-users-menus.php => src/AKSRT/Admin/Native/UsersMenus.php (96%) rename inc/classes/admin/class-aksrt-admin-page-display-controller.php => src/AKSRT/Admin/PageDisplayController.php (92%) rename inc/classes/admin/class-aksrt-admin-payment-controller.php => src/AKSRT/Admin/PaymentController.php (87%) rename inc/classes/admin/class-aksrt-admin-permissions-controller.php => src/AKSRT/Admin/PermissionsController.php (84%) rename inc/classes/admin/class-aksrt-admin-post-list-controller.php => src/AKSRT/Admin/PostListController.php (66%) rename inc/classes/admin/schema/class-aksrt-admin-schema-global.php => src/AKSRT/Admin/Schema/GlobalSchema.php (99%) rename inc/classes/admin/schema/post-list/class-aksrt-admin-schema-post-list-list.php => src/AKSRT/Admin/Schema/PostList/SchemaPostListList.php (97%) create mode 100644 src/AKSRT/Admin/Schema/SchemaExtensions.php rename inc/classes/admin/schema/class-aksrt-admin-schema-extensions-audit.php => src/AKSRT/Admin/Schema/SchemaExtensionsAudit.php (95%) rename inc/classes/admin/schema/class-aksrt-admin-schema-extensions-docs-mode.php => src/AKSRT/Admin/Schema/SchemaExtensionsDocsMode.php (97%) rename inc/classes/admin/schema/class-aksrt-admin-schema-extensions-ip.php => src/AKSRT/Admin/Schema/SchemaExtensionsIP.php (96%) rename inc/classes/admin/schema/class-aksrt-admin-schema-extensions-push.php => src/AKSRT/Admin/Schema/SchemaExtensionsPush.php (95%) rename inc/classes/admin/schema/class-aksrt-admin-schema-extensions-security.php => src/AKSRT/Admin/Schema/SchemaExtensionsSecurity.php (98%) rename inc/classes/admin/schema/class-aksrt-admin-schema-forum.php => src/AKSRT/Admin/Schema/SchemaForum.php (79%) rename inc/classes/admin/schema/class-aksrt-admin-schema-forum-basic.php => src/AKSRT/Admin/Schema/SchemaForumBasic.php (90%) rename inc/classes/admin/schema/class-aksrt-admin-schema-forum-board-page.php => src/AKSRT/Admin/Schema/SchemaForumBoardPage.php (93%) rename inc/classes/admin/schema/class-aksrt-admin-schema-forum-credits.php => src/AKSRT/Admin/Schema/SchemaForumCredits.php (95%) rename inc/classes/admin/schema/class-aksrt-admin-schema-forum-homepage.php => src/AKSRT/Admin/Schema/SchemaForumHomepage.php (93%) rename inc/classes/admin/schema/class-aksrt-admin-schema-forum-names.php => src/AKSRT/Admin/Schema/SchemaForumNames.php (95%) rename inc/classes/admin/schema/class-aksrt-admin-schema-forum-other.php => src/AKSRT/Admin/Schema/SchemaForumOther.php (96%) rename inc/classes/admin/schema/class-aksrt-admin-schema-forum-permissions.php => src/AKSRT/Admin/Schema/SchemaForumPermissions.php (96%) rename inc/classes/admin/schema/class-aksrt-admin-schema-forum-post-page.php => src/AKSRT/Admin/Schema/SchemaForumPostPage.php (96%) rename inc/classes/admin/schema/class-aksrt-admin-schema-forum-reply.php => src/AKSRT/Admin/Schema/SchemaForumReply.php (95%) rename inc/classes/admin/schema/class-aksrt-admin-schema-forum-upload.php => src/AKSRT/Admin/Schema/SchemaForumUpload.php (92%) rename inc/classes/admin/schema/class-aksrt-admin-schema-page-display.php => src/AKSRT/Admin/Schema/SchemaPageDisplay.php (99%) rename inc/classes/admin/schema/class-aksrt-admin-schema-payment.php => src/AKSRT/Admin/Schema/SchemaPayment.php (99%) rename inc/classes/admin/schema/class-aksrt-admin-schema-permissions.php => src/AKSRT/Admin/Schema/SchemaPermissions.php (99%) rename inc/classes/admin/schema/class-aksrt-admin-schema-post-list.php => src/AKSRT/Admin/Schema/SchemaPostList.php (99%) create mode 100644 src/AKSRT/Admin/Schema/SchemaShop.php rename inc/classes/admin/schema/class-aksrt-admin-schema-shop-basic.php => src/AKSRT/Admin/Schema/SchemaShopBasic.php (95%) rename inc/classes/admin/schema/class-aksrt-admin-schema-shop-contact.php => src/AKSRT/Admin/Schema/SchemaShopContact.php (92%) rename inc/classes/admin/schema/class-aksrt-admin-schema-shop-list.php => src/AKSRT/Admin/Schema/SchemaShopList.php (96%) rename inc/classes/admin/schema/class-aksrt-admin-schema-shop-product-defaults.php => src/AKSRT/Admin/Schema/SchemaShopProductDefaults.php (95%) rename inc/classes/admin/schema/class-aksrt-admin-schema-shop-shipping-config.php => src/AKSRT/Admin/Schema/SchemaShopShippingConfig.php (94%) rename inc/classes/admin/schema/class-aksrt-admin-schema-shop-single.php => src/AKSRT/Admin/Schema/SchemaShopSingle.php (95%) rename inc/classes/admin/schema/class-aksrt-admin-schema-shop-timing.php => src/AKSRT/Admin/Schema/SchemaShopTiming.php (95%) create mode 100644 src/AKSRT/Admin/Schema/SchemaTools.php rename inc/classes/admin/schema/class-aksrt-admin-schema-tools-backup.php => src/AKSRT/Admin/Schema/SchemaToolsBackup.php (92%) rename inc/classes/admin/schema/class-aksrt-admin-schema-tools-email-rollback.php => src/AKSRT/Admin/Schema/SchemaToolsEmailRollback.php (91%) rename inc/classes/admin/schema/class-aksrt-admin-schema-tools-health.php => src/AKSRT/Admin/Schema/SchemaToolsHealth.php (91%) rename inc/classes/admin/schema/class-aksrt-admin-schema-tools-import-export.php => src/AKSRT/Admin/Schema/SchemaToolsImportExport.php (90%) rename inc/classes/admin/schema/class-aksrt-admin-schema-users.php => src/AKSRT/Admin/Schema/SchemaUsers.php (99%) rename inc/classes/admin/class-aksrt-admin-schema-provider.php => src/AKSRT/Admin/SchemaProvider.php (94%) rename inc/classes/admin/class-aksrt-admin-shop-controller.php => src/AKSRT/Admin/ShopController.php (96%) rename inc/classes/admin/class-aksrt-admin-shop-controller-coupon-gateway-operations.php => src/AKSRT/Admin/ShopControllerCouponGatewayOperations.php (71%) rename inc/classes/admin/class-aksrt-admin-shop-controller-frontend-flow-operations.php => src/AKSRT/Admin/ShopControllerFrontendFlowOperations.php (71%) rename inc/classes/admin/class-aksrt-admin-shop-controller-fulfillment-operations.php => src/AKSRT/Admin/ShopControllerFulfillmentOperations.php (77%) rename inc/classes/admin/class-aksrt-admin-shop-controller-order-operations.php => src/AKSRT/Admin/ShopControllerOrderOperations.php (78%) rename inc/classes/admin/class-aksrt-admin-shop-controller-product-admin-columns.php => src/AKSRT/Admin/ShopControllerProductAdminColumns.php (98%) rename inc/classes/admin/class-aksrt-admin-shop-controller-product-operations.php => src/AKSRT/Admin/ShopControllerProductOperations.php (93%) rename inc/classes/admin/class-aksrt-admin-shop-controller-variant-export-operations.php => src/AKSRT/Admin/ShopControllerVariantExportOperations.php (61%) rename inc/classes/admin/class-aksrt-admin-tools-controller.php => src/AKSRT/Admin/ToolsController.php (83%) rename inc/classes/admin/class-aksrt-admin-user-controller.php => src/AKSRT/Admin/UserController.php (86%) rename inc/classes/admin/class-aksrt-admin-user-controller-auth-phone-operations.php => src/AKSRT/Admin/UserControllerAuthPhoneOperations.php (82%) rename inc/classes/admin/class-aksrt-admin-user-controller-follow-operations.php => src/AKSRT/Admin/UserControllerFollowOperations.php (58%) rename inc/classes/admin/class-aksrt-admin-user-controller-invite-operations.php => src/AKSRT/Admin/UserControllerInviteOperations.php (95%) rename inc/classes/admin/class-aksrt-admin-user-controller-report-operations.php => src/AKSRT/Admin/UserControllerReportOperations.php (92%) rename inc/classes/admin/class-aksrt-admin-user-controller-restriction-operations.php => src/AKSRT/Admin/UserControllerRestrictionOperations.php (64%) rename inc/classes/admin/class-aksrt-admin-user-controller-verify-integrations.php => src/AKSRT/Admin/UserControllerVerifyIntegrations.php (88%) rename inc/classes/ai/class-aksrt-ai.php => src/AKSRT/Ai/AI.php (97%) rename inc/classes/ai/class-aksrt-ai-prompt.php => src/AKSRT/Ai/AIPrompt.php (97%) rename inc/classes/ai/class-aksrt-ai-seo.php => src/AKSRT/Ai/AISEO.php (87%) rename inc/classes/auth/class-aksrt-email-rollback.php => src/AKSRT/Auth/EmailRollback.php (91%) rename inc/classes/auth/class-aksrt-auth-email-verification.php => src/AKSRT/Auth/EmailVerification.php (66%) rename inc/classes/auth/class-aksrt-moderation.php => src/AKSRT/Auth/Moderation.php (98%) rename inc/classes/auth/moderation-traits/trait-aksrt-moderation-part-1.php => src/AKSRT/Auth/ModerationPart1.php (97%) rename inc/classes/auth/moderation-traits/trait-aksrt-moderation-part-2.php => src/AKSRT/Auth/ModerationPart2.php (94%) rename inc/classes/auth/class-aksrt-oauth.php => src/AKSRT/Auth/OAuth.php (95%) rename inc/classes/auth/oauth-traits/trait-aksrt-oauth-part-1.php => src/AKSRT/Auth/OAuthPart1.php (95%) rename inc/classes/auth/oauth-traits/trait-aksrt-oauth-part-2.php => src/AKSRT/Auth/OAuthPart2.php (97%) rename inc/classes/auth/class-aksrt-oauth-proxy-client.php => src/AKSRT/Auth/OAuthProxyClient.php (91%) rename inc/classes/auth/class-aksrt-oauth-proxy-server.php => src/AKSRT/Auth/OAuthProxyServer.php (95%) rename inc/classes/auth/class-aksrt-auth-router.php => src/AKSRT/Auth/Router.php (93%) rename inc/classes/auth/class-aksrt-auth-service.php => src/AKSRT/Auth/Service.php (92%) rename inc/classes/auth/auth-traits/trait-aksrt-auth-service-part-1a.php => src/AKSRT/Auth/ServicePart1a.php (90%) rename inc/classes/auth/auth-traits/trait-aksrt-auth-service-part-1b.php => src/AKSRT/Auth/ServicePart1b.php (89%) rename inc/classes/content/class-aksrt-download.php => src/AKSRT/Content/Download.php (89%) rename inc/classes/content/class-aksrt-download-state.php => src/AKSRT/Content/DownloadState.php (95%) rename inc/classes/content/class-aksrt-content-pay.php => src/AKSRT/Content/Pay.php (59%) rename inc/classes/content/content-pay-traits/trait-aksrt-content-pay-helpers.php => src/AKSRT/Content/PayHelpers.php (80%) rename inc/classes/content/content-pay-traits/trait-aksrt-content-pay-orders.php => src/AKSRT/Content/PayOrders.php (77%) rename inc/classes/content/content-pay-traits/trait-aksrt-content-pay-rest.php => src/AKSRT/Content/PayRest.php (76%) rename inc/classes/content/class-aksrt-vip-service.php => src/AKSRT/Content/VipService.php (55%) rename inc/classes/content/vip-service-traits/trait-aksrt-vip-service-packages.php => src/AKSRT/Content/VipServicePackages.php (97%) rename inc/classes/content/vip-service-traits/trait-aksrt-vip-service-purchase.php => src/AKSRT/Content/VipServicePurchase.php (76%) rename inc/classes/content/vip-service-traits/trait-aksrt-vip-service-rest.php => src/AKSRT/Content/VipServiceRest.php (72%) rename inc/classes/content/class-aksrt-content-visibility.php => src/AKSRT/Content/Visibility.php (84%) rename inc/classes/core/class-aksrt-category-rewrite.php => src/AKSRT/Core/CategoryRewrite.php (89%) rename inc/classes/core/class-aksrt-comment-actions.php => src/AKSRT/Core/CommentActions.php (98%) rename inc/classes/core/class-aksrt-db-migrator.php => src/AKSRT/Core/DBMigrator.php (71%) rename inc/classes/core/db-traits/trait-aksrt-db-migrator-part-2.php => src/AKSRT/Core/DBMigratorPart2.php (99%) rename inc/classes/core/db-traits/trait-aksrt-db-migrator-part-3.php => src/AKSRT/Core/DBMigratorPart3.php (95%) rename inc/classes/core/class-aksrt-docs-presenter.php => src/AKSRT/Core/DocsPresenter.php (96%) create mode 100644 src/AKSRT/Core/DomainModel.php rename inc/classes/core/class-aksrt-front-submit.php => src/AKSRT/Core/FrontSubmit.php (94%) rename inc/classes/core/class-aksrt-go-redirect.php => src/AKSRT/Core/GoRedirect.php (90%) rename inc/classes/core/class-aksrt-home-modules.php => src/AKSRT/Core/HomeModules.php (91%) rename inc/classes/core/class-aksrt-post-meta-box.php => src/AKSRT/Core/PostMetaBox.php (93%) rename inc/classes/core/class-aksrt-resource-meta-box.php => src/AKSRT/Core/ResourceMetaBox.php (96%) rename inc/classes/core/class-aksrt-seo-head.php => src/AKSRT/Core/SEOHead.php (92%) rename inc/classes/core/class-aksrt-seo-meta-box.php => src/AKSRT/Core/SEOMetaBox.php (93%) rename inc/classes/core/class-aksrt-scripts.php => src/AKSRT/Core/Scripts.php (89%) rename inc/classes/core/scripts-traits/trait-aksrt-scripts-part-1b.php => src/AKSRT/Core/ScriptsPart1b.php (99%) rename inc/classes/core/scripts-traits/trait-aksrt-scripts-part-1c.php => src/AKSRT/Core/ScriptsPart1c.php (81%) rename inc/classes/core/scripts-traits/trait-aksrt-scripts-part-2.php => src/AKSRT/Core/ScriptsPart2.php (95%) rename inc/classes/core/class-aksrt-setup.php => src/AKSRT/Core/Setup.php (90%) rename inc/classes/core/setup-traits/trait-aksrt-setup-part-1.php => src/AKSRT/Core/SetupPart1.php (99%) rename inc/classes/core/setup-traits/trait-aksrt-setup-part-2.php => src/AKSRT/Core/SetupPart2.php (95%) create mode 100644 src/AKSRT/Core/Shortcodes.php rename inc/classes/core/class-aksrt-stats-tracker.php => src/AKSRT/Core/StatsTracker.php (95%) rename inc/classes/core/class-aksrt-templates.php => src/AKSRT/Core/Templates.php (95%) rename inc/classes/core/class-aksrt-term-meta.php => src/AKSRT/Core/TermMeta.php (92%) rename inc/classes/core/class-aksrt-update-checker.php => src/AKSRT/Core/UpdateChecker.php (90%) rename inc/classes/credits/class-aksrt-balance.php => src/AKSRT/Credits/Balance.php (84%) rename inc/classes/credits/class-aksrt-balance-service.php => src/AKSRT/Credits/BalanceService.php (53%) rename inc/classes/credits/balance-service-traits/trait-aksrt-balance-service-charge.php => src/AKSRT/Credits/BalanceServiceCharge.php (74%) rename inc/classes/credits/balance-service-traits/trait-aksrt-balance-service-points.php => src/AKSRT/Credits/BalanceServicePoints.php (65%) rename inc/classes/credits/balance-service-traits/trait-aksrt-balance-service-rest.php => src/AKSRT/Credits/BalanceServiceRest.php (61%) rename inc/classes/credits/class-aksrt-credits.php => src/AKSRT/Credits/Credits.php (87%) rename inc/classes/credits/class-aksrt-credits-earn.php => src/AKSRT/Credits/Earn.php (72%) rename inc/classes/credits/class-aksrt-invite.php => src/AKSRT/Credits/Invite.php (86%) rename inc/classes/credits/class-aksrt-points-free.php => src/AKSRT/Credits/PointsFree.php (86%) rename inc/classes/credits/class-aksrt-signin.php => src/AKSRT/Credits/Signin.php (77%) rename inc/classes/extensions/class-aksrt-api-audit.php => src/AKSRT/Extensions/APIAudit.php (96%) rename inc/classes/extensions/class-aksrt-content-audit.php => src/AKSRT/Extensions/ContentAudit.php (97%) rename inc/classes/extensions/class-aksrt-ip-geo.php => src/AKSRT/Extensions/IPGeo.php (96%) rename inc/classes/extensions/class-aksrt-meilisearch.php => src/AKSRT/Extensions/MeiliSearch.php (91%) rename inc/classes/extensions/class-aksrt-search-push.php => src/AKSRT/Extensions/SearchPush.php (95%) rename inc/classes/forum/class-aksrt-forum-board-service.php => src/AKSRT/Forum/BoardService.php (96%) rename inc/classes/forum/board-service-traits/trait-aksrt-forum-board-service-part-1.php => src/AKSRT/Forum/BoardServicePart1.php (98%) rename inc/classes/forum/board-service-traits/trait-aksrt-forum-board-service-part-2.php => src/AKSRT/Forum/BoardServicePart2.php (96%) rename inc/classes/forum/board-service-traits/trait-aksrt-forum-board-service-part-3.php => src/AKSRT/Forum/BoardServicePart3.php (98%) rename inc/classes/forum/class-aksrt-forum-comment-service.php => src/AKSRT/Forum/CommentService.php (96%) rename inc/classes/forum/class-aksrt-forum-draft-service.php => src/AKSRT/Forum/DraftService.php (92%) rename inc/classes/forum/class-aksrt-forum.php => src/AKSRT/Forum/Forum.php (93%) rename inc/classes/forum/class-aksrt-forum-moderation-service.php => src/AKSRT/Forum/ModerationService.php (90%) rename inc/classes/forum/class-aksrt-forum-permission-service.php => src/AKSRT/Forum/PermissionService.php (98%) rename inc/classes/forum/class-aksrt-plate-admin-list.php => src/AKSRT/Forum/PlateAdminList.php (96%) rename inc/classes/forum/class-aksrt-plate-follow-pay.php => src/AKSRT/Forum/PlateFollowPay.php (81%) rename inc/classes/forum/class-aksrt-plate-meta-box.php => src/AKSRT/Forum/PlateMetaBox.php (97%) rename inc/classes/forum/class-aksrt-forum-score-service.php => src/AKSRT/Forum/ScoreService.php (86%) rename inc/classes/forum/class-aksrt-topic-admin-list.php => src/AKSRT/Forum/TopicAdminList.php (98%) rename inc/classes/forum/class-aksrt-topic-meta-box.php => src/AKSRT/Forum/TopicMetaBox.php (96%) rename inc/classes/forum/class-aksrt-topic-pay.php => src/AKSRT/Forum/TopicPay.php (82%) rename inc/classes/forum/class-aksrt-forum-topic-service.php => src/AKSRT/Forum/TopicService.php (76%) rename inc/classes/forum/topic-service-traits/trait-aksrt-forum-topic-service-part-1.php => src/AKSRT/Forum/TopicServicePart1.php (80%) rename inc/classes/forum/topic-service-traits/trait-aksrt-forum-topic-service-part-2.php => src/AKSRT/Forum/TopicServicePart2.php (98%) rename inc/classes/forum/topic-service-traits/trait-aksrt-forum-topic-service-part-3.php => src/AKSRT/Forum/TopicServicePart3.php (87%) rename inc/classes/forum/topic-service-traits/trait-aksrt-forum-topic-service-part-4.php => src/AKSRT/Forum/TopicServicePart4.php (99%) rename inc/classes/forum/class-aksrt-forum-view-builder.php => src/AKSRT/Forum/ViewBuilder.php (97%) rename inc/classes/forum/view-builder-traits/trait-aksrt-forum-view-builder-part-1.php => src/AKSRT/Forum/ViewBuilderPart1.php (97%) rename inc/classes/forum/view-builder-traits/trait-aksrt-forum-view-builder-part-2.php => src/AKSRT/Forum/ViewBuilderPart2.php (97%) rename inc/classes/frontend/class-aksrt-custom-code-renderer.php => src/AKSRT/Frontend/CustomCodeRenderer.php (67%) rename inc/classes/frontend/class-aksrt-inline-style-builder.php => src/AKSRT/Frontend/InlineStyleBuilder.php (79%) rename inc/classes/frontend/class-aksrt-loading-overlay-renderer.php => src/AKSRT/Frontend/LoadingOverlayRenderer.php (93%) rename inc/helpers/class-aksrt-nav-walker.php => src/AKSRT/Frontend/NavWalker.php (93%) rename inc/classes/messages/class-aksrt-message.php => src/AKSRT/Messages/Message.php (95%) rename inc/classes/messages/class-aksrt-private-message.php => src/AKSRT/Messages/PrivateMessage.php (97%) rename inc/classes/messages/class-aksrt-report-center.php => src/AKSRT/Messages/ReportCenter.php (96%) rename inc/classes/messages/class-aksrt-site-notice.php => src/AKSRT/Messages/SiteNotice.php (92%) rename inc/classes/payment/class-aksrt-after-sale.php => src/AKSRT/Payment/AfterSale.php (94%) rename inc/classes/payment/class-aksrt-payment-gateway.php => src/AKSRT/Payment/BalanceGateway.php (87%) rename inc/classes/payment/class-aksrt-charge-card.php => src/AKSRT/Payment/ChargeCard.php (81%) rename inc/classes/payment/class-aksrt-coupon.php => src/AKSRT/Payment/Coupon.php (97%) rename inc/classes/payment/class-aksrt-creator-revenue.php => src/AKSRT/Payment/CreatorRevenue.php (82%) rename inc/classes/payment/class-aksrt-discount.php => src/AKSRT/Payment/Discount.php (94%) create mode 100644 src/AKSRT/Payment/Gateway.php create mode 100644 src/AKSRT/Payment/GatewayInterface.php rename inc/classes/payment/gateways/class-aksrt-alipay-gateway.php => src/AKSRT/Payment/Gateways/AlipayGateway.php (93%) rename inc/classes/payment/gateways/class-aksrt-paypal-gateway.php => src/AKSRT/Payment/Gateways/PayPalGateway.php (94%) rename inc/classes/payment/gateways/class-aksrt-stripe-gateway.php => src/AKSRT/Payment/Gateways/StripeGateway.php (95%) rename inc/classes/payment/gateways/class-aksrt-wechatpay-gateway.php => src/AKSRT/Payment/Gateways/WechatPayGateway.php (94%) rename inc/classes/payment/class-aksrt-order.php => src/AKSRT/Payment/Order.php (78%) create mode 100644 src/AKSRT/Payment/OrderRepository.php rename inc/classes/payment/order-repository-traits/trait-aksrt-order-repository-admin.php => src/AKSRT/Payment/OrderRepositoryAdmin.php (95%) rename inc/classes/payment/order-repository-traits/trait-aksrt-order-repository-core.php => src/AKSRT/Payment/OrderRepositoryCore.php (93%) rename inc/classes/payment/class-aksrt-rebate.php => src/AKSRT/Payment/Rebate.php (94%) rename inc/classes/payment/class-aksrt-revenue.php => src/AKSRT/Payment/Revenue.php (96%) rename inc/classes/payment/class-aksrt-shipping.php => src/AKSRT/Payment/Shipping.php (95%) rename inc/classes/payment/shipping-traits/trait-aksrt-shipping-part-1.php => src/AKSRT/Payment/ShippingPart1.php (95%) rename inc/classes/payment/shipping-traits/trait-aksrt-shipping-part-2.php => src/AKSRT/Payment/ShippingPart2.php (95%) rename inc/classes/payment/class-aksrt-wechat-notify.php => src/AKSRT/Payment/WeChatNotify.php (96%) rename inc/classes/payment/class-aksrt-withdrawal.php => src/AKSRT/Payment/Withdrawal.php (93%) rename inc/classes/settings/trait-aksrt-settings-auth-reader.php => src/AKSRT/Settings/AuthReader.php (99%) rename inc/classes/settings/class-aksrt-settings-capabilities.php => src/AKSRT/Settings/Capabilities.php (97%) rename inc/classes/settings/class-aksrt-settings-category-integration-groups.php => src/AKSRT/Settings/CategoryIntegrationGroups.php (76%) rename inc/classes/settings/class-aksrt-settings-category-runtime.php => src/AKSRT/Settings/CategoryRuntime.php (98%) rename inc/classes/settings/class-aksrt-settings-credits-payment-groups.php => src/AKSRT/Settings/CreditsPaymentGroups.php (75%) rename inc/classes/settings/class-aksrt-settings-credits-runtime.php => src/AKSRT/Settings/CreditsRuntime.php (98%) rename inc/classes/settings/class-aksrt-settings-display-page-groups.php => src/AKSRT/Settings/DisplayPageGroups.php (96%) rename inc/classes/settings/class-aksrt-settings-display-runtime.php => src/AKSRT/Settings/DisplayRuntime.php (94%) rename inc/classes/settings/class-aksrt-settings-domain-groups.php => src/AKSRT/Settings/DomainGroups.php (72%) rename inc/classes/settings/class-aksrt-settings-extension-runtime.php => src/AKSRT/Settings/ExtensionRuntime.php (97%) rename inc/classes/settings/trait-aksrt-settings-facade-bulk.php => src/AKSRT/Settings/FacadeBulk.php (98%) rename inc/classes/settings/class-aksrt-settings-forum-shop.php => src/AKSRT/Settings/ForumShop.php (99%) rename inc/classes/settings/class-aksrt-settings-home-cms.php => src/AKSRT/Settings/HomeCms.php (95%) rename inc/classes/settings/trait-aksrt-settings-homepage-reader.php => src/AKSRT/Settings/HomepageReader.php (69%) rename inc/classes/settings/class-aksrt-settings-integration.php => src/AKSRT/Settings/Integration.php (97%) rename inc/classes/settings/class-aksrt-settings-mail.php => src/AKSRT/Settings/Mail.php (94%) rename inc/classes/settings/class-aksrt-settings-payment-runtime.php => src/AKSRT/Settings/PaymentRuntime.php (94%) rename inc/classes/settings/class-aksrt-settings-post-display.php => src/AKSRT/Settings/PostDisplay.php (97%) rename inc/classes/settings/class-aksrt-settings.php => src/AKSRT/Settings/Settings.php (75%) rename inc/classes/settings/class-aksrt-settings-theme-search.php => src/AKSRT/Settings/ThemeSearch.php (85%) rename inc/classes/settings/class-aksrt-settings-user-runtime.php => src/AKSRT/Settings/UserRuntime.php (98%) rename inc/classes/shop/class-aksrt-shop-address-service.php => src/AKSRT/Shop/AddressService.php (95%) rename inc/classes/shop/class-aksrt-shop-cart-service.php => src/AKSRT/Shop/CartService.php (91%) rename inc/classes/shop/class-aksrt-shop-checkout-service.php => src/AKSRT/Shop/CheckoutService.php (89%) rename inc/classes/shop/shop-traits/trait-aksrt-shop-part-1.php => src/AKSRT/Shop/Part1.php (88%) rename inc/classes/shop/shop-traits/trait-aksrt-shop-part-2.php => src/AKSRT/Shop/Part2.php (92%) rename inc/classes/shop/shop-traits/trait-aksrt-shop-part-3.php => src/AKSRT/Shop/Part3.php (93%) rename inc/classes/shop/class-aksrt-product-meta-box.php => src/AKSRT/Shop/ProductMetaBox.php (98%) rename inc/classes/shop/class-aksrt-product-review.php => src/AKSRT/Shop/ProductReview.php (87%) rename inc/classes/shop/class-aksrt-shop-product-service.php => src/AKSRT/Shop/ProductService.php (95%) rename inc/classes/shop/class-aksrt-product-variants-meta-box.php => src/AKSRT/Shop/ProductVariantsMetaBox.php (94%) rename inc/classes/shop/class-aksrt-shop.php => src/AKSRT/Shop/Shop.php (89%) rename inc/classes/shop/class-aksrt-shop-term-meta.php => src/AKSRT/Shop/TermMeta.php (98%) rename inc/classes/sms/class-aksrt-sms-provider.php => src/AKSRT/Sms/ProviderInterface.php (88%) rename inc/classes/sms/class-aksrt-sms.php => src/AKSRT/Sms/SMS.php (94%) rename inc/classes/sms/class-aksrt-sms-provider-aliyun.php => src/AKSRT/Sms/SMSProviderAliyun.php (88%) rename inc/classes/sms/class-aksrt-sms-provider-custom.php => src/AKSRT/Sms/SMSProviderCustom.php (95%) rename inc/classes/sms/class-aksrt-sms-provider-factory.php => src/AKSRT/Sms/SMSProviderFactory.php (58%) rename inc/classes/sms/class-aksrt-sms-provider-huawei.php => src/AKSRT/Sms/SMSProviderHuawei.php (93%) rename inc/classes/sms/class-aksrt-sms-provider-tencent.php => src/AKSRT/Sms/SMSProviderTencent.php (95%) rename inc/classes/sms/class-aksrt-sms-signature-helper.php => src/AKSRT/Sms/SMSSignatureHelper.php (89%) rename inc/classes/user/class-aksrt-user-badges.php => src/AKSRT/User/Badges.php (85%) rename inc/classes/user/class-aksrt-user-badges-admin.php => src/AKSRT/User/BadgesAdmin.php (82%) rename inc/classes/user/class-aksrt-user-balance-admin.php => src/AKSRT/User/BalanceAdmin.php (76%) rename inc/classes/user/class-aksrt-user-center.php => src/AKSRT/User/Center.php (84%) rename inc/classes/user/class-aksrt-user-credits-admin.php => src/AKSRT/User/CreditsAdmin.php (86%) rename inc/classes/user/class-aksrt-follow.php => src/AKSRT/User/Follow.php (95%) rename inc/classes/user/class-aksrt-user-home.php => src/AKSRT/User/Home.php (88%) rename inc/classes/user/class-aksrt-user-level.php => src/AKSRT/User/Level.php (92%) rename inc/classes/user/class-aksrt-user-metrics.php => src/AKSRT/User/Metrics.php (93%) rename inc/classes/user/class-aksrt-user-restriction.php => src/AKSRT/User/Restriction.php (95%) rename inc/classes/widgets/class-aksrt-widgets-original.php => src/AKSRT/Widgets/AboutWidget.php (70%) create mode 100644 src/AKSRT/Widgets/ButtonsWidget.php create mode 100644 src/AKSRT/Widgets/CategoriesWidget.php create mode 100644 src/AKSRT/Widgets/CategoryBlockWidget.php rename inc/classes/widgets/class-aksrt-home-widgets.php => src/AKSRT/Widgets/CategoryRecommendWidget.php (96%) create mode 100644 src/AKSRT/Widgets/CategoryTabsWidget.php create mode 100644 src/AKSRT/Widgets/CustomHtmlGapWidget.php create mode 100644 src/AKSRT/Widgets/FriendLinksWidget.php create mode 100644 src/AKSRT/Widgets/HotPostsWidget.php create mode 100644 src/AKSRT/Widgets/IconCardsWidget.php create mode 100644 src/AKSRT/Widgets/NoticeWidget.php create mode 100644 src/AKSRT/Widgets/RecentCommentsWidget.php create mode 100644 src/AKSRT/Widgets/SearchWidget.php rename inc/classes/widgets/class-aksrt-widgets-new.php => src/AKSRT/Widgets/TabPostsWidget.php (65%) create mode 100644 src/AKSRT/Widgets/TagCloudWidget.php rename inc/classes/widgets/class-aksrt-announcement-widget.php => src/AKSRT/Widgets/WidgetAnnouncement.php (97%) rename inc/classes/widgets/class-aksrt-cover-cards-widget.php => src/AKSRT/Widgets/WidgetCoverCards.php (97%) rename inc/classes/widgets/class-aksrt-forum-widgets.php => src/AKSRT/Widgets/WidgetForumBoardList.php (94%) create mode 100644 src/AKSRT/Widgets/WidgetForumHotTopics.php create mode 100644 src/AKSRT/Widgets/WidgetForumRecentTopics.php rename inc/classes/widgets/class-aksrt-lang-switch-widget.php => src/AKSRT/Widgets/WidgetLangSwitch.php (96%) create mode 100644 src/AKSRT/Widgets/WidgetProductList.php create mode 100644 src/AKSRT/Widgets/WidgetProductOneline.php rename inc/classes/widgets/class-aksrt-shop-widgets.php => src/AKSRT/Widgets/WidgetProductTab.php (95%) rename inc/classes/widgets/class-aksrt-user-card-widget.php => src/AKSRT/Widgets/WidgetUserCard.php (95%) rename inc/classes/widgets/class-aksrt-user-ranking-widget.php => src/AKSRT/Widgets/WidgetUserRanking.php (97%) rename inc/classes/widgets/class-aksrt-video-player-widget.php => src/AKSRT/Widgets/WidgetVideoPlayer.php (97%) rename inc/classes/widgets/class-aksrt-yiyan-widget.php => src/AKSRT/Widgets/WidgetYiyan.php (95%) create mode 100644 tools/build-psr4-map.php create mode 100644 tools/psr4-fix-multi.php create mode 100644 tools/psr4-map/map.csv create mode 100644 tools/psr4-map/map.json create mode 100644 tools/psr4-migrate.php diff --git a/404.php b/404.php index d7e03501..12bf0c8c 100644 --- a/404.php +++ b/404.php @@ -9,8 +9,8 @@ defined('ABSPATH') || exit; get_header(); -$other_page_settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_other_page_settings() +$other_page_settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_other_page_settings() : [ 'page_404_message' => __('页面未找到', 'aksrt'), 'page_404_search' => true, diff --git a/README.md b/README.md index 0b82b35b..a1a51ca7 100644 --- a/README.md +++ b/README.md @@ -26,49 +26,36 @@ AKSRT 是一款现代化的 WordPress 主题,采用**原生 WordPress 主题 ``` AKSRT-theme/ -├── functions.php # 入口文件(精简版:常量+bootstrap加载+实例初始化) +├── functions.php # 入口:常量 + Composer autoload + bootstrap + 单例 init ├── style.css # WordPress 主题声明头 +├── composer.json # 第三方依赖 + 主题 PSR-4(AKSRT\ → src/AKSRT/) │ ├── *.php # WP 核心模板保留根目录 -│ ├── index.php # 首页(文章列表 Loop) -│ ├── single.php # 文章详情页 -│ ├── page.php # 默认页面模板 -│ ├── front-page.php # 首页静态页面 -│ ├── archive.php # 归档页 -│ ├── author.php # 作者存档 -│ ├── search.php # 搜索结果 -│ ├── 404.php # 错误页 -│ ├── header.php / footer.php # 页头/页脚 -│ ├── sidebar.php # 侧边栏 -│ └── comments.php # 评论模板 │ -├── inc/ # 核心代码目录 -│ ├── bootstrap.php # 自动加载器(统一 require 所有模块) -│ ├── core-hooks.php # 核心功能钩子(Gravatar/SMTP/评论/CPT等) -│ │ -│ ├── 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 图标系统(读取/缓存/映射) -│ ├── aksrt-template-tags.php # 模板标签(Banners/友链/Logo/SEO Head) -│ └── aksrt-frontend-tags.php # 前端标签(阅读时长/面包屑/评论回调) +├── src/AKSRT/ # Composer PSR-4 类型根(namespace AKSRT\) +│ ├── Admin/ # SPA 编排 + 域控制器 + Schema + Native ops +│ ├── Auth/ # 登录 / OAuth / 审核 / 邮箱 +│ ├── Content/ # 下载 token / 付费内容 / VIP / 可见性 +│ ├── Core/ # 主题壳层(Setup / Scripts / Templates / SEO / DB…) +│ ├── Credits/ # 积分 / 钱包 / 签到 / 邀请 +│ ├── Extensions/ # MeiliSearch / 推送 / IP / 内容审核 +│ ├── Forum/ # 论坛服务 + 收银台 +│ ├── Frontend/ # 前端渲染辅助 +│ ├── Messages/ # 站内信 / 私信 / 公告 / 举报 +│ ├── Payment/ # 订单 / 网关 / 售后 / 物流 / 分成 +│ │ └── Gateways/ # 支付宝 / 微信 / PayPal / Stripe +│ ├── Settings/ # 设置门面 + 运行时 delegates +│ ├── Shop/ # 商城服务 + meta box +│ ├── Sms/ # 短信编排 + 云厂商 adapter +│ ├── Ai/ # AI / SEO prompt +│ ├── User/ # 用户中心 / 主页 / 徽章 / 等级 / 关注 +│ └── Widgets/ # 小工具类(一类一文件) +│ +├── inc/ # 过程式引导与辅助 +│ ├── bootstrap.php # helpers + modules + core-hooks(类由 Composer 加载) +│ ├── core-hooks.php # 核心功能钩子 +│ ├── modules/ # 非类过程式模块(captcha / user-parts / widgets 注册…) +│ └── helpers/ # 辅助函数 │ ├── templates/ # 模板目录(与 inc/ 隔离) │ ├── pages/ # 自定义页面模板 diff --git a/category.php b/category.php index e4bee932..29ecf93f 100644 --- a/category.php +++ b/category.php @@ -10,8 +10,8 @@ defined('ABSPATH') || exit; get_header(); $term = get_queried_object(); -if (class_exists('AKSRT_Docs_Presenter')) { - $docs_presenter = AKSRT_Docs_Presenter::get_instance(); +if (class_exists('\AKSRT\Core\DocsPresenter')) { + $docs_presenter = \AKSRT\Core\DocsPresenter::get_instance(); if ($term instanceof WP_Term && $term->taxonomy === 'category') { $doc_candidates = get_posts([ 'post_type' => 'page', @@ -33,8 +33,8 @@ if (!$term instanceof WP_Term) { return; } -$archive_settings = class_exists('AKSRT_Term_Meta') - ? AKSRT_Term_Meta::resolve_archive_settings($term) +$archive_settings = class_exists('\AKSRT\Core\TermMeta') + ? \AKSRT\Core\TermMeta::resolve_archive_settings($term) : [ 'layout_mode' => 'card', 'header_style' => 'cover', @@ -54,15 +54,15 @@ $description = !empty($archive_settings['show_desc']) ? wp_kses_post((string) $a $header_style = (string) $archive_settings['header_style']; $layout_mode = (string) $archive_settings['layout_mode']; $card_style = (string) ($archive_settings['card_style'] ?? 'standard'); -$filter_settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_post_filter_settings() +$filter_settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_post_filter_settings() : ['enabled' => false, 'sort' => false, 'ajax_enabled' => false]; if (!empty($filter_settings['enabled']) && !in_array('cat', $filter_settings['custom_filter_show'] ?? ['cat', 'tag'], true)) { $filter_settings['enabled'] = false; } $ajax_filter = !empty($filter_settings['ajax_enabled']) && !empty($filter_settings['enabled']); -$cat_filter_config = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_filter_config_for_category((int) $term->term_id) +$cat_filter_config = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_filter_config_for_category((int) $term->term_id) : ['dimensions' => []]; $custom_dimensions = is_array($cat_filter_config['dimensions'] ?? null) ? $cat_filter_config['dimensions'] : []; $sort_state = function_exists('aksrt_archive_get_sort_state') ? aksrt_archive_get_sort_state() : ['current' => 'latest', 'links' => []]; diff --git a/composer.json b/composer.json index 86990c47..33372bf6 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "aksrt/theme", - "description": "AKSRT WordPress Theme - OAuth dependencies", + "description": "AKSRT WordPress Theme", "type": "wordpress-theme", "require": { "php": ">=7.4", @@ -14,5 +14,10 @@ "audit": { "block-insecure": false } + }, + "autoload": { + "psr-4": { + "AKSRT\\": "src/AKSRT/" + } } -} \ No newline at end of file +} diff --git a/footer.php b/footer.php index 4e7d8406..5343b7a5 100644 --- a/footer.php +++ b/footer.php @@ -12,14 +12,14 @@ defined('ABSPATH') || exit; // 数据准备 $blog_name = function_exists('aksrt_get_site_logo_text') ? aksrt_get_site_logo_text() : get_bloginfo('name'); -$has_settings = class_exists('AKSRT_Settings'); +$has_settings = class_exists('\AKSRT\Settings\Settings'); $search_placeholder = function_exists('aksrt_get_search_placeholder') ? aksrt_get_search_placeholder() : __('开启精彩搜索', 'aksrt'); $search_hot_keywords = function_exists('aksrt_get_search_hot_keywords') ? aksrt_get_search_hot_keywords() : []; $search_history_enabled = function_exists('aksrt_search_history_enabled') ? aksrt_search_history_enabled() : true; $search_suggest_enabled = function_exists('aksrt_search_suggestions_enabled') ? aksrt_search_suggestions_enabled() : false; // 联系图标 / 社交链接(legacy contacts list — fallback for more icons) -$footer_contacts = $has_settings ? AKSRT_Settings::get_footer_contacts() : []; +$footer_contacts = $has_settings ? \AKSRT\Settings\Settings::get_footer_contacts() : []; if (empty($footer_contacts) && function_exists('aksrt_get_about_info')) { $about = aksrt_get_about_info(); $footer_contacts = $about['contacts'] ?? []; @@ -27,22 +27,22 @@ if (empty($footer_contacts) && function_exists('aksrt_get_about_info')) { // 友情链接 / 快速链接(仅当 fcode_t2_code_1 为空时回退) $friend_links = function_exists('aksrt_get_friend_links') ? aksrt_get_friend_links() : []; -$quick_links = $has_settings ? AKSRT_Settings::get_quick_links() : []; -$more_links = $has_settings ? AKSRT_Settings::get_more_links() : []; -$hot_cat_count = $has_settings ? AKSRT_Settings::get_hot_categories_count() : 0; +$quick_links = $has_settings ? \AKSRT\Settings\Settings::get_quick_links() : []; +$more_links = $has_settings ? \AKSRT\Settings\Settings::get_more_links() : []; +$hot_cat_count = $has_settings ? \AKSRT\Settings\Settings::get_hot_categories_count() : 0; // 备案 / 版权(customize 为空时回退) -$filing = $has_settings ? AKSRT_Settings::get_filing_settings() : ['icp_enabled' => true, 'icp_number' => '', 'police_enabled' => true, 'police_number' => '']; +$filing = $has_settings ? \AKSRT\Settings\Settings::get_filing_settings() : ['icp_enabled' => true, 'icp_number' => '', 'police_enabled' => true, 'police_number' => '']; $icp_number = !empty($filing['icp_enabled']) ? (string) ($filing['icp_number'] ?? '') : ''; $police_number = !empty($filing['police_enabled']) ? (string) ($filing['police_number'] ?? '') : ''; -$footer_text = $has_settings ? AKSRT_Settings::footer_text() : ''; -$copyright_text = $has_settings ? AKSRT_Settings::get_copyright_text() : ''; +$footer_text = $has_settings ? \AKSRT\Settings\Settings::footer_text() : ''; +$copyright_text = $has_settings ? \AKSRT\Settings\Settings::get_copyright_text() : ''; // §2.3 三列结构化字段(Zibll keys) -$footer_brand = $has_settings ? AKSRT_Settings::get_footer_brand_settings() : ['m_s' => ['pc', 'mobile'], 'img' => '', 'img_dark' => '', 'title' => '', 'custom_code' => '']; -$footer_contact_ext = $has_settings ? AKSRT_Settings::get_footer_contact_extended_settings() : ['m_s' => ['pc', 'mobile'], 'wechat_img' => '', 'qq' => '', 'weibo' => '', 'email' => '', 'more' => [], 'code_1' => '', 'code_2' => '']; -$footer_mini = $has_settings ? AKSRT_Settings::get_footer_mini_img_settings() : ['m_s' => ['pc', 'mobile'], 'items' => []]; -$footer_customize_code = $has_settings ? AKSRT_Settings::get_footer_customize_code() : ''; +$footer_brand = $has_settings ? \AKSRT\Settings\Settings::get_footer_brand_settings() : ['m_s' => ['pc', 'mobile'], 'img' => '', 'img_dark' => '', 'title' => '', 'custom_code' => '']; +$footer_contact_ext = $has_settings ? \AKSRT\Settings\Settings::get_footer_contact_extended_settings() : ['m_s' => ['pc', 'mobile'], 'wechat_img' => '', 'qq' => '', 'weibo' => '', 'email' => '', 'more' => [], 'code_1' => '', 'code_2' => '']; +$footer_mini = $has_settings ? \AKSRT\Settings\Settings::get_footer_mini_img_settings() : ['m_s' => ['pc', 'mobile'], 'items' => []]; +$footer_customize_code = $has_settings ? \AKSRT\Settings\Settings::get_footer_customize_code() : ''; // 设备可见性 → Zibll hidden-xs(仅在不含 mobile 时隐藏移动端) $_brand_show_sm = in_array('mobile', (array) ($footer_brand['m_s'] ?? []), true); @@ -324,11 +324,11 @@ if ($_footer_conter === '') { 500] + ); } +require_once $composer_autoload; // ============================================================ // 加载 Bootstrap(辅助函数 → 类文件 → 核心钩子) @@ -114,223 +119,223 @@ if (get_option('aksrt_flushed_version') !== AKSRT_VERSION) { // ============================================================ // 初始化所有单例实例 // ============================================================ -AKSRT_Setup::get_instance()->init(); -AKSRT_Scripts::get_instance()->init(); -AKSRT_Admin::get_instance()->init(); -AKSRT_OAuth::get_instance()->init(); +\AKSRT\Core\Setup::get_instance()->init(); +\AKSRT\Core\Scripts::get_instance()->init(); +\AKSRT\Admin\Admin::get_instance()->init(); +\AKSRT\Auth\OAuth::get_instance()->init(); // 初始化代理登录(根据配置模式选择性加载) -$aksrt_proxy_mode = AKSRT_Settings::oauth_proxy_mode(); -if ($aksrt_proxy_mode === 'client' && class_exists('AKSRT_OAuth_Proxy_Client')) { - AKSRT_OAuth_Proxy_Client::get_instance()->init(); +$aksrt_proxy_mode = \AKSRT\Settings\Settings::oauth_proxy_mode(); +if ($aksrt_proxy_mode === 'client' && class_exists('\AKSRT\Auth\OAuthProxyClient')) { + \AKSRT\Auth\OAuthProxyClient::get_instance()->init(); } -if ($aksrt_proxy_mode === 'server' && class_exists('AKSRT_OAuth_Proxy_Server')) { - AKSRT_OAuth_Proxy_Server::get_instance()->init(); +if ($aksrt_proxy_mode === 'server' && class_exists('\AKSRT\Auth\OAuthProxyServer')) { + \AKSRT\Auth\OAuthProxyServer::get_instance()->init(); } -AKSRT_Settings::get_instance()->init(); -AKSRT_Auth_Router::get_instance()->init(); -AKSRT_Templates::get_instance()->init(); -AKSRT_Moderation::get_instance()->init(); +\AKSRT\Settings\Settings::get_instance()->init(); +\AKSRT\Auth\Router::get_instance()->init(); +\AKSRT\Core\Templates::get_instance()->init(); +\AKSRT\Auth\Moderation::get_instance()->init(); // 短代码统一注册入口(registry) -if (class_exists('AKSRT_Shortcodes')) { +if (class_exists('\AKSRT\Core\Shortcodes')) { add_action('init', function () { - AKSRT_Shortcodes::get_instance()->register(); + \AKSRT\Core\Shortcodes::get_instance()->register(); }); } // 用户限制/封禁系统 -if (class_exists('AKSRT_User_Restriction')) { - AKSRT_User_Restriction::get_instance()->init(); +if (class_exists('\AKSRT\User\Restriction')) { + \AKSRT\User\Restriction::get_instance()->init(); } // 用户中心 & 公开主页协调类 -if (class_exists('AKSRT_User_Center')) { - AKSRT_User_Center::get_instance()->init(); +if (class_exists('\AKSRT\User\Center')) { + \AKSRT\User\Center::get_instance()->init(); } -if (class_exists('AKSRT_User_Home')) { - AKSRT_User_Home::get_instance()->init(); +if (class_exists('\AKSRT\User\Home')) { + \AKSRT\User\Home::get_instance()->init(); } // 数据表迁移器:注册 hook(after_switch_theme + admin_init 双触发) -if (class_exists('AKSRT_DB_Migrator')) { - AKSRT_DB_Migrator::init(); +if (class_exists('\AKSRT\Core\DBMigrator')) { + \AKSRT\Core\DBMigrator::init(); } // 积分获取入口(注册赠送 / 评论奖励 / 签到 / 邀请) -if (class_exists('AKSRT_Credits_Earn')) { - AKSRT_Credits_Earn::get_instance()->init(); +if (class_exists('\AKSRT\Credits\Earn')) { + \AKSRT\Credits\Earn::get_instance()->init(); } -if (class_exists('AKSRT_Signin')) { - AKSRT_Signin::get_instance()->init(); +if (class_exists('\AKSRT\Credits\Signin')) { + \AKSRT\Credits\Signin::get_instance()->init(); } -if (class_exists('AKSRT_Invite')) { - AKSRT_Invite::get_instance()->init(); +if (class_exists('\AKSRT\Credits\Invite')) { + \AKSRT\Credits\Invite::get_instance()->init(); } -if (class_exists('AKSRT_Creator_Revenue')) { - AKSRT_Creator_Revenue::get_instance()->init(); +if (class_exists('AKSRT\\Payment\\CreatorRevenue')) { + \AKSRT\Payment\CreatorRevenue::get_instance()->init(); } -if (class_exists('AKSRT_Download')) { - AKSRT_Download::get_instance()->init(); +if (class_exists('\AKSRT\Content\Download')) { + \AKSRT\Content\Download::get_instance()->init(); } -if (class_exists('AKSRT_Content_Pay')) { - AKSRT_Content_Pay::get_instance()->init(); +if (class_exists('\AKSRT\Content\Pay')) { + \AKSRT\Content\Pay::get_instance()->init(); } -if (class_exists('AKSRT_Topic_Pay')) { - AKSRT_Topic_Pay::get_instance()->init(); +if (class_exists('\AKSRT\Forum\TopicPay')) { + \AKSRT\Forum\TopicPay::get_instance()->init(); } -if (class_exists('AKSRT_Plate_Follow_Pay')) { - AKSRT_Plate_Follow_Pay::get_instance()->init(); +if (class_exists('\AKSRT\Forum\PlateFollowPay')) { + \AKSRT\Forum\PlateFollowPay::get_instance()->init(); } -if (class_exists('AKSRT_Vip_Service')) { - AKSRT_Vip_Service::get_instance()->init(); +if (class_exists('\AKSRT\Content\VipService')) { + \AKSRT\Content\VipService::get_instance()->init(); } -if (class_exists('AKSRT_Charge_Card')) { - AKSRT_Charge_Card::get_instance()->init(); +if (class_exists('\AKSRT\Payment\ChargeCard')) { + \AKSRT\Payment\ChargeCard::get_instance()->init(); } -if (class_exists('AKSRT_Balance_Service')) { - AKSRT_Balance_Service::get_instance()->init(); +if (class_exists('\AKSRT\Credits\BalanceService')) { + \AKSRT\Credits\BalanceService::get_instance()->init(); } // Download State & Docs Presenter are pure service singletons (no hooks) -if (class_exists('AKSRT_Download_State')) { - AKSRT_Download_State::get_instance(); +if (class_exists('\AKSRT\Content\DownloadState')) { + \AKSRT\Content\DownloadState::get_instance(); } -if (class_exists('AKSRT_Docs_Presenter')) { - AKSRT_Docs_Presenter::get_instance(); +if (class_exists('\AKSRT\Core\DocsPresenter')) { + \AKSRT\Core\DocsPresenter::get_instance(); } // Homepage module preview REST + query var (render still via helpers / static methods) -if (class_exists('AKSRT_Home_Modules')) { - AKSRT_Home_Modules::get_instance()->init(); +if (class_exists('\AKSRT\Core\HomeModules')) { + \AKSRT\Core\HomeModules::get_instance()->init(); } -if (class_exists('AKSRT_Content_Visibility')) { - AKSRT_Content_Visibility::get_instance()->init(); +if (class_exists('\AKSRT\Content\Visibility')) { + \AKSRT\Content\Visibility::get_instance()->init(); } -if (class_exists('AKSRT_SMS')) { - AKSRT_SMS::get_instance()->init(); +if (class_exists('\AKSRT\Sms\SMS')) { + \AKSRT\Sms\SMS::get_instance()->init(); } -if (class_exists('AKSRT_AI')) { - AKSRT_AI::get_instance(); // config-gated; available when admin enables +if (class_exists('\AKSRT\Ai\AI')) { + \AKSRT\Ai\AI::get_instance(); // config-gated; available when admin enables } -if (class_exists('AKSRT_WeChat_Notify')) { - AKSRT_WeChat_Notify::get_instance()->init(); +if (class_exists('\AKSRT\Payment\WeChatNotify')) { + \AKSRT\Payment\WeChatNotify::get_instance()->init(); } -if (class_exists('AKSRT_Message')) { - AKSRT_Message::get_instance()->init(); +if (class_exists('\AKSRT\Messages\Message')) { + \AKSRT\Messages\Message::get_instance()->init(); } -if (class_exists('AKSRT_Private_Message')) { - AKSRT_Private_Message::get_instance()->init(); +if (class_exists('\AKSRT\Messages\PrivateMessage')) { + \AKSRT\Messages\PrivateMessage::get_instance()->init(); } -if (class_exists('AKSRT_Report_Center')) { - AKSRT_Report_Center::get_instance()->init(); +if (class_exists('\AKSRT\Messages\ReportCenter')) { + \AKSRT\Messages\ReportCenter::get_instance()->init(); } -if (class_exists('AKSRT_Comment_Actions')) { - AKSRT_Comment_Actions::get_instance()->init(); +if (class_exists('\AKSRT\Core\CommentActions')) { + \AKSRT\Core\CommentActions::get_instance()->init(); } -if (class_exists('AKSRT_Go_Redirect')) { - AKSRT_Go_Redirect::get_instance()->init(); +if (class_exists('\AKSRT\Core\GoRedirect')) { + \AKSRT\Core\GoRedirect::get_instance()->init(); } -if (class_exists('AKSRT_Site_Notice')) { - AKSRT_Site_Notice::get_instance()->init(); +if (class_exists('\AKSRT\Messages\SiteNotice')) { + \AKSRT\Messages\SiteNotice::get_instance()->init(); } -if (class_exists('AKSRT_API_Audit')) { - AKSRT_API_Audit::get_instance()->init(); +if (class_exists('\AKSRT\Extensions\APIAudit')) { + \AKSRT\Extensions\APIAudit::get_instance()->init(); } -if (class_exists('AKSRT_MeiliSearch')) { - AKSRT_MeiliSearch::get_instance()->init(); +if (class_exists('\AKSRT\Extensions\MeiliSearch')) { + \AKSRT\Extensions\MeiliSearch::get_instance()->init(); // Async single post index (debounced) add_action('aksrt_meilisearch_index_single', function (int $post_id) { - AKSRT_MeiliSearch::get_instance()->index_post($post_id); + \AKSRT\Extensions\MeiliSearch::get_instance()->index_post($post_id); }); } -if (class_exists('AKSRT_Search_Push')) { - AKSRT_Search_Push::get_instance()->init(); +if (class_exists('\AKSRT\Extensions\SearchPush')) { + \AKSRT\Extensions\SearchPush::get_instance()->init(); } -if (class_exists('AKSRT_SEO_Head')) { - AKSRT_SEO_Head::get_instance()->init(); +if (class_exists('\AKSRT\Core\SEOHead')) { + \AKSRT\Core\SEOHead::get_instance()->init(); } -if (class_exists('AKSRT_Update_Checker')) { - AKSRT_Update_Checker::get_instance()->init(); +if (class_exists('\AKSRT\Core\UpdateChecker')) { + \AKSRT\Core\UpdateChecker::get_instance()->init(); } -if (class_exists('AKSRT_Category_Rewrite')) { - AKSRT_Category_Rewrite::get_instance()->init(); +if (class_exists('\AKSRT\Core\CategoryRewrite')) { + \AKSRT\Core\CategoryRewrite::get_instance()->init(); } -if (class_exists('AKSRT_Front_Submit')) { - AKSRT_Front_Submit::get_instance()->init(); +if (class_exists('\AKSRT\Core\FrontSubmit')) { + \AKSRT\Core\FrontSubmit::get_instance()->init(); } -if (class_exists('AKSRT_Order')) { - AKSRT_Order::get_instance()->init(); +if (class_exists('\AKSRT\Payment\Order')) { + \AKSRT\Payment\Order::get_instance()->init(); } // Register built-in payment gateways -if (class_exists('AKSRT_Payment_Gateway')) { - $gw = AKSRT_Payment_Gateway::get_instance(); +if (class_exists('\AKSRT\Payment\Gateway')) { + $gw = \AKSRT\Payment\Gateway::get_instance(); // 注册支付回调路由(/payment/{gateway}/notify|return|cancel)。 $gw->init(); - if (class_exists('AKSRT_Balance_Gateway')) { - $gw->register('balance', new AKSRT_Balance_Gateway()); + if (class_exists('\AKSRT\Payment\BalanceGateway')) { + $gw->register('balance', new \AKSRT\Payment\BalanceGateway()); } - if (class_exists('AKSRT_Alipay_Gateway')) { - $gw->register('alipay', new AKSRT_Alipay_Gateway()); + if (class_exists('\AKSRT\Payment\Gateways\AlipayGateway')) { + $gw->register('alipay', new \AKSRT\Payment\Gateways\AlipayGateway()); } - if (class_exists('AKSRT_WechatPay_Gateway')) { - $gw->register('wechatpay', new AKSRT_WechatPay_Gateway()); + if (class_exists('\AKSRT\Payment\Gateways\WechatPayGateway')) { + $gw->register('wechatpay', new \AKSRT\Payment\Gateways\WechatPayGateway()); } - if (class_exists('AKSRT_PayPal_Gateway')) { - $gw->register('paypal', new AKSRT_PayPal_Gateway()); + if (class_exists('\AKSRT\Payment\Gateways\PayPalGateway')) { + $gw->register('paypal', new \AKSRT\Payment\Gateways\PayPalGateway()); } - if (class_exists('AKSRT_Stripe_Gateway')) { - $gw->register('stripe', new AKSRT_Stripe_Gateway()); + if (class_exists('\AKSRT\Payment\Gateways\StripeGateway')) { + $gw->register('stripe', new \AKSRT\Payment\Gateways\StripeGateway()); } do_action('aksrt_register_payment_gateways', $gw); } -if (class_exists('AKSRT_Forum')) { - AKSRT_Forum::get_instance()->init(); +if (class_exists('\AKSRT\Forum\Forum')) { + \AKSRT\Forum\Forum::get_instance()->init(); } -if (is_admin() && class_exists('AKSRT_Resource_Meta_Box')) { - AKSRT_Resource_Meta_Box::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Core\ResourceMetaBox')) { + \AKSRT\Core\ResourceMetaBox::get_instance()->init(); } // 分类/标签局部配置(term meta 字段) -if (class_exists('AKSRT_Term_Meta')) { - AKSRT_Term_Meta::get_instance()->init(); +if (class_exists('\AKSRT\Core\TermMeta')) { + \AKSRT\Core\TermMeta::get_instance()->init(); } // 商城 taxonomy term meta + shop_discount 优惠活动 -if (class_exists('AKSRT_Shop_Term_Meta')) { - AKSRT_Shop_Term_Meta::get_instance()->init(); +if (class_exists('\AKSRT\Shop\TermMeta')) { + \AKSRT\Shop\TermMeta::get_instance()->init(); } // 商品后台列表自定义列(销量/综合数据/商家/优惠活动) -if (is_admin() && class_exists('AKSRT_Admin_Shop_Controller')) { - AKSRT_Admin_Shop_Controller::get_instance()->init_product_admin_columns(); +if (is_admin() && class_exists('\AKSRT\Admin\ShopController')) { + \AKSRT\Admin\ShopController::get_instance()->init_product_admin_columns(); } // 商品原生编辑 meta box(价格/库存/发货售后) -if (is_admin() && class_exists('AKSRT_Product_Meta_Box')) { - AKSRT_Product_Meta_Box::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Shop\ProductMetaBox')) { + \AKSRT\Shop\ProductMetaBox::get_instance()->init(); } // 商品原生变体 meta box -if (is_admin() && class_exists('AKSRT_Product_Variants_Meta_Box')) { - AKSRT_Product_Variants_Meta_Box::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Shop\ProductVariantsMetaBox')) { + \AKSRT\Shop\ProductVariantsMetaBox::get_instance()->init(); } // 论坛版块版主 meta box -if (is_admin() && class_exists('AKSRT_Plate_Meta_Box')) { - AKSRT_Plate_Meta_Box::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Forum\PlateMetaBox')) { + \AKSRT\Forum\PlateMetaBox::get_instance()->init(); } // 论坛帖子原生列表治理列/筛选/批量 -if (is_admin() && class_exists('AKSRT_Topic_Admin_List')) { - AKSRT_Topic_Admin_List::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Forum\TopicAdminList')) { + \AKSRT\Forum\TopicAdminList::get_instance()->init(); } // 论坛帖子治理 meta box -if (is_admin() && class_exists('AKSRT_Topic_Meta_Box')) { - AKSRT_Topic_Meta_Box::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Forum\TopicMetaBox')) { + \AKSRT\Forum\TopicMetaBox::get_instance()->init(); } // 论坛版块列表列 -if (is_admin() && class_exists('AKSRT_Plate_Admin_List')) { - AKSRT_Plate_Admin_List::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Forum\PlateAdminList')) { + \AKSRT\Forum\PlateAdminList::get_instance()->init(); } @@ -338,87 +343,87 @@ if (is_admin() && class_exists('AKSRT_Plate_Admin_List')) { // 商品评价/评分系统 -if (class_exists('AKSRT_Product_Review')) { - AKSRT_Product_Review::get_instance()->init(); +if (class_exists('\AKSRT\Shop\ProductReview')) { + \AKSRT\Shop\ProductReview::get_instance()->init(); } // 文章局部配置 meta box(仅后台) -if (is_admin() && class_exists('AKSRT_Post_Meta_Box')) { - AKSRT_Post_Meta_Box::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Core\PostMetaBox')) { + \AKSRT\Core\PostMetaBox::get_instance()->init(); } -if (is_admin() && class_exists('AKSRT_SEO_Meta_Box')) { - AKSRT_SEO_Meta_Box::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Core\SEOMetaBox')) { + \AKSRT\Core\SEOMetaBox::get_instance()->init(); } // 绔欑偣璁块棶閲忕粺璁? -if (class_exists('AKSRT_Stats_Tracker')) { - AKSRT_Stats_Tracker::init(); +if (class_exists('\AKSRT\Core\StatsTracker')) { + \AKSRT\Core\StatsTracker::init(); } // Email rollback window (24h): user list row action + admin-post handler. -if (class_exists('AKSRT_Email_Rollback')) { - AKSRT_Email_Rollback::get_instance()->init(); +if (class_exists('\AKSRT\Auth\EmailRollback')) { + \AKSRT\Auth\EmailRollback::get_instance()->init(); } // WordPress 原生"用户"菜单:积分管理 -if (class_exists('AKSRT_User_Credits_Admin')) { - AKSRT_User_Credits_Admin::get_instance()->init(); +if (class_exists('\AKSRT\User\CreditsAdmin')) { + \AKSRT\User\CreditsAdmin::get_instance()->init(); } -if (class_exists('AKSRT_User_Balance_Admin')) { - AKSRT_User_Balance_Admin::get_instance()->init(); +if (class_exists('\AKSRT\User\BalanceAdmin')) { + \AKSRT\User\BalanceAdmin::get_instance()->init(); } -if (class_exists('AKSRT_User_Badges')) { - AKSRT_User_Badges::get_instance()->init(); +if (class_exists('\AKSRT\User\Badges')) { + \AKSRT\User\Badges::get_instance()->init(); } -if (class_exists('AKSRT_User_Badges_Admin')) { - AKSRT_User_Badges_Admin::get_instance()->init(); +if (class_exists('\AKSRT\User\BadgesAdmin')) { + \AKSRT\User\BadgesAdmin::get_instance()->init(); } -if (class_exists('AKSRT_User_Level')) { - AKSRT_User_Level::get_instance()->init(); +if (class_exists('\AKSRT\User\Level')) { + \AKSRT\User\Level::get_instance()->init(); } -if (class_exists('AKSRT_User_Metrics')) { - AKSRT_User_Metrics::get_instance()->init(); +if (class_exists('\AKSRT\User\Metrics')) { + \AKSRT\User\Metrics::get_instance()->init(); } // WordPress 原生侧栏:支付/订单运营中心(zibll zibpay 对齐) -if (is_admin() && class_exists('AKSRT_Admin_Pay_Menus')) { - AKSRT_Admin_Pay_Menus::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Admin\Native\PayMenus')) { + \AKSRT\Admin\Native\PayMenus::get_instance()->init(); } -if (is_admin() && class_exists('AKSRT_Admin_Pay_Coupons')) { - AKSRT_Admin_Pay_Coupons::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Admin\Native\PayCoupons')) { + \AKSRT\Admin\Native\PayCoupons::get_instance()->init(); } -if (is_admin() && class_exists('AKSRT_Admin_Pay_Charge_Cards')) { - AKSRT_Admin_Pay_Charge_Cards::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Admin\Native\PayChargeCards')) { + \AKSRT\Admin\Native\PayChargeCards::get_instance()->init(); } -if (is_admin() && class_exists('AKSRT_Admin_Pay_Shipping')) { - AKSRT_Admin_Pay_Shipping::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Admin\Native\PayShipping')) { + \AKSRT\Admin\Native\PayShipping::get_instance()->init(); } -if (is_admin() && class_exists('AKSRT_Admin_Pay_After_Sale')) { - AKSRT_Admin_Pay_After_Sale::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Admin\Native\PayAfterSale')) { + \AKSRT\Admin\Native\PayAfterSale::get_instance()->init(); } -if (is_admin() && class_exists('AKSRT_Admin_Pay_Orders')) { - AKSRT_Admin_Pay_Orders::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Admin\Native\PayOrders')) { + \AKSRT\Admin\Native\PayOrders::get_instance()->init(); } -if (is_admin() && class_exists('AKSRT_Admin_Pay_Products')) { - AKSRT_Admin_Pay_Products::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Admin\Native\PayProducts')) { + \AKSRT\Admin\Native\PayProducts::get_instance()->init(); } -if (is_admin() && class_exists('AKSRT_Admin_Pay_Download_Logs')) { - AKSRT_Admin_Pay_Download_Logs::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Admin\Native\PayDownloadLogs')) { + \AKSRT\Admin\Native\PayDownloadLogs::get_instance()->init(); } -if (is_admin() && class_exists('AKSRT_Admin_Pay_Withdrawals')) { - AKSRT_Admin_Pay_Withdrawals::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Admin\Native\PayWithdrawals')) { + \AKSRT\Admin\Native\PayWithdrawals::get_instance()->init(); } -if (is_admin() && class_exists('AKSRT_Admin_Pay_Income')) { - AKSRT_Admin_Pay_Income::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Admin\Native\PayIncome')) { + \AKSRT\Admin\Native\PayIncome::get_instance()->init(); } -if (is_admin() && class_exists('AKSRT_Admin_Pay_Rebate')) { - AKSRT_Admin_Pay_Rebate::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Admin\Native\PayRebate')) { + \AKSRT\Admin\Native\PayRebate::get_instance()->init(); } // WordPress 原生用户菜单:消息/邀请码/认证/禁封(zibll users.php 子菜单对齐) -if (is_admin() && class_exists('AKSRT_Admin_Users_Menus')) { - AKSRT_Admin_Users_Menus::get_instance()->init(); +if (is_admin() && class_exists('\AKSRT\Admin\Native\UsersMenus')) { + \AKSRT\Admin\Native\UsersMenus::get_instance()->init(); } // ============================================================ diff --git a/header.php b/header.php index ff1477a9..5b821e2a 100644 --- a/header.php +++ b/header.php @@ -7,8 +7,8 @@ defined('ABSPATH') || exit; -$aksrt_header_settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_header_nav_settings() +$aksrt_header_settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_header_nav_settings() : [ 'fixed' => true, 'search_enabled' => true, @@ -24,8 +24,8 @@ $aksrt_header_settings = class_exists('AKSRT_Settings') ]; $aksrt_initial_theme_mode = ''; -if (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'initial_theme_mode')) { - $aksrt_initial_theme_mode = AKSRT_Settings::initial_theme_mode(); +if (class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'initial_theme_mode')) { + $aksrt_initial_theme_mode = \AKSRT\Settings\Settings::initial_theme_mode(); } $aksrt_has_initial_theme = in_array($aksrt_initial_theme_mode, ['dark', 'light'], true); @@ -52,7 +52,7 @@ $aksrt_body_classes[] = 'mobile-header-' . $aksrt_header_settings['mobile_layout $aksrt_body_classes[] = 'mobile-nav-' . $aksrt_header_settings['mobile_align']; // 全局背景系统 -$aksrt_bg_settings = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_global_background_settings() : []; +$aksrt_bg_settings = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_global_background_settings() : []; $aksrt_bg_styles = []; if (!empty($aksrt_bg_settings['bg_color'])) { $aksrt_bg_styles[] = '--aksrt-bg-color:' . sanitize_hex_color($aksrt_bg_settings['bg_color']); @@ -128,7 +128,7 @@ if (!empty($aksrt_bg_styles)) { $aksrt_show_user_entry = !empty($aksrt_header_settings['user_menu']); $aksrt_current_user = wp_get_current_user(); $aksrt_user_credit = function_exists('aksrt_user_credits') && is_user_logged_in() ? (int) aksrt_user_credits(get_current_user_id()) : 0; - $aksrt_currency_name = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_currency_name() : __('积分', 'aksrt'); + $aksrt_currency_name = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_currency_name() : __('积分', 'aksrt'); $aksrt_orders_url = function_exists('aksrt_get_orders_page_url') ? aksrt_get_orders_page_url() : ''; $aksrt_publish_url = admin_url('post-new.php'); $aksrt_messages_url = function_exists('aksrt_get_messages_page_url') ? aksrt_get_messages_page_url() : ''; @@ -147,12 +147,12 @@ if (!empty($aksrt_bg_styles)) { $aksrt_theme_settings_url = function_exists('aksrt_get_admin_settings_url') ? aksrt_get_admin_settings_url('') : admin_url('admin.php?page=aksrt-settings'); - $aksrt_theme_toggle_positions = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_theme_mode_button_positions() + $aksrt_theme_toggle_positions = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_theme_mode_button_positions() : ['pc_nav', 'm_menu']; $aksrt_can_publish = !empty($aksrt_header_settings['publish_btn']) && ( current_user_can('manage_options') - || (class_exists('AKSRT_Front_Submit') && AKSRT_Front_Submit::get_instance()->can_submit()) + || (class_exists('\AKSRT\Core\FrontSubmit') && \AKSRT\Core\FrontSubmit::get_instance()->can_submit()) ); $aksrt_show_header_slide = function_exists('aksrt_header_slide_is_show') ? aksrt_header_slide_is_show() diff --git a/image.php b/image.php index 28f08c1c..fd8f21f2 100644 --- a/image.php +++ b/image.php @@ -7,8 +7,8 @@ defined('ABSPATH') || exit; -$system_tools = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_system_tools_settings() +$system_tools = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_system_tools_settings() : ['close_attachment_page' => true]; if (!empty($system_tools['close_attachment_page'])) { diff --git a/inc/bootstrap.php b/inc/bootstrap.php index c14e78d9..226939ae 100644 --- a/inc/bootstrap.php +++ b/inc/bootstrap.php @@ -2,8 +2,8 @@ /** * AKSRT Theme Bootstrap Loader * - * 统一加载入口:辅助函数 → 类文件 → 实例初始化 - * 类文件按领域目录组织(inc/classes/{domain}/),路径集中在此维护。 + * Helpers + procedural modules + core hooks. + * Domain classes load via Composer PSR-4 (src/AKSRT). * * @package AKSRT * @version 3.4.0 @@ -11,14 +11,7 @@ defined('ABSPATH') || exit; -// ============================================================ -// 翻译加载延迟到 after_setup_theme(WordPress 6.7+ 要求) -// 由 AKSRT_Setup::load_textdomain() 处理 -// ============================================================ - -// ============================================================ -// 阶段1:加载辅助函数(必须在类之前,类会调用这些函数) -// ============================================================ +// Stage 1: helpers require_once AKSRT_DIR . '/inc/helpers/aksrt-icons.php'; require_once AKSRT_DIR . '/inc/helpers/aksrt-domain-model.php'; require_once AKSRT_DIR . '/inc/helpers/aksrt-template-tags.php'; @@ -46,7 +39,6 @@ require_once AKSRT_DIR . '/inc/helpers/aksrt-null.php'; require_once AKSRT_DIR . '/inc/helpers/aksrt-identity.php'; require_once AKSRT_DIR . '/inc/helpers/aksrt-rewards.php'; require_once AKSRT_DIR . '/inc/helpers/menu-decoration.php'; -require_once AKSRT_DIR . '/inc/helpers/class-aksrt-nav-walker.php'; require_once AKSRT_DIR . '/inc/helpers/aksrt-transactions.php'; require_once AKSRT_DIR . '/inc/helpers/aksrt-commerce.php'; require_once AKSRT_DIR . '/inc/helpers/aksrt-user-dashboard.php'; @@ -54,368 +46,46 @@ require_once AKSRT_DIR . '/inc/helpers/aksrt-user-center.php'; require_once AKSRT_DIR . '/inc/helpers/aksrt-user-home.php'; require_once AKSRT_DIR . '/inc/helpers/aksrt-shortcodes.php'; +// Stage 2: procedural modules +require_once AKSRT_DIR . '/inc/modules/captcha.php'; +require_once AKSRT_DIR . '/inc/modules/user-hub.php'; +require_once AKSRT_DIR . '/inc/modules/user-notifications.php'; +require_once AKSRT_DIR . '/inc/modules/creator-revenue.php'; +require_once AKSRT_DIR . '/inc/modules/widgets-register.php'; -// ============================================================ -// 阶段2:加载类文件(settings 必须在 admin 之前) -// 领域目录:core / frontend / settings / admin / auth / user / -// credits / content / payment / forum / shop / sms / ai / -// messages / extensions / widgets -// ============================================================ - -// --- 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-1c.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'; -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'; -require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-home-cms.php'; -require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-payment-runtime.php'; -require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-display-runtime.php'; -require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-category-runtime.php'; -require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-user-runtime.php'; -require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-credits-runtime.php'; -require_once AKSRT_DIR . '/inc/classes/settings/class-aksrt-settings-integration.php'; -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/settings/trait-aksrt-settings-facade-bulk.php'; -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'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-user-controller-verify-integrations.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-user-controller-auth-phone-operations.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-user-controller-restriction-operations.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-user-controller-follow-operations.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/global-ctrl-traits/trait-aksrt-admin-global-controller-part-1.php'; -require_once AKSRT_DIR . '/inc/classes/admin/global-ctrl-traits/trait-aksrt-admin-global-controller-part-2.php'; -require_once AKSRT_DIR . '/inc/classes/admin/global-ctrl-traits/trait-aksrt-admin-homepage-settings-rest.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-global-controller.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-page-display-controller.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-post-list-controller.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-permissions-controller.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-user-controller.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-payment-controller.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-tools-controller.php'; -require_once AKSRT_DIR . '/inc/classes/admin/class-aksrt-admin-schema-provider.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-global.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-page-display.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/post-list/class-aksrt-admin-schema-post-list-list.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-post-list.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-permissions.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-users.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-payment.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-extensions-ip.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-extensions-audit.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-extensions-push.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-extensions-security.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-extensions-docs-mode.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-extensions.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-tools-import-export.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-tools-health.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-tools-backup.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-tools-email-rollback.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-tools.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-shop-basic.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-shop-list.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-shop-contact.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-shop-single.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-shop-product-defaults.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-shop-shipping-config.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-shop-timing.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-shop.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-forum-basic.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-forum-names.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-forum-homepage.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-forum-board-page.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-forum-post-page.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-forum-reply.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-forum-permissions.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-forum-other.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-forum-upload.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-forum-credits.php'; -require_once AKSRT_DIR . '/inc/classes/admin/schema/class-aksrt-admin-schema-forum.php'; -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.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/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'; -require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-pay-charge-cards.php'; -require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-pay-shipping.php'; -require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-pay-after-sale.php'; -require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-pay-orders.php'; -require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-pay-products.php'; -require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-pay-download-logs.php'; -require_once AKSRT_DIR . '/inc/classes/admin/native/class-aksrt-admin-pay-withdrawals.php'; -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'; - -// --- 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/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'; - -// --- user --- -require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-user.php'; -require_once AKSRT_DIR . '/inc/classes/user/class-aksrt-user-notifications.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'; - -// --- 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'; - -// --- 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/balance-service-traits/trait-aksrt-balance-service-rest.php'; -require_once AKSRT_DIR . '/inc/classes/credits/balance-service-traits/trait-aksrt-balance-service-charge.php'; -require_once AKSRT_DIR . '/inc/classes/credits/balance-service-traits/trait-aksrt-balance-service-points.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'; - -// --- content pay / download / VIP --- -require_once AKSRT_DIR . '/inc/classes/content/class-aksrt-download.php'; -require_once AKSRT_DIR . '/inc/classes/content/content-pay-traits/trait-aksrt-content-pay-rest.php'; -require_once AKSRT_DIR . '/inc/classes/content/content-pay-traits/trait-aksrt-content-pay-orders.php'; -require_once AKSRT_DIR . '/inc/classes/content/content-pay-traits/trait-aksrt-content-pay-helpers.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/vip-service-traits/trait-aksrt-vip-service-rest.php'; -require_once AKSRT_DIR . '/inc/classes/content/vip-service-traits/trait-aksrt-vip-service-purchase.php'; -require_once AKSRT_DIR . '/inc/classes/content/vip-service-traits/trait-aksrt-vip-service-packages.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 首页模块(预览 REST + 默认模板;模板主路径仍在 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'; - -// --- 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'; - -// --- 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'; - -// --- 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/order-repository-traits/trait-aksrt-order-repository-core.php'; -require_once AKSRT_DIR . '/inc/classes/payment/order-repository-traits/trait-aksrt-order-repository-admin.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'; - -// --- core: front submit --- -require_once AKSRT_DIR . '/inc/classes/core/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'; -require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-forum-score-service.php'; -require_once AKSRT_DIR . '/inc/classes/forum/board-service-traits/trait-aksrt-forum-board-service-part-1.php'; -require_once AKSRT_DIR . '/inc/classes/forum/board-service-traits/trait-aksrt-forum-board-service-part-2.php'; -require_once AKSRT_DIR . '/inc/classes/forum/board-service-traits/trait-aksrt-forum-board-service-part-3.php'; -require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-forum-board-service.php'; -require_once AKSRT_DIR . '/inc/classes/forum/topic-service-traits/trait-aksrt-forum-topic-service-part-1.php'; -require_once AKSRT_DIR . '/inc/classes/forum/topic-service-traits/trait-aksrt-forum-topic-service-part-2.php'; -require_once AKSRT_DIR . '/inc/classes/forum/topic-service-traits/trait-aksrt-forum-topic-service-part-3.php'; -require_once AKSRT_DIR . '/inc/classes/forum/topic-service-traits/trait-aksrt-forum-topic-service-part-4.php'; -require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-forum-topic-service.php'; -require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-forum-moderation-service.php'; -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/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'; -require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-shop-product-service.php'; -require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-product-meta-box.php'; -require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-product-variants-meta-box.php'; -require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-plate-meta-box.php'; -require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-topic-admin-list.php'; -require_once AKSRT_DIR . '/inc/classes/forum/class-aksrt-topic-meta-box.php'; -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/shop/class-aksrt-shop.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'; - -// --- 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'; - -// --- 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'; - -// --- widgets --- -// 包文件(多 widget 合一)+ 独立 widget 文件 + 注册中心。 -// 使用单一 glob:目录内所有 class-*.php(含 original/new/batch1/registry)。 -// require_once 幂等;新增 widget 只需丢进 widgets/ 即可被加载。 -$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) { - require_once $aksrt_widget_file; - } -} - -// ============================================================ -// 阶段3:核心功能模块(Gravatar替换 / SMTP邮件) -// ============================================================ +// Stage 3: core hooks require_once AKSRT_DIR . '/inc/core-hooks.php'; -// ============================================================ -// 阶段4:邮箱验证 — 启动 Auth Service 全局钩子(authenticate 拦截) -// ============================================================ -if (class_exists('AKSRT_Auth_Service')) { - AKSRT_Auth_Service::init(); +// Stage 4: auth service hooks +if (class_exists(\AKSRT\Auth\Service::class)) { + \AKSRT\Auth\Service::init(); } -// ============================================================ -// 阶段5:邮箱验证 — 一次性 backfill(幂等)+ cron 异步回填 -// 兼容站点已通过 SQL 直接打开开关、未走 REST 保存路径的情况。 -// ============================================================ +// Stage 5: email verification backfill add_action('init', function () { - // 紧急降级:直接跳过迁移 if (defined('AKSRT_NO_EMAIL_GATE') && AKSRT_NO_EMAIL_GATE) { return; } - if (!class_exists('AKSRT_Auth_Service') || !class_exists('AKSRT_Settings')) { + if (!class_exists(\AKSRT\Auth\Service::class) || !class_exists(\AKSRT\Settings\Settings::class)) { return; } - if (!AKSRT_Settings::registration_requires_email_verification()) { + if (!\AKSRT\Settings\Settings::registration_requires_email_verification()) { return; } if (get_option('aksrt_email_verification_backfill_done')) { return; } - // 在 admin 上下文下不要拖慢前台,仅 admin/cron 触发 if (!is_admin() && !(defined('DOING_CRON') && DOING_CRON)) { return; } - AKSRT_Auth_Service::backfill_legacy_users_as_verified(); + \AKSRT\Auth\Service::backfill_legacy_users_as_verified(); }, 5); -// 异步分批回填的 cron 钩子(仅在用户量 > 50000 时使用) add_action('aksrt_email_verification_backfill_batch', function ($offset = 0) { - if (class_exists('AKSRT_Auth_Service')) { - AKSRT_Auth_Service::run_async_backfill_batch((int) $offset); + if (class_exists(\AKSRT\Auth\Service::class)) { + \AKSRT\Auth\Service::run_async_backfill_batch((int) $offset); } }, 10, 1); -// ============================================================ -// 阶段6:设置迁移 — 将旧 option key 映射到新 Schema 结构 -// 仅在后台上下文执行,前台不触发。 -// ============================================================ add_action('admin_init', function () { }, 5); diff --git a/inc/classes/admin/schema/class-aksrt-admin-schema-extensions.php b/inc/classes/admin/schema/class-aksrt-admin-schema-extensions.php deleted file mode 100644 index 6dc289bb..00000000 --- a/inc/classes/admin/schema/class-aksrt-admin-schema-extensions.php +++ /dev/null @@ -1,25 +0,0 @@ - 'extensions', - 'title' => '扩展&增强', - 'sections' => [ - 'ip' => AKSRT_Admin_Schema_Extensions_IP::build(), - 'audit' => AKSRT_Admin_Schema_Extensions_Audit::build(), - 'push' => AKSRT_Admin_Schema_Extensions_Push::build(), - 'security' => AKSRT_Admin_Schema_Extensions_Security::build(), - 'docs-mode' => AKSRT_Admin_Schema_Extensions_Docs_Mode::build(), - ], - ]; - } -} diff --git a/inc/classes/admin/schema/class-aksrt-admin-schema-shop.php b/inc/classes/admin/schema/class-aksrt-admin-schema-shop.php deleted file mode 100644 index 0a2e3ddb..00000000 --- a/inc/classes/admin/schema/class-aksrt-admin-schema-shop.php +++ /dev/null @@ -1,28 +0,0 @@ - 'shop', - 'title' => '商城&商品', - 'version' => '1.0.0', - 'sections' => [ - 'basic' => AKSRT_Admin_Schema_Shop_Basic::build(), - 'list' => AKSRT_Admin_Schema_Shop_List::build(), - 'contact' => AKSRT_Admin_Schema_Shop_Contact::build(), - 'single' => AKSRT_Admin_Schema_Shop_Single::build(), - 'product-defaults' => AKSRT_Admin_Schema_Shop_Product_Defaults::build(), - 'shipping-config' => AKSRT_Admin_Schema_Shop_Shipping_Config::build(), - 'timing' => AKSRT_Admin_Schema_Shop_Timing::build(), - ], - ]; - } -} diff --git a/inc/classes/admin/schema/class-aksrt-admin-schema-tools.php b/inc/classes/admin/schema/class-aksrt-admin-schema-tools.php deleted file mode 100644 index 33482fe4..00000000 --- a/inc/classes/admin/schema/class-aksrt-admin-schema-tools.php +++ /dev/null @@ -1,24 +0,0 @@ - 'tools', - 'title' => '工具&诊断', - 'sections' => [ - 'import-export' => AKSRT_Admin_Schema_Tools_Import_Export::build(), - 'health' => AKSRT_Admin_Schema_Tools_Health::build(), - 'backup' => AKSRT_Admin_Schema_Tools_Backup::build(), - 'email-rollback' => AKSRT_Admin_Schema_Tools_Email_Rollback::build(), - ], - ]; - } -} diff --git a/inc/classes/payment/class-aksrt-order-repository.php b/inc/classes/payment/class-aksrt-order-repository.php deleted file mode 100644 index da489df4..00000000 --- a/inc/classes/payment/class-aksrt-order-repository.php +++ /dev/null @@ -1,26 +0,0 @@ - esc_html__('带样式的搜索框', 'aksrt'), - ]); - } - - public function widget($args, $instance): void { - echo $args['before_widget']; - $title = apply_filters('widget_title', $instance['title'] ?? '', $instance, $this->id_base); - if ($title) echo $args['before_title'] . esc_html($title) . $args['after_title']; - $placeholder = sanitize_text_field($instance['placeholder'] ?? __('搜索文章...', 'aksrt')); - ?> - - -

- - -

-

- - -

- sanitize_text_field($new_instance['title'] ?? ''), - 'placeholder' => sanitize_text_field($new_instance['placeholder'] ?? ''), - ]; - } -} - -// ============================================================ -// 2. 公告通知小工具 -// ============================================================ - -class AKSRT_Notice_Widget extends WP_Widget { - - public function __construct() { - parent::__construct('aksrt_notice', esc_html__('AKSRT 公告', 'aksrt'), [ - 'description' => esc_html__('显示公告/通知信息', 'aksrt'), - ]); - } - - public function widget($args, $instance): void { - echo $args['before_widget']; - $title = apply_filters('widget_title', $instance['title'] ?? '', $instance, $this->id_base); - $content = wp_kses_post($instance['content'] ?? ''); - $style = sanitize_key($instance['style'] ?? 'info'); - $icon = sanitize_text_field($instance['icon'] ?? 'fas fa-bullhorn'); - - if ($title) echo $args['before_title'] . esc_html($title) . $args['after_title']; - ?> -
- -
- -
-
- -

- - -

-

- - -

-

- - -

-

- - - -

- sanitize_text_field($new_instance['title'] ?? ''), - 'content' => wp_kses_post($new_instance['content'] ?? ''), - 'style' => in_array($new_instance['style'] ?? '', ['info', 'success', 'warning', 'danger'], true) ? $new_instance['style'] : 'info', - 'icon' => sanitize_text_field($new_instance['icon'] ?? 'fas fa-bullhorn'), - ]; - } -} - -// ============================================================ -// 3. 最新评论小工具 -// ============================================================ - -class AKSRT_Recent_Comments_Widget extends WP_Widget { - - public function __construct() { - parent::__construct('aksrt_recent_comments', esc_html__('AKSRT 最新评论', 'aksrt'), [ - 'description' => esc_html__('显示最新评论列表', 'aksrt'), - ]); - } - - public function widget($args, $instance): void { - echo $args['before_widget']; - $title = apply_filters('widget_title', $instance['title'] ?? __('最新评论', 'aksrt'), $instance, $this->id_base); - $count = max(1, min(20, (int) ($instance['count'] ?? 5))); - $show_avatar = !empty($instance['show_avatar']); - - if ($title) echo $args['before_title'] . esc_html($title) . $args['after_title']; - - $comments = get_comments([ - 'number' => $count, - 'status' => 'approve', - 'post_status' => 'publish', - ]); - - if ($comments) : ?> -
- comment_post_ID); - if (!$post) continue; - ?> -
- -
- -
- -
-
- comment_author); ?> - comment_date), current_time('timestamp'))); ?> -
-

- comment_content, 15, '...')); ?> -

- - ID)); ?> - -
-
- -
- - ' . esc_html__('暂无评论', 'aksrt') . '

'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> - -

- - -

-

- - -

-

- -

- sanitize_text_field($new_instance['title'] ?? ''), - 'count' => max(1, min(20, (int) ($new_instance['count'] ?? 5))), - 'show_avatar' => !empty($new_instance['show_avatar']), - ]; - } -} - -// ============================================================ -// 4. 友情链接小工具 -// ============================================================ - -class AKSRT_Friend_Links_Widget extends WP_Widget { - - public function __construct() { - parent::__construct('aksrt_friend_links', esc_html__('AKSRT 友情链接', 'aksrt'), [ - 'description' => esc_html__('显示友情链接列表', 'aksrt'), - ]); - } - - public function widget($args, $instance): void { - echo $args['before_widget']; - $title = apply_filters('widget_title', $instance['title'] ?? __('友情链接', 'aksrt'), $instance, $this->id_base); - $show_icon = !empty($instance['show_icon']); - $columns = max(1, min(4, (int) ($instance['columns'] ?? 2))); - - if ($title) echo $args['before_title'] . esc_html($title) . $args['after_title']; - - $links = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_friend_links() : []; - - if (!empty($links)) : ?> - - - ' . esc_html__('暂无友情链接', 'aksrt') . '

'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> - -

- - -

-

- - -

-

- -

-

- sanitize_text_field($new_instance['title'] ?? ''), - 'columns' => max(1, min(4, (int) ($new_instance['columns'] ?? 2))), - 'show_icon'=> !empty($new_instance['show_icon']), - ]; - } -} - -// ============================================================ -// 5. 图标卡片小工具 -// ============================================================ - -class AKSRT_Icon_Cards_Widget extends WP_Widget { - - public function __construct() { - parent::__construct('aksrt_icon_cards', esc_html__('AKSRT 图标卡片', 'aksrt'), [ - 'description' => esc_html__('显示图标+文字卡片网格', 'aksrt'), - ]); - } - - public function widget($args, $instance): void { - echo $args['before_widget']; - $title = apply_filters('widget_title', $instance['title'] ?? '', $instance, $this->id_base); - $cards = isset($instance['cards']) && is_array($instance['cards']) ? $instance['cards'] : []; - $columns = max(1, min(4, (int) ($instance['columns'] ?? 2))); - - if ($title) echo $args['before_title'] . esc_html($title) . $args['after_title']; - - if (!empty($cards)) : ?> -
- - < class="widget-icon-cards__item"> - -
- -
-
- -
- -
- > - -
- '', 'icon' => '', 'link' => '', 'description' => '']; - } - ?> -

- - -

-

- - -

-
- $card) : ?> -
-

" value="" placeholder="">

-

" value="" placeholder="">

-

" value="" placeholder="">

-

" value="" placeholder="">

-
- sanitize_text_field($card['title'] ?? ''), - 'icon' => sanitize_text_field($card['icon'] ?? ''), - 'link' => esc_url_raw($card['link'] ?? ''), - 'description' => sanitize_text_field($card['description'] ?? ''), - ]; - } - } - return [ - 'title' => sanitize_text_field($new_instance['title'] ?? ''), - 'columns' => max(1, min(4, (int) ($new_instance['columns'] ?? 2))), - 'cards' => $cards, - ]; - } -} - -// ============================================================ -// 6. 按钮组小工具 -// ============================================================ - -class AKSRT_Buttons_Widget extends WP_Widget { - - public function __construct() { - parent::__construct('aksrt_buttons', esc_html__('AKSRT 按钮组', 'aksrt'), [ - 'description' => esc_html__('显示一组自定义按钮', 'aksrt'), - ]); - } - - public function widget($args, $instance): void { - echo $args['before_widget']; - $title = apply_filters('widget_title', $instance['title'] ?? '', $instance, $this->id_base); - $buttons = isset($instance['buttons']) && is_array($instance['buttons']) ? $instance['buttons'] : []; - $layout = sanitize_key($instance['layout'] ?? 'vertical'); - - if ($title) echo $args['before_title'] . esc_html($title) . $args['after_title']; - - if (!empty($buttons)) : ?> -
- - - - - - -
- '', 'url' => '', 'style' => 'primary', 'icon' => '', 'new_window' => false]; - } - ?> -

- - -

-

- - -

-
- $btn) : ?> -
-

- " value="" placeholder=""> -

-

- " value="" placeholder=""> -

-

- -

-

- " value="" placeholder=""> -

-

- -

-
- sanitize_text_field($btn['text'] ?? ''), - 'url' => esc_url_raw($btn['url'] ?? ''), - 'style' => $style, - 'icon' => sanitize_text_field($btn['icon'] ?? ''), - 'new_window' => !empty($btn['new_window']), - ]; - } - } - return [ - 'title' => sanitize_text_field($new_instance['title'] ?? ''), - 'layout' => in_array($new_instance['layout'] ?? '', ['vertical', 'horizontal'], true) ? $new_instance['layout'] : 'vertical', - 'buttons' => $buttons, - ]; - } -} - -// ============================================================ -// 7. 自定义 HTML / 间距小工具 -// ============================================================ - -class AKSRT_Custom_HTML_Gap_Widget extends WP_Widget { - - public function __construct() { - parent::__construct('aksrt_custom_html_gap', esc_html__('AKSRT 自定义HTML/间距', 'aksrt'), [ - 'description' => esc_html__('插入自定义 HTML 或间距', 'aksrt'), - ]); - } - - public function widget($args, $instance): void { - $mode = sanitize_key($instance['mode'] ?? 'html'); - - if ($mode === 'gap') { - $height = max(0, min(200, (int) ($instance['gap_height'] ?? 20))); - echo ''; - return; - } - - echo $args['before_widget']; - $title = apply_filters('widget_title', $instance['title'] ?? '', $instance, $this->id_base); - if ($title) echo $args['before_title'] . esc_html($title) . $args['after_title']; - echo '
' . wp_kses_post($instance['content'] ?? '') . '
'; - echo $args['after_widget']; - } - - public function form($instance): void { - $mode = sanitize_key($instance['mode'] ?? 'html'); - ?> -

- - -

-

- - -

-

- - -

-

- - -

- in_array($new_instance['mode'] ?? '', ['html', 'gap'], true) ? $new_instance['mode'] : 'html', - 'title' => sanitize_text_field($new_instance['title'] ?? ''), - 'content' => wp_kses_post($new_instance['content'] ?? ''), - 'gap_height' => max(0, min(200, (int) ($new_instance['gap_height'] ?? 20))), - ]; - } -} diff --git a/inc/core-hooks/part-1.php b/inc/core-hooks/part-1.php index 9b024f2b..9f848ff1 100644 --- a/inc/core-hooks/part-1.php +++ b/inc/core-hooks/part-1.php @@ -85,8 +85,8 @@ add_action('init', 'aksrt_register_topics_taxonomy'); function aksrt_register_forum_cpt() { // Respect bbs_s switch — skip CPT registration when forum is disabled. // Admin context always registers so the backend settings page works. - if (!is_admin() && class_exists('AKSRT_Settings')) { - $forum = AKSRT_Settings::get_forum_settings(); + if (!is_admin() && class_exists('\AKSRT\Settings\Settings')) { + $forum = \AKSRT\Settings\Settings::get_forum_settings(); if (empty($forum['enabled'])) { return; } @@ -97,8 +97,8 @@ function aksrt_register_forum_cpt() { $topic_slug = 'topic'; $forum_enabled = true; $forum_settings = []; - if (class_exists('AKSRT_Settings')) { - $forum_settings = AKSRT_Settings::get_forum_settings(); + if (class_exists('\AKSRT\Settings\Settings')) { + $forum_settings = \AKSRT\Settings\Settings::get_forum_settings(); $plate_slug = !empty($forum_settings['other']['plate_slug']) ? $forum_settings['other']['plate_slug'] : 'board'; $topic_slug = !empty($forum_settings['other']['posts_slug']) ? $forum_settings['other']['posts_slug'] : 'topic'; $forum_enabled = !empty($forum_settings['enabled']); @@ -202,8 +202,8 @@ add_action('init', 'aksrt_register_forum_cpt'); // ============================================================ function aksrt_register_forum_plate_cpt() { - if (!is_admin() && class_exists('AKSRT_Settings')) { - $forum = AKSRT_Settings::get_forum_settings(); + if (!is_admin() && class_exists('\AKSRT\Settings\Settings')) { + $forum = \AKSRT\Settings\Settings::get_forum_settings(); if (empty($forum['enabled'])) { return; } @@ -212,8 +212,8 @@ function aksrt_register_forum_plate_cpt() { $plate_slug = 'board'; $forum_enabled = true; $forum = []; - if (class_exists('AKSRT_Settings')) { - $forum = AKSRT_Settings::get_forum_settings(); + if (class_exists('\AKSRT\Settings\Settings')) { + $forum = \AKSRT\Settings\Settings::get_forum_settings(); $plate_slug = !empty($forum['other']['plate_slug']) ? $forum['other']['plate_slug'] : 'board'; $forum_enabled = !empty($forum['enabled']); } diff --git a/inc/core-hooks/part-2.php b/inc/core-hooks/part-2.php index 070f9966..7ab3b95b 100644 --- a/inc/core-hooks/part-2.php +++ b/inc/core-hooks/part-2.php @@ -19,8 +19,8 @@ add_action('admin_menu', function () { // ============================================================ function aksrt_get_gravatar_source() { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::avatar_source(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::avatar_source(); } $source = aksrt_get_setting('avatar_source', 'cn.cravatar.com'); @@ -87,8 +87,8 @@ add_action('phpmailer_init', function ($phpmailer) { if (!empty($mail['from_address'])) { $from_name = isset($mail['from_name']) ? $mail['from_name'] : ''; // mail_showname 覆盖 from_name - if (class_exists('AKSRT_Settings')) { - $branding = AKSRT_Settings::get_mail_branding(); + if (class_exists('\AKSRT\Settings\Settings')) { + $branding = \AKSRT\Settings\Settings::get_mail_branding(); if ($branding['showname'] !== '') { $from_name = $branding['showname']; } @@ -99,8 +99,8 @@ add_action('phpmailer_init', function ($phpmailer) { $phpmailer->FromName = $mail['from_name']; } // mail_showname 全局覆盖 FromName - if (class_exists('AKSRT_Settings')) { - $branding = AKSRT_Settings::get_mail_branding(); + if (class_exists('\AKSRT\Settings\Settings')) { + $branding = \AKSRT\Settings\Settings::get_mail_branding(); if ($branding['showname'] !== '') { $phpmailer->FromName = $branding['showname']; } @@ -109,8 +109,8 @@ add_action('phpmailer_init', function ($phpmailer) { // mail_title_prefix:为所有邮件主题添加前缀 add_filter('wp_mail', function ($atts) { - if (!class_exists('AKSRT_Settings') || empty($atts['subject'])) return $atts; - $branding = AKSRT_Settings::get_mail_branding(); + if (!class_exists('\AKSRT\Settings\Settings') || empty($atts['subject'])) return $atts; + $branding = \AKSRT\Settings\Settings::get_mail_branding(); if ($branding['title_prefix'] !== '' && strpos($atts['subject'], $branding['title_prefix']) !== 0) { $atts['subject'] = $branding['title_prefix'] . ' ' . $atts['subject']; } @@ -198,8 +198,8 @@ function aksrt_save_category_meta(int $term_id) { delete_term_meta($term_id, 'aksrt_category_recommend_desc'); } - if (class_exists('AKSRT_Settings')) { - AKSRT_Settings::flush_category_recommend_cache(); + if (class_exists('\AKSRT\Settings\Settings')) { + \AKSRT\Settings\Settings::flush_category_recommend_cache(); } } @@ -301,11 +301,11 @@ add_action('pre_get_posts', function ($query) { $orderby = isset($_GET['orderby']) ? sanitize_key((string) $_GET['orderby']) : 'date'; if ($orderby === 'downloads') { - $query->set('meta_key', AKSRT_Domain_Model::RESOURCE_DOWNLOAD_COUNT_KEY); + $query->set('meta_key', \AKSRT\Core\DomainModel::RESOURCE_DOWNLOAD_COUNT_KEY); $query->set('orderby', 'meta_value_num'); $query->set('order', 'DESC'); } elseif ($orderby === 'views') { - $query->set('meta_key', AKSRT_Domain_Model::RESOURCE_VIEW_COUNT_KEY); + $query->set('meta_key', \AKSRT\Core\DomainModel::RESOURCE_VIEW_COUNT_KEY); $query->set('orderby', 'meta_value_num'); $query->set('order', 'DESC'); } @@ -317,7 +317,7 @@ add_action('pre_get_posts', function ($query) { $meta_query = [ 'relation' => 'AND', [ - 'key' => AKSRT_Domain_Model::RESOURCE_MARKER_KEY, + 'key' => \AKSRT\Core\DomainModel::RESOURCE_MARKER_KEY, 'value' => '1', 'compare' => '=', ], @@ -327,19 +327,19 @@ add_action('pre_get_posts', function ($query) { $meta_query[] = [ 'relation' => 'OR', [ - 'key' => AKSRT_Domain_Model::PAY_PRICE_KEY, + 'key' => \AKSRT\Core\DomainModel::PAY_PRICE_KEY, 'value' => 0, 'compare' => '=', 'type' => 'NUMERIC', ], [ - 'key' => AKSRT_Domain_Model::PAY_PRICE_KEY, + 'key' => \AKSRT\Core\DomainModel::PAY_PRICE_KEY, 'compare' => 'NOT EXISTS', ], ]; } elseif ($price_filter === 'paid') { $meta_query[] = [ - 'key' => AKSRT_Domain_Model::PAY_PRICE_KEY, + 'key' => \AKSRT\Core\DomainModel::PAY_PRICE_KEY, 'value' => 0, 'compare' => '>', 'type' => 'NUMERIC', @@ -349,21 +349,21 @@ add_action('pre_get_posts', function ($query) { if ($price_min !== null || $price_max !== null) { if ($price_min !== null && $price_max !== null) { $meta_query[] = [ - 'key' => AKSRT_Domain_Model::PAY_PRICE_KEY, + 'key' => \AKSRT\Core\DomainModel::PAY_PRICE_KEY, 'value' => [$price_min, $price_max], 'compare' => 'BETWEEN', 'type' => 'NUMERIC', ]; } elseif ($price_min !== null) { $meta_query[] = [ - 'key' => AKSRT_Domain_Model::PAY_PRICE_KEY, + 'key' => \AKSRT\Core\DomainModel::PAY_PRICE_KEY, 'value' => $price_min, 'compare' => '>=', 'type' => 'NUMERIC', ]; } else { $meta_query[] = [ - 'key' => AKSRT_Domain_Model::PAY_PRICE_KEY, + 'key' => \AKSRT\Core\DomainModel::PAY_PRICE_KEY, 'value' => $price_max, 'compare' => '<=', 'type' => 'NUMERIC', diff --git a/inc/helpers/aksrt-archive.php b/inc/helpers/aksrt-archive.php index ef70eb28..df6dc58f 100644 --- a/inc/helpers/aksrt-archive.php +++ b/inc/helpers/aksrt-archive.php @@ -16,8 +16,8 @@ if (!function_exists('aksrt_archive_get_list_style_settings')) : * @return array */ function aksrt_archive_get_list_style_settings(): array { - $settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_post_list_style_settings() + $settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_post_list_style_settings() : []; return [ @@ -184,8 +184,8 @@ if (!function_exists('aksrt_resolve_post_list_render_config')) : ]; // Multi-thumb from global thumb settings + category allowlist. - if (class_exists('AKSRT_Settings')) { - $thumb_settings = AKSRT_Settings::get_post_thumb_settings(); + if (class_exists('\AKSRT\Settings\Settings')) { + $thumb_settings = \AKSRT\Settings\Settings::get_post_thumb_settings(); if (!empty($thumb_settings['multi_enabled'])) { $config['multi_thumb_enabled'] = true; $config['multi_thumb_limit'] = (int) ($thumb_settings['multi_count'] ?? 4); diff --git a/inc/helpers/aksrt-auth-ui.php b/inc/helpers/aksrt-auth-ui.php index 75b7344e..080c26bc 100644 --- a/inc/helpers/aksrt-auth-ui.php +++ b/inc/helpers/aksrt-auth-ui.php @@ -18,8 +18,8 @@ if (!function_exists('aksrt_get_auth_agreement_view')) { $required = true; $page_ref = ''; - if (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'user_agreement_settings')) { - $cfg = AKSRT_Settings::user_agreement_settings(); + if (class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'user_agreement_settings')) { + $cfg = \AKSRT\Settings\Settings::user_agreement_settings(); $enabled = !empty($cfg['enabled']); $required = !empty($cfg['required']); $page_ref = (string) ($cfg['page'] ?? ''); @@ -61,7 +61,7 @@ if (!function_exists('aksrt_get_auth_sign_logo_html')) { * Shared logo block for full-page sign shell. */ function aksrt_get_auth_sign_logo_html(): string { - $logo_url = class_exists('AKSRT_Settings') ? AKSRT_Settings::user_logo_url() : ''; + $logo_url = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::user_logo_url() : ''; $home = home_url('/'); $name = get_bloginfo('name'); if ($logo_url) { diff --git a/inc/helpers/aksrt-comments.php b/inc/helpers/aksrt-comments.php index 2b176ed3..14293e38 100644 --- a/inc/helpers/aksrt-comments.php +++ b/inc/helpers/aksrt-comments.php @@ -21,8 +21,8 @@ if (!function_exists('aksrt_comments_template_query_args')) : ? sanitize_key((string) wp_unslash($_GET['aksrt_comment_order'])) : ''; if ($order === '') { - $settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_comment_display_settings() + $settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_comment_display_settings() : []; $order = (($settings['order'] ?? 'desc') === 'asc') ? 'oldest' : 'newest'; } @@ -70,8 +70,8 @@ if (!function_exists('aksrt_comments_build_context')) : * @return array */ function aksrt_comments_build_context(): array { - $settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_comment_display_settings() + $settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_comment_display_settings() : [ 'order' => 'desc', 'nested_depth' => 3, @@ -115,8 +115,8 @@ if (!function_exists('aksrt_comments_build_context')) : 'submit_text' => (string) ($settings['submit_text'] ?? __('提交评论', 'aksrt')), 'title_text' => (string) ($settings['title'] ?? __('评论', 'aksrt')), 'corderby_enabled' => !empty($settings['corderby']), - 'oauth_providers' => class_exists('AKSRT_OAuth') - ? AKSRT_OAuth::get_instance()->get_auth_providers_data() + 'oauth_providers' => class_exists('\AKSRT\Auth\OAuth') + ? \AKSRT\Auth\OAuth::get_instance()->get_auth_providers_data() : [], ]; } @@ -150,8 +150,8 @@ if (!function_exists('aksrt_comments_normalize_order')) : function aksrt_comments_normalize_order(string $order = ''): string { $order = sanitize_key($order); if (!in_array($order, ['newest', 'oldest', 'hottest'], true)) { - $settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_comment_display_settings() + $settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_comment_display_settings() : []; $order = (($settings['order'] ?? 'desc') === 'asc') ? 'oldest' : 'newest'; } @@ -169,8 +169,8 @@ if (!function_exists('aksrt_comments_query_for_post')) : * @return array{comments:array,total:int,max_pages:int,page:int,order:string,author_only:bool,settings:array} */ function aksrt_comments_query_for_post(int $post_id, array $args = []): array { - $settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_comment_display_settings() + $settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_comment_display_settings() : []; $order = aksrt_comments_normalize_order((string) ($args['order'] ?? '')); $author_only = !empty($args['author_only']); diff --git a/inc/helpers/aksrt-coupon-order.php b/inc/helpers/aksrt-coupon-order.php index 3df04d57..d375cd25 100644 --- a/inc/helpers/aksrt-coupon-order.php +++ b/inc/helpers/aksrt-coupon-order.php @@ -15,11 +15,11 @@ if (!function_exists('aksrt_coupon_usage_exists')) { * Whether a coupon_usage row already exists for this order. */ function aksrt_coupon_usage_exists(string $order_number): bool { - if ($order_number === '' || !class_exists('AKSRT_DB_Migrator')) { + if ($order_number === '' || !class_exists('\AKSRT\Core\DBMigrator')) { return false; } global $wpdb; - $table = AKSRT_DB_Migrator::table('coupon_usage'); + $table = \AKSRT\Core\DBMigrator::table('coupon_usage'); if ($table === '') { return false; } @@ -39,7 +39,7 @@ if (!function_exists('aksrt_burn_order_coupon')) { * @return bool True when a burn was attempted (or already burned). */ function aksrt_burn_order_coupon(string $order_number, array $meta, int $buyer_id = 0): bool { - if ($order_number === '' || !class_exists('AKSRT_Coupon')) { + if ($order_number === '' || !class_exists('\AKSRT\Payment\Coupon')) { return false; } if (aksrt_coupon_usage_exists($order_number)) { @@ -53,7 +53,7 @@ if (!function_exists('aksrt_burn_order_coupon')) { return false; } - $coupon_api = AKSRT_Coupon::get_instance(); + $coupon_api = \AKSRT\Payment\Coupon::get_instance(); $coupon_api->use_coupon($coupon_code); // Prefer snapshot id: post-increment validate may fail on usage_limit edge. diff --git a/inc/helpers/aksrt-credits.php b/inc/helpers/aksrt-credits.php index afd0d287..3216aa2c 100644 --- a/inc/helpers/aksrt-credits.php +++ b/inc/helpers/aksrt-credits.php @@ -22,8 +22,8 @@ if (!function_exists('aksrt_user_credits')) { function aksrt_user_credits(int $user_id = 0): int { if ($user_id <= 0) $user_id = get_current_user_id(); if ($user_id <= 0) return 0; - if (!class_exists('AKSRT_Credits')) return 0; - return AKSRT_Credits::balance($user_id); + if (!class_exists('\AKSRT\Credits\Credits')) return 0; + return \AKSRT\Credits\Credits::balance($user_id); } } @@ -69,9 +69,9 @@ if (!function_exists('aksrt_credits_label')) { if (isset($map[$reason])) { return $map[$reason]; } - if (str_starts_with($reason, 'free_') && class_exists('AKSRT_Points_Free')) { + if (str_starts_with($reason, 'free_') && class_exists('\AKSRT\Credits\PointsFree')) { $key = substr($reason, 5); - $cat = AKSRT_Points_Free::catalog(); + $cat = \AKSRT\Credits\PointsFree::catalog(); if (isset($cat[$key][0])) { return (string) $cat[$key][0]; } diff --git a/inc/helpers/aksrt-domain-model.php b/inc/helpers/aksrt-domain-model.php index f040fd92..b45a0068 100644 --- a/inc/helpers/aksrt-domain-model.php +++ b/inc/helpers/aksrt-domain-model.php @@ -1,451 +1,8 @@ - */ - public static function default_post_meta(): array { - return [ - 'cover_images' => '', - 'custom_excerpt' => '', - 'layout_override' => '', - 'header_image_mode' => '', - 'show_toc' => '', - 'show_reading_progress' => '', - 'enable_lightbox' => '', - 'show_related' => '', - 'related_count' => 0, - 'enable_like' => '', - 'enable_favorite' => '', - 'enable_share' => '', - 'enable_print' => '', - 'enable_pdf' => '', - 'copyright_text' => '', - 'is_featured' => false, - // §3.8 文章扩展字段 - 'thumbnail_url' => '', - 'featured_slide' => '', - 'featured_video' => '', - // Episode list: [ ['url' => string, 'title' => string], ... ] - 'featured_video_episode' => [], - 'subtitle' => '', - 'views' => 0, - 'likes' => 0, - 'maxheight' => 0, - ]; - } - - /** - * @return array - */ - public static function default_term_meta(): array { - return [ - 'cover_url' => '', - 'description' => '', - 'layout_mode' => '', - 'show_sidebar' => '', - 'show_header' => true, - 'show_featured' => false, - ]; - } - - /** - * @return array - */ - public static function default_pay_meta(): array { - return [ - 'pay_type' => self::PAY_TYPE_NO, - 'pay_modo' => '0', // '0' cash | 'points' credits (Zibll) - 'price' => 0.0, - 'points_price' => 0, - 'original_price' => 0.0, - 'vip1_price' => 0.0, - 'vip2_price' => 0.0, - 'vip1_points' => 0, - 'vip2_points' => 0, - 'pay_limit' => 0, // 0 all | 1 VIP1+ | 2 VIP2 only (Zibll) - 'version' => '', - 'size' => '', - 'license' => '', - 'compat' => '', - 'demo_url' => '', - 'video_url' => '', - 'downloads' => [], - 'attributes' => [], - 'gallery' => [], - 'require_login' => false, - 'require_captcha' => false, - // §3.8 电商增强字段 - 'virtual_sales' => 0, - 'stock' => -1, - 'card_keys' => [], - 'purchase_limit' => 0, - 'free_preview' => '', - 'show_sales' => true, - // Zibll: free daily quota overbuy price (cash or points by pay_modo). - 'download_limit_over_price' => 0.0, - // Content cashier: coupon + buyer-facing 推广折扣 (zibll posts_zibpay). - 'coupon_s' => false, - 'coupon_desc' => '', - 'pay_rebate_discount' => 0.0, - ]; - } - - /** - * @return array - */ - public static function pay_type_labels(): array { - return [ - self::PAY_TYPE_NO => '不付费', - self::PAY_TYPE_READING => '付费阅读', - self::PAY_TYPE_DOWNLOAD => '付费下载', - self::PAY_TYPE_GALLERY => '付费图库', - self::PAY_TYPE_VIDEO => '付费视频', - self::PAY_TYPE_VIP => 'VIP 专属', - ]; - } - - public static function normalize_pay_type(string $pay_type): string { - $pay_type = sanitize_key($pay_type); - return array_key_exists($pay_type, self::pay_type_labels()) ? $pay_type : self::PAY_TYPE_NO; - } - - public static function is_resource_pay_type(string $pay_type): bool { - return self::normalize_pay_type($pay_type) === self::PAY_TYPE_DOWNLOAD; - } - - /** - * @param mixed $value - * @return array> - */ - public static function sanitize_downloads($value): array { - if (!is_array($value)) { - return []; - } - - $allowed_types = ['direct', 'net_disk', 'external']; - $downloads = []; - - foreach ($value as $row) { - if (!is_array($row)) { - continue; - } - - $url = isset($row['url']) ? esc_url_raw((string) $row['url']) : ''; - if ($url === '') { - continue; - } - - $type = isset($row['type']) && in_array($row['type'], $allowed_types, true) - ? (string) $row['type'] - : 'direct'; - - $extract_code = ''; - foreach ([ - 'extract_code', - 'extractCode', - 'extract', - 'extract_key', - 'extraction_code', - 'extractionCode', - 'code', - 'password', - 'pwd', - 'pan_code', - 'panCode', - 'pan_password', - 'panPassword', - 'access_code', - 'accessCode', - ] as $extract_key) { - if (isset($row[$extract_key]) && !is_array($row[$extract_key])) { - $candidate = trim((string) $row[$extract_key]); - if ($candidate !== '') { - $extract_code = sanitize_text_field($candidate); - break; - } - } - } - - $downloads[] = [ - 'label' => isset($row['label']) ? sanitize_text_field((string) $row['label']) : '', - 'url' => $url, - 'type' => $type, - 'extract_code' => $extract_code, - ]; - } - - return array_values($downloads); - } - - /** - * @param mixed $value - * @return array> - */ - public static function sanitize_attributes($value): array { - if (!is_array($value)) { - return []; - } - - $attributes = []; - - foreach ($value as $row) { - if (!is_array($row)) { - continue; - } - - $key = sanitize_text_field((string) ($row['key'] ?? '')); - $item_value = sanitize_text_field((string) ($row['value'] ?? '')); - - if ($key === '' && $item_value === '') { - continue; - } - - $attributes[] = [ - 'key' => $key, - 'value' => $item_value, - ]; - } - - return array_values($attributes); - } - - /** - * @param mixed $value - * @return string[] - */ - public static function sanitize_gallery($value): array { - if (!is_array($value)) { - return []; - } - - $gallery = []; - foreach ($value as $url) { - $url = esc_url_raw((string) $url); - if ($url !== '') { - $gallery[] = $url; - } - } - - return array_values(array_unique($gallery)); - } - - /** - * Sanitize card/key codes for auto-delivery. - * Each entry is a non-empty sanitized string (one code per line). - */ - public static function sanitize_card_keys($value): array { - if (!is_array($value)) { - return []; - } - - $keys = []; - foreach ($value as $key) { - $key = sanitize_text_field((string) $key); - if ($key !== '') { - $keys[] = $key; - } - } - - return $keys; - } - - /** - * @param array $raw - * @return array - */ - public static function sanitize_pay_meta(array $raw): array { - $meta = self::default_pay_meta(); - $meta['pay_type'] = self::normalize_pay_type((string) ($raw['pay_type'] ?? $meta['pay_type'])); - $pay_modo = sanitize_key((string) ($raw['pay_modo'] ?? '0')); - $meta['pay_modo'] = $pay_modo === 'points' ? 'points' : '0'; - $meta['price'] = max(0, (float) ($raw['price'] ?? 0)); - $meta['points_price'] = max(0, (int) ($raw['points_price'] ?? $raw['price'] ?? 0)); - $meta['original_price'] = max(0, (float) ($raw['original_price'] ?? 0)); - $meta['vip1_price'] = max(0, (float) ($raw['vip1_price'] ?? 0)); - $meta['vip2_price'] = max(0, (float) ($raw['vip2_price'] ?? 0)); - $meta['vip1_points'] = max(0, (int) ($raw['vip1_points'] ?? $raw['vip1_price'] ?? 0)); - $meta['vip2_points'] = max(0, (int) ($raw['vip2_points'] ?? $raw['vip2_price'] ?? 0)); - $pay_limit = (int) ($raw['pay_limit'] ?? 0); - $meta['pay_limit'] = in_array($pay_limit, [0, 1, 2], true) ? $pay_limit : 0; - $meta['version'] = sanitize_text_field((string) ($raw['version'] ?? '')); - $meta['size'] = sanitize_text_field((string) ($raw['size'] ?? '')); - $meta['license'] = sanitize_text_field((string) ($raw['license'] ?? '')); - $meta['compat'] = sanitize_text_field((string) ($raw['compat'] ?? '')); - $meta['demo_url'] = esc_url_raw((string) ($raw['demo_url'] ?? '')); - $meta['video_url'] = esc_url_raw((string) ($raw['video_url'] ?? '')); - $meta['downloads'] = self::sanitize_downloads($raw['downloads'] ?? []); - $meta['attributes'] = self::sanitize_attributes($raw['attributes'] ?? []); - $meta['gallery'] = self::sanitize_gallery($raw['gallery'] ?? []); - $meta['require_login'] = !empty($raw['require_login']); - $meta['require_captcha'] = !empty($raw['require_captcha']); - - // §3.8 电商增强字段 - $meta['virtual_sales'] = max(0, (int) ($raw['virtual_sales'] ?? 0)); - $meta['stock'] = (int) ($raw['stock'] ?? -1); - $meta['card_keys'] = self::sanitize_card_keys($raw['card_keys'] ?? []); - $meta['purchase_limit'] = max(0, (int) ($raw['purchase_limit'] ?? 0)); - $meta['free_preview'] = wp_kses_post((string) ($raw['free_preview'] ?? '')); - $meta['show_sales'] = !isset($raw['show_sales']) || !empty($raw['show_sales']); - $meta['download_limit_over_price'] = max(0, (float) ($raw['download_limit_over_price'] ?? 0)); - $meta['coupon_s'] = !empty($raw['coupon_s']); - $meta['coupon_desc'] = sanitize_textarea_field((string) ($raw['coupon_desc'] ?? '')); - $meta['pay_rebate_discount'] = max(0, (float) ($raw['pay_rebate_discount'] ?? 0)); - - return $meta; - } - - /** - * @return array - */ - public static function order_status_labels(): array { - return [ - self::ORDER_STATUS_CREATED => __('已创建', 'aksrt'), - self::ORDER_STATUS_PENDING => __('待支付', 'aksrt'), - self::ORDER_STATUS_PAID => __('已支付', 'aksrt'), - self::ORDER_STATUS_DELIVERED => __('已发货', 'aksrt'), - self::ORDER_STATUS_COMPLETED => __('已完成', 'aksrt'), - self::ORDER_STATUS_CANCELLED => __('已取消', 'aksrt'), - self::ORDER_STATUS_EXPIRED => __('已过期', 'aksrt'), - self::ORDER_STATUS_REFUNDING => __('退款中', 'aksrt'), - self::ORDER_STATUS_REFUNDED => __('已退款', 'aksrt'), - self::ORDER_STATUS_PENDING_REVIEW => __('待评价', 'aksrt'), - ]; - } - - /** - * @return array - */ - public static function order_transitions(): array { - return [ - self::ORDER_STATUS_CREATED => [ - self::ORDER_STATUS_PENDING, - self::ORDER_STATUS_CANCELLED, - ], - self::ORDER_STATUS_PENDING => [ - self::ORDER_STATUS_PAID, - self::ORDER_STATUS_CANCELLED, - self::ORDER_STATUS_EXPIRED, - ], - self::ORDER_STATUS_PAID => [ - self::ORDER_STATUS_DELIVERED, - self::ORDER_STATUS_COMPLETED, - self::ORDER_STATUS_REFUNDING, - ], - self::ORDER_STATUS_DELIVERED => [ - self::ORDER_STATUS_COMPLETED, - self::ORDER_STATUS_PENDING_REVIEW, - self::ORDER_STATUS_REFUNDING, - ], - self::ORDER_STATUS_COMPLETED => [ - self::ORDER_STATUS_PENDING_REVIEW, - self::ORDER_STATUS_REFUNDING, - ], - self::ORDER_STATUS_CANCELLED => [], - self::ORDER_STATUS_EXPIRED => [ - self::ORDER_STATUS_PENDING, - ], - self::ORDER_STATUS_REFUNDING => [ - self::ORDER_STATUS_REFUNDED, - self::ORDER_STATUS_PAID, - ], - self::ORDER_STATUS_REFUNDED => [], - self::ORDER_STATUS_PENDING_REVIEW => [ - self::ORDER_STATUS_COMPLETED, - self::ORDER_STATUS_REFUNDING, - ], - ]; - } - - public static function normalize_order_status(string $status, string $default = self::ORDER_STATUS_PENDING): string { - $status = sanitize_key($status); - return array_key_exists($status, self::order_status_labels()) ? $status : $default; - } - - public static function can_transition_order_status(string $from, string $to): bool { - $from = self::normalize_order_status($from, self::ORDER_STATUS_CREATED); - $to = self::normalize_order_status($to); - $transitions = self::order_transitions(); - - return isset($transitions[$from]) && in_array($to, $transitions[$from], true); - } - - /** - * @return string[] - */ - public static function paid_order_statuses(): array { - return [ - self::ORDER_STATUS_PAID, - self::ORDER_STATUS_DELIVERED, - self::ORDER_STATUS_COMPLETED, - ]; - } - - public static function is_paid_order_status(string $status): bool { - return in_array(self::normalize_order_status($status), self::paid_order_statuses(), true); - } - - /** - * @return string[] - */ - public static function vip_active_order_statuses(): array { - return self::paid_order_statuses(); - } -} diff --git a/inc/helpers/aksrt-frontend-tags.php b/inc/helpers/aksrt-frontend-tags.php index 8558d9b4..2d6d8087 100644 --- a/inc/helpers/aksrt-frontend-tags.php +++ b/inc/helpers/aksrt-frontend-tags.php @@ -162,8 +162,8 @@ if (!function_exists('aksrt_resolve_single_post_display_settings')) : if (!($post instanceof WP_Post)) { return []; } - $settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_post_page_settings() + $settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_post_page_settings() : [ 'toc_enabled' => true, 'toc_depth' => 3, @@ -233,7 +233,7 @@ if (!function_exists('aksrt_resolve_single_post_display_settings')) : } // Keep related_type as source alias for older callers. $settings['related_type'] = (string) $settings['related_source']; - $meta = class_exists('AKSRT_Post_Meta_Box') ? AKSRT_Post_Meta_Box::get_meta($post->ID) : []; + $meta = class_exists('\AKSRT\Core\PostMetaBox') ? \AKSRT\Core\PostMetaBox::get_meta($post->ID) : []; // show_toc new route: '' follow | '1' on | '0' off if (array_key_exists('show_toc', $meta) && $meta['show_toc'] !== '' && $meta['show_toc'] !== null) { $settings['toc_enabled'] = (string) $meta['show_toc'] === '1'; @@ -854,15 +854,15 @@ if (!function_exists('aksrt_comment_action_permissions')) : if (function_exists('aksrt_user_can')) { return aksrt_user_can($cap, $uid, $ctx); } - if (class_exists('AKSRT_Settings_Capabilities')) { - return AKSRT_Settings_Capabilities::user_can($cap, $uid, $ctx); + if (class_exists('\AKSRT\Settings\Capabilities')) { + return \AKSRT\Settings\Capabilities::user_can($cap, $uid, $ctx); } return false; }; $edit_window = 10; - if (class_exists('AKSRT_Settings')) { - $display = AKSRT_Settings::get_comment_display_settings(); + if (class_exists('\AKSRT\Settings\Settings')) { + $display = \AKSRT\Settings\Settings::get_comment_display_settings(); $edit_window = (int) ($display['edit_window'] ?? 10); } $within_window = $edit_window > 0 @@ -1049,7 +1049,7 @@ if (!function_exists('aksrt_comment_callback')) : * Canonical comment list item renderer. * * This is the single contract used by first-page rendering (comments.php), - * AJAX pagination (AKSRT_Admin::ajax_load_more_comments) and the post-submit + * AJAX pagination (\AKSRT\Admin\Admin::ajax_load_more_comments) and the post-submit * list reload (main.js reloadCommentList(), which refetches the rendered * page). Emits a stable `data-comment-id` plus reply, like, management * (edit/delete/moderate) and pin controls gated through diff --git a/inc/helpers/aksrt-homepage.php b/inc/helpers/aksrt-homepage.php index cc5aced7..39a69257 100644 --- a/inc/helpers/aksrt-homepage.php +++ b/inc/helpers/aksrt-homepage.php @@ -56,20 +56,20 @@ if (!function_exists('aksrt_homepage_get_tab_terms')) { * @return array */ function aksrt_homepage_get_tab_configs(): array { - $limit = class_exists('AKSRT_Settings') - ? AKSRT_Settings::homepage_tab_limit() + $limit = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::homepage_tab_limit() : 4; - if (!class_exists('AKSRT_Settings')) { + if (!class_exists('\AKSRT\Settings\Settings')) { return []; } - $structured_tabs = AKSRT_Settings::homepage_tabs(); + $structured_tabs = \AKSRT\Settings\Settings::homepage_tabs(); if (empty($structured_tabs)) { return []; } - $excluded_cat_ids = array_flip(AKSRT_Settings::home_exclude_category_ids()); + $excluded_cat_ids = array_flip(\AKSRT\Settings\Settings::home_exclude_category_ids()); $configs = []; foreach ($structured_tabs as $tab) { @@ -119,8 +119,8 @@ if (!function_exists('aksrt_homepage_get_tab_posts_per_page')) { * Per-tab homepage post count. */ function aksrt_homepage_get_tab_posts_per_page(): int { - if (class_exists('AKSRT_Settings')) { - $count = AKSRT_Settings::homepage_tab_posts_per_page(); + if (class_exists('\AKSRT\Settings\Settings')) { + $count = \AKSRT\Settings\Settings::homepage_tab_posts_per_page(); if ($count > 0) { return max(1, min(20, $count)); } @@ -135,8 +135,8 @@ if (!function_exists('aksrt_homepage_get_default_view_mode')) { * Default homepage view mode. */ function aksrt_homepage_get_default_view_mode(): string { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::homepage_default_view(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::homepage_default_view(); } return 'list'; @@ -148,8 +148,8 @@ if (!function_exists('aksrt_homepage_sticky_tabs_enabled')) { * Whether homepage tabs should stick below the primary nav. */ function aksrt_homepage_sticky_tabs_enabled(): bool { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::homepage_sticky_tabs_enabled(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::homepage_sticky_tabs_enabled(); } return true; @@ -161,8 +161,8 @@ if (!function_exists('aksrt_homepage_module_hero_enabled')) { * Whether the fixed homepage should render the built-in hero section. */ function aksrt_homepage_module_hero_enabled(): bool { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::homepage_module_hero_enabled(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::homepage_module_hero_enabled(); } return true; @@ -174,8 +174,8 @@ if (!function_exists('aksrt_homepage_module_banner_enabled')) { * Whether the fixed homepage should render the built-in banner section. */ function aksrt_homepage_module_banner_enabled(): bool { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::homepage_module_banner_enabled(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::homepage_module_banner_enabled(); } return true; @@ -187,11 +187,11 @@ if (!function_exists('aksrt_homepage_get_sort_mode')) { * Current homepage main-stream sort mode. */ function aksrt_homepage_get_sort_mode(): string { - $allowed = class_exists('AKSRT_Settings') - ? AKSRT_Settings::homepage_allowed_sorts() + $allowed = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::homepage_allowed_sorts() : ['modified', 'date', 'views', 'likes', 'comments', 'favorites', 'downloads', 'rand']; - $default_sort = class_exists('AKSRT_Settings') - ? AKSRT_Settings::homepage_default_sort() + $default_sort = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::homepage_default_sort() : 'date'; $override_sort = get_query_var('aksrt_homepage_sort_override'); $sort = is_string($override_sort) && $override_sort !== '' @@ -209,16 +209,16 @@ if (!function_exists('aksrt_homepage_get_sort_items')) { * @return array */ function aksrt_homepage_get_sort_items(): array { - $all_labels = class_exists('AKSRT_Settings') - ? AKSRT_Settings::homepage_sort_labels() + $all_labels = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::homepage_sort_labels() : [ 'modified' => '更新', 'date' => '发布', 'views' => '浏览', 'likes' => '点赞', 'comments' => '评论', 'favorites' => '收藏', 'downloads' => '下载', 'rand' => '随机', ]; - $enabled_keys = class_exists('AKSRT_Settings') - ? AKSRT_Settings::home_list_sort_options() + $enabled_keys = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::home_list_sort_options() : array_keys($all_labels); $items = []; @@ -302,8 +302,8 @@ if (!function_exists('aksrt_homepage_apply_named_sort_args')) { * Apply a specific named sort to query args (used by per-tab orderby). */ function aksrt_homepage_apply_named_sort_args(array $args, string $sort_mode): array { - $allowed = class_exists('AKSRT_Settings') - ? AKSRT_Settings::homepage_allowed_sorts() + $allowed = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::homepage_allowed_sorts() : ['modified', 'date', 'views', 'likes', 'comments', 'favorites', 'downloads', 'rand']; if (!in_array($sort_mode, $allowed, true)) { @@ -324,21 +324,21 @@ if (!function_exists('aksrt_homepage_render_sortbar')) { * Render the main-stream sort bar. */ function aksrt_homepage_render_sortbar(): void { - if (class_exists('AKSRT_Settings') && !AKSRT_Settings::home_list_sort_enabled()) { + if (class_exists('\AKSRT\Settings\Settings') && !\AKSRT\Settings\Settings::home_list_sort_enabled()) { return; } $current = aksrt_homepage_get_sort_mode(); - $sort_ajax_enabled = class_exists('AKSRT_Settings') - ? AKSRT_Settings::homepage_sort_ajax_enabled() + $sort_ajax_enabled = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::homepage_sort_ajax_enabled() : true; - $is_dropdown = class_exists('AKSRT_Settings') - ? AKSRT_Settings::home_list_sort_dropdown() + $is_dropdown = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::home_list_sort_dropdown() : false; $base_url = remove_query_arg('home_sort', get_pagenum_link(aksrt_homepage_get_current_page())); $sort_items = aksrt_homepage_get_sort_items(); - $all_labels = class_exists('AKSRT_Settings') - ? AKSRT_Settings::homepage_sort_labels() + $all_labels = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::homepage_sort_labels() : $sort_items; ?>
@@ -415,15 +415,15 @@ if (!function_exists('aksrt_homepage_get_latest_query')) { 'no_found_rows' => false, ]; - $exclude_ids = class_exists('AKSRT_Settings') - ? AKSRT_Settings::home_exclude_post_ids() + $exclude_ids = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::home_exclude_post_ids() : []; if (!empty($exclude_ids)) { $query_args['post__not_in'] = $exclude_ids; } - $exclude_cat_ids = class_exists('AKSRT_Settings') - ? AKSRT_Settings::home_exclude_category_ids() + $exclude_cat_ids = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::home_exclude_category_ids() : []; if (!empty($exclude_cat_ids)) { $query_args['category__not_in'] = $exclude_cat_ids; @@ -456,8 +456,8 @@ if (!function_exists('aksrt_homepage_get_tab_query')) { $query_args = [ 'post_type' => aksrt_homepage_get_post_types(), 'post_status' => 'publish', - 'posts_per_page' => class_exists('AKSRT_Settings') - ? AKSRT_Settings::homepage_tab_posts_per_page() + 'posts_per_page' => class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::homepage_tab_posts_per_page() : 6, 'ignore_sticky_posts' => true, 'orderby' => 'date', @@ -472,8 +472,8 @@ if (!function_exists('aksrt_homepage_get_tab_query')) { ], ]; - $exclude_ids = class_exists('AKSRT_Settings') - ? AKSRT_Settings::home_exclude_post_ids() + $exclude_ids = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::home_exclude_post_ids() : []; if (!empty($exclude_ids)) { $query_args['post__not_in'] = $exclude_ids; @@ -616,8 +616,8 @@ if (!function_exists('aksrt_homepage_render_pagination')) { $query_page = (int) $query->get('paged'); $current_page = min(max(1, $query_page > 0 ? $query_page : aksrt_homepage_get_current_page()), $max_pages); - $pagination_mode = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_post_pagination_mode() + $pagination_mode = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_post_pagination_mode() : 'numbered'; if ($pagination_mode === 'numbered') { @@ -951,8 +951,8 @@ if (!function_exists('aksrt_header_slide_is_show')) { return false; } - $settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_header_components_settings() + $settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_header_components_settings() : []; $show_on = isset($settings['show_on_pages']) ? (array) $settings['show_on_pages'] : []; $allowed = array_values(array_intersect( @@ -1013,9 +1013,9 @@ if (!function_exists('aksrt_homepage_render_layout')) { $latest_contract = aksrt_homepage_get_latest_panel_contract(); $has_sidebar = aksrt_homepage_has_sidebar(); $banner_on = $show_tabs && aksrt_homepage_module_banner_enabled(); - $main_list_enabled = !class_exists('AKSRT_Settings') || AKSRT_Settings::home_posts_list_enabled(); - $list_title = class_exists('AKSRT_Settings') - ? AKSRT_Settings::home_list_title() + $main_list_enabled = !class_exists('\AKSRT\Settings\Settings') || \AKSRT\Settings\Settings::home_posts_list_enabled(); + $list_title = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::home_list_title() : __('最新发布', 'aksrt'); // Fluid zones live outside
, once only (removed from header.php). diff --git a/inc/helpers/aksrt-identity.php b/inc/helpers/aksrt-identity.php index 1862c1ed..775ad3ff 100644 --- a/inc/helpers/aksrt-identity.php +++ b/inc/helpers/aksrt-identity.php @@ -15,8 +15,8 @@ if (!function_exists('aksrt_get_user_identity_signals')) { if ($user_id <= 0) { return []; } - if (class_exists('AKSRT_User_Home')) { - $signals = AKSRT_User_Home::get_instance()->get_profile_signals($user_id); + if (class_exists('\AKSRT\User\Home')) { + $signals = \AKSRT\User\Home::get_instance()->get_profile_signals($user_id); return is_array($signals) ? array_values($signals) : []; } return []; @@ -217,13 +217,13 @@ if (!function_exists('aksrt_is_blog_comment_hot')) { return true; } $threshold = 10; - if (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_comment_display_settings')) { - $display = AKSRT_Settings::get_comment_display_settings(); + if (class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'get_comment_display_settings')) { + $display = \AKSRT\Settings\Settings::get_comment_display_settings(); if (isset($display['hot_threshold'])) { $threshold = max(1, (int) $display['hot_threshold']); } } - $all = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_all() : []; + $all = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_all() : []; if (isset($all['comment_hot_threshold'])) { $threshold = max(1, (int) $all['comment_hot_threshold']); } diff --git a/inc/helpers/aksrt-pay.php b/inc/helpers/aksrt-pay.php index 80de0f2a..ae88f9d3 100644 --- a/inc/helpers/aksrt-pay.php +++ b/inc/helpers/aksrt-pay.php @@ -17,22 +17,22 @@ defined('ABSPATH') || exit; // ============================================================ if (!defined('AKSRT_PAY_TYPE_NO')) { - define('AKSRT_PAY_TYPE_NO', AKSRT_Domain_Model::PAY_TYPE_NO); + define('AKSRT_PAY_TYPE_NO', \AKSRT\Core\DomainModel::PAY_TYPE_NO); } if (!defined('AKSRT_PAY_TYPE_READING')) { - define('AKSRT_PAY_TYPE_READING', AKSRT_Domain_Model::PAY_TYPE_READING); + define('AKSRT_PAY_TYPE_READING', \AKSRT\Core\DomainModel::PAY_TYPE_READING); } if (!defined('AKSRT_PAY_TYPE_DOWNLOAD')) { - define('AKSRT_PAY_TYPE_DOWNLOAD', AKSRT_Domain_Model::PAY_TYPE_DOWNLOAD); + define('AKSRT_PAY_TYPE_DOWNLOAD', \AKSRT\Core\DomainModel::PAY_TYPE_DOWNLOAD); } if (!defined('AKSRT_PAY_TYPE_GALLERY')) { - define('AKSRT_PAY_TYPE_GALLERY', AKSRT_Domain_Model::PAY_TYPE_GALLERY); + define('AKSRT_PAY_TYPE_GALLERY', \AKSRT\Core\DomainModel::PAY_TYPE_GALLERY); } if (!defined('AKSRT_PAY_TYPE_VIDEO')) { - define('AKSRT_PAY_TYPE_VIDEO', AKSRT_Domain_Model::PAY_TYPE_VIDEO); + define('AKSRT_PAY_TYPE_VIDEO', \AKSRT\Core\DomainModel::PAY_TYPE_VIDEO); } if (!defined('AKSRT_PAY_TYPE_VIP')) { - define('AKSRT_PAY_TYPE_VIP', AKSRT_Domain_Model::PAY_TYPE_VIP); + define('AKSRT_PAY_TYPE_VIP', \AKSRT\Core\DomainModel::PAY_TYPE_VIP); } /** @@ -62,7 +62,7 @@ if (!function_exists('aksrt_is_vip_exempt')) { } function aksrt_get_pay_types(): array { - return AKSRT_Domain_Model::pay_type_labels(); + return \AKSRT\Core\DomainModel::pay_type_labels(); return [ AKSRT_PAY_TYPE_NO => __('不付费', 'aksrt'), @@ -85,14 +85,14 @@ if (!function_exists('aksrt_list_cash_payment_methods')) { ? ['balance', 'alipay', 'wechatpay', 'paypal', 'stripe'] : ['alipay', 'wechatpay', 'paypal', 'stripe']; - if (!class_exists('AKSRT_Payment_Gateway')) { + if (!class_exists('\AKSRT\Payment\Gateway')) { return $logged_in ? [['id' => 'balance', 'name' => __('站内余额', 'aksrt')]] : [['id' => 'alipay', 'name' => __('支付宝', 'aksrt')]]; } $methods = []; - $gw = AKSRT_Payment_Gateway::get_instance(); + $gw = \AKSRT\Payment\Gateway::get_instance(); foreach ($ids as $id) { $g = $gw->get_gateway($id); if (!$g) { @@ -126,9 +126,9 @@ if (!function_exists('aksrt_get_pay_meta')) { $p = get_post($post); if (!($p instanceof WP_Post)) return aksrt_default_pay_meta(); - $meta = get_post_meta($p->ID, AKSRT_Domain_Model::PAY_META_KEY, true); + $meta = get_post_meta($p->ID, \AKSRT\Core\DomainModel::PAY_META_KEY, true); if (is_array($meta) && isset($meta['pay_type'])) { - return wp_parse_args(AKSRT_Domain_Model::sanitize_pay_meta($meta), aksrt_default_pay_meta()); + return wp_parse_args(\AKSRT\Core\DomainModel::sanitize_pay_meta($meta), aksrt_default_pay_meta()); } return aksrt_default_pay_meta(); @@ -137,7 +137,7 @@ if (!function_exists('aksrt_get_pay_meta')) { if (!function_exists('aksrt_default_pay_meta')) { function aksrt_default_pay_meta(): array { - return AKSRT_Domain_Model::default_pay_meta(); + return \AKSRT\Core\DomainModel::default_pay_meta(); return [ 'pay_type' => AKSRT_PAY_TYPE_NO, @@ -190,10 +190,10 @@ if (!function_exists('aksrt_get_download_box_meta')) { } $pay_meta = aksrt_get_pay_meta($p); - $download_count = (int) get_post_meta($p->ID, AKSRT_Domain_Model::RESOURCE_DOWNLOAD_COUNT_KEY, true); - $view_count = (int) get_post_meta($p->ID, AKSRT_Domain_Model::POST_VIEW_COUNT_KEY, true); + $download_count = (int) get_post_meta($p->ID, \AKSRT\Core\DomainModel::RESOURCE_DOWNLOAD_COUNT_KEY, true); + $view_count = (int) get_post_meta($p->ID, \AKSRT\Core\DomainModel::POST_VIEW_COUNT_KEY, true); $virtual_sales = max(0, (int) ($pay_meta['virtual_sales'] ?? 0)); - $sales_volume = (int) get_post_meta($p->ID, AKSRT_Domain_Model::RESOURCE_SALES_VOLUME_KEY, true); + $sales_volume = (int) get_post_meta($p->ID, \AKSRT\Core\DomainModel::RESOURCE_SALES_VOLUME_KEY, true); $show_sales = !isset($pay_meta['show_sales']) || !empty($pay_meta['show_sales']); $pay_modo = (($pay_meta['pay_modo'] ?? '0') === 'points') ? 'points' : '0'; $pay_limit = (int) ($pay_meta['pay_limit'] ?? 0); @@ -242,11 +242,11 @@ if (!function_exists('aksrt_get_download_box_meta')) { if (!function_exists('aksrt_get_user_content_paid_order')) { function aksrt_get_user_content_paid_order(int $post_id, int $user_id = 0): ?array { $uid = $user_id > 0 ? $user_id : get_current_user_id(); - if ($uid <= 0 || $post_id <= 0 || !class_exists('AKSRT_Order_Repository')) { + if ($uid <= 0 || $post_id <= 0 || !class_exists('\AKSRT\Payment\OrderRepository')) { return null; } - $orders = AKSRT_Order_Repository::get_instance()->get_user_orders($uid, [ - 'product_type' => AKSRT_Domain_Model::ORDER_PRODUCT_RESOURCE, + $orders = \AKSRT\Payment\OrderRepository::get_instance()->get_user_orders($uid, [ + 'product_type' => \AKSRT\Core\DomainModel::ORDER_PRODUCT_RESOURCE, 'status' => '', 'limit' => 20, 'offset' => 0, @@ -256,7 +256,7 @@ if (!function_exists('aksrt_get_user_content_paid_order')) { continue; } $status = (string) ($order['status'] ?? ''); - if (AKSRT_Domain_Model::is_paid_order_status($status)) { + if (\AKSRT\Core\DomainModel::is_paid_order_status($status)) { return $order; } } @@ -272,7 +272,7 @@ if (!function_exists('aksrt_bump_content_sales_volume')) { if ($post_id <= 0 || $delta === 0) { return 0; } - $key = AKSRT_Domain_Model::RESOURCE_SALES_VOLUME_KEY; + $key = \AKSRT\Core\DomainModel::RESOURCE_SALES_VOLUME_KEY; $cur = (int) get_post_meta($post_id, $key, true); $next = max(0, $cur + $delta); update_post_meta($post_id, $key, $next); @@ -298,8 +298,8 @@ if (!function_exists('aksrt_allow_guest_content_pay')) { if ($pay_modo === 'points') { return false; // points require login } - $order = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_order_settings() : []; - $paid = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_paid_content_settings() : []; + $order = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_order_settings() : []; + $paid = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_paid_content_settings() : []; $allow = !empty($order['no_logged_in']) || !empty($paid['no_logged_in']); /** * Filter guest content pay allow. @@ -317,8 +317,8 @@ if (!function_exists('aksrt_allow_guest_content_pay')) { if (!function_exists('aksrt_guest_pay_cookie_days')) { function aksrt_guest_pay_cookie_days(int $post_id = 0): int { $days = 15; - if (class_exists('AKSRT_Settings')) { - $order = AKSRT_Settings::get_order_settings(); + if (class_exists('\AKSRT\Settings\Settings')) { + $order = \AKSRT\Settings\Settings::get_order_settings(); $days = max(1, min(31, (int) ($order['cookie_day'] ?? 15))); } /** @@ -368,8 +368,8 @@ if (!function_exists('aksrt_content_order_cookie_token_key')) { */ if (!function_exists('aksrt_allow_guest_forum_pay')) { function aksrt_allow_guest_forum_pay($post = null): bool { - $order = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_order_settings() : []; - $paid = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_paid_content_settings() : []; + $order = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_order_settings() : []; + $paid = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_paid_content_settings() : []; $allow = !empty($order['no_logged_in']) || !empty($paid['no_logged_in']); /** * @param bool $allow @@ -429,14 +429,14 @@ if (!function_exists('aksrt_get_guest_paid_order')) { if ($product_id <= 0 || empty($_COOKIE['aksrt_pay_' . $product_id])) { return null; } - if (!class_exists('AKSRT_Order_Repository') || !class_exists('AKSRT_Domain_Model')) { + if (!class_exists('\AKSRT\Payment\OrderRepository') || !class_exists('\AKSRT\Core\DomainModel')) { return null; } $order_number = sanitize_text_field((string) $_COOKIE['aksrt_pay_' . $product_id]); if ($order_number === '') { return null; } - $order = AKSRT_Order_Repository::get_instance()->get($order_number); + $order = \AKSRT\Payment\OrderRepository::get_instance()->get($order_number); if (!$order) { return null; } @@ -453,7 +453,7 @@ if (!function_exists('aksrt_get_guest_paid_order')) { return null; } $status = (string) ($order['status'] ?? ''); - if (!AKSRT_Domain_Model::is_paid_order_status($status)) { + if (!\AKSRT\Core\DomainModel::is_paid_order_status($status)) { return null; } @@ -484,8 +484,8 @@ if (!function_exists('aksrt_get_guest_paid_order')) { */ if (!function_exists('aksrt_get_guest_content_paid_order')) { function aksrt_get_guest_content_paid_order(int $post_id): ?array { - $type = class_exists('AKSRT_Domain_Model') - ? AKSRT_Domain_Model::ORDER_PRODUCT_RESOURCE + $type = class_exists('\AKSRT\Core\DomainModel') + ? \AKSRT\Core\DomainModel::ORDER_PRODUCT_RESOURCE : 'resource'; return aksrt_get_guest_paid_order($post_id, $type); } @@ -505,8 +505,8 @@ if (!function_exists('aksrt_guest_has_paid_access')) { */ if (!function_exists('aksrt_guest_has_plate_follow_access')) { function aksrt_guest_has_plate_follow_access(int $plate_id): bool { - $type = class_exists('AKSRT_Domain_Model') - ? AKSRT_Domain_Model::ORDER_PRODUCT_PLATE_FOLLOW + $type = class_exists('\AKSRT\Core\DomainModel') + ? \AKSRT\Core\DomainModel::ORDER_PRODUCT_PLATE_FOLLOW : 'plate_follow'; return null !== aksrt_get_guest_paid_order($plate_id, $type); } @@ -524,7 +524,7 @@ if (!function_exists('aksrt_guest_has_plate_follow_access')) { */ if (!function_exists('aksrt_get_user_pay_price')) { function aksrt_get_user_pay_price($post = null, int $user_id = 0): array { - $meta = function_exists('aksrt_get_pay_meta') ? aksrt_get_pay_meta($post) : AKSRT_Domain_Model::default_pay_meta(); + $meta = function_exists('aksrt_get_pay_meta') ? aksrt_get_pay_meta($post) : \AKSRT\Core\DomainModel::default_pay_meta(); $pay_modo = (($meta['pay_modo'] ?? '0') === 'points') ? 'points' : '0'; $pay_limit = (int) ($meta['pay_limit'] ?? 0); if (!in_array($pay_limit, [0, 1, 2], true)) { @@ -540,10 +540,10 @@ if (!function_exists('aksrt_get_user_pay_price')) { $vip_level = max($vip_level, 2); } - $currency = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_currency_name() : __('积分', 'aksrt'); + $currency = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_currency_name() : __('积分', 'aksrt'); $cash_symbol = '¥'; - if (class_exists('AKSRT_Settings')) { - $paid = AKSRT_Settings::get_paid_content_settings(); + if (class_exists('\AKSRT\Settings\Settings')) { + $paid = \AKSRT\Settings\Settings::get_paid_content_settings(); $cash_symbol = (string) ($paid['display']['currency_symbol'] ?? '¥'); } @@ -604,12 +604,12 @@ if (!function_exists('aksrt_is_content_coupon_allowed')) { if (!empty($meta['coupon_s'])) { return true; } - if (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_content_coupon_settings')) { - $cfg = AKSRT_Settings::get_content_coupon_settings(); + if (class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'get_content_coupon_settings')) { + $cfg = \AKSRT\Settings\Settings::get_content_coupon_settings(); return !empty($cfg['enabled']); } - if (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_paid_content_settings')) { - $paid = AKSRT_Settings::get_paid_content_settings(); + if (class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'get_paid_content_settings')) { + $paid = \AKSRT\Settings\Settings::get_paid_content_settings(); return !empty($paid['coupon_post_s']); } return false; @@ -627,17 +627,17 @@ if (!function_exists('aksrt_get_post_rebate_discount')) { if ($fixed <= 0) { return 0.0; } - if (!class_exists('AKSRT_Settings') || !method_exists('AKSRT_Settings', 'get_payment_affiliate_settings')) { + if (!class_exists('\AKSRT\Settings\Settings') || !method_exists('\AKSRT\Settings\Settings', 'get_payment_affiliate_settings')) { return 0.0; } - $aff = AKSRT_Settings::get_payment_affiliate_settings(); + $aff = \AKSRT\Settings\Settings::get_payment_affiliate_settings(); if (empty($aff['enabled'])) { return 0.0; } $uid = $user_id > 0 ? $user_id : (function_exists('get_current_user_id') ? (int) get_current_user_id() : 0); $referrer_id = 0; - if (class_exists('AKSRT_Invite') && method_exists(AKSRT_Invite::get_instance(), 'get_referrer')) { - $referrer_id = (int) AKSRT_Invite::get_instance()->get_referrer($uid); + if (class_exists('\AKSRT\Credits\Invite') && method_exists(\AKSRT\Credits\Invite::get_instance(), 'get_referrer')) { + $referrer_id = (int) \AKSRT\Credits\Invite::get_instance()->get_referrer($uid); } if ($referrer_id <= 0) { return 0.0; @@ -673,10 +673,10 @@ if (!function_exists('aksrt_is_allow_points_deduction')) { function aksrt_is_allow_points_deduction(string $context = 'content'): bool { // Mirror zibll hard-off first. $allowed = false; - if (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_all')) { - $all = AKSRT_Settings::get_all(); + if (class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'get_all')) { + $all = \AKSRT\Settings\Settings::get_all(); // Even if switch on, default remains false like zibll until product enables it. - if (!empty($all['points_deduction_s']) && class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'credits_enabled') && AKSRT_Settings::credits_enabled()) { + if (!empty($all['points_deduction_s']) && class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'credits_enabled') && \AKSRT\Settings\Settings::credits_enabled()) { $allowed = false; // still disabled at runtime } } @@ -744,9 +744,9 @@ if (!function_exists('aksrt_has_paid_access')) { $p = get_post($post); if (!($p instanceof WP_Post)) return true; - // 单一真相:付费访问由 AKSRT_Content_Visibility(基于订单 + VIP)裁决。 - if (class_exists('AKSRT_Content_Visibility')) { - $state = AKSRT_Content_Visibility::get_post_access_state($p, $user_id); + // 单一真相:付费访问由 \AKSRT\Content\Visibility(基于订单 + VIP)裁决。 + if (class_exists('\AKSRT\Content\Visibility')) { + $state = \AKSRT\Content\Visibility::get_post_access_state($p, $user_id); return !empty($state['has_paid_access']); } @@ -769,8 +769,8 @@ if (!function_exists('aksrt_can_access_content')) { $p = get_post($post); if (!($p instanceof WP_Post)) return true; - if (class_exists('AKSRT_Content_Visibility')) { - return AKSRT_Content_Visibility::can_view_paid_content($p); + if (class_exists('\AKSRT\Content\Visibility')) { + return \AKSRT\Content\Visibility::can_view_paid_content($p); } $pay_type = aksrt_get_pay_meta($p)['pay_type']; @@ -789,7 +789,7 @@ if (!function_exists('aksrt_can_download')) { /** * 下载授权门禁 —— 单一合同。 * - * 实际判定交给 AKSRT_Content_Visibility::can_download_resource()。 + * 实际判定交给 \AKSRT\Content\Visibility::can_download_resource()。 * 不再使用 download_credit 做按次扣积分门禁。 * * @param int|WP_Post|null $post @@ -797,8 +797,8 @@ if (!function_exists('aksrt_can_download')) { * @return true|WP_Error */ function aksrt_can_download($post = null, int $user_id = 0) { - if (class_exists('AKSRT_Content_Visibility')) { - return AKSRT_Content_Visibility::can_download_resource($post, $user_id); + if (class_exists('\AKSRT\Content\Visibility')) { + return \AKSRT\Content\Visibility::can_download_resource($post, $user_id); } $p = get_post($post); @@ -811,8 +811,8 @@ if (!function_exists('aksrt_can_download')) { return new WP_Error('aksrt_not_downloadable', __('该内容不是可下载资源。', 'aksrt')); } - $paid_settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_paid_content_settings() + $paid_settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_paid_content_settings() : ['download_login' => true]; $uid = $user_id > 0 ? $user_id : get_current_user_id(); @@ -885,10 +885,10 @@ if (!function_exists('aksrt_get_single_download_page_url')) { */ if (!function_exists('aksrt_is_download_alone_page_enabled')) { function aksrt_is_download_alone_page_enabled(): bool { - if (!class_exists('AKSRT_Settings')) { + if (!class_exists('\AKSRT\Settings\Settings')) { return false; } - $paid = AKSRT_Settings::get_paid_content_settings(); + $paid = \AKSRT\Settings\Settings::get_paid_content_settings(); return !empty($paid['down_alone_page']) || !empty($paid['download']['alone_page']); } } @@ -910,10 +910,10 @@ if (!function_exists('aksrt_get_pay_price_label')) { ? (int) ($priced['pay_limit'] ?? 0) : (int) ($meta['pay_limit'] ?? 0); $vip_level = is_array($priced) ? (int) ($priced['vip_level'] ?? 0) : 0; - $currency = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_currency_name() : __('积分', 'aksrt'); + $currency = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_currency_name() : __('积分', 'aksrt'); $cash_symbol = '¥'; - if (class_exists('AKSRT_Settings')) { - $paid = AKSRT_Settings::get_paid_content_settings(); + if (class_exists('\AKSRT\Settings\Settings')) { + $paid = \AKSRT\Settings\Settings::get_paid_content_settings(); $cash_symbol = (string) ($paid['display']['currency_symbol'] ?? '¥'); } @@ -1007,8 +1007,8 @@ if (!function_exists('aksrt_get_pay_type_badge')) { if (!function_exists('aksrt_get_pay_service_html')) { function aksrt_get_pay_service_html(string $class = 'resource-download-box__guarantee'): string { $service = []; - if (class_exists('AKSRT_Settings')) { - $order = AKSRT_Settings::get_order_settings(); + if (class_exists('\AKSRT\Settings\Settings')) { + $order = \AKSRT\Settings\Settings::get_order_settings(); $service = is_array($order['service'] ?? null) ? $order['service'] : []; } @@ -1141,10 +1141,10 @@ if (!function_exists('aksrt_get_paywall_html')) { $pay_modo = is_array($priced) ? ((($priced['modo'] ?? '0') === 'points') ? 'points' : '0') : ((($meta['pay_modo'] ?? '0') === 'points') ? 'points' : '0'); $price = is_array($priced) ? (float) ($priced['amount'] ?? 0) : (float) ($meta['price'] ?? 0); $vip_level = is_array($priced) ? (int) ($priced['vip_level'] ?? 0) : 0; - $currency = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_currency_name() : __('积分', 'aksrt'); + $currency = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_currency_name() : __('积分', 'aksrt'); $cash_symbol = '¥'; - if (class_exists('AKSRT_Settings')) { - $paid = AKSRT_Settings::get_paid_content_settings(); + if (class_exists('\AKSRT\Settings\Settings')) { + $paid = \AKSRT\Settings\Settings::get_paid_content_settings(); $cash_symbol = (string) ($paid['display']['currency_symbol'] ?? '¥'); } $price_text = $pay_modo === 'points' diff --git a/inc/helpers/aksrt-posts-renderer.php b/inc/helpers/aksrt-posts-renderer.php index c341f5a1..26e6629f 100644 --- a/inc/helpers/aksrt-posts-renderer.php +++ b/inc/helpers/aksrt-posts-renderer.php @@ -206,11 +206,11 @@ if (!function_exists('aksrt_renderer_curated_images')) { $images = []; $limit = max(1, min(8, $limit)); - if (!class_exists('AKSRT_Post_Meta_Box')) { + if (!class_exists('\AKSRT\Core\PostMetaBox')) { return []; } - $cover_images = (string) AKSRT_Post_Meta_Box::get_meta_value($post_id, 'cover_images', ''); + $cover_images = (string) \AKSRT\Core\PostMetaBox::get_meta_value($post_id, 'cover_images', ''); if ($cover_images === '') { return []; } @@ -267,8 +267,8 @@ if (!function_exists('aksrt_renderer_random_fallback_image')) { get_template_directory_uri() . '/assets/img/placeholder.svg', ]; - if (class_exists('AKSRT_Settings')) { - $thumb = AKSRT_Settings::get_post_thumb_settings(); + if (class_exists('\AKSRT\Settings\Settings')) { + $thumb = \AKSRT\Settings\Settings::get_post_thumb_settings(); $spare = $thumb['spare_images'] ?? []; if (is_array($spare) && !empty($spare)) { foreach ($spare as $url) { @@ -327,7 +327,7 @@ if (!function_exists('aksrt_renderer_resolve_images')) { $has_real = true; } - $thumb_settings = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_post_thumb_settings() : []; + $thumb_settings = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_post_thumb_settings() : []; $allow_fallback = !empty($thumb_settings['rand_thumb']) || !empty($cfg['thumb_if_has']); if ($primary === '' && $allow_fallback) { $primary = aksrt_renderer_random_fallback_image($post_id); @@ -349,8 +349,8 @@ if (!function_exists('aksrt_renderer_lazyload_config')) { * @return array */ function aksrt_renderer_lazyload_config(): array { - if (class_exists('AKSRT_Settings')) { - $lazy = AKSRT_Settings::get_lazyload_config(); + if (class_exists('\AKSRT\Settings\Settings')) { + $lazy = \AKSRT\Settings\Settings::get_lazyload_config(); return [ 'enabled' => !empty($lazy['enabled']) && !empty($lazy['posts_thumb_enabled']), 'placeholder_url' => (string) ($lazy['placeholder_url'] ?? ''), @@ -411,8 +411,8 @@ if (!function_exists('aksrt_renderer_collect_post_data')) { $categories = get_the_category($post_id) ?: []; $tags = get_the_tags($post_id) ?: []; - $custom_excerpt = class_exists('AKSRT_Post_Meta_Box') - ? (string) AKSRT_Post_Meta_Box::get_meta_value($post_id, 'custom_excerpt', '') + $custom_excerpt = class_exists('\AKSRT\Core\PostMetaBox') + ? (string) \AKSRT\Core\PostMetaBox::get_meta_value($post_id, 'custom_excerpt', '') : ''; $custom_subtitle = (string) get_post_meta($post_id, '_subtitle', true); $excerpt_source = $custom_excerpt !== '' ? $custom_excerpt : (string) get_the_excerpt($post_id); diff --git a/inc/helpers/aksrt-resource.php b/inc/helpers/aksrt-resource.php index a1573c3b..42498fa2 100644 --- a/inc/helpers/aksrt-resource.php +++ b/inc/helpers/aksrt-resource.php @@ -30,11 +30,11 @@ if (!function_exists('aksrt_get_resource_meta')) { $pay_meta = function_exists('aksrt_get_pay_meta') ? aksrt_get_pay_meta($p) - : AKSRT_Domain_Model::default_pay_meta(); - $download_count = (int) get_post_meta($p->ID, AKSRT_Domain_Model::RESOURCE_DOWNLOAD_COUNT_KEY, true); + : \AKSRT\Core\DomainModel::default_pay_meta(); + $download_count = (int) get_post_meta($p->ID, \AKSRT\Core\DomainModel::RESOURCE_DOWNLOAD_COUNT_KEY, true); $legacy_download_count = (int) get_post_meta($p->ID, 'download_count', true); - $resource_view_count = (int) get_post_meta($p->ID, AKSRT_Domain_Model::RESOURCE_VIEW_COUNT_KEY, true); - $common_view_count = (int) get_post_meta($p->ID, AKSRT_Domain_Model::POST_VIEW_COUNT_KEY, true); + $resource_view_count = (int) get_post_meta($p->ID, \AKSRT\Core\DomainModel::RESOURCE_VIEW_COUNT_KEY, true); + $common_view_count = (int) get_post_meta($p->ID, \AKSRT\Core\DomainModel::POST_VIEW_COUNT_KEY, true); // Normalize downloads extract_code aliases for legacy rows still stored on pay meta. $downloads = array_values(is_array($pay_meta['downloads'] ?? null) ? $pay_meta['downloads'] : []); @@ -76,7 +76,7 @@ if (!function_exists('aksrt_get_resource_meta')) { 'vip2_price' => (float) ($pay_meta['vip2_price'] ?? 0), 'vip1_points' => (int) ($pay_meta['vip1_points'] ?? 0), 'vip2_points' => (int) ($pay_meta['vip2_points'] ?? 0), - 'pay_type' => (string) ($pay_meta['pay_type'] ?? AKSRT_Domain_Model::PAY_TYPE_DOWNLOAD), + 'pay_type' => (string) ($pay_meta['pay_type'] ?? \AKSRT\Core\DomainModel::PAY_TYPE_DOWNLOAD), 'license' => (string) ($pay_meta['license'] ?? ''), 'compat' => (string) ($pay_meta['compat'] ?? ''), 'demo_url' => (string) ($pay_meta['demo_url'] ?? ''), @@ -94,7 +94,7 @@ if (!function_exists('aksrt_get_resource_meta')) { if (!function_exists('aksrt_default_resource_meta')) { function aksrt_default_resource_meta(): array { - $meta = AKSRT_Domain_Model::default_pay_meta(); + $meta = \AKSRT\Core\DomainModel::default_pay_meta(); return [ 'version' => (string) ($meta['version'] ?? ''), @@ -108,7 +108,7 @@ if (!function_exists('aksrt_default_resource_meta')) { 'vip2_price' => (float) ($meta['vip2_price'] ?? 0), 'vip1_points' => (int) ($meta['vip1_points'] ?? 0), 'vip2_points' => (int) ($meta['vip2_points'] ?? 0), - 'pay_type' => AKSRT_Domain_Model::PAY_TYPE_DOWNLOAD, + 'pay_type' => \AKSRT\Core\DomainModel::PAY_TYPE_DOWNLOAD, 'license' => (string) ($meta['license'] ?? ''), 'compat' => (string) ($meta['compat'] ?? ''), 'demo_url' => (string) ($meta['demo_url'] ?? ''), @@ -216,7 +216,7 @@ if (!function_exists('aksrt_resource_card_badge_text')) { } if ($pay_modo === 'points') { - $currency = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_currency_name() : __('积分', 'aksrt'); + $currency = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_currency_name() : __('积分', 'aksrt'); $amount = function_exists('aksrt_resource_price_amount') ? aksrt_resource_price_amount($price) : (string) (int) $price; @@ -224,8 +224,8 @@ if (!function_exists('aksrt_resource_card_badge_text')) { } $symbol = '¥'; - if (class_exists('AKSRT_Settings')) { - $paid = AKSRT_Settings::get_paid_content_settings(); + if (class_exists('\AKSRT\Settings\Settings')) { + $paid = \AKSRT\Settings\Settings::get_paid_content_settings(); $symbol = (string) ($paid['display']['currency_symbol'] ?? '¥'); } $amount = function_exists('aksrt_format_price') @@ -284,8 +284,8 @@ if (!function_exists('aksrt_resource_preview_images')) { $limit = max(1, min(8, $limit)); $images = []; - if (class_exists('AKSRT_Post_Meta_Box')) { - $cover_images = (string) AKSRT_Post_Meta_Box::get_meta_value($p->ID, 'cover_images', ''); + if (class_exists('\AKSRT\Core\PostMetaBox')) { + $cover_images = (string) \AKSRT\Core\PostMetaBox::get_meta_value($p->ID, 'cover_images', ''); if ($cover_images !== '') { $cover_ids = array_filter(array_map('absint', preg_split('/[\s,]+/', $cover_images) ?: [])); foreach ($cover_ids as $attachment_id) { @@ -363,11 +363,11 @@ if (!function_exists('aksrt_resource_meta_strip')) { */ if (!function_exists('aksrt_is_download_credit_exempt_user')) { function aksrt_is_download_credit_exempt_user(int $user_id = 0): bool { - if ($user_id <= 0 || !class_exists('AKSRT_Settings')) { + if ($user_id <= 0 || !class_exists('\AKSRT\Settings\Settings')) { return false; } - $paid_settings = AKSRT_Settings::get_paid_content_settings(); + $paid_settings = \AKSRT\Settings\Settings::get_paid_content_settings(); if (empty($paid_settings['vip_free_download']) || empty($paid_settings['vip_exempt_roles'])) { return false; } @@ -385,7 +385,7 @@ if (!function_exists('aksrt_can_download')) { /** * 是否可下载。 * - * 单一合同:委托 AKSRT_Content_Visibility(收银台订单解锁 / VIP / 登录 / 日限额)。 + * 单一合同:委托 \AKSRT\Content\Visibility(收银台订单解锁 / VIP / 登录 / 日限额)。 * 不再用 cms_features.download_credit 做「按次扣积分」门禁。 * * @param int|WP_Post|null $post @@ -393,8 +393,8 @@ if (!function_exists('aksrt_can_download')) { * @return true|WP_Error */ function aksrt_can_download($post = null, int $user_id = 0) { - if (class_exists('AKSRT_Content_Visibility')) { - return AKSRT_Content_Visibility::can_download_resource($post, $user_id); + if (class_exists('\AKSRT\Content\Visibility')) { + return \AKSRT\Content\Visibility::can_download_resource($post, $user_id); } $p = get_post($post); @@ -403,8 +403,8 @@ if (!function_exists('aksrt_can_download')) { } $uid = $user_id > 0 ? $user_id : get_current_user_id(); - $paid_settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_paid_content_settings() + $paid_settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_paid_content_settings() : ['download_login' => true]; if (!empty($paid_settings['download_login']) && $uid <= 0) { @@ -432,10 +432,10 @@ if (!function_exists('aksrt_resource_download_cost')) { $uid = function_exists('get_current_user_id') ? (int) get_current_user_id() : 0; // Paid order → unlocked. - if ($p instanceof WP_Post && $uid > 0 && class_exists('AKSRT_Order')) { - if (AKSRT_Order::get_instance()->has_paid_access( + if ($p instanceof WP_Post && $uid > 0 && class_exists('\AKSRT\Payment\Order')) { + if (\AKSRT\Payment\Order::get_instance()->has_paid_access( $uid, - AKSRT_Domain_Model::ORDER_PRODUCT_RESOURCE, + \AKSRT\Core\DomainModel::ORDER_PRODUCT_RESOURCE, (int) $p->ID )) { return 0; diff --git a/inc/helpers/aksrt-rewards.php b/inc/helpers/aksrt-rewards.php index f7819d19..a1823ff0 100644 --- a/inc/helpers/aksrt-rewards.php +++ b/inc/helpers/aksrt-rewards.php @@ -11,10 +11,10 @@ defined('ABSPATH') || exit; if (!function_exists('aksrt_rewards_enabled')) { function aksrt_rewards_enabled(): bool { - if (!class_exists('AKSRT_Settings') || !method_exists('AKSRT_Settings', 'get_post_page_settings')) { + if (!class_exists('\AKSRT\Settings\Settings') || !method_exists('\AKSRT\Settings\Settings', 'get_post_page_settings')) { return false; } - $s = AKSRT_Settings::get_post_page_settings(); + $s = \AKSRT\Settings\Settings::get_post_page_settings(); return !empty($s['rewards_enabled']) || !empty($s['post_rewards_s']); } } @@ -54,8 +54,8 @@ if (!function_exists('aksrt_get_rewards_button')) { return ''; } $label = '赞赏'; - if (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_post_page_settings')) { - $s = AKSRT_Settings::get_post_page_settings(); + if (class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'get_post_page_settings')) { + $s = \AKSRT\Settings\Settings::get_post_page_settings(); $label = (string) ($s['rewards_btn_text'] ?? $s['rewards_text'] ?? $label); if ($label === '') { $label = '赞赏'; @@ -77,8 +77,8 @@ if (!function_exists('aksrt_render_rewards_modal_for_user')) { $done[$user_id] = true; $urls = aksrt_get_user_rewards_img_urls($user_id); $label = '赞赏'; - if (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_post_page_settings')) { - $s = AKSRT_Settings::get_post_page_settings(); + if (class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'get_post_page_settings')) { + $s = \AKSRT\Settings\Settings::get_post_page_settings(); $label = (string) ($s['rewards_text'] ?? $label); if ($label === '') { $label = __('赞赏', 'aksrt'); diff --git a/inc/helpers/aksrt-shortcodes.php b/inc/helpers/aksrt-shortcodes.php index d10bcacc..7b810951 100644 --- a/inc/helpers/aksrt-shortcodes.php +++ b/inc/helpers/aksrt-shortcodes.php @@ -1,338 +1,8 @@ render_hide_shortcode($atts, $content); - } - - /** - * [hide]...[/hide] — 评论后可见(默认 mode=comment) - */ - public function render_hide_comment(array $atts = [], string $content = ''): string { - $atts = shortcode_atts(['message' => ''], $atts, 'hide'); - return $this->render_hide(['mode' => 'comment', 'message' => $atts['message']], $content); - } - - /** - * [reply]...[/reply] — 回复(评论)后可见 - */ - public function render_reply(array $atts = [], string $content = ''): string { - $atts = shortcode_atts(['message' => ''], $atts, 'reply'); - $msg = $atts['message'] ?: __('回复本文后可查看隐藏内容', 'aksrt'); - return $this->render_hide(['mode' => 'comment', 'message' => $msg], $content); - } - - /** - * [vip]...[/vip] — VIP 用户可见 - */ - public function render_vip(array $atts = [], string $content = ''): string { - $atts = shortcode_atts(['message' => ''], $atts, 'vip'); - $uid = get_current_user_id(); - - $is_vip = $uid > 0 && function_exists('aksrt_is_vip') && aksrt_is_vip($uid); - - if ($is_vip) { - return '
' - . do_shortcode($content) . '
'; - } - - $message = $atts['message'] ?: __('此内容仅 VIP 用户可见', 'aksrt'); - $html = '
'; - $html .= '
'; - $html .= ' '; - $html .= '' . esc_html($message) . ''; - $html .= '
'; - if ($uid <= 0) { - $html .= ''; - } - $html .= '
'; - return $html; - } - - /** - * [payshow]...[/payshow] — 付费后可见(文章 content-pay 或论坛主题解锁) - */ - public function render_payshow(array $atts = [], string $content = ''): string { - $atts = shortcode_atts(['message' => ''], $atts, 'payshow'); - $pid = get_the_ID(); - - $can_view = $this->viewer_can_see_paid_block($pid); - - if ($can_view) { - return '
' - . do_shortcode($content) . '
'; - } - - $message = $atts['message'] ?: __('此内容需付费后查看', 'aksrt'); - $uid = get_current_user_id(); - $html = '
'; - $html .= '
'; - $html .= ' '; - $html .= '' . esc_html($message) . ''; - $html .= '
'; - if ($uid <= 0) { - $html .= ''; - } - $html .= '
'; - return $html; - } - - /** - * Zibll [hidecontent type="payshow|reply|login|…"]…[/hidecontent] - */ - public function render_hidecontent(array $atts = [], string $content = ''): string { - $atts = shortcode_atts([ - 'type' => 'payshow', - 'message' => '', - 'pass' => '', - ], $atts, 'hidecontent'); - $type = sanitize_key((string) $atts['type']); - $msg = (string) $atts['message']; - - switch ($type) { - case 'reply': - case 'comment': - return $this->render_reply(['message' => $msg], $content); - case 'login': - case 'signin': - return $this->render_hide([ - 'mode' => 'login', - 'message' => $msg !== '' ? $msg : __('登录后可查看隐藏内容', 'aksrt'), - ], $content); - case 'password': - case 'pass': - return $this->render_hide([ - 'mode' => 'password', - 'message' => $msg, - 'pass' => (string) $atts['pass'], - ], $content); - case 'vip': - return $this->render_vip(['message' => $msg], $content); - case 'payshow': - case 'pay': - case 'points': - default: - return $this->render_payshow(['message' => $msg], $content); - } - } - - /** - * Whether current viewer may see a paid hide block on this post/topic. - */ - private function viewer_can_see_paid_block(int $pid): bool { - if ($pid <= 0) { - return false; - } - $post = get_post($pid); - if (!$post instanceof WP_Post) { - return false; - } - $uid = get_current_user_id(); - if ($uid > 0 && ((int) $post->post_author === $uid || user_can($uid, 'manage_options'))) { - return true; - } - - // Forum topics: paid/credits unlock list or orders. - if ($post->post_type === 'aksrt_forum_topic' && class_exists('AKSRT_Forum')) { - $forum = AKSRT_Forum::get_instance(); - $visibility = sanitize_key((string) get_post_meta($pid, '_aksrt_visibility', true)); - if ($visibility === 'public' || $visibility === '') { - return true; - } - if (method_exists($forum, 'has_user_unlocked_topic') && $forum->has_user_unlocked_topic($uid, $pid)) { - return true; - } - if (method_exists($forum, 'has_user_paid_topic') && $forum->has_user_paid_topic($uid, $pid)) { - return true; - } - // Free VIP price counts as paid for cash topics. - if ($visibility === 'pay' && method_exists($forum, 'resolve_topic_pay_price')) { - $price = $forum->resolve_topic_pay_price($pid, $uid); - if (!empty($price['is_free'])) { - return true; - } - } - return false; - } - - if (class_exists('AKSRT_Content_Visibility')) { - return AKSRT_Content_Visibility::can_view_paid_content($pid); - } - return false; - } - - /** - * [content type="admin|author|vip"]...[/content] — 按角色/身份控制可见性 - */ - public function render_content_gate(array $atts = [], string $content = ''): string { - $atts = shortcode_atts(['type' => 'admin', 'message' => ''], $atts, 'content'); - $type = sanitize_key((string) $atts['type']); - $uid = get_current_user_id(); - $pid = get_the_ID(); - $allowed = false; - - switch ($type) { - case 'admin': - $allowed = $uid > 0 && user_can($uid, 'manage_options'); - break; - case 'author': - if ($uid > 0 && $pid) { - $post = get_post($pid); - $allowed = $post && (int) $post->post_author === $uid; - } - break; - case 'vip': - $allowed = $uid > 0 && function_exists('aksrt_is_vip') && aksrt_is_vip($uid); - break; - case 'login': - $allowed = $uid > 0; - break; - } - - if ($allowed) { - return '
' - . do_shortcode($content) . '
'; - } - - $default_msgs = [ - 'admin' => __('此内容仅管理员可见', 'aksrt'), - 'author' => __('此内容仅作者可见', 'aksrt'), - 'vip' => __('此内容仅 VIP 用户可见', 'aksrt'), - 'login' => __('此内容仅登录用户可见', 'aksrt'), - ]; - $message = $atts['message'] ?: ($default_msgs[$type] ?? __('此内容已隐藏', 'aksrt')); - $html = '
'; - $html .= '
'; - $html .= ' '; - $html .= '' . esc_html($message) . ''; - $html .= '
'; - $html .= '
'; - return $html; - } - - /** - * [aksrt_archive] 文章归档 - */ - public function render_archive(array $atts = [], string $content = ''): string { - if (!class_exists('AKSRT_Templates')) { - return ''; - } - return AKSRT_Templates::get_instance()->render_archive_shortcode($atts, $content); - } - - /** - * [aksrt_profile] 个人资料卡 - */ - public function render_profile(array $atts = [], string $content = ''): string { - if (!class_exists('AKSRT_Templates')) { - return ''; - } - return AKSRT_Templates::get_instance()->render_profile_shortcode($atts, $content); - } - - /** - * [aksrt_posts count="6" cat="" tag="" orderby="date" order="DESC" mode="card"] - * - * 用统一渲染器输出文章列表,避免内容里手写卡片循环。 - */ - public function render_posts(array $atts = [], string $content = ''): string { - if (!function_exists('aksrt_render_post_list')) { - return ''; - } - - $a = shortcode_atts([ - 'count' => 6, - 'cat' => '', - 'tag' => '', - 'orderby' => 'date', - 'order' => 'DESC', - 'mode' => 'card', - ], $atts, 'aksrt_posts'); - - $query_args = [ - 'post_type' => 'post', - 'post_status' => 'publish', - 'posts_per_page' => max(1, min(24, (int) $a['count'])), - 'orderby' => sanitize_key((string) $a['orderby']) ?: 'date', - 'order' => strtoupper((string) $a['order']) === 'ASC' ? 'ASC' : 'DESC', - 'ignore_sticky_posts' => true, - 'no_found_rows' => true, - ]; - - $cat = sanitize_text_field((string) $a['cat']); - if ($cat !== '') { - $query_args[is_numeric($cat) ? 'cat' : 'category_name'] = $cat; - } - $tag = sanitize_text_field((string) $a['tag']); - if ($tag !== '') { - $query_args[is_numeric($tag) ? 'tag_id' : 'tag'] = $tag; - } - - $mode = in_array($a['mode'], ['card', 'list', 'mini'], true) ? $a['mode'] : 'card'; - - $query = new WP_Query($query_args); - $html = aksrt_render_post_list($query, [ - 'context' => 'widget', - 'mode' => $mode, - ], false); - wp_reset_postdata(); - - return '
' . $html . '
'; - } -} - -endif; diff --git a/inc/helpers/aksrt-single-components.php b/inc/helpers/aksrt-single-components.php index 7c5c21ad..549a3b79 100644 --- a/inc/helpers/aksrt-single-components.php +++ b/inc/helpers/aksrt-single-components.php @@ -22,10 +22,10 @@ if (!function_exists('aksrt_get_the_subtitle')) : if ($post_id <= 0) { return ''; } - // New route: subtitle lives in AKSRT_Post_Meta_Box aggregate meta. + // New route: subtitle lives in \AKSRT\Core\PostMetaBox aggregate meta. $subtitle = ''; - if (class_exists('AKSRT_Post_Meta_Box')) { - $meta = AKSRT_Post_Meta_Box::get_meta($post_id); + if (class_exists('\AKSRT\Core\PostMetaBox')) { + $meta = \AKSRT\Core\PostMetaBox::get_meta($post_id); $subtitle = trim((string) ($meta['subtitle'] ?? '')); } if ($subtitle === '') { @@ -82,8 +82,8 @@ if (!function_exists('aksrt_get_posts_meta_items_html')) : $html .= ' ' . esc_html((string) $views_label) . ''; $like_on = true; - if (class_exists('AKSRT_Settings')) { - $page = AKSRT_Settings::get_post_page_settings(); + if (class_exists('\AKSRT\Settings\Settings')) { + $page = \AKSRT\Settings\Settings::get_post_page_settings(); $like_on = !isset($page['like_enabled']) || !empty($page['like_enabled']); } if ($like_on && $post->post_type === 'post') { diff --git a/inc/helpers/aksrt-single-render.php b/inc/helpers/aksrt-single-render.php index f387731e..0718302b 100644 --- a/inc/helpers/aksrt-single-render.php +++ b/inc/helpers/aksrt-single-render.php @@ -368,8 +368,8 @@ if (!function_exists('aksrt_single_render_author_card')) : $avatar = function_exists('aksrt_get_avatar_html') ? aksrt_get_avatar_html($author_id, 80, ['class' => 'avatar avatar-lg']) : get_avatar($author_id, 80, '', esc_attr($author_name), ['class' => 'avatar avatar-lg']); - $page_s = class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_post_page_settings') - ? AKSRT_Settings::get_post_page_settings() + $page_s = class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'get_post_page_settings') + ? \AKSRT\Settings\Settings::get_post_page_settings() : []; $card_limit = max(0, min(12, (int) ($page_s['author_card_limit'] ?? 6))); $card_orderby = sanitize_key((string) ($page_s['author_card_orderby'] ?? 'views')); @@ -406,10 +406,10 @@ if (!function_exists('aksrt_single_render_author_card')) : } $is_self = is_user_logged_in() && get_current_user_id() === $author_id; $login_url = function_exists('aksrt_get_login_url') ? aksrt_get_login_url() : wp_login_url(get_permalink()); - $aksrt_pm_on = class_exists('AKSRT_Settings') && !empty(AKSRT_Settings::private_message_settings()['enabled']); + $aksrt_pm_on = class_exists('\AKSRT\Settings\Settings') && !empty(\AKSRT\Settings\Settings::private_message_settings()['enabled']); $aksrt_msg_url = function_exists('aksrt_get_messages_page_url') ? aksrt_get_messages_page_url() : ''; - $aksrt_post_settings = class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_post_page_settings') - ? AKSRT_Settings::get_post_page_settings() + $aksrt_post_settings = class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'get_post_page_settings') + ? \AKSRT\Settings\Settings::get_post_page_settings() : []; $rewards_on = !empty($aksrt_post_settings['rewards_enabled']) || !empty($aksrt_post_settings['post_rewards_enabled']) diff --git a/inc/helpers/aksrt-single.php b/inc/helpers/aksrt-single.php index 68bec70d..a2a4cc0b 100644 --- a/inc/helpers/aksrt-single.php +++ b/inc/helpers/aksrt-single.php @@ -60,7 +60,7 @@ if (!function_exists('aksrt_single_build_context')) : ); } - $paid_settings = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_paid_content_settings() : []; + $paid_settings = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_paid_content_settings() : []; $paid_display = is_array($paid_settings['display'] ?? null) ? $paid_settings['display'] : []; $paid_box_position = sanitize_key((string) ($paid_display['box_position'] ?? 'top')); // Zibll positions: box_top | top | bottom | box_bottom (do not collapse). @@ -149,10 +149,10 @@ if (!function_exists('aksrt_single_is_docs_page')) : * Docs fast-path: true when the current post should leave the unified single surface. */ function aksrt_single_is_docs_page(int $post_id): bool { - if (!class_exists('AKSRT_Docs_Presenter')) { + if (!class_exists('\AKSRT\Core\DocsPresenter')) { return false; } - return (bool) AKSRT_Docs_Presenter::get_instance()->is_docs_page($post_id); + return (bool) \AKSRT\Core\DocsPresenter::get_instance()->is_docs_page($post_id); } endif; diff --git a/inc/helpers/aksrt-template-tags.php b/inc/helpers/aksrt-template-tags.php index b2678b65..5700ed06 100644 --- a/inc/helpers/aksrt-template-tags.php +++ b/inc/helpers/aksrt-template-tags.php @@ -78,8 +78,8 @@ if (!function_exists('aksrt_get_sidebar_config_safe')): * @return array{enabled:bool,position:string,width:int,home:bool,category:bool,tag:bool,single:bool,page:bool,search:bool} */ function aksrt_get_sidebar_config_safe(): array { - if (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_sidebar_config')) { - $cfg = AKSRT_Settings::get_sidebar_config(); + if (class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'get_sidebar_config')) { + $cfg = \AKSRT\Settings\Settings::get_sidebar_config(); if (is_array($cfg)) { return $cfg; } @@ -157,10 +157,10 @@ function aksrt_is_show_sidebar_filter(): bool { } // Category/tag term meta can still force off (existing AKSRT contract). - if ((is_category() || is_tag()) && class_exists('AKSRT_Term_Meta') && method_exists('AKSRT_Term_Meta', 'resolve_archive_settings')) { + if ((is_category() || is_tag()) && class_exists('\AKSRT\Core\TermMeta') && method_exists('\AKSRT\Core\TermMeta', 'resolve_archive_settings')) { $term_id = (int) get_queried_object_id(); if ($term_id > 0) { - $resolved = AKSRT_Term_Meta::resolve_archive_settings($term_id); + $resolved = \AKSRT\Core\TermMeta::resolve_archive_settings($term_id); if (is_array($resolved) && array_key_exists('show_sidebar', $resolved) && empty($resolved['show_sidebar'])) { return false; } @@ -168,8 +168,8 @@ function aksrt_is_show_sidebar_filter(): bool { } // Search page display setting can force off. - if (is_search() && class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_other_page_settings')) { - $other = AKSRT_Settings::get_other_page_settings(); + if (is_search() && class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'get_other_page_settings')) { + $other = \AKSRT\Settings\Settings::get_other_page_settings(); if (is_array($other) && array_key_exists('page_search_sidebar', $other) && empty($other['page_search_sidebar'])) { return false; } @@ -272,8 +272,8 @@ if (!function_exists('aksrt_get_slider_config')): * @return array */ function aksrt_get_slider_config(): array { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::get_slider_config(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::get_slider_config(); } return [ 'effect' => 'fade', 'loop' => true, 'autoplay_interval' => 5000, @@ -548,8 +548,8 @@ if (!function_exists('aksrt_get_friend_links')): * @return array */ function aksrt_get_friend_links() { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::get_friend_links(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::get_friend_links(); } $links = get_option('aksrt_friend_links', array()); @@ -570,8 +570,8 @@ if (!function_exists('aksrt_get_site_logo_url')): * @return string */ function aksrt_get_site_logo_url() { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::logo_url(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::logo_url(); } return (string) aksrt_get_setting('logo_url', ''); @@ -585,8 +585,8 @@ if (!function_exists('aksrt_get_favicon_url')): * @return string */ function aksrt_get_favicon_url() { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::favicon_url(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::favicon_url(); } $favicon = (string) aksrt_get_setting('favicon_url', ''); @@ -611,8 +611,8 @@ if (!function_exists('aksrt_get_site_logo_dark_url')): * @return string */ function aksrt_get_site_logo_dark_url(): string { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::logo_dark_url(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::logo_dark_url(); } return (string) aksrt_get_setting('site_logo_dark', aksrt_get_setting('logo_url_dark', '')); @@ -626,8 +626,8 @@ if (!function_exists('aksrt_get_site_logo_text')): * @return string */ function aksrt_get_site_logo_text(): string { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::logo_text(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::logo_text(); } $text = trim((string) aksrt_get_setting('logo_text', '')); @@ -642,8 +642,8 @@ if (!function_exists('aksrt_get_site_logo_width')): * @return int */ function aksrt_get_site_logo_width(): int { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::logo_width(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::logo_width(); } $width = (int) aksrt_get_setting('logo_width', 150); @@ -681,8 +681,8 @@ function aksrt_get_adaptive_theme_img(string $white_src = '', string $dark_src = } $is_dark = false; - if (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'initial_theme_mode')) { - $is_dark = AKSRT_Settings::initial_theme_mode() === 'dark'; + if (class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'initial_theme_mode')) { + $is_dark = \AKSRT\Settings\Settings::initial_theme_mode() === 'dark'; } $this_src = $is_dark ? $dark_src : $white_src; @@ -697,8 +697,8 @@ if (!function_exists('aksrt_get_search_placeholder')): * @return string */ function aksrt_get_search_placeholder(): string { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::search_placeholder(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::search_placeholder(); } $placeholder = trim((string) aksrt_get_setting('search_placeholder', '')); @@ -713,13 +713,13 @@ if (!function_exists('aksrt_get_search_hot_keywords')): * @return array */ function aksrt_get_search_hot_keywords(): array { - if (class_exists('AKSRT_Settings')) { - if (!AKSRT_Settings::hot_search_enabled()) { + if (class_exists('\AKSRT\Settings\Settings')) { + if (!\AKSRT\Settings\Settings::hot_search_enabled()) { return []; } - $keywords = AKSRT_Settings::hot_search_keywords(); + $keywords = \AKSRT\Settings\Settings::hot_search_keywords(); // 置顶词前置 - $sticky = AKSRT_Settings::search_popular_sticky(); + $sticky = \AKSRT\Settings\Settings::search_popular_sticky(); if (!empty($sticky)) { $keywords = array_values(array_unique(array_merge($sticky, $keywords))); } @@ -778,8 +778,8 @@ function aksrt_render_search_hot_keywords($keywords = null, string $class = 'aks $class = 'aksrt-search-hot-keywords'; } - $label = class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'search_popular_title') - ? (string) AKSRT_Settings::search_popular_title() + $label = class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'search_popular_title') + ? (string) \AKSRT\Settings\Settings::search_popular_title() : __('热门搜索', 'aksrt'); if ($label === '') { $label = __('热门搜索', 'aksrt'); @@ -803,8 +803,8 @@ if (!function_exists('aksrt_search_history_enabled')): * @return bool */ function aksrt_search_history_enabled(): bool { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::search_history_enabled(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::search_history_enabled(); } return !empty(aksrt_get_setting('search_history_enabled', true)); @@ -818,8 +818,8 @@ if (!function_exists('aksrt_search_suggestions_enabled')): * @return bool */ function aksrt_search_suggestions_enabled(): bool { - if (class_exists('AKSRT_Settings')) { - return AKSRT_Settings::search_suggestions_enabled(); + if (class_exists('\AKSRT\Settings\Settings')) { + return \AKSRT\Settings\Settings::search_suggestions_enabled(); } return aksrt_get_setting('search_type', 'default') === 'ajax' @@ -836,7 +836,7 @@ if (!function_exists('aksrt_get_search_form_type')): function aksrt_get_search_form_type(): string { $configured = ['post' => __('文章', 'aksrt')]; - if (class_exists('AKSRT_Settings')) { + if (class_exists('\AKSRT\Settings\Settings')) { $configured = aksrt_get_search_type_options(); } @@ -871,11 +871,11 @@ function aksrt_get_search_type_options(): array { 'tag' => __('标签', 'aksrt'), ]; - if (!class_exists('AKSRT_Settings')) { + if (!class_exists('\AKSRT\Settings\Settings')) { return ['post' => $label_map['post']]; } - $config = AKSRT_Settings::get_search_content_types(); + $config = \AKSRT\Settings\Settings::get_search_content_types(); $types = isset($config['types']) && is_array($config['types']) ? $config['types'] : ['post']; $options = []; @@ -904,8 +904,8 @@ function aksrt_get_default_search_type(): string { $options = function_exists('aksrt_get_search_type_options') ? aksrt_get_search_type_options() : ['post' => __('文章', 'aksrt')]; $allowed = array_keys($options); - if (class_exists('AKSRT_Settings')) { - $config = AKSRT_Settings::get_search_content_types(); + if (class_exists('\AKSRT\Settings\Settings')) { + $config = \AKSRT\Settings\Settings::get_search_content_types(); $default = sanitize_key((string) ($config['default'] ?? 'post')); if (in_array($default, $allowed, true)) { return $default; @@ -923,11 +923,11 @@ if (!function_exists('aksrt_get_search_default_category_id')): * @return int */ function aksrt_get_search_default_category_id(): int { - if (!class_exists('AKSRT_Settings') || !AKSRT_Settings::search_cat_enabled()) { + if (!class_exists('\AKSRT\Settings\Settings') || !\AKSRT\Settings\Settings::search_cat_enabled()) { return 0; } - return max(0, absint(AKSRT_Settings::search_cat_in())); + return max(0, absint(\AKSRT\Settings\Settings::search_cat_in())); } endif; @@ -968,7 +968,7 @@ function aksrt_get_search_form_state(): array { $type = function_exists('aksrt_get_search_form_type') ? aksrt_get_search_form_type() : 'post'; $default_category = function_exists('aksrt_get_search_default_category_id') ? aksrt_get_search_default_category_id() : 0; $current_category = isset($_GET['aksrt_category']) ? absint(wp_unslash($_GET['aksrt_category'])) : $default_category; - $category_enabled = class_exists('AKSRT_Settings') ? AKSRT_Settings::search_cat_enabled() : false; + $category_enabled = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::search_cat_enabled() : false; $categories = $category_enabled ? aksrt_get_search_categories() : []; return [ @@ -1055,8 +1055,8 @@ if (!function_exists('aksrt_render_comment_pagination')) { * 渲染评论列表分页(根据后台配置选择模式) */ function aksrt_render_comment_pagination(): void { - $comment_pagination_mode = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_comment_pagination_mode() + $comment_pagination_mode = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_comment_pagination_mode() : 'numbered'; if ($comment_pagination_mode === 'numbered') { @@ -1136,10 +1136,10 @@ if (!function_exists('aksrt_render_comment_pagination')) { */ function aksrt_auto_image_alt(string $content): string { if (is_admin()) return $content; - if (!class_exists('AKSRT_Settings')) return $content; + if (!class_exists('\AKSRT\Settings\Settings')) return $content; // schema key = seo_auto_alt; runtime alias = auto_image_alt - $auto_alt = AKSRT_Settings::get_value('seo_auto_alt', false) - ?: AKSRT_Settings::get_value('auto_image_alt', false); + $auto_alt = \AKSRT\Settings\Settings::get_value('seo_auto_alt', false) + ?: \AKSRT\Settings\Settings::get_value('auto_image_alt', false); if (!$auto_alt) return $content; // Only on singular pages @@ -1185,8 +1185,8 @@ add_filter('the_content', 'aksrt_auto_image_alt', 999); * @return bool */ function aksrt_is_lazyload_enabled(string $scope = 'other'): bool { - if (!class_exists('AKSRT_Settings')) return true; // 默认开 - $cfg = AKSRT_Settings::get_lazyload_config(); + if (!class_exists('\AKSRT\Settings\Settings')) return true; // 默认开 + $cfg = \AKSRT\Settings\Settings::get_lazyload_config(); if (!$cfg['enabled']) return false; return !empty($cfg[$scope] ?? true); } @@ -1206,7 +1206,7 @@ function aksrt_lazy_img_attrs(string $url, string $scope = 'other', string $extr if (empty($url)) return ''; if (aksrt_is_lazyload_enabled($scope)) { - $cfg = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_lazyload_config() : []; + $cfg = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_lazyload_config() : []; $placeholder = $cfg['placeholder_url'] ?? ''; $animation = $cfg['animation'] ?? 'blur'; $cls = trim('fit-cover aksrt-lazy ' . $extra_class); @@ -1245,7 +1245,7 @@ if (!function_exists('aksrt_user_can')) : /** * Check if a user has a specific front-end capability from the user_caps matrix. * - * Delegates to AKSRT_Settings::user_can(). WP admins always pass. + * Delegates to \AKSRT\Settings\Settings::user_can(). WP admins always pass. * * @param string $cap Capability id (e.g. 'new_post_add', 'comment_edit'). * @param int $user_id User ID. Defaults to current user. @@ -1256,10 +1256,10 @@ function aksrt_user_can(string $cap, int $user_id = 0, ?int $context = null): bo if ($user_id <= 0) { $user_id = get_current_user_id(); } - if (!class_exists('AKSRT_Settings')) { + if (!class_exists('\AKSRT\Settings\Settings')) { return $user_id > 0; } - return AKSRT_Settings::user_can($cap, $user_id, $context); + return \AKSRT\Settings\Settings::user_can($cap, $user_id, $context); } endif; @@ -1294,10 +1294,10 @@ if (!function_exists('aksrt_should_use_footer_tabbar_single_extend')) : if (!is_singular('post')) { return false; } - if (!class_exists('AKSRT_Settings') || !method_exists('AKSRT_Settings', 'get_footer_tabbar_single')) { + if (!class_exists('\AKSRT\Settings\Settings') || !method_exists('\AKSRT\Settings\Settings', 'get_footer_tabbar_single')) { return false; } - return AKSRT_Settings::get_footer_tabbar_single() === 'extend'; + return \AKSRT\Settings\Settings::get_footer_tabbar_single() === 'extend'; } endif; diff --git a/inc/helpers/aksrt-transactions.php b/inc/helpers/aksrt-transactions.php index 98827170..de90c34a 100644 --- a/inc/helpers/aksrt-transactions.php +++ b/inc/helpers/aksrt-transactions.php @@ -10,23 +10,23 @@ defined('ABSPATH') || exit; function aksrt_get_order_status_labels(): array { - if (class_exists('AKSRT_Domain_Model')) { - return AKSRT_Domain_Model::order_status_labels(); + if (class_exists('\AKSRT\Core\DomainModel')) { + return \AKSRT\Core\DomainModel::order_status_labels(); } return []; } function aksrt_get_product_page_view(int $product_id): array { - if ($product_id <= 0 || !class_exists('AKSRT_Shop')) { + if ($product_id <= 0 || !class_exists('\AKSRT\Shop\Shop')) { return []; } - return AKSRT_Shop::get_instance()->get_product_detail_view($product_id); + return \AKSRT\Shop\Shop::get_instance()->get_product_detail_view($product_id); } function aksrt_get_product_edit_page_view(int $user_id, int $product_id = 0): array { - if ($user_id <= 0 || !class_exists('AKSRT_Shop')) { + if ($user_id <= 0 || !class_exists('\AKSRT\Shop\Shop')) { return [ 'allowed' => false, 'is_edit' => false, @@ -34,11 +34,11 @@ function aksrt_get_product_edit_page_view(int $user_id, int $product_id = 0): ar ]; } - return AKSRT_Shop::get_instance()->get_product_edit_view($user_id, $product_id); + return \AKSRT\Shop\Shop::get_instance()->get_product_edit_view($user_id, $product_id); } function aksrt_get_cart_page_view(int $user_id): array { - if ($user_id <= 0 || !class_exists('AKSRT_Shop')) { + if ($user_id <= 0 || !class_exists('\AKSRT\Shop\Shop')) { return [ 'payment_methods' => [], 'shipping_methods' => [], @@ -49,11 +49,11 @@ function aksrt_get_cart_page_view(int $user_id): array { ]; } - return AKSRT_Shop::get_instance()->get_cart_page_view($user_id); + return \AKSRT\Shop\Shop::get_instance()->get_cart_page_view($user_id); } function aksrt_get_orders_page_view(int $user_id, int $paged = 1, int $per_page = 20, string $status = ''): array { - if ($user_id <= 0 || !class_exists('AKSRT_Shop')) { + if ($user_id <= 0 || !class_exists('\AKSRT\Shop\Shop')) { return [ 'items' => [], 'total' => 0, @@ -62,7 +62,7 @@ function aksrt_get_orders_page_view(int $user_id, int $paged = 1, int $per_page ]; } - return AKSRT_Shop::get_instance()->get_order_center_view($user_id, [ + return \AKSRT\Shop\Shop::get_instance()->get_order_center_view($user_id, [ 'page' => $paged, 'per_page' => $per_page, 'status' => $status, @@ -75,12 +75,12 @@ function aksrt_get_revenue_page_view(int $user_id): array { $total_withdrawn = 0.0; $records = []; - if (class_exists('AKSRT_Credits')) { - $balance = (float) AKSRT_Credits::balance($user_id); + if (class_exists('\AKSRT\Credits\Credits')) { + $balance = (float) \AKSRT\Credits\Credits::balance($user_id); } - if (class_exists('AKSRT_Revenue')) { - $revenues = AKSRT_Revenue::get_instance()->get_user_revenues($user_id, ['limit' => 200]); + if (class_exists('\AKSRT\Payment\Revenue')) { + $revenues = \AKSRT\Payment\Revenue::get_instance()->get_user_revenues($user_id, ['limit' => 200]); foreach ($revenues as $rev) { $row = is_array($rev) ? $rev : (array) $rev; $total_earned += (float) ($row['amount'] ?? 0); @@ -93,8 +93,8 @@ function aksrt_get_revenue_page_view(int $user_id): array { } } - if (class_exists('AKSRT_Withdrawal')) { - $withdrawals = AKSRT_Withdrawal::get_instance()->get_user_withdrawals($user_id, ['limit' => 200]); + if (class_exists('\AKSRT\Payment\Withdrawal')) { + $withdrawals = \AKSRT\Payment\Withdrawal::get_instance()->get_user_withdrawals($user_id, ['limit' => 200]); foreach ($withdrawals as $w) { $wrow = is_array($w) ? $w : (array) $w; $total_withdrawn += (float) ($wrow['amount'] ?? 0); diff --git a/inc/helpers/aksrt-user-center.php b/inc/helpers/aksrt-user-center.php index 69c96edb..911521af 100644 --- a/inc/helpers/aksrt-user-center.php +++ b/inc/helpers/aksrt-user-center.php @@ -283,8 +283,8 @@ if (!function_exists('aksrt_user_center_resolve_tabs')) { * @return array{tabs:array,keys:array,default:string,active:string,urls:array} */ function aksrt_user_center_resolve_tabs(): array { - $tabs = class_exists('AKSRT_User_Center') - ? AKSRT_User_Center::get_instance()->get_dashboard_tabs() + $tabs = class_exists('\AKSRT\User\Center') + ? \AKSRT\User\Center::get_instance()->get_dashboard_tabs() : [ 'profile' => ['label' => __('个人信息', 'aksrt'), 'icon' => 'user'], 'posts' => ['label' => __('我的文章', 'aksrt'), 'icon' => 'file-alt'], @@ -411,8 +411,8 @@ if (!function_exists('aksrt_get_user_center_render_context')) { function aksrt_get_user_center_render_context(WP_User $current_user): array { $user_id = (int) $current_user->ID; - $user_center_settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_user_center_settings() + $user_center_settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_user_center_settings() : [ 'tabs' => ['profile', 'posts', 'comments', 'favorites'], 'avatar_upload' => true, @@ -438,7 +438,7 @@ if (!function_exists('aksrt_get_user_center_render_context')) { $user_contacts = $dashboard['user_contacts'] ?? get_user_meta($user_id, 'aksrt_user_contacts', true); $user_contacts = is_array($user_contacts) ? $user_contacts : []; $user_background_url = (string) ($dashboard['background_url'] ?? get_user_meta($user_id, 'aksrt_background_image', true)); - $allow_bg_upload = !empty($user_center_settings['cover_upload']) && class_exists('AKSRT_Settings') && aksrt_get_setting('allow_background_upload', false); + $allow_bg_upload = !empty($user_center_settings['cover_upload']) && class_exists('\AKSRT\Settings\Settings') && aksrt_get_setting('allow_background_upload', false); $post_status_filter = isset($_GET['post_status']) ? sanitize_key(wp_unslash($_GET['post_status'])) : 'publish'; if (!in_array($post_status_filter, ['all', 'publish', 'draft', 'pending', 'private'], true)) { @@ -454,8 +454,8 @@ if (!function_exists('aksrt_get_user_center_render_context')) { $svgs = aksrt_user_center_empty_svgs(); require_once AKSRT_DIR . '/templates/parts/user-shared-helpers.php'; - $vip_settings = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_payment_vip_settings() : []; - $affiliate_settings = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_payment_affiliate_settings() : []; + $vip_settings = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_payment_vip_settings() : []; + $affiliate_settings = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_payment_affiliate_settings() : []; $show_credit_tabs = (bool) ($dashboard['credits_enabled'] ?? false); $currency_name = (string) ($dashboard['currency_name'] ?? __('积分', 'aksrt')); $balance_enabled = (bool) ($dashboard['balance_enabled'] ?? false); @@ -502,9 +502,9 @@ if (!function_exists('aksrt_get_user_center_render_context')) { 'wallet_balance' => $wallet_balance, 'vip_settings' => $vip_settings, 'show_invite_section' => $show_credit_tabs - && class_exists('AKSRT_Settings') - && AKSRT_Settings::invite_enabled() - && AKSRT_Settings::invite_registration_enabled(), + && class_exists('\AKSRT\Settings\Settings') + && \AKSRT\Settings\Settings::invite_enabled() + && \AKSRT\Settings\Settings::invite_registration_enabled(), 'user_email' => (string) $current_user->user_email, 'runtime_config' => aksrt_user_center_runtime_config($user_id, $tabs['default'], $active_tab, $tabs['urls']), 'cover_upload_config' => aksrt_user_center_cover_upload_config($allow_bg_upload), diff --git a/inc/helpers/aksrt-user-dashboard.php b/inc/helpers/aksrt-user-dashboard.php index c3c9d6e4..fbaa85ba 100644 --- a/inc/helpers/aksrt-user-dashboard.php +++ b/inc/helpers/aksrt-user-dashboard.php @@ -67,26 +67,26 @@ function aksrt_get_user_dashboard_view(int $user_id, array $args = []): array { $user_contacts = []; } - $user_center_settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_user_center_settings() + $user_center_settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_user_center_settings() : ['social_links' => true]; $background_url = get_user_meta($user_id, 'aksrt_background_image', true) ?: ''; - $credits_enabled = class_exists('AKSRT_Settings') && AKSRT_Settings::credits_enabled(); + $credits_enabled = class_exists('\AKSRT\Settings\Settings') && \AKSRT\Settings\Settings::credits_enabled(); $credit_balance = $credits_enabled && $is_own_profile && function_exists('aksrt_user_credits') ? (float) aksrt_user_credits($user_id) : 0.0; - $currency_name = $credits_enabled && class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_currency_name() + $currency_name = $credits_enabled && class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_currency_name() : __('积分', 'aksrt'); // Cash wallet (Zibll pay_balance) — separate from points. - $balance_enabled = $is_own_profile && class_exists('AKSRT_Balance') && AKSRT_Balance::enabled(); - $wallet_balance = $balance_enabled ? AKSRT_Balance::balance($user_id) : 0.0; + $balance_enabled = $is_own_profile && class_exists('\AKSRT\Credits\Balance') && \AKSRT\Credits\Balance::enabled(); + $wallet_balance = $balance_enabled ? \AKSRT\Credits\Balance::balance($user_id) : 0.0; - $user_home_manager = $include_governance && class_exists('AKSRT_User_Home') - ? AKSRT_User_Home::get_instance() + $user_home_manager = $include_governance && class_exists('\AKSRT\User\Home') + ? \AKSRT\User\Home::get_instance() : null; $profile_signals = $user_home_manager ? $user_home_manager->get_profile_signals($user_id) : []; $profile_notice = $user_home_manager ? $user_home_manager->get_profile_notice($user_id) : []; diff --git a/inc/helpers/aksrt-user-home.php b/inc/helpers/aksrt-user-home.php index e9f91c0e..0330a41a 100644 --- a/inc/helpers/aksrt-user-home.php +++ b/inc/helpers/aksrt-user-home.php @@ -24,8 +24,8 @@ if (!function_exists('aksrt_get_user_home_page_context')) { : []; $is_own_profile = !empty($dashboard['is_own_profile']); - $user_home_settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_user_home_settings() + $user_home_settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_user_home_settings() : [ 'tabs' => ['posts', 'favorites', 'comments', 'follow'], 'sidebar' => false, @@ -34,8 +34,8 @@ if (!function_exists('aksrt_get_user_home_page_context')) { 'posts_per_page' => 10, ]; - $user_center_settings = class_exists('AKSRT_Settings') - ? AKSRT_Settings::get_user_center_settings() + $user_center_settings = class_exists('\AKSRT\Settings\Settings') + ? \AKSRT\Settings\Settings::get_user_center_settings() : ['social_links' => true]; $post_count = (int) ($dashboard['post_count'] ?? 0); @@ -48,7 +48,7 @@ if (!function_exists('aksrt_get_user_home_page_context')) { $credit_balance = $dashboard['credit_balance'] ?? 0.0; $currency_name = $dashboard['currency_name'] ?? __('积分', 'aksrt'); - $user_home_manager = class_exists('AKSRT_User_Home') ? AKSRT_User_Home::get_instance() : null; + $user_home_manager = class_exists('\AKSRT\User\Home') ? \AKSRT\User\Home::get_instance() : null; $visible_tabs = $user_home_manager ? $user_home_manager->get_visible_tabs($is_own_profile) : []; $enabled_tabs = array_keys($visible_tabs); @@ -79,17 +79,17 @@ if (!function_exists('aksrt_get_user_home_page_context')) { $display_tabs = $is_mobile ? $enabled_tabs_mobile : $enabled_tabs_pc; $default_tab = !empty($display_tabs) ? $display_tabs[0] : $enabled_tabs[0]; - $forum_instance = class_exists('AKSRT_Forum') ? AKSRT_Forum::get_instance() : null; + $forum_instance = class_exists('\AKSRT\Forum\Forum') ? \AKSRT\Forum\Forum::get_instance() : null; $forum_stats = $forum_instance ? $forum_instance->get_user_forum_stats($user_id) : []; $forum_topic_count = (int) ($forum_stats['topic_count'] ?? 0); $product_count = 0; - if (class_exists('AKSRT_Shop')) { - $product_count = (int) AKSRT_Shop::get_instance()->count_author_products($user_id); + if (class_exists('\AKSRT\Shop\Shop')) { + $product_count = (int) \AKSRT\Shop\Shop::get_instance()->count_author_products($user_id); } $follow_count = 0; - if (class_exists('AKSRT_Follow')) { - $follow_count = (int) AKSRT_Follow::get_instance()->get_follower_count($user_id); + if (class_exists('\AKSRT\User\Follow')) { + $follow_count = (int) \AKSRT\User\Follow::get_instance()->get_follower_count($user_id); } $plate_count = 0; diff --git a/inc/helpers/aksrt-vip.php b/inc/helpers/aksrt-vip.php index 5f23fd8b..c8e9f927 100644 --- a/inc/helpers/aksrt-vip.php +++ b/inc/helpers/aksrt-vip.php @@ -28,11 +28,11 @@ function aksrt_get_user_vip_level(int $user_id = 0): int { return 0; } - if (!class_exists('AKSRT_Settings')) { + if (!class_exists('\AKSRT\Settings\Settings')) { return 0; } - $vip_settings = AKSRT_Settings::get_payment_vip_settings(); + $vip_settings = \AKSRT\Settings\Settings::get_payment_vip_settings(); if (empty($vip_settings['enabled'])) { return 0; } @@ -42,7 +42,7 @@ function aksrt_get_user_vip_level(int $user_id = 0): int { $vip2_enabled = !empty($levels[2]['enabled']); // 1. 角色豁免:特权角色取当前启用最高档。 - $paid_settings = AKSRT_Settings::get_paid_content_settings(); + $paid_settings = \AKSRT\Settings\Settings::get_paid_content_settings(); $exempt_roles = $paid_settings['vip_exempt_roles'] ?? []; if (!empty($exempt_roles)) { $user = get_userdata($user_id); @@ -75,8 +75,8 @@ function aksrt_get_user_vip_level(int $user_id = 0): int { } // 3. 订单兜底(meta 无有效等级时)。 - if ($candidate <= 0 && class_exists('AKSRT_Order')) { - $order_mgr = AKSRT_Order::get_instance(); + if ($candidate <= 0 && class_exists('\AKSRT\Payment\Order')) { + $order_mgr = \AKSRT\Payment\Order::get_instance(); $valid_order = method_exists($order_mgr, 'get_valid_vip_order') ? $order_mgr->get_valid_vip_order($user_id) : null; @@ -141,11 +141,11 @@ function aksrt_is_vip2(int $user_id = 0): bool { * @return string */ function aksrt_get_vip_badge_text(): string { - if (!class_exists('AKSRT_Settings')) { + if (!class_exists('\AKSRT\Settings\Settings')) { return 'VIP'; } - $vip_settings = AKSRT_Settings::get_payment_vip_settings(); + $vip_settings = \AKSRT\Settings\Settings::get_payment_vip_settings(); return sanitize_text_field($vip_settings['badge_text'] ?? 'VIP'); } @@ -158,11 +158,11 @@ if (!function_exists('aksrt_get_user_free_download_limit')) { if ($user_id <= 0) { $user_id = get_current_user_id(); } - if ($user_id <= 0 || !class_exists('AKSRT_Settings')) { + if ($user_id <= 0 || !class_exists('\AKSRT\Settings\Settings')) { return 0; } - $vip = AKSRT_Settings::get_payment_vip_settings(); + $vip = \AKSRT\Settings\Settings::get_payment_vip_settings(); $level = function_exists('aksrt_get_user_vip_level') ? aksrt_get_user_vip_level($user_id) : 0; $levels = is_array($vip['levels'] ?? null) ? $vip['levels'] : []; $benefit = is_array($vip['benefit'] ?? null) ? $vip['benefit'] : []; @@ -183,11 +183,11 @@ if (!function_exists('aksrt_get_user_download_speed')) { if ($user_id <= 0) { $user_id = get_current_user_id(); } - if ($user_id <= 0 || !class_exists('AKSRT_Settings')) { + if ($user_id <= 0 || !class_exists('\AKSRT\Settings\Settings')) { return 0; } - $vip = AKSRT_Settings::get_payment_vip_settings(); + $vip = \AKSRT\Settings\Settings::get_payment_vip_settings(); $level = function_exists('aksrt_get_user_vip_level') ? aksrt_get_user_vip_level($user_id) : 0; $levels = is_array($vip['levels'] ?? null) ? $vip['levels'] : []; $benefit = is_array($vip['benefit'] ?? null) ? $vip['benefit'] : []; @@ -356,8 +356,8 @@ function aksrt_get_vip_info(int $user_id = 0): array { } $name = __('普通用户', 'aksrt'); - if ($is_vip && class_exists('AKSRT_Settings')) { - $vip = AKSRT_Settings::get_payment_vip_settings(); + if ($is_vip && class_exists('\AKSRT\Settings\Settings')) { + $vip = \AKSRT\Settings\Settings::get_payment_vip_settings(); $name = (string) ($vip['levels'][$level]['name'] ?? ($badge_text . __('会员', 'aksrt'))); } elseif ($is_vip) { $name = $badge_text . __('会员', 'aksrt'); diff --git a/inc/helpers/menu-decoration.php b/inc/helpers/menu-decoration.php index 3a5fc310..6a6d2e5e 100644 --- a/inc/helpers/menu-decoration.php +++ b/inc/helpers/menu-decoration.php @@ -11,7 +11,7 @@ defined('ABSPATH') || exit; /** - * Get menu decoration settings from AKSRT_Settings. + * Get menu decoration settings from \AKSRT\Settings\Settings. * * @return array */ @@ -21,8 +21,8 @@ function aksrt_get_menu_decoration_settings(): array { return $cache; } - if (class_exists('AKSRT_Settings')) { - $all = AKSRT_Settings::get_all(); + if (class_exists('\AKSRT\Settings\Settings')) { + $all = \AKSRT\Settings\Settings::get_all(); } else { $all = []; } diff --git a/inc/helpers/user-center-renderers/credits-balance.php b/inc/helpers/user-center-renderers/credits-balance.php index afff2943..833841a1 100644 --- a/inc/helpers/user-center-renderers/credits-balance.php +++ b/inc/helpers/user-center-renderers/credits-balance.php @@ -14,18 +14,18 @@ if (!$credits_enabled) { } $card_pass_credits = ['enabled' => false, 'desc' => '', 'only_password' => true]; -if (class_exists('AKSRT_Charge_Card')) { - $opts = AKSRT_Charge_Card::get_instance()->get_public_options(); +if (class_exists('\AKSRT\Payment\ChargeCard')) { + $opts = \AKSRT\Payment\ChargeCard::get_instance()->get_public_options(); $card_pass_credits = is_array($opts['credits'] ?? null) ? $opts['credits'] : $card_pass_credits; } -$all_settings = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_all() : []; +$all_settings = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_all() : []; $points_uid = (int) ($user_id ?? get_current_user_id()); $points_transfer_on = !empty($all_settings['points_transfer_s']); -if ($points_transfer_on && class_exists('AKSRT_Settings_Capabilities') && !AKSRT_Settings_Capabilities::user_can('points_transfer', $points_uid)) { +if ($points_transfer_on && class_exists('\AKSRT\Settings\Capabilities') && !\AKSRT\Settings\Capabilities::user_can('points_transfer', $points_uid)) { $points_transfer_on = false; } -$points_buy_on = class_exists('AKSRT_Balance_Service') && AKSRT_Balance_Service::get_instance()->points_buy_enabled(); -$points_buy_view = $points_buy_on ? AKSRT_Balance_Service::get_instance()->get_points_buy_view((int) ($user_id ?? 0)) : []; +$points_buy_on = class_exists('\AKSRT\Credits\BalanceService') && \AKSRT\Credits\BalanceService::get_instance()->points_buy_enabled(); +$points_buy_view = $points_buy_on ? \AKSRT\Credits\BalanceService::get_instance()->get_points_buy_view((int) ($user_id ?? 0)) : []; $currency = (string) ($currency_name ?? __('积分', 'aksrt')); ?>
diff --git a/inc/helpers/user-center-renderers/credits-level.php b/inc/helpers/user-center-renderers/credits-level.php index 4aac7f47..0a3523f4 100644 --- a/inc/helpers/user-center-renderers/credits-level.php +++ b/inc/helpers/user-center-renderers/credits-level.php @@ -9,11 +9,11 @@ defined('ABSPATH') || exit; -if (!class_exists('AKSRT_User_Level')) { +if (!class_exists('\AKSRT\User\Level')) { return; } -$cfg = AKSRT_User_Level::settings(); +$cfg = \AKSRT\User\Level::settings(); if (empty($cfg['enabled'])) { return; } @@ -23,8 +23,8 @@ if ($user_id <= 0) { return; } -$level = AKSRT_User_Level::get_level($user_id); -$integral = AKSRT_User_Level::get_integral($user_id); +$level = \AKSRT\User\Level::get_level($user_id); +$integral = \AKSRT\User\Level::get_integral($user_id); $max = max(1, (int) ($cfg['max'] ?? 10)); $prefix = (string) ($cfg['prefix'] ?? 'Lv.'); $opt = is_array($cfg['level_opt'] ?? null) ? $cfg['level_opt'] : []; @@ -36,7 +36,7 @@ if (!$is_max) { $next_need = (int) ($opt['upgrade_integral_' . ($level + 1)] ?? 0); if ($next_need <= $integral) { // Resolve again in case meta lag. - $level = AKSRT_User_Level::resolve_level($integral, $cfg); + $level = \AKSRT\User\Level::resolve_level($integral, $cfg); $is_max = $level >= $max; $next_need = $is_max ? $integral : (int) ($opt['upgrade_integral_' . ($level + 1)] ?? $integral); $name = (string) ($opt['name_' . $level] ?? ($prefix . $level)); diff --git a/inc/helpers/user-center-renderers/credits-points-tasks.php b/inc/helpers/user-center-renderers/credits-points-tasks.php index f7b1d52a..2a438f49 100644 --- a/inc/helpers/user-center-renderers/credits-points-tasks.php +++ b/inc/helpers/user-center-renderers/credits-points-tasks.php @@ -7,7 +7,7 @@ defined('ABSPATH') || exit; -if (!class_exists('AKSRT_Points_Free') || !AKSRT_Points_Free::enabled()) { +if (!class_exists('\AKSRT\Credits\PointsFree') || !\AKSRT\Credits\PointsFree::enabled()) { return; } @@ -26,8 +26,8 @@ $aksrt_points_task_action = static function (string $key): array { $forum_on = false; $forum_home = ''; $forum_compose = ''; - if (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_forum_settings')) { - $f = AKSRT_Settings::get_forum_settings(); + if (class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'get_forum_settings')) { + $f = \AKSRT\Settings\Settings::get_forum_settings(); $forum_on = !empty($f['enabled']); } if ($forum_on) { @@ -126,10 +126,10 @@ $aksrt_points_task_action = static function (string $key): array { }; $user_id = (int) ($user_id ?? get_current_user_id()); -$today = AKSRT_Points_Free::today_total($user_id); -$day_max = (int) AKSRT_Points_Free::settings()['day_max']; -$tasks = AKSRT_Points_Free::task_list_for_user($user_id); -$detail = AKSRT_Points_Free::date_detail($user_id); +$today = \AKSRT\Credits\PointsFree::today_total($user_id); +$day_max = (int) \AKSRT\Credits\PointsFree::settings()['day_max']; +$tasks = \AKSRT\Credits\PointsFree::task_list_for_user($user_id); +$detail = \AKSRT\Credits\PointsFree::date_detail($user_id); $pane = isset($points_tasks_pane) ? sanitize_key((string) $points_tasks_pane) : 'tasks'; ?> diff --git a/inc/helpers/user-center-renderers/credits-signin.php b/inc/helpers/user-center-renderers/credits-signin.php index 9ea0576d..5a9973de 100644 --- a/inc/helpers/user-center-renderers/credits-signin.php +++ b/inc/helpers/user-center-renderers/credits-signin.php @@ -23,8 +23,8 @@ if (function_exists('aksrt_is_captcha_enabled_for') && aksrt_is_captcha_enabled_ endif; $signin_dates = []; -if (class_exists('AKSRT_Signin')) { - $signin_log = AKSRT_Signin::get_instance()->get_recent_signins($user_id, 30); +if (class_exists('\AKSRT\Credits\Signin')) { + $signin_log = \AKSRT\Credits\Signin::get_instance()->get_recent_signins($user_id, 30); $signin_dates = array_filter(array_map(static function ($entry) { return $entry['signin_date'] ?? ''; }, $signin_log)); diff --git a/inc/helpers/user-center-renderers/credits-transactions.php b/inc/helpers/user-center-renderers/credits-transactions.php index 8b657423..08d7f679 100644 --- a/inc/helpers/user-center-renderers/credits-transactions.php +++ b/inc/helpers/user-center-renderers/credits-transactions.php @@ -18,8 +18,8 @@ defined('ABSPATH') || exit;
$user_id, 'page' => $credits_page, 'per_page' => 10]); + if (class_exists('\AKSRT\Credits\Credits')) { + $log = \AKSRT\Credits\Credits::get_log(['user_id' => $user_id, 'page' => $credits_page, 'per_page' => 10]); } else { $log = ['items' => [], 'total' => 0]; } diff --git a/inc/helpers/user-center-renderers/credits-vip.php b/inc/helpers/user-center-renderers/credits-vip.php index 450c1fb5..9787bfa8 100644 --- a/inc/helpers/user-center-renderers/credits-vip.php +++ b/inc/helpers/user-center-renderers/credits-vip.php @@ -43,9 +43,9 @@ $renew_desc = ''; $upgrade_desc = ''; $points_exchange = ['enabled' => false, 'packages' => [], 'desc' => '']; $user_points = 0; -$currency_name = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_currency_name() : __('积分', 'aksrt'); -if (class_exists('AKSRT_Vip_Service')) { - $catalog = AKSRT_Vip_Service::get_instance()->get_catalog($user_id); +$currency_name = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_currency_name() : __('积分', 'aksrt'); +if (class_exists('\AKSRT\Content\VipService')) { + $catalog = \AKSRT\Content\VipService::get_instance()->get_catalog($user_id); $packages = is_array($catalog['level_packages'] ?? null) ? $catalog['level_packages'] : []; $methods = is_array($catalog['payment_methods'] ?? null) ? $catalog['payment_methods'] : []; $renew_desc = (string) ($catalog['renew_desc'] ?? ''); @@ -60,8 +60,8 @@ if (class_exists('AKSRT_Vip_Service')) { } $cash_symbol = '¥'; -if (class_exists('AKSRT_Settings')) { - $paid_display = AKSRT_Settings::get_paid_content_settings(); +if (class_exists('\AKSRT\Settings\Settings')) { + $paid_display = \AKSRT\Settings\Settings::get_paid_content_settings(); $cash_symbol = (string) ($paid_display['display']['currency_symbol'] ?? '¥'); } @@ -72,8 +72,8 @@ if ($vip_level > 0) { $points_pkgs = is_array($points_exchange['packages'] ?? null) ? $points_exchange['packages'] : []; $card_pass_vip = ['enabled' => false, 'desc' => '', 'only_password' => true]; -if (class_exists('AKSRT_Charge_Card')) { - $card_opts = AKSRT_Charge_Card::get_instance()->get_public_options(); +if (class_exists('\AKSRT\Payment\ChargeCard')) { + $card_opts = \AKSRT\Payment\ChargeCard::get_instance()->get_public_options(); $card_pass_vip = is_array($card_opts['vip'] ?? null) ? $card_opts['vip'] : $card_pass_vip; } elseif (!empty($vip_settings['benefit']['pass_charge'])) { $card_pass_vip = [ diff --git a/inc/helpers/user-center-renderers/credits-wallet.php b/inc/helpers/user-center-renderers/credits-wallet.php index ee360ac3..c1d87d3c 100644 --- a/inc/helpers/user-center-renderers/credits-wallet.php +++ b/inc/helpers/user-center-renderers/credits-wallet.php @@ -14,44 +14,44 @@ if (empty($balance_enabled)) { } $wallet = (float) ($wallet_balance ?? 0.0); -$wallet_fmt = class_exists('AKSRT_Balance') - ? AKSRT_Balance::format($wallet) +$wallet_fmt = class_exists('\AKSRT\Credits\Balance') + ? \AKSRT\Credits\Balance::format($wallet) : number_format_i18n($wallet, 2); -$recharge = class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_payment_recharge_settings') - ? AKSRT_Settings::get_payment_recharge_settings() +$recharge = class_exists('\AKSRT\Settings\Settings') && method_exists('\AKSRT\Settings\Settings', 'get_payment_recharge_settings') + ? \AKSRT\Settings\Settings::get_payment_recharge_settings() : []; $uid = (int) ($user_id ?? get_current_user_id()); $transfer_on = !empty($recharge['transfer']['enabled']); -if ($transfer_on && class_exists('AKSRT_Settings_Capabilities') && !AKSRT_Settings_Capabilities::user_can('balance_transfer', $uid)) { +if ($transfer_on && class_exists('\AKSRT\Settings\Capabilities') && !\AKSRT\Settings\Capabilities::user_can('balance_transfer', $uid)) { $transfer_on = false; } $exchange_on = !empty($recharge['exchange']['enabled']); -$all_settings = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_all() : []; +$all_settings = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_all() : []; $withdraw_on = !empty($all_settings['pay_balance_withdraw_s']); -if ($withdraw_on && class_exists('AKSRT_Settings_Capabilities') && !AKSRT_Settings_Capabilities::user_can('balance_withdraw', $uid)) { +if ($withdraw_on && class_exists('\AKSRT\Settings\Capabilities') && !\AKSRT\Settings\Capabilities::user_can('balance_withdraw', $uid)) { $withdraw_on = false; } $withdraw_min = max(1, (float) ($all_settings['pay_balance_withdraw_lowest_money'] ?? $all_settings['pay_rebate_withdraw_lowest_money'] ?? 50)); $withdraw_pending_hold = 0.0; $withdraw_history = []; -if ($withdraw_on && class_exists('AKSRT_Withdrawal')) { - $wd_svc = AKSRT_Withdrawal::get_instance(); +if ($withdraw_on && class_exists('\AKSRT\Payment\Withdrawal')) { + $wd_svc = \AKSRT\Payment\Withdrawal::get_instance(); $withdraw_pending_hold = $wd_svc->sum_pending_hold((int) ($user_id ?? 0)); $withdraw_history = $wd_svc->get_user_withdrawals((int) ($user_id ?? 0), ['limit' => 30]); } $withdraw_processing = $withdraw_pending_hold > 0; $card_pass_balance = ['enabled' => false, 'desc' => '', 'only_password' => true]; -if (class_exists('AKSRT_Charge_Card')) { - $opts = AKSRT_Charge_Card::get_instance()->get_public_options(); +if (class_exists('\AKSRT\Payment\ChargeCard')) { + $opts = \AKSRT\Payment\ChargeCard::get_instance()->get_public_options(); $card_pass_balance = is_array($opts['balance'] ?? null) ? $opts['balance'] : $card_pass_balance; } elseif (!empty($recharge['pass_charge'])) { $card_pass_balance = is_array($recharge['pass_charge']) ? $recharge['pass_charge'] : $card_pass_balance; } $charge_view = []; -if (class_exists('AKSRT_Balance_Service')) { - $charge_view = AKSRT_Balance_Service::get_instance()->get_charge_view((int) $user_id); +if (class_exists('\AKSRT\Credits\BalanceService')) { + $charge_view = \AKSRT\Credits\BalanceService::get_instance()->get_charge_view((int) $user_id); } $packages = is_array($charge_view['packages'] ?? null) ? $charge_view['packages'] : []; $methods = is_array($charge_view['payment_methods'] ?? null) ? $charge_view['payment_methods'] : []; @@ -101,7 +101,7 @@ $mark = (string) ($charge_view['currency_mark'] ?? '元');
- +
@@ -288,12 +288,12 @@ $mark = (string) ($charge_view['currency_mark'] ?? '元');
- +
0.001) : ?> - · + ·
@@ -319,8 +319,8 @@ $mark = (string) ($charge_view['currency_mark'] ?? '元');
(int) $user_id, 'page' => $wallet_page, 'per_page' => 10]) + $wlog = class_exists('\AKSRT\Credits\Balance') + ? \AKSRT\Credits\Balance::get_log(['user_id' => (int) $user_id, 'page' => $wallet_page, 'per_page' => 10]) : ['items' => [], 'total' => 0]; if (!empty($wlog['items'])) : ?> @@ -328,7 +328,7 @@ $mark = (string) ($charge_view['currency_mark'] ?? '元'); = 0 ? 'is-positive' : 'is-negative'; - $delta_txt = ($delta > 0 ? '+' : '') . (class_exists('AKSRT_Balance') ? AKSRT_Balance::format($delta) : number_format_i18n($delta, 2)); + $delta_txt = ($delta > 0 ? '+' : '') . (class_exists('\AKSRT\Credits\Balance') ? \AKSRT\Credits\Balance::format($delta) : number_format_i18n($delta, 2)); ?>
@@ -336,7 +336,7 @@ $mark = (string) ($charge_view['currency_mark'] ?? '元');
- + () @@ -349,7 +349,7 @@ $mark = (string) ($charge_view['currency_mark'] ?? '元'); diff --git a/inc/helpers/user-center-renderers/profile-credits.php b/inc/helpers/user-center-renderers/profile-credits.php index 21e49794..6885287b 100644 --- a/inc/helpers/user-center-renderers/profile-credits.php +++ b/inc/helpers/user-center-renderers/profile-credits.php @@ -44,7 +44,7 @@ if (!empty($show_vip)) { if ($show_credits) { require $dir . '/credits-signin.php'; } -if (class_exists('AKSRT_User_Level')) { +if (class_exists('\AKSRT\User\Level')) { require $dir . '/credits-level.php'; } @@ -54,7 +54,7 @@ if ($show_wallet || $show_credits) : if ($active_record === '' || !in_array($active_record, ['balance', 'points', 'points_free', 'points_date'], true)) { $active_record = $show_wallet ? 'balance' : 'points'; } - $show_tasks = $show_credits && class_exists('AKSRT_Points_Free') && AKSRT_Points_Free::enabled(); + $show_tasks = $show_credits && class_exists('\AKSRT\Credits\PointsFree') && \AKSRT\Credits\PointsFree::enabled(); ?>
    @@ -82,8 +82,8 @@ if ($show_wallet || $show_credits) : // Render only the ledger portion by reusing balance log markup. $user_id = (int) ($user_id ?? 0); $wallet_page = max(1, isset($_GET['wallet_page']) ? (int) $_GET['wallet_page'] : 1); - $wlog = class_exists('AKSRT_Balance') - ? AKSRT_Balance::get_log(['user_id' => $user_id, 'page' => $wallet_page, 'per_page' => 10]) + $wlog = class_exists('\AKSRT\Credits\Balance') + ? \AKSRT\Credits\Balance::get_log(['user_id' => $user_id, 'page' => $wallet_page, 'per_page' => 10]) : ['items' => [], 'total' => 0]; ?>
    @@ -92,7 +92,7 @@ if ($show_wallet || $show_credits) : = 0 ? 'is-positive' : 'is-negative'; - $delta_txt = ($delta > 0 ? '+' : '') . (class_exists('AKSRT_Balance') ? AKSRT_Balance::format($delta) : number_format_i18n($delta, 2)); + $delta_txt = ($delta > 0 ? '+' : '') . (class_exists('\AKSRT\Credits\Balance') ? \AKSRT\Credits\Balance::format($delta) : number_format_i18n($delta, 2)); ?>
    @@ -100,7 +100,7 @@ if ($show_wallet || $show_credits) :
    - + () @@ -109,7 +109,7 @@ if ($show_wallet || $show_credits) :
    - + diff --git a/inc/helpers/user-center-renderers/profile-header.php b/inc/helpers/user-center-renderers/profile-header.php index 000f6cdf..24ad9086 100644 --- a/inc/helpers/user-center-renderers/profile-header.php +++ b/inc/helpers/user-center-renderers/profile-header.php @@ -61,7 +61,7 @@ extract($context, EXTR_SKIP); // phpcs:ignore WordPress.PHP.DontExtract.extract_
    - + @@ -85,7 +85,7 @@ extract($context, EXTR_SKIP); // phpcs:ignore WordPress.PHP.DontExtract.extract_
    - +