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']); } } } } }
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; }
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; }
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); } }