get_plate_moderators((int) $post->ID);
$applications = $forum->get_plate_moderator_applications((int) $post->ID);
} else {
$raw = get_post_meta($post->ID, '_aksrt_moderators', true);
$moderator_ids = is_array($raw) ? array_map('intval', $raw) : [];
$applications = get_post_meta($post->ID, '_aksrt_moderator_applications', true);
$applications = is_array($applications) ? $applications : [];
}
$allow_view = (string) (get_post_meta($post->ID, '_aksrt_allow_view', true) ?: 'public');
$add_limit = (string) (get_post_meta($post->ID, '_aksrt_add_limit', true) ?: 'all');
$moderator_labels = [];
foreach ($moderator_ids as $uid) {
$user = get_userdata((int) $uid);
$moderator_labels[] = $user
? sprintf('%s (#%d)', $user->user_login, (int) $uid)
: (string) (int) $uid;
}
?>
' . esc_html__('暂无待处理申请。', 'aksrt') . '';
return;
}
echo '';
}
public function save(int $post_id, WP_Post $post): void {
if (!isset($_POST['aksrt_plate_meta_nonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash((string) $_POST['aksrt_plate_meta_nonce'])), 'aksrt_plate_meta_save')) {
return;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if ($post->post_type !== 'aksrt_forum_plate' || !current_user_can('edit_post', $post_id)) {
return;
}
$allow_view = isset($_POST['aksrt_plate_allow_view']) ? sanitize_key((string) wp_unslash($_POST['aksrt_plate_allow_view'])) : 'public';
if (!in_array($allow_view, ['public', 'login', 'moderator'], true)) {
$allow_view = 'public';
}
update_post_meta($post_id, '_aksrt_allow_view', $allow_view);
$add_limit = isset($_POST['aksrt_plate_add_limit']) ? sanitize_key((string) wp_unslash($_POST['aksrt_plate_add_limit'])) : 'all';
if (!in_array($add_limit, ['all', 'login', 'moderator'], true)) {
$add_limit = 'all';
}
update_post_meta($post_id, '_aksrt_add_limit', $add_limit);
$raw = isset($_POST['aksrt_plate_moderators']) ? (string) wp_unslash($_POST['aksrt_plate_moderators']) : '';
$ids = preg_split('/[\s,;]+/', $raw) ?: [];
$ids = array_values(array_unique(array_filter(array_map('intval', $ids))));
update_post_meta($post_id, '_aksrt_moderators', $ids);
$actions = isset($_POST['aksrt_plate_app']) && is_array($_POST['aksrt_plate_app'])
? wp_unslash($_POST['aksrt_plate_app'])
: [];
if (!$actions || !class_exists('AKSRT_Forum')) {
return;
}
$forum = AKSRT_Forum::get_instance();
foreach ($actions as $application_id => $action) {
$application_id = sanitize_text_field((string) $application_id);
$action = sanitize_key((string) $action);
if ($application_id === '' || $action === 'keep') {
continue;
}
if ($action === 'approved') {
$forum->review_moderator_application($application_id, AKSRT_Forum::APPLICATION_APPROVED, '', get_current_user_id());
} elseif ($action === 'rejected') {
$forum->review_moderator_application($application_id, AKSRT_Forum::APPLICATION_REJECTED, '', get_current_user_id());
}
}
}
}