public function placeOrder(SS_HTTPRequest $request) { $eventbrite_event_header = $request->getHeader('X-Eventbrite-Event'); if (!$eventbrite_event_header) { return $this->httpError(403); } if ($eventbrite_event_header !== 'order.placed') { return $this->httpError(403); } if (!$this->isJson()) { return $this->httpError(403); } $json_request = $this->getJsonRequest(); if (!isset($json_request['config']) || !isset($json_request['api_url'])) { return $this->httpError(403); } $config = $json_request['config']; if (!isset($config['action']) || $config['action'] !== 'order.placed') { return $this->httpError(403); } $current_local_url = Controller::join_links(Director::absoluteBaseURL(), $request->getURL()); if (!isset($config['endpoint_url']) || $config['endpoint_url'] !== $current_local_url) { return $this->httpError(403); } try { $this->manager->registerEvent('ORDER_PLACED', $json_request['api_url']); } catch (Exception $ex) { SS_Log::log($ex->getMessage(), SS_Log::ERR); return $this->httpError(500); } return true; }
public function saveSummitAttendeeInfo($data, Form $form) { if ($current_member = Member::currentUser()) { $attendee = $current_member->getCurrentSummitAttendee(); if (!$attendee && !isset($data['SelectedAttendee'])) { try { if (Session::get('attendees')) { // already retrieved data $form->sessionMessage('Please select an attendee', "bad"); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } $attendees = $this->manager->getOrderAttendees($data['ExternalOrderId']); Session::set('attendees', $attendees); Session::set('ExternalOrderId', $data['ExternalOrderId']); Session::set('SharedContactInfo', $data['SharedContactInfo']); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } catch (InvalidEventbriteOrderStatusException $ex1) { Session::clear('attendees'); Session::clear('ExternalOrderId'); Session::clear('SharedContactInfo'); $form->sessionMessage('Current order was cancelled, please try with another one!', "bad"); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } } if ($attendee) { return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } if (isset($data['SelectedAttendee'])) { try { // register attendee with current member $attendees = Session::get('attendees'); $external_order_id = Session::get('ExternalOrderId'); $external_attendee_id = $data['SelectedAttendee']; $selected_attendee_data = $attendees[$external_attendee_id]; $external_event_id = $selected_attendee_data['event_id']; $external_ticket_class_id = $selected_attendee_data['ticket_class_id']; $created = $selected_attendee_data['created']; $this->manager->registerAttendee($current_member, $external_event_id, $external_order_id, $external_attendee_id, $external_ticket_class_id, $created, $data['SharedContactInfo']); Session::clear('attendees'); Session::clear('ExternalOrderId'); Session::clear('SharedContactInfo'); $form->sessionMessage('Your registration request was successfully processed!', "good"); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } catch (Exception $ex) { Session::clear('attendees'); Session::clear('ExternalOrderId'); Session::clear('SharedContactInfo'); SS_Log::log($ex->getMessage(), SS_Log::ERR); $form->sessionMessage('Your request can not be processed, please contact your administrator', "bad"); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } } } return $this->owner->httpError(403); }
public function saveSummitAttendeeInfo($data, Form $form) { if ($current_member = Member::currentUser()) { $attendee = $current_member->getCurrentSummitAttendee(); if ($attendee) { return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } if (!isset($data['SelectedAttendee'])) { // if we dont selected an attendee ... try { if (Session::get('attendees')) { // already retrieved data (we have a valid order # with attendees) $form->sessionMessage('Please select an attendee', "bad"); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } // get order info $order_id = isset($data['ExternalOrderId']) ? $data['ExternalOrderId'] : null; if (intval($order_id) <= 0) { $form->sessionMessage('invalid order #', "bad"); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } $attendees = $this->manager->getOrderAttendees($order_id); // store data Session::set('attendees', $attendees); Session::set('ExternalOrderId', $data['ExternalOrderId']); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } catch (InvalidEventbriteOrderStatusException $ex1) { Session::clear('attendees'); Session::clear('ExternalOrderId'); $form->sessionMessage('Current order was cancelled, please try with another one!', "bad"); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } catch (NotFoundEntityException $ex2) { Session::clear('attendees'); Session::clear('ExternalOrderId'); $form->sessionMessage('Your request can not be processed, please contact your administrator', "bad"); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } catch (Exception $ex3) { Session::clear('attendees'); Session::clear('ExternalOrderId'); $form->sessionMessage('Your request can not be processed, please contact your administrator', "bad"); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } } else { try { // register attendee with current member $attendees = Session::get('attendees'); $external_order_id = Session::get('ExternalOrderId'); $external_attendee_id = $data['SelectedAttendee']; if (!isset($attendees[$external_attendee_id])) { throw new InvalidArgumentException(); } $selected_attendee_data = $attendees[$external_attendee_id]; $external_event_id = $selected_attendee_data['event_id']; $external_ticket_class_id = $selected_attendee_data['ticket_class_id']; $created = $selected_attendee_data['created']; $this->manager->registerAttendee($current_member, $external_event_id, $external_order_id, $external_attendee_id, $external_ticket_class_id, $created, false); Session::clear('attendees'); Session::clear('ExternalOrderId'); $form->sessionMessage('Your registration request was successfully processed!', "good"); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } catch (Exception $ex) { Session::clear('attendees'); Session::clear('ExternalOrderId'); SS_Log::log($ex->getMessage(), SS_Log::ERR); $form->sessionMessage('Your request can not be processed, please contact your administrator', "bad"); return $this->owner->redirect($this->owner->Link('attendeeInfoRegistration')); } } } return $this->owner->httpError(403); }