/** * * Process the status of an individual idea with an action fired when a user votes up or down * * @param $postid int id of the post * @param $userid int id of the user who voted * */ function process_status($postid, $userid) { // get threashold $threshold = idea_factory_get_option('if_threshold', 'if_settings_main'); // bail if no user threshold set if (empty($threshold)) { return; } // get total number of votes $total = idea_factory_get_total_votes($postid); // get total number of vote ups $votes = idea_factory_get_votes($postid); // if total votes are greater than the threshold if ($total >= $threshold) { // if up votes are passing if ($votes >= $threshold) { update_post_meta($postid, '_idea_status', 'approved'); do_action('idea_factory_status', 'approved', $postid); // up votes failed } else { update_post_meta($postid, '_idea_status', 'declined'); do_action('idea_factory_status', 'declined', $postid); } // not enough votes to calculate yet } else { update_post_meta($postid, '_idea_status', 'open'); } }
/** * Show teh votes and vote form within a shortcode * @since version 1.1 */ function idea_factory_sc($atts, $content = null) { $defaults = array('hide_submit' => 'off', 'hide_voting' => 'off', 'hide_votes' => 'off'); $atts = shortcode_atts($defaults, $atts); $postid = get_the_ID(); $show_submit = 'on' !== $atts['hide_submit']; $show_voting = 'on' !== $atts['hide_voting']; $show_votes = 'on' !== $atts['hide_votes']; ob_start(); do_action('idea_factory_sc_layout_before', $postid); ?> <div class="idea-factory--wrap"><?php do_action('idea_factory_sc_layout_before_entries', $postid); if ($show_submit) { echo idea_factory_submit_header(); } ?> <section class="idea-factory--layout-main"> <?php $paged = get_query_var('paged') ? get_query_var('paged') : 1; $args = array('post_type' => 'ideas', 'meta_key' => '_idea_votes', 'orderby' => 'meta_value_num', 'paged' => $paged); $q = new WP_Query(apply_filters('idea_factory_query_args', $args)); $max = $q->max_num_pages; wp_localize_script('idea-factory-script', 'idea_factory', idea_factory_localized_args($max, $paged)); if ($q->have_posts()) { while ($q->have_posts()) { $q->the_post(); // setup some vars $id = get_the_ID(); if (is_user_logged_in()) { $has_voted = get_user_meta(get_current_user_ID(), '_idea' . $id . '_has_voted', true); } elseif ($public_can_vote) { $has_voted = idea_factory_has_public_voted($id); } else { $has_voted = false; } $total_votes = idea_factory_get_votes($id); $status = idea_factory_get_status($id); $status_class = $status ? sprintf('idea-factory--entry__%s', $status) : false; $public_can_vote = idea_factory_get_option('if_public_voting', 'if_settings_main'); ?> <section class="idea-factory--entry-wrap <?php echo sanitize_html_class($status_class); ?> <?php echo $has_voted ? 'idea-factory--hasvoted' : false; ?> "> <?php do_action('idea_factory_sc_entry_wrap_top', $postid); ?> <div class="idea-factory--controls"> <?php if (idea_factory_is_voting_active($id) && $show_voting) { echo idea_factory_vote_controls($id); } if ($total_votes && $show_votes) { ?> <div class="idea-factory--totals"> <?php if (1 == $total_votes) { printf('<span class="idea-factory--totals_label">' . apply_filters('idea_factory_vote', __('%s vote', 'idea-factory')) . '</span>', '<span class="idea-factory--totals_num">1</span>'); } elseif (!empty($total_votes)) { printf('<span class="idea-factory--totals_label">' . apply_filters('idea_factory_votes', __('%s votes', 'idea-factory')) . '</span>', '<span class="idea-factory--totals_num">' . (int) $total_votes . '</span>'); } ?> </div> <?php } echo idea_factory_vote_status($id); ?> </div> <div class="idea-factory--entry"> <?php the_title('<h2>', '</h2>'); the_content(); ?> </div> <?php do_action('idea_factory_sc_entry_wrap_bottom', $postid); ?> </section> <?php } } else { apply_filters('idea_factory_no_ideas', _e('No ideas found. Why not submit one?', 'idea-factory')); } wp_reset_query(); ?> </section> <?php do_action('idea_factory_sc_layout_after_entries', $postid); ?> </div> <?php if ($show_submit) { echo idea_factory_submit_modal(); } do_action('idea_factory_sc_layout_after', $postid); return ob_get_clean(); }
do_action('idea_factory_before_entries'); ?> <section class="idea-factory--layout-main"> <?php if (have_posts()) { while (have_posts()) { the_post(); // setup some vars $id = get_the_ID(); if (is_user_logged_in()) { $has_voted = get_user_meta(get_current_user_ID(), '_idea' . $id . '_has_voted', true); } elseif ($public_can_vote) { $has_voted = idea_factory_has_public_voted($id); } $total_votes = idea_factory_get_votes($id); $status = idea_factory_get_status($id); $status_class = $status ? sprintf('idea-factory--entry__%s', $status) : false; ?> <section class="idea-factory--entry-wrap <?php echo sanitize_html_class($status_class); ?> <?php echo $has_voted ? 'idea-factory--hasvoted' : false; ?> "> <?php do_action('idea_factory_entry_wrap_top', $id); ?>