403Webshell
Server IP : 195.130.67.5  /  Your IP : 216.73.217.154
Web Server : Microsoft-IIS/10.0
System : Windows NT WEBSERVER1 10.0 build 17763 (Windows Server 2016) i586
User : IUSR ( 0)
PHP Version : 7.4.19
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /Old Sites/repository/wp-content/plugins/yop-poll/admin/inc/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /Old Sites/repository/wp-content/plugins/yop-poll/admin/inc/ClassYopPollImporter4x.php
<?php

class ClassYopPollImporter4x {

	private static $initial_limit           = 500;
	private static $ajax_limit              = 100;
	private static $unprocessed_polls       = 0;
	private static $processed_polls         = 0;
	private static $unprocessed_bans        = 0;
	private static $processed_bans          = 0;
	private static $processed_votes         = 0;
	private static $unprocessed_logs        = 0;
	private static $checked_existence_polls = false;
	private static $checked_existence_bans  = false;
	private static $checked_existence_logs  = false;
	private static $polls_table_exists      = false;
	private static $bans_table_exists       = false;
	private static $logs_table_exists       = false;
	private static $polls_questions         = []; // array of arrays => [$poll_id => $question_id]
	private static $maxElementID            = 0;
	private static $enableGdpr              = 'no';
	private static $gdprSolution            = 'consent';

	public function __construct( $initial_limit, $ajax_limit ) {
		if ( $initial_limit ) {
			self::$initial_limit = $initial_limit;
		}
		if ( $ajax_limit ) {
			self::$ajax_limit    = $ajax_limit;
		}
		add_action( 'wp_ajax_yop_ajax_import', array( &$this, 'yop_ajax_import' ) );
	}

	public function initialise() {
		self::import_polls( self::$initial_limit );
	}

	private static function set_gdpr( $enableGdpr, $gdprSolution ) {
		self::$enableGdpr = $enableGdpr;
		self::$gdprSolution = $gdprSolution;
	}

	private static function make_ip_gdpr_compliant( $ipaddress ) {
		$compliant_ipaddress = '';
		if ( 'yes' === self::$enableGdpr ) {
			switch( self::$gdprSolution ) {
				case 'consent': {
					$compliant_ipaddress = $ipaddress;
					break;
				}
				case 'anonymize': {
					$compliant_ipaddress = Helper::anonymize_ip( $ipaddress );
					break;
				}
				case 'nostore': {
					$compliant_ipaddress = '';
					break;
				}
				default: {
					$compliant_ipaddress = $ipaddress;
					break;
				}
			}
		} else {
			$compliant_ipaddress = $ipaddress;
		}
		return $compliant_ipaddress;
	}

	private static function make_cookie_gdpr_compliant( $cookie ) {
		$compliant_cookie = '';
		if ( 'yes' === self::$enableGdpr ) {
			switch( self::$gdprSolution ) {
				case 'consent': {
					$compliant_cookie = $cookie;
					break;
				}
				case 'anonymize': {
					$compliant_cookie = '';
					break;
				}
				case 'nostore': {
					$compliant_cookie = '';
					break;
				}
				default: {
					$compliant_cookie = $cookie;
					break;
				}
			}
		} else {
			$compliant_cookie = $cookie;
		}
		return $compliant_cookie;
	}

	private static function import_polls( $query_limit, $skip_table_check = false ) {
		global $wpdb;
		$polls_table_name                = $GLOBALS['wpdb']->prefix . 'yop_polls';
		$polls_meta_table_name           = $GLOBALS['wpdb']->prefix . 'yop_pollmeta';
		$polls_answers_table_name        = $GLOBALS['wpdb']->prefix . 'yop_poll_answers';
		$polls_answers_meta_table_name   = $GLOBALS['wpdb']->prefix . 'yop_poll_answermeta';
		$polls_customs_table   = $GLOBALS['wpdb']->prefix . 'yop_poll_custom_fields';
		if ( $skip_table_check ) {
			self::$checked_existence_polls = true;
			self::$polls_table_exists      = true;
		}
		if ( !self::$checked_existence_polls ) {
			if ( self::check_if_table_exists( $polls_table_name ) && self::check_if_table_exists( $polls_meta_table_name ) ) {
				if ( ! self::check_if_column_exists( $polls_table_name, 'processed' ) ) {
					$wpdb->query( "ALTER TABLE `{$polls_table_name}` ADD processed BOOLEAN DEFAULT FALSE " );
				}
				self::$checked_existence_polls = true;
				self::$polls_table_exists      = true;
			}
		}
		if ( self::$checked_existence_polls && self::$polls_table_exists ) {
			self::$unprocessed_polls = $wpdb->get_var("select count(id) from `{$polls_table_name}` where processed = false");
			$polls                   = $wpdb->get_results( "select `id`, `name`, `question`, `poll_author`, `start_date`, `end_date`, `status`, `last_modified`,
  `total_votes`, `total_answers`, `date_added`,  `meta_key`, `meta_value` from `{$polls_table_name}` left join
`{$polls_meta_table_name}` on `{$polls_table_name}`.`id` = `{$polls_meta_table_name}`.`yop_poll_id` where `processed` = false limit {$query_limit}" );

			if ( count( $polls ) > 0 ) {
				$questionId = 1;
				$maxID              = $wpdb->get_var( "select max(`id`) from `{$polls_table_name}`" );
				self::$maxElementID = $maxID + 1;
				foreach ( $polls as $poll ) {
					if ( '' !== $poll->meta_value && null !== $poll->meta_value ) {
						$unserialized_meta = unserialize( $poll->meta_value );
					} else {
						$unserialized_meta = [];
					}

					$poll_style        = self::create_css_from_template( (isset ($unserialized_meta['template']) && '' !== $unserialized_meta['template']) ? $unserialized_meta['template'] : 1 );
					$vote_perms        = [];
					if ( isset( $unserialized_meta['vote_permisions_wordpress'] ) ) {
						$vote_perms[] = 'wordpress';
					}
					if ( isset( $unserialized_meta['vote_permisions_anonymous'] ) ) {
						$vote_perms[] = 'guest';
					}
					if ( 0 == count( $vote_perms ) ) {
						$vote_perms[] = 'wordpress';
					}
					$results_moment = [];
					if ( isset( $unserialized_meta['view_results'] ) ) {
						if ( 'after' === $unserialized_meta['view_results'] ) {
							$results_moment[] = 'after-vote';
						} elseif ( 'before' === $unserialized_meta['view_results'] ) {
							$results_moment[] = 'before-vote';
						} elseif ( 'after-poll-end-date' == $unserialized_meta['view_results'] ) {
							$results_moment[] = 'after-end-date';
						} elseif ( 'custom-date' == $unserialized_meta['view_results'] ) {
							$results_moment[] = 'custom-date';
						} else {
							$results_moment[] = $unserialized_meta['view_results'];
						}
					}
					if ( 0 == count( $results_moment ) ) {
						$results_moment[] = 'after-vote';
					}
					$show_results_to = [];
					if ( isset( $unserialized_meta['view_results_permissions'] ) ) {
						if ( 'registered-only' === $unserialized_meta['view_results_permissions'] ) {
							$show_results_to[] = 'registered';
						} elseif ( 'guest-only' === $unserialized_meta['view_results_permissions'] ) {
							$show_results_to[] = 'guest';
						} elseif ( 'guest-only' === $unserialized_meta['view_results_permissions'] ) {
							$show_results_to[] = 'guest';
							$show_results_to[] = 'registered';
						}
					}
					if ( 0 == count( $show_results_to ) ) {
						$show_results_to[] = 'guest';
						$show_results_to[] = 'registered';
					}
					$sorting_results = 'as-defined';
					if ( isset( $unserialized_meta['sorting_results'] ) ) {
						switch ( $unserialized_meta['sorting_results'] ) {
							case 'exact':
								break;
							case 'alphabetical':
								$sorting_results = 'alphabetical';
								break;
							case 'random':
								break;
							case 'votes':
								$sorting_results = 'number-of-votes';
								break;
						}
					}

					$newBlVoters = [];
					if ( isset( $unserialized_meta['blocking_voters'] ) ) {
						$blocking_voters = 'no-block';
						switch ( $unserialized_meta['blocking_voters'] ) {
							case 'dont-block':
								break;
							case 'cookie':
								$blocking_voters = 'by-cookie';
								break;
							case 'ip':
								$blocking_voters = 'by-ip';
								break;
							case 'username':
								$blocking_voters = 'by-user-id';
								break;
							case 'cookie-ip':
								$blocking_voters = 'ip';
							default:
								break;
						}
						$newBlVoters[] = $blocking_voters;
					}
					$blockForPeriod  = 'hours';
					if ( isset( $unserialized_meta['blocking_voters_interval_unit'] ) ) {
						$blockForPeriod = $unserialized_meta['blocking_voters_interval_unit'];
					}
					$blockForValue = 1;
					if ( isset( $unserialized_meta['blocking_voters_interval_value'] ) ) {
						$blockForValue = $unserialized_meta['blocking_voters_interval_value'];
					}

                    if( isset( $unserialized_meta['view_results_type'] ) ) {
                        switch( $unserialized_meta['view_results_type'] ) {
                            case 'votes-number': {
                                $resultsDetails = ['votes-number'];
                                break;
                            }
                            case 'percentages': {
                                $resultsDetails = ['percentages'];
                                break;
                            }
                            case 'votes-number-and-percentages' : {
                                $resultsDetails = ['votes-number', 'percentages'];
                                break;
                            }
                            default: {
                                $resultsDetails = ['votes-number'];
                                break;
                            }
                        }
                    } else {
                        $resultsDetails = ['percentages'];
                    }
					if ( isset( $unserialized_meta['poll_start_date'] ) && ( '' !== $unserialized_meta['poll_start_date'] ) ) {
							$poll_start_date_option = 'custom';
                            $poll_start_date = $unserialized_meta['poll_start_date'];
                    } else {
						$poll_start_date_option = 'never';
						$poll_start_date = '';
                    }
					if ( isset( $unserialized_meta['poll_end_date'] ) && ( '' !== $unserialized_meta['poll_end_date'] ) ) {
							$poll_end_date_option = 'custom';
                            $poll_end_date = $unserialized_meta['poll_end_date'];
                    } else {
						$poll_end_date_option = 'never';
						$poll_end_date = '';
                    }
					$pollArray         = [
						'ID'                     => $poll->id,
						'name'                   => $poll->name,
						'poll_author'            => $poll->poll_author,
						'status'                 => 'published',
						'stype'                  => 'poll',
						'total_submits'          => $poll->total_votes,
						'total_submited_answers' => $poll->total_votes,
						'design'                 => [
							'template'     => 1,
							'templateBase' => 'basic',
							'style'        => $poll_style
						],
						'options'                => [
							'poll'    => [
								'voteButtonLabel'             => isset( $unserialized_meta['vote_button_label'] ) ? $unserialized_meta['vote_button_label'] : 'Vote',
								'showResultsLink'             => 'no',
								'resultsLabelText'            => 'Results',
								'showTotalVotes'              => isset( $unserialized_meta['view_total_votes'] ) ? $unserialized_meta['view_total_votes'] : 'yes',
								'showTotalAnswers'            => isset( $unserialized_meta['view_total_answers'] ) ? $unserialized_meta['view_total_answers'] : 'yes',
								'startDateOption'             => $poll_start_date_option,
								'startDateCustom'             => $poll_start_date,
								'endDateOption'               => $poll_end_date_option,
								'endDateCustom'               => $poll_end_date,
								'redirectAfterVote'           => isset( $unserialized_meta['redirect_after_vote'] ) ? $unserialized_meta['redirect_after_vote'] : 'no',
								'redirectUrl'                 => isset( $unserialized_meta['redirect_after_vote_url'] ) ? $unserialized_meta['redirect_after_vote_url'] : '',
								'resetPollStatsAutomatically' => isset( $unserialized_meta['schedule_reset_poll_stats'] )? $unserialized_meta['schedule_reset_poll_stats'] : 'no',
								'resetPollStatsOn'            => isset( $unserialized_meta['schedule_reset_poll_date'] ) ? date( 'Y-m-d H:i:s', $unserialized_meta['schedule_reset_poll_date'] ) : '9999-12-31 23:59:59',
								'resetPollStatsEvery'         => isset( $unserialized_meta['schedule_reset_poll_recurring_value'] ) ? $unserialized_meta['schedule_reset_poll_recurring_value'] : 9999,
								'resetPollStatsEveryPeriod'   => isset( $unserialized_meta['schedule_reset_poll_recurring_unit'] ) ? $unserialized_meta['schedule_reset_poll_recurring_unit']. 's' : 'days',
								'autoGeneratePollPage'        => isset ( $unserialized_meta['auto_generate_poll_page'] ) ? $unserialized_meta['auto_generate_poll_page'] : 'no',
								'pageId'                      => '',
								'pageLink'                    => '',
								'useCaptcha'                  => isset( $unserialized_meta['use_captcha'] ) ? $unserialized_meta['use_captcha'] : 'no',
								'sendEmailNotifications'      => isset( $unserialized_meta['send_email_notifications'] ) ? $unserialized_meta['send_email_notifications'] : 'no',
								'emailNotificationsFromName'  =>
									isset( $unserialized_meta['email_notifications_from_name'] ) ? $unserialized_meta['email_notifications_from_name'] : 'Voting Alerts',
								'emailNotificationsFromEmail' =>
									isset( $unserialized_meta['email_notifications_from_email'] ) ? $unserialized_meta['email_notifications_from_email'] : 'noreply@???',
								'emailNotificationsSubject'   =>
									isset( $unserialized_meta['email_notifications_subject'] ) ? $unserialized_meta['email_notifications_subject'] : 'New Vote',
								'emailNotificationsMessage'   =>
									isset( $unserialized_meta['email_notifications_body'] ) ? $unserialized_meta['email_notifications_body'] : 'New Vote',
								'enableGdpr' => 'no',
								'gdprSolution' => 'consent',
								'gdprConsentText' => ''
							],
							'access'  => [
								'votePermissions'     => $vote_perms,
								'blockVoters'         => $newBlVoters,
								'blockForValue'       => $blockForValue,
								'blockForPeriod'      => $blockForPeriod,
								'limitVotesPerUser'   =>
									isset( $unserialized_meta['limit_number_of_votes_per_user'] ) ? $unserialized_meta['limit_number_of_votes_per_user'] : 'no',
								'votesPerUserAllowed' => isset( $unserialized_meta['number_of_votes_per_user'] ) ? $unserialized_meta['number_of_votes_per_user'] : 3
							],
							'results' => [
								'showResultsMoment' => $results_moment,
								'customDateResults' => isset( $unserialized_meta['view_results_start_date'] ) ? $unserialized_meta['view_results_start_date'] : '',
								'showResultsTo'     => $show_results_to,
								'backToVoteOption'  => isset( $unserialized_meta['view_back_to_vote_link'] ) ? $unserialized_meta['view_back_to_vote_link'] : 'no',
								'backToVoteCaption' => isset( $unserialized_meta['view_back_to_vote_link_label'] ) ? $unserialized_meta['view_back_to_vote_link_label'] : 'Back to vote',
								'sortResults'       => $sorting_results,
								'sortResultsRule'   => isset( $unserialized_meta['sorting_results_direction'] ) ? $unserialized_meta['sorting_results_direction'] : 'asc',
								'displayResultsAs'  => isset( $unserialized_meta['show_results_in'] ) ? $unserialized_meta['show_results_in'] : 'bar',
                                'resultsDetails'    => $resultsDetails
							]
						]
					];
					$pollElementsArray = [];
					$pollAnswers       = $wpdb->get_results( "select * from `{$polls_answers_table_name}` left join `{$polls_answers_meta_table_name}` on
			`{$polls_answers_table_name}`.`id` = `{$polls_answers_meta_table_name}`.`yop_poll_answer_id` where `poll_id` = {$poll->id}" );
					$pollCustoms       = $wpdb->get_results( "select * from `{$polls_customs_table}` where `{$polls_customs_table}`.`poll_id` = {$poll->id}" );
					$x                 = 1;
					$pollAnswersArray  = [];
					foreach ( $pollAnswers as $pA ) {
						if ( '' !== $pA->meta_value && !is_null( $pA->meta_value ) ) {
							$unserialized_a_meta = unserialize( $pA->meta_value );
						} else {
							$unserialized_a_meta = [];
						}
						if ( 'other' !== $pA->type ) {
							$pQAA = [
								'ID'             => $pA->id,
								'question_order' => $x,
								'type'           => 'text',
								'is_other'       => 'other' === $pA->type ? true : false,
								'text'           => stripslashes( $pA->answer ),
								'options'        => [
									'makeDefault'  => isset( $unserialized_a_meta['is_default_answer'] ) ? $unserialized_a_meta['is_default_answer'] : 'no',
									'makeLink'     => 'no',
									'link'         => '',
									'resultsColor' => isset ( $unserialized_a_meta['bar_background'] ) ? $unserialized_a_meta['bar_background'] : '#000'
								]
							];
							$pollAnswersArray[] = $pQAA;
							$x ++;
						}
					}
					$answers_display = 'vertical';
					if ( isset( $unserialized_meta['display_answers'] ) ) {
						if ( 'tabulated' === $unserialized_meta['display_answers'] ) {
							$answers_display = 'columns';
						} elseif( 'orizontal' === $unserialized_meta['display_answers'] ) {
							$answers_display = 'horizontal';
						}
						else {
							$answers_display = $unserialized_meta['display_answers'];
						}
					}
					$pollElementsArray[] = [
						'ID'         => $questionId,
						'type'       => 'text-question',
						'text'       => stripslashes( $poll->question ),
						'poll_order' => 1,
						'answers'    => $pollAnswersArray,
						'options'    => [
							'allowOtherAnswers'            => isset( $unserialized_meta['allow_other_answers'] ) ? $unserialized_meta['allow_other_answers'] : 'yes',
							'otherAnswersLabel'            => isset( $unserialized_meta['other_answers_label'] ) ? $unserialized_meta['other_answers_label'] : 'Other',
							'addOtherAnswers'              =>
								isset( $unserialized_meta['add_other_answers_to_default_answers'] ) ? $unserialized_meta['add_other_answers_to_default_answers'] : 'no',
							'displayOtherAnswersInResults' =>
								isset( $unserialized_meta['display_other_answers_values'] ) ? $unserialized_meta['display_other_answers_values'] : 'no',
							'allowMultipleAnswers'         =>
								isset( $unserialized_meta['allow_multiple_answers'] ) ? $unserialized_meta['allow_multiple_answers'] : 'no',
							'multipleAnswersMinim'         =>
								isset( $unserialized_meta['allow_multiple_answers_min_number'] ) ? $unserialized_meta['allow_multiple_answers_min_number'] : 1,
							'multipleAnswersMaxim'         => isset( $unserialized_meta['allow_multiple_answers_number'] ) ? $unserialized_meta['allow_multiple_answers_number'] : 3,
							'answersDisplay'               => $answers_display,
							'answersColumns'               =>
								isset( $unserialized_meta['display_answers_tabulated_cols'] ) ? $unserialized_meta['display_answers_tabulated_cols'] : 2
						]
					];
					foreach ( $pollCustoms as $pC ) {
						$pollElementsArray[] = [
							'ID'             => self::$maxElementID,
							'poll_order' => 1,
							'type'    => 'custom-field',
							'text'    => stripslashes( $pC->custom_field ),
							'options' => [
								'makeRequired' => 'yes' === $pC->required ? 'yes' : 'no',
                                'old_id'       => $pC->id
							]
						];
						self::$maxElementID++;
					}

					$pollArray['elements'] = $pollElementsArray;
					$responseArray         = YOP_Poll_Polls::add( json_decode( json_encode( $pollArray ) ) );
					if ( '' !== $responseArray['poll_id'] ) {
						$result = $wpdb->update( $polls_table_name, array( 'processed' => true ), array( 'id' => $poll->id ) );
						self::$processed_polls += $result;
					}
					$questionId++;
				}
			}
		}
	}

	private static function import_bans( $skip_table_check = false ) {
		global $wpdb;
		$polls_bans_table = $GLOBALS['wpdb']->prefix . 'yop_poll_bans';
		$values           = [];
		$current_user = wp_get_current_user();
		if ( $skip_table_check ) {
			self::$checked_existence_bans = true;
			self::$bans_table_exists      = true;
		}
		if ( !self::$checked_existence_bans ) {
			if ( self::check_if_table_exists( $polls_bans_table ) ) {
				if ( ! self::check_if_column_exists( $polls_bans_table, 'processed' ) ) {
					$wpdb->query( "ALTER TABLE `{$polls_bans_table}` ADD processed BOOLEAN DEFAULT FALSE " );
				}
				self::$checked_existence_bans = true;
				self::$bans_table_exists      = true;
			}
		}

		if ( self::$checked_existence_bans && self::$bans_table_exists ) {
			self::$unprocessed_bans = $wpdb->get_var( "select count(ID) from `{$polls_bans_table}` where `processed` = false" );
			$bans                   = $wpdb->get_results( "select * from `{$polls_bans_table}` LIMIT ". self::$ajax_limit );
			$bansIds                = [];
			if ( count( $bans ) > 0 ) {
				foreach ( $bans as $ban ) {
					$values[]  = $wpdb->prepare( "(%d, %d, %s, %s, %s)", $current_user->ID, $ban->poll_id, $ban->type, $ban->value, current_time( 'mysql' ) );
					$bansIds[] = $ban->id;
				}
				$query = "INSERT INTO `{$GLOBALS['wpdb']->yop_poll_bans}` (`author`, `poll_id`, `b_by`, `b_value`, `added_date`) VALUES ";
				if ( count( $values ) > 0 ) {
					$query  .= implode( ",\n", $values );
					$result  = $wpdb->query( $query );
					if ( ! $result ) {
						$last_error = $wpdb->last_error;
						return [ 'response_code' => 1, 'message' => __( $last_error, 'yop-poll' ) ];
					} else {
						$res = $wpdb->query("update {$polls_bans_table} set `processed` = true where `ID` in (".implode(',', $bansIds).")");
						self::$processed_bans += $res;
						if ( self::$processed_bans == self::$unprocessed_bans ) {
							return [ 'response_code' => - 1, 'message' => __( 'Processed ' . self::$processed_bans . ' out of '. self::$unprocessed_bans. ' records on table bans.', 'yop-poll' ) ];
						} else {
							return [ 'response_code' => 1, 'message' => __( 'Processed '. self::$processed_bans . ' out of '. self::$unprocessed_bans .' remaining records on table bans.', 'yop-poll' ) ];
						}
					}
				}
			} else {
				return [ 'response_code' => - 1, 'message' => __( 'No bans to process.', 'yop-poll' ) ];
			}
		} else {
			return [ 'response_code' => - 1, 'message' => __( 'No bans table, skipping.', 'yop-poll' ) ];
		}
	}

	private static function import_votes( $skip_table_check = false ) {
		global $wpdb;
		$polls_logs_table_name            = $GLOBALS['wpdb']->prefix . 'yop_poll_logs';
		$polls_results_customs_table_name = $GLOBALS['wpdb']->prefix . 'yop_poll_votes_custom_fields';
		$polls_answers_table_name         = $GLOBALS['wpdb']->prefix . 'yop_poll_answers';
		$current_user                     = wp_get_current_user();
		if( $skip_table_check ) {
			self::$checked_existence_logs = true;
			self::$logs_table_exists      = true;
		}
		if ( !self::$checked_existence_logs ) {
			if ( self::check_if_table_exists( $polls_logs_table_name ) ) {
				if ( ! self::check_if_column_exists( $polls_logs_table_name, 'processed' ) ) {
					$wpdb->query( "ALTER TABLE `{$polls_logs_table_name}` ADD processed BOOLEAN DEFAULT FALSE " );
				}
				self::$checked_existence_logs = true;
				self::$logs_table_exists      = true;
			}
		}

		if ( self::$checked_existence_logs && self::$logs_table_exists ) {
			self::$unprocessed_logs = $wpdb->get_var("select count(distinct `vote_id`) from `{$polls_logs_table_name}` where `processed` = false");
			$logs                   = $wpdb->get_results("select distinct `vote_id` from `{$polls_logs_table_name}` where `processed` = false limit " .self::$ajax_limit );
			if ( count($logs) > 0 ) {
				$votesArray = [];
				$logsArray = [];
				$resultsIds = [];
				foreach ( $logs as $log ) {
				    $rquery = "SELECT `{$polls_logs_table_name}`.`id`, `{$polls_logs_table_name}`.`poll_id`, `{$polls_logs_table_name}`.`vote_id`,  `{$polls_logs_table_name}`.`answer_id`, `{$polls_logs_table_name}`.`ip`, `{$polls_logs_table_name}`.`user_id`, `{$polls_logs_table_name}`.`user_type`,`other_answer_value`, `{$polls_logs_table_name}`.`vote_date` FROM  `{$polls_logs_table_name}`  WHERE `{$polls_logs_table_name}`.`vote_id` = %s ";
					$results = $wpdb->get_results( $wpdb->prepare( $rquery, $log->vote_id ) );
					foreach ( $results as $result ) {
                        $customs_query = "select * from `{$polls_results_customs_table_name}` where `vote_id` = %s";
                        $customs = $wpdb->get_results( $wpdb->prepare( $customs_query, array( $result->vote_id ) ) );
                        $countC = count( $customs );
                        $voteData   = ['elements' => [], 'user' => [] ];
                        $logData    = ['elements' => [], 'user' => [] ];
						$resultsIds[]   = $result->id;
						$answerType = $wpdb->get_var( "SELECT `type` FROM `{$polls_answers_table_name}` where `id` = '$result->answer_id'" );
						$a_data         = [];
						if ( 'other' === $answerType ) {
							$a_data[]       = [
								'id'   => 0,
								'data' => $result->other_answer_value
							];
						} else {
							$a_data[]       = [
								'id'   => $result->answer_id,
								'data' => true
							];
						}

                        $wpdb->query( $wpdb->prepare("update `{$GLOBALS['wpdb']->yop_poll_subelements}` set `total_submits` = `total_submits` + 1 where `id` = %d", array( $result->answer_id ) ) );
						#get the question
						$question_id    = $wpdb->get_var( "select `id` from `{$GLOBALS['wpdb']->yop_poll_elements}` where `poll_id` = '{$result->poll_id}' and `etype` = 'text-question' limit 1" );
						$new_customs = $wpdb->get_results( "SELECT * FROM `{$GLOBALS['wpdb']->yop_poll_elements}` WHERE `meta_data` LIKE '%old_id%'" );
                        $voteData['elements'][] = [
							'id'   => $question_id,
							'type' => 'question',
							'data' => $a_data
						];
                        $logData['elements'][] = [
                            'id'   => $question_id,
                            'type' => 'question',
                            'data' => $a_data
                        ];
						if ( $countC > 0 ) {
						    foreach( $customs as $cust ) {
						        $cID = null;
                                foreach( $new_customs as $nc ) {
                                    $udata = unserialize( $nc->meta_data );
                                    if( ( int )$udata['old_id'] == ( int )$cust->custom_field_id ) {
                                        $cID = $nc->id;
                                    }
                                }
                                $voteData['elements'][] = [
                                    'id'   => $cID,
                                    'type' => 'custom-field',
                                    'data' => stripslashes( [$cust->custom_field_value] )
                                ];
                                $logData['elements'][] = [
                                    'id'   => $cID,
                                    'type' => 'custom-field',
                                    'data' => stripslashes( [$cust->custom_field_value] )
                                ];
                            }

						}
						//array_push( $voteData['elements'], $q_data );
						//array_push( $logData['elements'], $q_data );

						$voteData['user'] = [
							'first_name' => '',
							'last_name'  => ''
						];
						$data             = array(
							'poll_id'           => $result->poll_id,
                            'poll_author'       => $current_user->ID,
							'user_id'           => $result->user_id,
							'user_email'        => '',
							'user_type'         => 'default' === $result->user_type ? 'anonymous' : $result->user_type,
							'ipaddress'         => self::make_ip_gdpr_compliant( $result->ip ),
							'tracking_id'       => '',
							'voter_id'          => self::make_cookie_gdpr_compliant( $result->vote_id ),
							'voter_fingerprint' => '',
							'vote_data'         => serialize( $voteData ),
							'status'            => 'active',
							'added_date'        => $result->vote_date
						);
						$votesArray[]       = $wpdb->prepare( "(%d, %d, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                            $data['poll_id'],
                            $data['user_id'],
                            $data['user_email'],
                            $data['user_type'],
                            $data['ipaddress'],
                            $data['tracking_id'],
                            $data['voter_id'],
                            $data['voter_fingerprint'],
							$data['vote_data'],
                            $data['status'],
                            $data['added_date']
                        );

						$logData['user'] = [
							'first_name' => '',
							'last_name'  => ''
						];
						$vote_message    = ['Success'];
						$ldata            = array(
							'poll_id'           => $result->poll_id,
							'poll_author'       => $current_user->ID,
							'user_id'           => $result->user_id,
							'user_email'        => '',
							'user_type'         => 'default' === $result->user_type ? 'anonymous' : $result->user_type,
							'ipaddress'         => self::make_ip_gdpr_compliant( $result->ip ),
							'tracking_id'       => '',
							'voter_id'          => self::make_cookie_gdpr_compliant( $result->vote_id ),
							'voter_fingerprint' => '',
							'vote_data'         => serialize( $logData ),
							'vote_message'      => serialize( $vote_message ),
							'added_date'        => $result->vote_date
						);
						$logsArray[]       = $wpdb->prepare( "(%d, %d, %d, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                            $ldata['poll_id'],
                            $ldata['poll_author'],
                            $ldata['user_id'],
                            $ldata['user_email'],
							$ldata['user_type'],
                            $ldata['ipaddress'],
                            $ldata['tracking_id'],
                            $ldata['voter_id'],
                            $ldata['voter_fingerprint'],
                            $ldata['vote_data'],
                            $ldata['vote_message'],
                            $ldata['added_date']
                        );
					}
				}
				$query         = "INSERT INTO `{$GLOBALS['wpdb']->yop_poll_votes}` (`poll_id`, `user_id`, `user_email`, `user_type`, `ipaddress`, `tracking_id`, `voter_id`, `voter_fingerprint`, `vote_data`, `status`, `added_date`) VALUES ";

				$logs_query    = "INSERT INTO `{$GLOBALS['wpdb']->yop_poll_logs}` (`poll_id`, `poll_author`, `user_id`, `user_email`, `user_type`, `ipaddress`, `tracking_id`, `voter_id`, `voter_fingerprint`, `vote_data`, `vote_message`, `added_date`) VALUES ";
				if ( count( $votesArray ) > 0 ) {
					$query      .= implode( ",\n", $votesArray );
					$logs_query .= implode( ",\n", $logsArray );
					$response    = $wpdb->query( $query );
					$responseLog = $wpdb->query( $logs_query );
					if ( $response && $responseLog ) {
						$result = $wpdb->query( "update `{$polls_logs_table_name}` set `processed` = true where id in (" . implode( ',', $resultsIds ) . ")" );
						self::$processed_votes += $result;
						if ( self::$processed_votes == self::$unprocessed_logs ) {
							return [ 'response_code' => -1, 'message' => __( 'Processed ' . self::$processed_votes . ' out of ' . self::$unprocessed_logs . ' records on table votes.', 'yop-poll' ) ];
						} elseif ( self::$processed_votes > self::$unprocessed_logs ) {
							return [ 'response_code' => -1, 'message' => __( 'Processed ' . self::$unprocessed_logs . ' out of ' . self::$unprocessed_logs . ' records on table votes.', 'yop-poll' ) ];
						} else {
							return [ 'response_code' => 1, 'message' => __( 'Processed ' . self::$processed_votes . ' out of ' . self::$unprocessed_logs . ' remaining records on table votes.', 'yop-poll' ) ];
						}
					} else {
						return [ 'response_code' => 1, 'message' => __( $wpdb->last_error, 'yop-poll' ) ];
					}
				} else {
					return [ 'response_code' => - 1, 'message' => __( 'No votes to process.', 'yop-poll' ) ];
				}

			} else {
				return [ 'response_code' => - 1, 'message' => __( 'No votes to process.', 'yop-poll' ) ];
			}

		} else {
			return [ 'response_code' => - 1, 'message' => __( 'No votes table, skipping.', 'yop-poll' ) ];
		}

	}

	private static function check_if_table_exists( $table_name ) {
		global $wpdb;
		if ( 0 == $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(1) FROM `information_schema`.`tables` WHERE `table_schema` = %s AND `table_name` = %s",
				DB_NAME, $table_name ) ) ) {
			return false;
		}
		return true;
	}

	private static function check_if_column_exists( $table_name, $column_name ) {
		global $wpdb;
		if ( 0 == $wpdb->get_var( $wpdb->prepare(
				"SELECT count(1) FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = %s AND `TABLE_NAME` = %s AND `COLUMN_NAME` = %s ",
				DB_NAME, $table_name, $column_name
			) ) ) {
			return false;
		}
		return true;
	}

	private static function create_css_from_template( $template_id ) {
		$css_array = [
			'poll'      => [
				'backgroundColor'          => '#fff',
				'borderSize'               => 0,
				'borderColor'              => '#fff',
				'borderRadius'             => 0,
				'padding'                  => 10,
				'textColor'                => '#555',
				'inputElementsBorderColor' => '#000',
			],
			'questions' => [
				'backgroundColor' => '#fff',
				'borderSize'      => 0,
				'borderColor'     => '#fff',
				'borderRadius'    => 0,
				'padding'         => 4,
				'textColor'       => '#000',
				'textSize'        => 'small'
			],
			'answers'   => [
				'backgroundColor' => '#fff',
				'borderSize'      => 0,
				'borderColor'     => '#fff',
				'borderRadius'    => 0,
				'padding'         => 0,
				'textColor'       => '#000',
				'textSize'        => 'small',
				'skin'            => 'minimal',
				'colorScheme'     => 'black'
			],
			'buttons'   => [
				'backgroundColor' => '#222',
				'borderSize'      => 0,
				'borderColor'     => '#222',
				'borderRadius'    => 2,
				'padding'         => 0,
				'textColor'       => '#fff',
				'textSize'        => 'small'
			],
			'captcha'   => [],
			'errors'    => [
				'backgroundColor' => '#fff',
				'borderSize'      => 0,
				'borderColor'     => '#fff',
				'borderRadius'    => 0,
				'padding'         => 0,
				'textColor'       => '#FF0000',
				'textSize'        => 'small'
			]
		];
		return $css_array;
	}

	public static function yop_ajax_import()
	{
		if ( false === is_user_logged_in() ) {
            wp_send_json_error( __( 'You are not allowed to perform this action', 'yop-poll' ) );
			wp_die();
		}
		if( check_ajax_referer( 'yop-poll-ajax-importer', '_csrf_token' ) ) {
            $skip_table_check = false;
			if ( isset( $_REQUEST['enableGdpr'] ) && isset( $_REQUEST['gdprSolution'] ) ) {
				self::set_gdpr( $_REQUEST['enableGdpr'], $_REQUEST['gdprSolution'] );
			}
            switch ($_REQUEST['table']) {
                case 'polls': {
                    $response = self::import_polls( self::$ajax_limit, $skip_table_check );
                    if ( -1 == $response['response_code'] ) {
                        $table         = 'bans';
                        $response_code = 1;
                        wp_send_json_success( array( 'table' => $table, 'response_code' => $response_code, 'message' => $response['message'], 'skip_table_check' => false ) );
                    } else {
                        $table         = 'polls';
                        $response_code = $response['response_code'];
                        wp_send_json_success( array( 'table' => $table, 'response_code' => $response_code, 'message' => $response['message'], 'skip_table_check' => true ) );
                    }
                    break;
                }
                case 'bans': {
                    $response = self::import_bans( $skip_table_check );
                    if ( -1 == $response['response_code'] ) {
                        $table         = 'votes';
                        $response_code = 1;
                        wp_send_json_success( array( 'table' => $table, 'response_code' => $response_code, 'message' => $response['message'], 'skip_table_check' => false ) );
                    } else {
                        $table = 'bans';
                        $response_code = $response['response_code'];
                        wp_send_json_success( array( 'table' => $table, 'response_code' => $response_code, 'message' => $response['message'], 'skip_table_check' => true ) );
                    }
                    break;
                }
                case 'votes': {
                    $response = self::import_votes( $skip_table_check );
                    if ( -1 == $response['response_code'] ) {
                        $table = 'votes';
                        $response_code = 'done';
						delete_option( 'yop_poll_old_version' );
                        wp_send_json_success( array( 'table' => $table, 'response_code' => $response_code, 'message' => $response['message'], 'skip_table_check' => false ) );
                    } else {
                        $table = 'votes';
                        $response_code = $response['response_code'];
                        wp_send_json_success( array( 'table' => $table, 'response_code' => $response_code, 'message' => $response['message'], 'skip_table_check' => true ) );
                    }
                    break;
                }
            }
            wp_die();
        } else {
            wp_send_json_error( __( 'You are not allowed to perform this action', 'yop-poll' ) );
            wp_die();
        }
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit