public function getSearchResults(SS_HTTPRequest $request) { $query_string = $request->getVars(); $summit_id = intval($request->param('SUMMIT_ID')); $term = isset($query_string['term']) ? Convert::raw2sql($query_string['term']) : null; $summit = null; if (intval($summit_id) > 0) { $summit = $this->summit_repository->getById(intval($summit_id)); } if (strtolower($summit_id) === 'current') { $summit = Summit::ActiveSummit(); } if (is_null($summit)) { return $this->notFound('summit not found!'); } $events = array(); $current_member = Member::currentUser(); $is_attendee = is_null($current_member) ? false : $current_member->isAttendee($summit->ID); foreach ($this->summitevent_repository->searchBySummitAndTerm($summit, $term) as $e) { $entry = array('id' => $e->ID, 'title' => $e->Title, 'description' => $e->Description, 'short_desc' => $e->ShortDescription, 'start_date' => date('Y-m-d', strtotime($e->StartDate)), 'start_datetime' => $e->StartDate, 'end_datetime' => $e->EndDate, 'start_time' => $e->StartTime, 'end_time' => $e->EndTime, 'allow_feedback' => $e->AllowFeedBack, 'location_id' => $e->LocationID, 'type_id' => $e->TypeID, 'sponsors_id' => array(), 'summit_types_id' => array(), 'category_group_ids' => array(), 'tags_id' => array(), 'own' => is_null($current_member) || !$is_attendee ? false : $current_member->isOnMySchedule($e->ID), 'favorite' => false, 'show' => true); foreach ($e->Tags() as $t) { array_push($entry['tags_id'], $t->ID); } foreach ($e->AllowedSummitTypes() as $t) { array_push($entry['summit_types_id'], $t->ID); } if ($e->isPresentation()) { if ($e->Category()) { foreach ($e->Category()->getCategoryGroups() as $group) { array_push($entry['category_group_ids'], $group->ID); } } } foreach ($e->Sponsors() as $e) { array_push($entry['sponsors_id'], $e->ID); } if ($e instanceof Presentation) { $speakers = array(); foreach ($e->Speakers() as $s) { array_push($speakers, $s->ID); } $entry['speakers_id'] = $speakers; $entry['moderator_id'] = $e->ModeratorID; $entry['track_id'] = $e->CategoryID; $entry['level'] = $e->Level; } array_push($events, $entry); } return $this->ok(array('events' => $events)); }