function wpv_ajax_get_page($post_data)
{
    global $WP_Views;
    // Fix a problem with WPML using cookie language when DOING_AJAX is set.
    $cookie_lang = null;
    if (isset($_COOKIE['_icl_current_language']) && isset($post_data['lang'])) {
        $cookie_lang = $_COOKIE['_icl_current_language'];
        $_COOKIE['_icl_current_language'] = $post_data['lang'];
    }
    // Switch WPML to the correct language.
    if (isset($post_data['lang'])) {
        global $sitepress;
        if (method_exists($sitepress, 'switch_lang')) {
            $sitepress->switch_lang($post_data['lang']);
        }
    }
    $post_id = $post_data['post_id'];
    $_GET['wpv_paged'] = $post_data['page'];
    $_GET['wpv_view_count'] = $post_data['view_number'];
    if (isset($post_data['wpv_column_sort_id']) && $post_data['wpv_column_sort_id'] != 'undefined') {
        $_GET['wpv_column_sort_id'] = $post_data['wpv_column_sort_id'];
    }
    if (isset($post_data['wpv_column_sort_dir']) && $post_data['wpv_column_sort_dir'] != 'undefined') {
        $_GET['wpv_column_sort_dir'] = $post_data['wpv_column_sort_dir'];
    }
    if (isset($post_data['get_params'])) {
        foreach ($post_data['get_params'] as $key => $param) {
            $_GET[$key] = $param;
        }
    }
    global $post, $authordata, $id;
    $view_data = unserialize(base64_decode($post_data['view_hash']));
    $post = get_post($post_id);
    $authordata = new WP_User($post->post_author);
    $id = $post->ID;
    if ($post_data['wpv_view_widget_id'] == 0) {
        // set the view count so we return the right view number after rendering.
        $WP_Views->set_view_count(intval($post_data['view_number']) - 1, null);
        echo $WP_Views->short_tag_wpv_view($view_data);
        //echo wpv_do_shortcode($post->post_content);
    } else {
        // set the view count so we return the right view number after rendering.
        $WP_Views->set_view_count(intval($post_data['view_number']), $post_data['wpv_view_widget_id']);
        $widget = new WPV_Widget();
        $args = array('before_widget' => '', 'before_title' => '', 'after_title' => '', 'after_widget' => '');
        $widget->widget($args, array('title' => '', 'view' => $post_data['wpv_view_widget_id']));
        echo $WP_Views->get_max_pages();
    }
    if ($cookie_lang) {
        // reset language cookie.
        $_COOKIE['_icl_current_language'] = $cookie_lang;
    }
}
function wpv_ajax_get_page($post_data)
{
    global $WP_Views;
    // Fix a problem with WPML using cookie language when DOING_AJAX is set.
    $cookie_lang = null;
    if (isset($_COOKIE['_icl_current_language']) && isset($post_data['lang'])) {
        $cookie_lang = $_COOKIE['_icl_current_language'];
        $_COOKIE['_icl_current_language'] = $post_data['lang'];
    }
    // Switch WPML to the correct language.
    if (isset($post_data['lang'])) {
        global $sitepress;
        if (method_exists($sitepress, 'switch_lang')) {
            $sitepress->switch_lang($post_data['lang']);
        }
    }
    $_GET['wpv_paged'] = intval(esc_attr($post_data['page']));
    $_GET['wpv_view_count'] = esc_attr($post_data['view_number']);
    if (isset($post_data['wpv_column_sort_id']) && esc_attr($post_data['wpv_column_sort_id']) != 'undefined' && esc_attr($post_data['wpv_column_sort_id']) != '') {
        $_GET['wpv_column_sort_id'] = esc_attr($post_data['wpv_column_sort_id']);
    }
    if (isset($post_data['wpv_column_sort_dir']) && esc_attr($post_data['wpv_column_sort_dir']) != 'undefined' && esc_attr($post_data['wpv_column_sort_dir']) != '') {
        $_GET['wpv_column_sort_dir'] = esc_attr($post_data['wpv_column_sort_dir']);
    }
    // $post_data['get_params'] holds arbitrary URL parameters from the page triggering the pagination
    // We have a hacky solution to keep array URL parameters
    // by using the flag ##URLARRAYVALHACK## as the glue of the imploded array
    if (isset($post_data['get_params'])) {
        foreach ($post_data['get_params'] as $key => $param) {
            if (!isset($_GET[$key])) {
                $param_san = esc_attr($param);
                // @hack alert!! We can not avoid this :-(
                if (strpos($param_san, '##URLARRAYVALHACK##') !== false) {
                    $_GET[$key] = explode('##URLARRAYVALHACK##', $param_san);
                } else {
                    $_GET[$key] = $param_san;
                }
            }
        }
    }
    // In other $post_data items, we are keeping the [] brackets for array flagging
    if (isset($post_data['dps_pr'])) {
        foreach ($post_data['dps_pr'] as $dps_pr_item) {
            if (is_array($dps_pr_item) && isset($dps_pr_item['name']) && isset($dps_pr_item['value'])) {
                if (strlen($dps_pr_item['name']) < 2) {
                    if (!isset($_GET[$dps_pr_item['name']])) {
                        $_GET[$dps_pr_item['name']] = esc_attr($dps_pr_item['value']);
                    }
                } else {
                    if (strpos($dps_pr_item['name'], '[]') === strlen($dps_pr_item['name']) - 2) {
                        $name = str_replace('[]', '', $dps_pr_item['name']);
                        if (!isset($_GET[$name])) {
                            $_GET[$name] = array(esc_attr($dps_pr_item['value']));
                        } else {
                            if (is_array($_GET[$name])) {
                                $_GET[$name][] = esc_attr($dps_pr_item['value']);
                            }
                        }
                    } else {
                        if (!isset($_GET[$dps_pr_item['name']])) {
                            $_GET[$dps_pr_item['name']] = esc_attr($dps_pr_item['value']);
                        }
                    }
                }
            }
        }
    }
    if (isset($post_data['dps_general'])) {
        $corrected_item = array();
        foreach ($post_data['dps_general'] as $dps_pr_item) {
            if (is_array($dps_pr_item) && isset($dps_pr_item['name']) && isset($dps_pr_item['value'])) {
                if (strlen($dps_pr_item['name']) < 2) {
                    $_GET[$dps_pr_item['name']] = esc_attr($dps_pr_item['value']);
                } else {
                    if (strpos($dps_pr_item['name'], '[]') === strlen($dps_pr_item['name']) - 2) {
                        $name = str_replace('[]', '', $dps_pr_item['name']);
                        if (!in_array($name, $corrected_item)) {
                            $corrected_item[] = $name;
                            if (isset($_GET[$name])) {
                                unset($_GET[$name]);
                            }
                        }
                        if (!isset($_GET[$name])) {
                            $_GET[$name] = array(esc_attr($dps_pr_item['value']));
                        } else {
                            if (is_array($_GET[$name])) {
                                $_GET[$name][] = esc_attr($dps_pr_item['value']);
                            }
                        }
                    } else {
                        $_GET[$dps_pr_item['name']] = esc_attr($dps_pr_item['value']);
                    }
                }
            }
        }
    }
    $view_data = json_decode(base64_decode($post_data['view_hash']), true);
    global $post, $authordata, $id;
    if (isset($post_data['post_id']) && is_numeric($post_data['post_id'])) {
        $_GET['wpv_post_id'] = esc_attr($post_data['post_id']);
        // we need to set this for the post_type_dont_include_current_page setting to work
        $post_id = esc_attr($post_data['post_id']);
        $post = get_post($post_id);
        $authordata = new WP_User($post->post_author);
        $id = $post->ID;
    }
    if (esc_attr($post_data['wpv_view_widget_id']) == 0) {
        // set the view count so we return the right view number after rendering.
        $view_id = $WP_Views->get_view_id($view_data);
        $WP_Views->set_view_count(intval(esc_attr($post_data['view_number'])), $view_id);
        echo $WP_Views->short_tag_wpv_view($view_data);
        //echo wpv_do_shortcode($post->post_content);
    } else {
        // set the view count so we return the right view number after rendering.
        $WP_Views->set_view_count(intval(esc_attr($post_data['view_number'])), esc_attr($post_data['wpv_view_widget_id']));
        $widget = new WPV_Widget();
        $args = array('before_widget' => '', 'before_title' => '', 'after_title' => '', 'after_widget' => '');
        $widget->widget($args, array('title' => '', 'view' => esc_attr($post_data['wpv_view_widget_id'])));
        echo $WP_Views->get_max_pages();
    }
    if ($cookie_lang) {
        // reset language cookie.
        $_COOKIE['_icl_current_language'] = $cookie_lang;
    }
}