protected function select_group_services($event, $hasSignup = false) { $signups = Site::GetFlash("signup_objects"); if ($this->post) { $saved = array(); foreach ($signups as $key => $signup) { if ($signup->save()) { $saved[] = $signup; $services = $event->public_services($signup->event_ticket->participant); $available_services = array(); foreach ($services as $service) { $available_services[] = $service->id; } if (isset($_POST['signups'][$key])) { $services = $_POST['signups'][$key]; foreach ($services['services'] as $id => $quantity) { $quantity = intval($quantity); for ($i = 0; $i < $quantity; $i++) { if (in_array($id, $available_services)) { $service = Service::find_by_id($id); if ($service->max_per_signup != -1 && $i >= $service->max_per_signup || $i == $service->available()) { break; } $event_service = new EventService(); $event_service->event_signup_id = $signup->id; $event_service->service_id = $id; if ($signup->paid and $service->cost == 0 and $service->available() > 0) { $event_service->paid = true; } if (isset($services['notes'][$id])) { $event_service->note = $services['notes'][$id]; } $event_service->save(); } } } } } } if (count($saved) > 0) { // We have saved some, we need to forward somewhere, for now let's go to My Bookings Site::Flash("notice", "Your bookings have been created"); Redirect("bookings"); } } Site::Flash("signup_group_stage", 2); Site::Flash("signup_objects", $signups); $this->assign("signups", $signups); $this->render("event_signup/select_group_services.tpl"); }
public function create($signup_id = null) { $signup = self::load_signup($signup_id); $event_service = new EventService(); $event_service->event_signup_id = $signup->id; if ($this->post) { $event_id = mysql_real_escape_string($signup->event->id); $service_id = mysql_real_escape_string($_POST['service']); $service = Service::find("services.id = '{$service_id}' AND services.event_id = '{$event_id}'"); if ($service) { if ($service->participant and !$signup->event_ticket->participant) { $event_service->add_error("You cannot add participant services to this booking"); } $event_service->service_id = $service->id; $event_service->note = $_POST['note']; $event_service->paid = $_POST['paid']; if ($event_service->save()) { Site::Flash("notice", "The service booking has been added"); Redirect("admin/signups/{$signup->id}"); } } } $available_services = $signup->available_services(false, true); if (count($available_services) == 0) { Site::flash("error", "There are no services available for this signup"); Redirect("admin/signups/{$signup->id}"); } $services = array(); foreach ($available_services as $service) { $services[$service->id] = $service->name; } $this->assign("services", $services); $this->assign("signup", $signup); $this->assign("service", $event_service); $this->title = "Signup {$signup->id} Services"; $this->render("event_service/create.tpl"); }
public function add() { $signup = self::load_signup(); if ($signup->event->enddate <= time()) { Site::Flash("error", "It is not possible to edit this booking"); Redirect("bookings/{$signup->id}"); } $services = $signup->available_services(); if (count($services) > 0) { if ($this->post and $this->csrf) { $added = 0; $available_services = array(); foreach ($services as $service) { $available_services[] = $service->id; } foreach ($_POST['services'] as $id => $quantity) { $quantity = intval($quantity); for ($i = 0; $i < $quantity; $i++) { if (in_array($id, $available_services)) { $service = Service::find_by_id($id); if ($service->max_per_signup != -1 && $i >= $service->max_per_signup || $i == $service->available()) { break; } $event_service = new EventService(); $event_service->event_signup_id = $signup->id; $event_service->service_id = $id; if ($signup->paid and $service->cost == 0 and $service->available() != 0) { $event_service->paid = true; } if (isset($_POST['service_notes'][$id])) { $event_service->note = $_POST['service_notes'][$id]; } if ($event_service->save()) { $added++; } else { Site::Flash("error", "Unable to add {$service->name}"); Redirect("bookings/{$signup->id}/services"); } } } } if ($added > 0) { Site::Flash("notice", "The service has been added"); if ($added > 1) { Site::Flash("notice", "The services have been added"); } Redirect("bookings/{$signup->id}"); } else { Site::Flash("error", "No services were added"); Redirect("bookings/{$signup->id}/services"); } } elseif ($this->post) { global $site; $site['flash']['error'] = "Invalid form submission"; } $this->assign("signup", $signup); $this->assign("services", $services); $this->title = "My Bookings :: {$signup->event->name} :: Add Services"; $this->render("event_service/add.tpl"); } else { Site::Flash("error", "There are no services available for you to add"); Redirect("bookings/{$signup->id}"); } }