public function cart_payment() { $id = ""; if ($this->GetData('id')) { $id = $this->GetData('id'); } $user_id = mysql_real_escape_string(Site::CurrentUser()->id); $cart = Cart::find("carts.user_id = {$user_id} AND carts.id = {$id}"); if ($cart->paid) { Site::Flash('error', 'The cart has already been paid'); RedirectBack('bookings'); } $cart->check_discounts(); if ($cart->cost() != 0) { Site::Flash('error', 'This cart still needs to be paid for'); RedirectBack('bookings'); } if ($cart->full_cart_discount()) { $id = mysql_real_escape_string($cart->id); $redemptions = DiscountRedemption::find_all("discount_redemptions.cart_id='{$id}' and discount_redemptions.cart_item_id IS NULL"); } // Log the payment $gateway = PaymentGateway::find_by_code('discount'); $payment = new PaymentTransaction(); $payment->cart_id = $cart->id; $payment->externalid = (string) $redemptions[0]; $payment->paymentgateway_id = $gateway->id; $payment->status = 'ptsTaken'; $payment->amount = $cart->cost() / 100; $payment->sender = Site::CurrentUser()->email; $payment->save(); $cart->mark_paid($payment, 'Discount'); // Email staff about payment Email::send_payment_complete(array(), "", $cart, $redemptions); Redirect("payments/{$id}/complete"); }