function bl_order_meta_save($bl_order_id)
{
    $cust_user_id = is_numeric($_POST["cust_user_id"]) ? $_POST["cust_user_id"] : 1;
    $status = is_numeric($_POST["status"]) ? $_POST["status"] : "";
    $feature_type = is_numeric($_POST["feature_type"]) ? $_POST["feature_type"] : "";
    $feature_id = is_numeric($_POST["feature_id"]) ? $_POST["feature_id"] : "";
    $date_paid = $_POST["date_paid"];
    $expires = "";
    if ($feature_id && $status == 1) {
        $feature = get_post($feature_id);
        $duration = get_post_meta($feature_id, "package_duration", true);
        if (is_numeric($duration)) {
            $expires = strtotime("+" . $duration . " day", strtotime($date_paid));
            $expires = date("Y-m-d H:i:s", $expires);
        }
    }
    bl_create_payment_order(array("bl_order_id" => $bl_order_id, "cust_user_id" => $cust_user_id, "status" => $status, "feature_type" => $feature_type, "feature_id" => $feature_id, "date_paid" => $date_paid, "expires" => $expires));
}
function bepro_payment_completed($item, $bepro_cart_id)
{
    global $wpdb;
    //Collect Variables
    $data = get_option("bepro_listings");
    $duration = 0;
    $bl_order_id = $item["item_number"];
    $update_payment["bepro_cart_id"] = $bepro_cart_id;
    $update_payment["date_paid"] = date("Y-m-d H:i:s");
    $update_payment["status"] = 1;
    if (stristr($bl_order_id, "BPL_PACKAGE-")) {
        $feature_id = explode("-", $bl_order_id);
        $update_payment["cust_user_id"] = get_current_user_id();
        $update_payment["feature_type"] = $data["require_payment"];
        $update_payment["feature_id"] = @$feature_id[1];
        $update_payment["bl_order_id"] = bl_get_vacant_order_id($order->cust_user_id, false);
    } else {
        $order = bl_get_payment_order($bl_order_id);
        $update_payment["bl_order_id"] = $bl_order_id;
        $update_payment["cust_user_id"] = $order->cust_user_id;
        $update_payment["feature_type"] = $order->feature_type;
        $update_payment["feature_id"] = $order->feature_id;
    }
    //duration for categories is calculated differently to durations for packages
    if (@$update_payment["feature_id"] && @$data["require_payment"] == 2 && get_post($update_payment["feature_id"])) {
        $duration = get_post_meta($update_payment["feature_id"], "package_duration", true);
    } else {
        if (!empty($data["require_payment"]) && $data["require_payment"] == 1) {
            $duration = $data["cat_fee_duration"];
        }
    }
    //set expiration
    if ($duration != 0) {
        $update_payment["expires"] = date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . " +" . $duration . " days"));
    }
    //save purchase details & publish all listings attached to the package
    if (bl_create_payment_order($update_payment) && $duration != 0) {
        $posts = $wpdb->get_results("SELECT * FROM " . $wpdb->prefix . BEPRO_LISTINGS_TABLE_NAME . " WHERE bl_order_id = " . $update_payment["bl_order_id"]);
        if ($posts && $wpdb->num_rows > 0) {
            remove_action('post_updated', "bepro_admin_save_details");
            foreach ($posts as $post) {
                wp_update_post(array("ID" => $post->post_id, "post_status" => "publish"));
            }
            add_action('post_updated', "bepro_admin_save_details");
        }
    }
}