feat: 收口 1:1 剩余欠账(论坛壳/圈子/501/私信默认/资源死码)
- 论坛 board/topic/plate/tag/plate-cat 接入 content-wrap/content-layout 主站流壳 - 公共主页 plate 圈子 tab 接关注/管理版块真实数据并计数 - forum-topic 渲染封面/付费扩展位 meta(§7.3) - 后台删除消息/背景图/评论图 REST 从 501 补齐为真实实现 - 私信 private_s 缺省 true(完整 1:1,不再兼容默认关) - 清理 aksrt_get_resource_meta 不可达旧实现;挂载 AKSRT_AI 配置门控实例 - 登录 modal 启用 colorful-header;订单页粉边 focus 软化;侧栏次级入口视觉弱化 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0941c7d23f
commit
fb68b3f8c6
16 files changed
+313
-82
No files matched your search
@@ -36,37 +36,12 @@ if (!function_exists('aksrt_get_resource_meta')) {
|
||||
$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);
|
||||
|
||||
return [
|
||||
'version' => (string) ($pay_meta['version'] ?? ''),
|
||||
'size' => (string) ($pay_meta['size'] ?? ''),
|
||||
'price' => (float) ($pay_meta['price'] ?? 0),
|
||||
'original_price' => (float) ($pay_meta['original_price'] ?? 0),
|
||||
'vip1_price' => (float) ($pay_meta['vip1_price'] ?? 0),
|
||||
'vip2_price' => (float) ($pay_meta['vip2_price'] ?? 0),
|
||||
'pay_type' => (string) ($pay_meta['pay_type'] ?? AKSRT_Domain_Model::PAY_TYPE_DOWNLOAD),
|
||||
'license' => (string) ($pay_meta['license'] ?? ''),
|
||||
'compat' => (string) ($pay_meta['compat'] ?? ''),
|
||||
'demo_url' => (string) ($pay_meta['demo_url'] ?? ''),
|
||||
'downloads' => array_values(is_array($pay_meta['downloads'] ?? null) ? $pay_meta['downloads'] : []),
|
||||
'download_count' => max(0, max($download_count, $legacy_download_count)),
|
||||
'view_count' => max(0, max($resource_view_count, $common_view_count)),
|
||||
'require_login' => !empty($pay_meta['require_login']),
|
||||
'require_captcha' => !empty($pay_meta['require_captcha']),
|
||||
];
|
||||
|
||||
// 一次取出全部 post meta(WP 已缓存到 object cache)
|
||||
$all = get_post_meta($p->ID);
|
||||
if (!is_array($all)) $all = [];
|
||||
|
||||
$get = static function ($key) use ($all) {
|
||||
if (!isset($all[$key]) || !is_array($all[$key]) || empty($all[$key])) return null;
|
||||
return maybe_unserialize($all[$key][0]);
|
||||
};
|
||||
|
||||
$downloads = $get('_aksrt_res_downloads');
|
||||
if (!is_array($downloads)) $downloads = [];
|
||||
// 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'] : []);
|
||||
$downloads = array_values(array_filter(array_map(static function ($row) {
|
||||
if (!is_array($row)) return null;
|
||||
if (!is_array($row)) {
|
||||
return null;
|
||||
}
|
||||
$extract_keys = [
|
||||
'extract_code', 'extractCode', 'extract', 'extract_key',
|
||||
'extraction_code', 'extractionCode',
|
||||
@@ -85,33 +60,23 @@ if (!function_exists('aksrt_get_resource_meta')) {
|
||||
$row['extract_code'] = isset($row['extract_code']) ? trim((string) $row['extract_code']) : '';
|
||||
return $row;
|
||||
}, $downloads)));
|
||||
$resource_download_count = (int) ($get('_aksrt_res_download_count') ?? 0);
|
||||
$legacy_download_count = (int) ($get('download_count') ?? 0);
|
||||
$resource_view_count = (int) ($get('_aksrt_res_view_count') ?? 0);
|
||||
$common_view_count = (int) ($get('aksrt_post_views') ?? 0);
|
||||
|
||||
$allowed_pay_types = ['download', 'reading', 'gallery', 'video', 'vip'];
|
||||
$pay_type = (string) ($get('_aksrt_res_pay_type') ?? 'download');
|
||||
if (!in_array($pay_type, $allowed_pay_types, true)) {
|
||||
$pay_type = 'download';
|
||||
}
|
||||
|
||||
return [
|
||||
'version' => (string) ($get('_aksrt_res_version') ?? ''),
|
||||
'size' => (string) ($get('_aksrt_res_size') ?? ''),
|
||||
'price' => (float) ($get('_aksrt_res_price') ?? 0),
|
||||
'original_price' => (float) ($get('_aksrt_res_original_price') ?? 0),
|
||||
'vip1_price' => (float) ($get('_aksrt_res_vip1_price') ?? 0),
|
||||
'vip2_price' => (float) ($get('_aksrt_res_vip2_price') ?? 0),
|
||||
'pay_type' => $pay_type,
|
||||
'license' => (string) ($get('_aksrt_res_license') ?? ''),
|
||||
'compat' => (string) ($get('_aksrt_res_compat') ?? ''),
|
||||
'demo_url' => (string) ($get('_aksrt_res_demo_url') ?? ''),
|
||||
'downloads' => array_values($downloads),
|
||||
'download_count' => max(0, max($resource_download_count, $legacy_download_count)),
|
||||
'version' => (string) ($pay_meta['version'] ?? ''),
|
||||
'size' => (string) ($pay_meta['size'] ?? ''),
|
||||
'price' => (float) ($pay_meta['price'] ?? 0),
|
||||
'original_price' => (float) ($pay_meta['original_price'] ?? 0),
|
||||
'vip1_price' => (float) ($pay_meta['vip1_price'] ?? 0),
|
||||
'vip2_price' => (float) ($pay_meta['vip2_price'] ?? 0),
|
||||
'pay_type' => (string) ($pay_meta['pay_type'] ?? AKSRT_Domain_Model::PAY_TYPE_DOWNLOAD),
|
||||
'license' => (string) ($pay_meta['license'] ?? ''),
|
||||
'compat' => (string) ($pay_meta['compat'] ?? ''),
|
||||
'demo_url' => (string) ($pay_meta['demo_url'] ?? ''),
|
||||
'downloads' => $downloads,
|
||||
'download_count' => max(0, max($download_count, $legacy_download_count)),
|
||||
'view_count' => max(0, max($resource_view_count, $common_view_count)),
|
||||
'require_login' => (bool) ($get('_aksrt_res_require_login') ?? false),
|
||||
'require_captcha' => (bool) ($get('_aksrt_res_require_captcha') ?? false),
|
||||
'require_login' => !empty($pay_meta['require_login']),
|
||||
'require_captcha' => !empty($pay_meta['require_captcha']),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user