0, 'show_results' => '', // after_vote, always, never (empty = use poll setting) 'show_voters' => '', // yes, no (empty = use poll setting) 'theme' => '', // (empty = use poll setting) 'dark_mode' => '' // auto, yes, no (empty = use poll setting) ), $atts, 'tpoll'); $poll_id = absint($atts['id']); if (!$poll_id) { return ''; } $poll = TPoll_Poll::get($poll_id); if (!$poll) { return ''; } // Check status if ($poll->status === 'draft' && !current_user_can('edit_tpoll')) { return ''; } // Enqueue assets wp_enqueue_style('tpoll-frontend'); wp_enqueue_script('tpoll-frontend'); // Get settings $global_settings = get_option('tpoll_settings', array()); $show_results = $atts['show_results'] ?: $poll->get_setting('show_results', $global_settings['show_results'] ?? 'after_vote'); $show_voters = $atts['show_voters'] !== '' ? ($atts['show_voters'] === 'yes') : $poll->get_setting('show_voters_count', $global_settings['show_voters_count'] ?? true); $theme = $atts['theme'] ?: $poll->get_setting('theme', $global_settings['theme'] ?? 'default'); $dark_mode = $atts['dark_mode'] ?: $poll->get_setting('dark_mode', $global_settings['dark_mode'] ?? 'auto'); // Check if user has voted $has_voted = TPoll_Vote::has_voted($poll_id); // Determine what to show $show_form = true; $show_results_now = false; if ($poll->is_closed()) { $show_form = false; $show_results_now = true; } elseif ($has_voted) { $show_form = false; $show_results_now = ($show_results !== 'never'); } elseif ($show_results === 'always') { $show_results_now = true; } // Build classes $classes = array( 'tpoll-poll', 'tpoll-type-' . esc_attr($poll->type), 'tpoll-theme-' . esc_attr($theme) ); if ($dark_mode === 'yes') { $classes[] = 'tpoll-dark'; } elseif ($dark_mode === 'auto') { $classes[] = 'tpoll-dark-auto'; } // Start output buffer ob_start(); ?>