resolve($post_id); $status = $state['state']; $can_download = $state['can_download']; $status_text = $state['message']; $action_label = $state['action_label']; $action_url = $state['action_url']; $download_cost = $state['cost']; $user_credits = $state['balance']; $login_url = $state['login_url']; } else { // Fallback: legacy logic $download_settings = class_exists('AKSRT_Settings') ? AKSRT_Settings::get_cms_features() : []; $requires_login = !empty($download_settings['download_requires_login']); $requires_credits = !empty($download_settings['download_requires_credits']); $download_cost = (int) ($download_settings['download_cost'] ?? 0); $has_downloaded = false; if ($is_logged_in) { $downloaded = get_user_meta(get_current_user_id(), '_aksrt_downloaded_resources', true); $downloaded = is_array($downloaded) ? $downloaded : []; $has_downloaded = in_array($post_id, $downloaded, true); } $user_credits = 0; if ($is_logged_in && class_exists('AKSRT_Credits')) { $user_credits = AKSRT_Credits::balance(get_current_user_id()); } $status = 'available'; $status_text = ''; $can_download = true; $login_url = wp_login_url(get_permalink($post_id)); $action_label = __('立即下载', 'aksrt'); $action_url = ''; if (!$is_logged_in && $requires_login) { $status = 'not_logged_in'; $status_text = __('请先登录后下载', 'aksrt'); $can_download = false; $action_label = __('登录下载', 'aksrt'); $action_url = $login_url; } elseif ($requires_credits && $download_cost > 0 && $user_credits < $download_cost && !$has_downloaded) { $status = 'insufficient_credits'; $status_text = sprintf(__('需要 %d 积分,当前余额 %d', 'aksrt'), $download_cost, $user_credits); $can_download = false; $action_label = __('获取积分', 'aksrt'); $action_url = home_url('/user/credits'); } elseif ($has_downloaded) { $status = 'owned'; $status_text = __('已下载,可再次下载', 'aksrt'); } } // Map state to icon $state_icons = [ 'available' => ['icon' => 'fa-check-circle', 'color' => 'success'], 'owned' => ['icon' => 'fa-download', 'color' => 'success'], 'not_logged_in' => ['icon' => 'fa-lock', 'color' => 'warning'], 'insufficient_credits' => ['icon' => 'fa-coins', 'color' => 'warning'], 'no_permission' => ['icon' => 'fa-ban', 'color' => 'warning'], 'pending_delivery' => ['icon' => 'fa-clock', 'color' => 'info'], ]; $state_info = $state_icons[$status] ?? $state_icons['available']; ?>
0) : ?>
()