public function redeem_discount($cart_id = null) { if (!$cart_id) { $cart_id = $this->GetData('id'); } $cart_id = mysql_real_escape_string($cart_id); $user_id = mysql_real_escape_string(Site::CurrentUser()->id); $cart = Cart::find("carts.id = '{$cart_id}' and carts.user_id = '{$user_id}'"); if (!$cart) { throw new Error404(); } $url = "bookings/pay/{$cart->id}"; if ($this->post) { $code = $this->PostData('code'); if (!$code) { Site::Flash('error', 'No discount code entered'); RedirectBack($url); } $discount = DiscountCode::find_by_code($code); if (!$discount) { Site::Flash('error', 'The discount code could not be found'); RedirectBack($url); } try { $discount->redeem($cart); } catch (Error500 $e) { Site::Flash('error', $e->getMessage()); RedirectBack($url); } Site::Flash('notice', 'The discount has been applied'); } RedirectBack($url); }
public function delete($signup_id = null, $id = null) { $signup = self::load_signup($signup_id); $service = self::load_event_service($signup->id, $id); $service->destroy(); Site::Flash("notice", "The service booking has been deleted"); RedirectBack("admin/signups/{$service->event_signup_id}"); }
public function acknowledge($id = null) { $script = self::load_script($id); if ($script->getAlert('bool') && !$script->acknowledged) { $script->acknowledged = true; $nickname = Site::CurrentUser()->nickname; $script->addlog("Alert acknowledged by {$nickname}"); $script->save(); } Site::flash("notice", "The script alert has been acknowledged."); RedirectBack("admin/scripts"); }
public function delete($id = null) { if (!$id) { $id = $this->GetData('id'); } $redemption = DiscountRedemption::find_by_id($id); if (!$redemption || $redemption->user->id != Site::CurrentUser()->id) { throw new Error404(); } $redemption->destroy(); Site::Flash("notice", "Discount code removed successfully."); RedirectBack("bookings/pay/{$cart_id}/"); }
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"); }
public function post($id = null) { $tweet = $this->load_tweet($id); if ($tweet->post()) { Site::Flash('notice', 'The tweet has been posted'); } else { Site::Flash('error', 'Error posting tweet'); } RedirectBack("admin/twitter"); }
public function delete($permalink = null, $id = null) { $signup = self::load_signup($id); $signup->destroy(); Site::Flash("notice", "The signup has been deleted"); RedirectBack("admin/events/{$signup->event->permalink}/signups"); }
public function show($permalink = null) { if (isset($_GET['permalink'])) { $permalink = $_GET['permalink']; } $survey = Survey::find_by_permalink($permalink); if (!$survey or !$survey->active && Site::CurrentUser()->isAdmin() == 0) { Error404(); } if ($survey->event->id) { $event_id = mysql_real_escape_string($survey->event_id); $user_id = mysql_real_escape_string(Site::CurrentUser()->id); $result = EventSignup::find("events.id = '{$event_id}' AND users.id = '{$user_id}' AND event_signups.paid"); if (!$result) { Site::Flash("error", "You must have attended {$survey->event->name} to take this survey"); RedirectBack(); } } $user_id = mysql_real_escape_string(Site::CurrentUser()->id); $survey_id = mysql_real_escape_string($survey->id); $response = SurveyResponse::find("surveys.id = '{$survey_id}' AND users.id = '{$user_id}'"); if ($response) { Site::Flash("error", "You have already completed this survey"); Redirect("surveys"); } $response = new SurveyResponse(); $response->survey = $survey; $response->survey_id = $survey->id; $response->user = Site::CurrentUser(); $response->user_id = Site::CurrentUser()->id; $answers = array(); $choices = array(); $valid = true; $errors = array(); if ($this->post) { foreach ($survey->questions() as $question) { $answer = new SurveyAnswer(); $answer->survey_question_id = $question->id; if (in_array($question->type, array("sqtTextbox", "sqtTextArea"))) { // Free-text input if (isset($_POST['question'][$question->id])) { $answer->value = $_POST['question'][$question->id]; } elseif (!$question->required) { continue; } } else { if (isset($_POST['question'][$question->id])) { $chosen = array(); if ($question->type == "sqtCheckbox") { // Checkboxes $chosen = $_POST['question'][$question->id]; } else { // Radio/Select $chosen = array($_POST['question'][$question->id]); } foreach ($chosen as $id) { $option = SurveyQuestionOption::find_by_id($id); if (!$option or $option->question->id != $question->id) { if (!$question->required) { continue; } $valid = false; $answer->add_error("Answer for question {$question->position} is invalid"); $errors[] = $question->id; break; } $choice = new SurveyAnswerChoice(); $choice->survey_question_option_id = $option->id; $choices[$question->id][$option->id] = $choice; } } elseif ($question->required) { $valid = false; $answer->add_error("You must enter an answer for question {$question->position}"); $errors[] = $question->id; } else { continue; } } $result = $answer->validate(); if (!$result) { $valid = false; } $answers[$question->id] = $answer; } if ($valid) { // This is valid, let's save everything! if ($response->save()) { foreach ($answers as $answer) { $answer->survey_response_id = $response->id; $answer->save(); $answers[$answer->survey_question_id] = $answer; } foreach ($choices as $question_id => $answer_choices) { foreach ($answer_choices as $choice) { $choice->survey_answer_id = $answers[$question_id]->id; $choice->save(); } } $account = TwitterAccount::find_by_code('site'); if ($account) { $message = "{$response->user->nickname} has completed the {$survey->name} Survey"; $account->add_tweet($message); } Redirect("surveys/{$survey->permalink}/complete"); } $valid = false; } } $this->assign("answers", $answers); $this->assign("choices", $choices); $this->assign("valid", $valid); $this->assign("survey", $survey); $this->assign("response", $response); $this->assign("errors", $errors); $this->title = $survey->name; $this->render("survey/show.tpl"); }