/**
  * Retrieves contest data.
  */
 function get_data()
 {
     $orderby = '';
     $order = 'desc';
     if (isset($_GET['orderby'])) {
         $orderby = $_GET['orderby'];
     }
     if (isset($_GET['order'])) {
         $order = $_GET['order'];
     }
     $data = array();
     $data = CH_Contest::get_all($orderby, $order, $this->get_pagenum(), $this->per_page);
     $this->found_posts = CH_Contest::get_num();
     return $data;
 }
 /**
  * Wordpress widget settings.
  * @param mixed $instance
  */
 public function form($instance)
 {
     $contest_id = '';
     if (isset($instance['contest_id'])) {
         $contest_id = $instance['contest_id'];
     }
     $contests = CH_Contest::get_all();
     echo '<p>' . _e('Contest:', 'contesthopper') . '<select id="' . $this->get_field_id('contest_id') . '" name="' . $this->get_field_name('contest_id') . '" class="widefat">';
     foreach ($contests as $contest) {
         $selected = '';
         if ($contest_id == $contest->ID) {
             $selected = ' selected="selected"';
         }
         echo '<option value="' . esc_attr($contest->ID) . '"' . $selected . '>' . esc_html($contest->ch_headline) . '</option>';
     }
     echo '</select></p>';
 }
 /**
  * Table constructor with optional contest parameter.
  * @param CH_Contest $contest
  * @return CH_Table_Participants
  */
 function __construct($contest = '')
 {
     $this->per_page = 30;
     $this->contest = $contest;
     if (!is_object($contest)) {
         $this->contest = '';
     }
     if ($this->contest != '') {
         $this->current_winner_num = $this->contest->get_current_winner_num();
     }
     $this->extra_nav = array();
     $contests = CH_Contest::get_all();
     foreach ($contests as $contest) {
         $this->extra_nav[$contest->ID] = $contest->ch_headline;
     }
     parent::__construct();
 }
 /**
  * Contest autoexpiry method.
  * Called on <i>contesthopper_autoexpiry</i> hook, that was registered by <i>wp_schedule_event()</i> on plugin install.
  * Method checks for active contests that have <i>ch_autoselect_winner</i> attribute set, calls
  * contest object methods to pick the desired number of winners and sets the contest to <i>winners_picked</i> 
  * status.
  */
 function process_autoexpiry()
 {
     $contests = CH_Contest::get_all('', '', '', '', 'active');
     foreach ($contests as $contest) {
         if ($contest->is_expired()) {
             if (isset($contest->ch_autoselect_winner) && $contest->ch_autoselect_winner == '1') {
                 $winners_num = 1;
                 if (isset($contest->ch_winners_num) && is_numeric($contest->ch_winners_num) && $contest->ch_winners_num > 0) {
                     $winners_num = $contest->ch_winners_num;
                 }
                 $current_winners = $contest->get_current_winner_num();
                 $pick_num = intval($winners_num) - intval($current_winners);
                 if ($pick_num > 0) {
                     $contest->pick_winners($pick_num);
                 }
                 $contest->set_status('winners_picked');
             }
         }
     }
 }