feat(ux): forum pay-hide depth, clogin OAuth, ban appeals admin, posts-navs widget

- Forum compose/save/draft: VIP prices, partial hide, coupons + shortcode tools
- Rainbow clogin aggregate login (rewrite + schema + CLoginClient)
- Native ban appeals tab: approve/reject + lift ban + notify
- WidgetPostsNavs + register missing forum widgets
- Submit editor shortcodes: login/reply/vip/payshow
This commit is contained in:
2026-07-18 23:31:57 +08:00
parent 25aabb71a3
commit 24330653f0
15 changed files with 834 additions and 35 deletions
+18
View File
@@ -146,10 +146,28 @@ class TopicService {
if ($visibility === Forum::VISIBILITY_CREDITS) {
$credits_cost = max(0, (int) ($data['credits_cost'] ?? 0));
update_post_meta($post_id, '_aksrt_credits_cost', $credits_cost);
update_post_meta($post_id, '_aksrt_pay_credits', $credits_cost);
if (isset($data['credits_vip1']) && (string) $data['credits_vip1'] !== '') {
update_post_meta($post_id, '_aksrt_credits_vip1', max(0, (int) $data['credits_vip1']));
}
if (isset($data['credits_vip2']) && (string) $data['credits_vip2'] !== '') {
update_post_meta($post_id, '_aksrt_credits_vip2', max(0, (int) $data['credits_vip2']));
}
update_post_meta($post_id, '_aksrt_pay_hide_part', !empty($data['pay_hide_part']) ? 1 : 0);
}
if ($visibility === Forum::VISIBILITY_PAY) {
$pay_price = sanitize_text_field((string) ($data['pay_price'] ?? ''));
update_post_meta($post_id, '_aksrt_pay_price', $pay_price);
if (isset($data['pay_vip1_price']) && (string) $data['pay_vip1_price'] !== '') {
$v1 = max(0, (float) $data['pay_vip1_price']);
update_post_meta($post_id, '_aksrt_pay_vip1_price', $v1);
update_post_meta($post_id, '_aksrt_pay_vip_price', $v1);
}
if (isset($data['pay_vip2_price']) && (string) $data['pay_vip2_price'] !== '') {
update_post_meta($post_id, '_aksrt_pay_vip2_price', max(0, (float) $data['pay_vip2_price']));
}
update_post_meta($post_id, '_aksrt_pay_hide_part', !empty($data['pay_hide_part']) ? 1 : 0);
update_post_meta($post_id, '_aksrt_topic_coupon_s', !empty($data['topic_coupon_s']) ? 1 : 0);
}
if ($visibility === Forum::VISIBILITY_ROLE) {
$roles = isset($data['visibility_roles']) && is_array($data['visibility_roles'])