public function edit($id = null) { $signup = self::load_signup($id); if ($this->post) { $signup->lift_required = $_POST['lift_required']; $signup->paid = $_POST['paid']; $signup->voucher_code = $_POST['voucher_code']; $signup->voucher = $_POST['voucher']; if ($_POST['ticket'] != $signup->event_ticket_id) { // Ticket is different, fetch the new one and remove any services that // aren't allowed for that type. If there are services that are paid // for, raise an error instead $event_id = mysql_real_escape_string($signup->event->id); $ticket_id = mysql_real_escape_string($_POST['ticket']); $ticket = EventTicket::find("event_tickets.event_id = {$event_id} AND event_tickets.id = {$ticket_id}"); if ($ticket) { if (!$ticket->participant) { $signup_id = mysql_real_escape_string($signup->id); $paid_services = EventService::find_all("event_services.event_signup_id = {$signup_id} AND services.participant = true AND event_services.paid = true AND services.cost > 0"); if (count($paid_services) == 0) { $services = EventService::find_all("event_services.event_signup_id = {$signup_id} AND services.participant = true AND (event_services.paid = false OR services.cost = 0)"); foreach ($services as $service) { $service->destroy(); } $signup->event_ticket_id = $ticket->id; $signup->event_ticket = $ticket; } else { $signup->add_error("This signup has paid participant services, it cannot be changed to spectator"); } } else { $signup->event_ticket_id = $ticket->id; $signup->event_ticket = $ticket; } } } if ($signup->save()) { Site::Flash("notice", "The signup has been edited"); Redirect("admin/signups/{$signup->id}"); } } $tickets = array(); foreach ($signup->event->tickets() as $ticket) { $tickets[$ticket->id] = "({$ticket->id}) {$ticket->name}"; } $this->assign("tickets", $tickets); $this->assign("signup", $signup); $this->title = "Edit {$signup->event->name} Signup"; $this->render("event_signup/edit.tpl"); }
public function filtered_services($filter = "all", $reload = false) { if ($filter == "all") { return $this->event_services($reload); } elseif ($filter == "paid") { if ($reload or !$this->paid_cache) { $id = mysql_real_escape_string($this->id); $this->paid_cache = EventService::find_all("event_services.service_id = '{$id}' AND event_services.paid = true"); } return $this->paid_cache; } elseif ($filter == "unpaid") { if ($reload or !$this->unpaid_cache) { $id = mysql_real_escape_string($this->id); $this->unpaid_cache = EventService::find_all("event_services.service_id = '{$id}' AND event_services.paid = false"); } return $this->unpaid_cache; } }
public function edit() { $signup = self::load_signup($id); if ($signup->event->enddate <= time()) { Site::Flash("error", "It is not possible to edit this booking"); Redirect("bookings/{$signup->id}"); } // Seating Manager $managers = array('' => 'None'); $clan = mysql_real_escape_string(Site::CurrentUser()->clan); if ($clan != '') { $id = mysql_real_escape_string(Site::CurrentUser()->id); $allManagers = User::find_all("users.clan = '{$clan}'", "users.nickname ASC"); foreach ($allManagers as $manager) { $permalink = $manager->permalink(); $managers[$permalink] = $manager->nickname; } } $currentManager = ''; if ($signup->manager_id) { $currentManager = $signup->manager->permalink(); } if ($this->post and !$this->csrf) { global $site; $site['flash']['error'] = "Invalid form submission"; } elseif ($this->post) { $signup->lift_required = $_POST['lift_required']; if (!$signup->paid and !$signup->event_ticket->hidden) { $ticket_id = mysql_real_escape_string($_POST['ticket']); if ($ticket_id != $signup->event_ticket_id) { $event_id = mysql_real_escape_string($signup->event_id); $ticket = EventTicket::find("event_tickets.id = '{$ticket_id}' AND event_tickets.event_id = '{$event_id}' AND event_tickets.hidden = false"); if ($ticket) { $signup->event_ticket_id = $ticket->id; $signup->event_ticket = $ticket; } } } $save = true; if ($this->PostData('manager_id')) { $manager = User::find_by_nickname($this->PostData('manager_id')); if ($manager && array_key_exists($manager->permalink(), $managers)) { $signup->manager_id = $manager->id; } else { global $site; $site['flash']['error'] = "Unable to find the seat manager you selected"; $save = false; } } else { $signup->manager_id = null; } if ($save && $signup->save()) { // Remove any services that don't fit this booking if (!$signup->event_ticket->participant) { $signup_id = mysql_real_escape_string($signup->id); $services = EventService::find_all("event_services.event_signup_id = '{$signup_id}' AND participant = true"); $paid = array(); foreach ($services as $service) { if ($service->paid) { // Service has been paid, don't remove it, email staff $paid[] = $service; } else { $service->destroy(); } } if (count($paid) > 0) { // One or more services were unsuitable but paid for (this should // really not happen! Let's email staff and they can handle it } } Site::Flash("notice", "Your event booking has been updated"); Redirect("bookings/{$signup->id}"); } } $this->assign("signup", $signup); $this->assign("tickets", $signup->event->public_tickets()); $this->assign("managers", $managers); $this->assign("currentManager", $currentManager); $this->title = "My Bookings :: " . $signup->event->name . " :: Edit"; $this->render("event_signup/edit.tpl"); }
public function check_services() { // Get all available services $event_id = mysql_real_escape_string($this->event_id); $participant = ""; if (!$this->event_ticket->participant) { $participant = " AND services.participant = false"; } $available_services = Service::find_all("services.event_id = '{$event_id}'{$participant}"); $available = array(); foreach ($available_services as $service) { if ($service->available() != 0) { $available[] = $service->id; } } // Get unpaid services $signup_id = mysql_real_escape_string($this->id); $unpaid = EventService::find_all("event_services.event_signup_id = '{$signup_id}' AND event_services.paid = false"); $removed = array(); foreach ($unpaid as $service) { if (!in_array($service->service_id, $available)) { $removed[] = $service->service; $service->destroy(); } } return $removed; }