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 geodir_payment_detail_fields_update($invoice_id)
{
    $invoice_info = geodir_get_invoice($invoice_id);
    if (!empty($invoice_info)) {
        $payment_info = array();
        $payment_info['paymentmethod'] = $invoice_info->paymentmethod;
        $payment_info['paid_amount'] = $invoice_info->paied_amount;
        geodir_save_post_info($invoice_info->post_id, $payment_info);
        // if listing not expired and goes to upgrade listing with same package
        $update = true;
        if (!empty($payment_info) && !empty($_REQUEST['price_select']) && !empty($_REQUEST['paymentmethod']) && !empty($_REQUEST['pid']) && $_REQUEST['ajax_action'] == 'paynow') {
            $session_listing = isset($_SESSION['listing']) && is_serialized($_SESSION['listing']) ? unserialize($_SESSION['listing']) : NULL;
            $prev_package_id = !empty($_SESSION) && !empty($_SESSION['geodir_prev_package_id']) ? $_SESSION['geodir_prev_package_id'] : geodir_get_post_meta($_REQUEST['pid'], 'package_id', true);
            $prev_expire_date = !empty($_SESSION) && !empty($_SESSION['geodir_prev_expire_date']) ? $_SESSION['geodir_prev_expire_date'] : geodir_get_post_meta($_REQUEST['pid'], 'expire_date', true);
            if ($prev_package_id == $_REQUEST['price_select'] && $prev_expire_date && strtotime($prev_expire_date) >= strtotime(date('Y-m-d'))) {
                $update = false;
            }
        }
        //
        if ($update && $payment_info['paid_amount'] > 0) {
            $post['ID'] = $invoice_info->post_id;
            $post['post_status'] = 'draft';
            $last_post_id = wp_update_post($post);
        }
    }
    /*print_r($session_listing);
      print_r($_SESSION);
      print_r($_POST);
      if($prev_package_id==$_REQUEST['price_select']){echo '###1';}
      if($prev_expire_date){echo '###2';}
      if(strtotime($prev_expire_date) >= strtotime(date('Y-m-d'))){echo '###3';}
      exit;*/
}