function geodir_change_invoice_status()
{
    global $wpdb;
    if (current_user_can('manage_options')) {
        if ($_REQUEST['postid'] != '' && $_REQUEST['postid'] != '' && isset($_REQUEST['_wpnonce'])) {
            if (!wp_verify_nonce($_REQUEST['_wpnonce'], 'invoice_status_update_nonce')) {
                return;
            }
            $id = $_REQUEST['invoiceid'];
            $invoice_info = geodir_get_invoice($id);
            $invoice_package_id = '';
            if (!empty($invoice_info) && isset($invoice_info->package_id)) {
                $invoice_package_id = $invoice_info->package_id;
                $invoice_alive_days = $invoice_info->alive_days;
                $invoice_status = $invoice_info->status;
            }
            $my_post = array();
            $my_post['ID'] = $_REQUEST['postid'];
            $status = $_REQUEST['inv_status'];
            if ($status == 'paid') {
                $my_post['post_status'] = 'publish';
                $post_id = $_REQUEST['postid'];
                $post_info = get_post($post_id);
                $geodir_post_info = geodir_get_post_info($post_id);
                if (!empty($geodir_post_info) && !empty($post_info) && isset($post_info->post_status)) {
                    $post_package_id = $geodir_post_info->package_id;
                    $post_expire_date = $geodir_post_info->expire_date;
                    if (!empty($invoice_package_id) && $invoice_alive_days > 0 && $invoice_package_id == $post_package_id && strtolower($post_expire_date) != 'never' && strtotime($post_expire_date) >= strtotime(date('Y-m-d')) && $post_info->post_status == 'publish') {
                        $expire_date = date('Y-m-d', strtotime($post_expire_date . "+" . $invoice_alive_days . " days"));
                        geodir_save_post_meta($post_id, 'alive_days', $geodir_post_info->alive_days + $invoice_alive_days);
                        geodir_save_post_meta($post_id, 'expire_date', $expire_date);
                    } else {
                        if ($post_info->post_status != 'publish') {
                            $my_post['post_date'] = current_time('mysql');
                            $my_post['post_date_gmt'] = current_time('mysql', 1);
                        }
                        $alive_days = (int) $geodir_post_info->alive_days;
                        if (strtolower($post_expire_date) != 'never' && strtotime($post_expire_date) < strtotime(date('Y-m-d'))) {
                            $alive_days = $invoice_alive_days;
                        }
                        $expire_date = $alive_days > 0 ? date('Y-m-d', strtotime(date('Y-m-d') . "+" . $alive_days . " days")) : 'Never';
                        geodir_save_post_meta($post_id, 'alive_days', $alive_days);
                        geodir_save_post_meta($post_id, 'expire_date', $expire_date);
                    }
                }
            } else {
                $my_post['post_status'] = 'draft';
            }
            // Update the post into the database
            wp_update_post($my_post);
            // Update invoice status
            geodir_update_invoice_status($id, $status);
            $msg = urlencode(GD_INVOICE_MSG);
            wp_redirect(admin_url() . "admin.php?page=geodirectory&tab=paymentmanager_fields&subtab=geodir_invoice_list&success_msg=" . $msg);
            exit;
        }
    } else {
        wp_redirect(home_url() . '/?geodir_signup=true');
        exit;
    }
}
function payment_handler()
{
    if (isset($_REQUEST['geodir_ajax']) && $_REQUEST['geodir_ajax'] == 'add_listing') {
        switch ($_REQUEST['ajax_action']) {
            case "paynow":
                $request = isset($_SESSION['listing']) ? unserialize($_SESSION['listing']) : '';
                if (isset($request['geodir_spamblocker']) && $request['geodir_spamblocker'] == '64' && isset($request['geodir_filled_by_spam_bot']) && $request['geodir_filled_by_spam_bot'] == '') {
                    if (isset($_REQUEST['paymentmethod']) && isset($_SESSION['listing'])) {
                        $last_id = geodir_save_listing();
                        $invoice_id = geodir_create_invoice($last_id, $_REQUEST['price_select'], $_REQUEST['paymentmethod'], $_REQUEST['coupon_code']);
                        geodir_update_invoice_status($invoice_id, 'unpaid');
                        $paymentmethod = $_REQUEST['paymentmethod'];
                        do_action('geodir_payment_form_handler_' . $paymentmethod, $invoice_id);
                    } else {
                        $postlink = get_permalink(get_option('geodir_add_listing_page'));
                        $redirect_url = geodir_getlink($postlink, array('listing_type' => $_REQUEST['listing_type']), false);
                        wp_redirect($redirect_url);
                    }
                } else {
                    if (isset($_SESSION['listing'])) {
                        unset($_SESSION['listing']);
                    }
                    wp_redirect(home_url());
                }
                break;
        }
    }
}