Пример #1
0
 public function yop_poll_do_scheduler()
 {
     require_once YOP_POLL_MODELS . 'yop_poll_model.php';
     $yop_polls = Yop_Poll_Model::get_polls_for_view(array('return_fields' => 'ID'));
     if (count($yop_polls) > 0) {
         foreach ($yop_polls as $yop_poll_id) {
             $yop_poll_options = Yop_Poll_Model::get_poll_options_by_id($yop_poll_id['ID']);
             if ('yes' == $yop_poll_options['schedule_reset_poll_stats']) {
                 $reset_time = new DateTime($yop_poll_options['schedule_reset_poll_date']);
                 $now_date = new DateTime(date("Y-m-d H:i:s", current_time('timestamp')));
                 if ($reset_time->format("Y-m-d H") == $now_date->format("Y-m-d H")) {
                     $unit_multiplier = 0;
                     switch (strtolower(trim($yop_poll_options['schedule_reset_poll_recurring_unit']))) {
                         case 'hour':
                             $unit_multiplier = 60 * 60;
                             break;
                         case 'day':
                             $unit_multiplier = 60 * 60 * 24;
                             break;
                     }
                     $next_reset_date = strtotime($yop_poll_options['schedule_reset_poll_date']) + intval($yop_poll_options['schedule_reset_poll_recurring_value']) * $unit_multiplier;
                     if ($next_reset_date <= current_time('timestamp')) {
                         $next_reset_date = strtotime(substr(current_time('mysql'), 0, 11) . substr(date('Y-m-d H:i:s', $yop_poll_options['schedule_reset_poll_date']), 11, 2) . ':00:00') + intval($yop_poll_options['schedule_reset_poll_recurring_value']) * $unit_multiplier;
                     }
                     $poll_options = get_yop_poll_meta($yop_poll_id['ID'], 'options', true);
                     $poll_options['schedule_reset_poll_date'] = date('d-m-Y H:i:s', $next_reset_date);
                     update_yop_poll_meta($yop_poll_id['ID'], 'options', $poll_options);
                     //Call reset stats function
                     YOP_POLL_Abstract_Model::reset_poll_stats_from_database($yop_poll_id['ID']);
                 }
             }
         }
     }
 }
Пример #2
0
 protected function user_have_votes_to_vote($voter, $cookie)
 {
     $poll_options = get_yop_poll_meta($voter['poll_id'], "options", true);
     ///yop_poll_dump($cookie);
     if ($voter['user_type'] == "anonymous") {
         if ('yes' == $poll_options['limit_number_of_votes_per_user']) {
             if ($this->get_votes_number_from_supercookie($cookie) >= $poll_options['number_of_votes_per_user']) {
                 return false;
             }
         }
     } else {
         if ($voter['user_id'] > 0) {
             if ('yes' == $poll_options['limit_number_of_votes_per_user']) {
                 if ($this->get_voter_number_of_votes($voter) >= $poll_options['number_of_votes_per_user']) {
                     return false;
                 }
                 if ($this->get_votes_number_from_supercookie($cookie) >= $poll_options['number_of_votes_per_user'] && in_array("cookie", $this->blocking_voters)) {
                     return false;
                 }
             }
         } else {
             return false;
         }
     }
     return true;
 }
 function get_option($key)
 {
     if (in_array($key, $this->default_fields)) {
         return false;
     }
     if (isset($this->options[$key])) {
         return $this->options[$key];
     }
     $question_options = get_yop_poll_question_meta($this->id, 'options', true);
     if (isset($question_options[$key])) {
         return $question_options[$key];
     }
     $poll_options = get_yop_poll_meta($this->poll_id, 'options', true);
     if (isset($poll_options[$key])) {
         return $poll_options[$key];
     }
     $default_options = get_option('yop_poll_options');
     if (isset($default_options[$key])) {
         return $default_options[$key];
     }
     return false;
 }
Пример #4
0
 public static function get_poll_options_by_id($poll_id = 0)
 {
     $poll_options = get_yop_poll_meta($poll_id, 'options', true);
     $default_options = get_option('yop_poll_options', false);
     if (is_array($default_options)) {
         if (count($default_options) > 0) {
             foreach ($default_options as $option_name => $option_value) {
                 if (!isset($poll_options[$option_name])) {
                     $poll_options[$option_name] = $option_value;
                 }
             }
         }
     }
     return $poll_options;
 }
Пример #5
0
 private static function clone_poll_from_db($poll_id)
 {
     global $wpdb, $current_user;
     $poll_details = self::get_poll_from_database_by_id($poll_id);
     $clone_number = self::count_poll_from_database_like_name($poll_details['poll_name'] . ' - clone');
     $meta = get_yop_poll_meta($poll_id, 'options', true);
     $current_poll = new YOP_POLL_Poll_Model($poll_id);
     $current_poll->poll_total_votes = 0;
     $poll_clone = $current_poll;
     $poll_clone->ID = 0;
     if ($poll_details) {
         $poll = array('title' => $poll_details['poll_title'] . ' - clone' . (0 == $clone_number ? '' : $clone_number), 'start_date' => $poll_details['poll_start_date'], 'end_date' => $poll_details['poll_end_date'], 'status' => $poll_details['poll_status'], 'poll_date' => $poll_details['poll_date'], 'poll_total_votes' => 0, 'author' => $poll_details['poll_author'], 'name' => $poll_details['poll_name'] . ' - clone' . (0 == $clone_number ? '' : $clone_number), 'type' => $poll_details['poll_type'], 'modified' => $poll_details['poll_modified']);
         $poll_clone->poll_name = $poll['name'];
         $poll_clone->poll_title = $poll['title'];
         foreach ($poll_clone->questions as $question) {
             $question->ID = 0;
             foreach ($question->answers as $answer) {
                 $answer->ID = 0;
                 $answer->votes = 0;
             }
             if (isset($question->custom_fields)) {
                 foreach ($question->custom_fields as $custom) {
                     $custom->ID = 0;
                     $custom->poll_id = 0;
                     $custom->question_id = 0;
                 }
             }
         }
         $is_clone = true;
         $id_poll = $poll_clone->save($is_clone);
         self::save_poll_order($poll_clone, $poll_clone->poll_archive_order);
         update_yop_poll_meta($id_poll, 'options', $meta);
     }
 }