コード例 #1
0
 public function tickets($reload = false)
 {
     if ($reload || !$this->tickets_cache) {
         $id = mysql_real_escape_string($this->id);
         $this->tickets_cache = EventTicket::find_all("event_tickets.seating_group_id = '{$id}'", "event_tickets.id ASC");
     }
     return $this->tickets_cache;
 }
コード例 #2
0
 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");
 }
コード例 #3
0
 protected static function load_ticket($event, $id = null)
 {
     if (!$id) {
         $id = $_GET['id'];
     }
     $id = mysql_real_escape_string($id);
     $event_id = mysql_real_escape_string($event->id);
     $ticket = EventTicket::find("event_tickets.event_id = '{$event_id}' AND event_tickets.id = '{$id}'");
     if ($ticket) {
         return $ticket;
     } else {
         Error404();
     }
 }
コード例 #4
0
 /**
  * @covers EventTicket::getSaleEndForDateTime()
  */
 public function testGetSaleEndForDateTime()
 {
     $ticket = new EventTicket();
     $time = new RegisterableDateTime();
     $now = time();
     $ticket->EndType = 'Date';
     $ticket->EndDate = date('Y-m-d H:i:s', $now);
     $this->assertEquals($now, $ticket->getSaleEndForDateTime($time), 'The correct end time is returned with a fixed date.');
     $ticket->EndType = 'TimeBefore';
     $ticket->EndDays = 1;
     $ticket->EndHours = 12;
     $time->StartDate = date('Y-m-d', $now);
     $time->StartTime = date('H:i:s', $now);
     $this->assertEquals($now - 1.5 * 3600 * 24, $ticket->getSaleEndForDateTime($time), 'The correct end time is returned with a relative end date.');
 }
コード例 #5
0
 protected static function get_fields()
 {
     return implode(', ', array(self::select_fields(), User::select_fields(), User::select_fields('referer'), EventSignup::select_fields(), EventTicket::select_fields(), Event::select_fields()));
 }
コード例 #6
0
 public function public_tickets($reload = false)
 {
     if ($reload or !$this->public_tickets_cache) {
         $id = mysql_real_escape_string($this->id);
         $this->public_tickets_cache = EventTicket::find_all("event_tickets.event_id = '{$id}' AND event_tickets.hidden = false", "event_tickets.participant DESC, event_tickets.cost ASC");
     }
     return $this->public_tickets_cache;
 }
コード例 #7
0
 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");
 }
コード例 #8
0
 public function signup($nickname = null)
 {
     $user = $this->load_user($nickname);
     $signup = new EventSignup();
     if ($this->post) {
         $event_id = mysql_real_escape_string($_POST['event']);
         $event = Event::find_by_id($event_id);
         if (!$event) {
             Error404();
         }
         $signup->event_id = $event->id;
         $signup->user_id = $user->id;
         if (!isset($_POST['stage'])) {
             $signup->paid = $this->PostData('paid');
             $signup->lift_required = $this->PostData('lift_required');
             $signup->voucher = $this->PostData('voucher');
             $signup->voucher_code = $this->PostData('voucher_code');
             $ticket_id = mysql_real_escape_string($this->PostData('ticket'));
             $ticket = EventTicket::find("event_tickets.event_id = '{$event_id}' AND event_tickets.id = '{$ticket_id}'");
             if ($ticket) {
                 $signup->event_ticket_id = $ticket->id;
             }
             if ($signup->save()) {
                 Site::Flash('notice', "{$user->nickname} has been signed up to {$event->name}");
                 Redirect("admin/signups/{$signup->id}");
             }
         }
     }
     $tickets = array();
     foreach ($event->tickets() as $ticket) {
         $tickets[$ticket->id] = $ticket->name;
     }
     $this->assign("signup", $signup);
     $this->assign("user", $user);
     $this->assign("event", $event);
     $this->assign("tickets", $tickets);
     $this->title = "Event Signup";
     $this->render("user/signup.tpl");
 }
コード例 #9
0
ファイル: dev.php プロジェクト: ItsHaden/epicLanBootstrap
		if (count($achievements) == 0) {
			$achievement = new UserAchievement();
			$achievement->user_id = $user->id;
			$achievement->achievement_id = 79;
			$achievement->category_id = 14;
			$achievement->save();
			echo "-> Awarding";
		} else {
			echo " -> Already awarded";
		}
		echo "\r\n<br />";
	}
}
*/
$user = User::find_by_id(4791);
$event = Event::find_by_id(33);
$ticket = EventTicket::find_by_id(179);
for ($i = 0; $i < 40; $i++) {
    $event_signup = new EventSignup();
    $event_signup->event_id = $event->id;
    $event_signup->user_id = $user->id;
    $event_signup->event_ticket_id = $ticket->id;
    $event_signup->event_ticket = $ticket;
    if ($i != 0) {
        $event_signup->voucher = true;
        $event_signup->voucher_code = md5(time() . $event->id . mt_rand(0, 99999999999));
        $event_signup->manager_id = $user->id;
    }
    $event_signup->paid = true;
    $event_signup->save();
}
コード例 #10
0
 protected static function get_fields()
 {
     return self::select_fields() . ", " . DiscountCode::select_fields() . ", " . Service::select_fields() . ", " . EventTicket::select_fields();
 }
コード例 #11
0
 protected static function get_fields()
 {
     return self::select_fields() . ", " . User::select_fields() . ", " . EventTicket::select_fields() . ", " . Event::select_fields() . ", " . EventSeat::select_fields() . ", " . User::select_fields('managers');
 }