public function handleAddDefaultSummitTypes($grid, $request, $data = null) { $summit_id = intval($request->param('ID')); if ($summit_id > 0 && ($summit = Summit::get()->byID($summit_id))) { Summit::seedSummitTypes($summit_id); } }
/** * Implement this method in the task subclass to * execute via the TaskRunner */ public function run($request) { set_time_limit(0); $summit_id = intval($request->getVar('summit_id')); if (empty($summit_id)) { throw new InvalidArgumentException('missing summit_id param!'); } $summit_external_id = intval($request->getVar('summit_external_id')); if (empty($summit_external_id)) { throw new InvalidArgumentException('missing summit_external_id param!'); } // get ticket types ... $summit = Summit::get()->byID($summit_id); if (is_null($summit)) { throw new InvalidArgumentException("non existent summit!"); } $summit->ExternalEventId = $summit_external_id; $summit->write(); Summit::seedBasicEventTypes($summit_id); Summit::seedSummitTypes($summit_id); $client = new GuzzleHttp\Client(); $query = array('token' => EVENTBRITE_PERSONAL_OAUTH2_TOKEN); $response = $client->get(sprintf("https://www.eventbriteapi.com/v3/events/%s/ticket_classes/", $summit_external_id), array('query' => $query)); if ($response->getStatusCode() !== 200) { throw new Exception('invalid status code!'); } $content_type = $response->getHeader('content-type'); if (empty($content_type)) { throw new Exception('invalid content type!'); } if ($content_type !== 'application/json') { throw new Exception('invalid content type!'); } $json = $response->getBody()->getContents(); $ticket_types = json_decode($json, true); $ticket_types = $ticket_types['ticket_classes']; foreach ($ticket_types as $t) { $new_ticket = new SummitTicketType(); $new_ticket->ExternalId = $t["id"]; if (SummitTicketType::get()->filter(array('SummitID' => $summit_id, 'ExternalId' => $new_ticket->ExternalId))->count() > 0) { continue; } $new_ticket->Name = $t["name"]; $new_ticket->Description = $t["description"]; $new_ticket->SummitID = $summit_id; $new_ticket->write(); } }