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(); ?>
question)) : ?>
question); ?>
is_closed()) : ?>
is_closed()) : ?> render_poll_form($poll, $global_settings); ?> is_closed()) : ?>
render_results($poll, $show_voters); ?>
is_closed()) : ?>
get_answers(); // Randomize if enabled if ($poll->get_setting('randomize_answers', false)) { shuffle($answers); } ?>
type) { case 'single': $this->render_single_choice($poll, $answers); break; case 'multiple': $this->render_multiple_choice($poll, $answers); break; case 'rating': $this->render_rating($poll, $answers); break; case 'voting': $this->render_voting($poll, $answers); break; } ?> type, array('rating', 'voting'))) : ?>
get_setting('max_choices', 0); ?>
data-max-choices="">

get_setting('max_rating', 5); ?>
id); $up_votes = 0; $down_votes = 0; if ($results && isset($results['answers'][0])) { $up_votes = max(0, $results['answers'][0]['value']); $down_votes = abs(min(0, $results['answers'][0]['value'])); // Actually we track net, so let's just show total $up_votes = $results['total_votes']; } $answer = isset($answers[0]) ? $answers[0] : null; ?>
id); if (!$results) { return; } ?>
%
type === 'rating' && isset($results['average_rating'])) : ?>
' . esc_html($results['average_rating']) . '' ); ?>