public function getExtraQuestionsForPresentation(SS_HTTPRequest $request) { try { $category_id = intval($request->param('CAT_ID')); $presentation_id = intval($request->param('PRES_ID')); $presentation = null; $summit_id = intval($request->param('SUMMIT_ID')); $summit = $this->summit_repository->getById($summit_id); if (is_null($summit)) { throw new NotFoundEntityException('Summit', sprintf(' id %s', $summit_id)); } if ($presentation_id) { $presentation = Presentation::get_by_id('Presentation', $presentation_id); } $category = PresentationCategory::get_by_id('PresentationCategory', $category_id); $extra_questions = $category->ExtraQuestions(); $question_map = array(); foreach ($extra_questions as $q) { //builder $type = $q->Type(); $builder_class = $type . 'QuestionTemplateUIBuilder'; $builder = Injector::inst()->create($builder_class); $answer = $presentation ? $presentation->findAnswerByQuestion($q) : null; $field = $builder->build($q, $answer); $field->addHolderClass('track-question'); $question_map[] = array('Name' => $q->Name, 'InsertAfter' => $q->AfterQuestion, 'Html' => strval($field->FieldHolder())); } return $this->ok($question_map); } catch (NotFoundEntityException $ex2) { SS_Log::log($ex2->getMessage(), SS_Log::WARN); return $this->notFound($ex2->getMessage()); } catch (Exception $ex) { SS_Log::log($ex->getMessage(), SS_Log::ERR); return $ex->getMessage(); } }