/** * Creates context-question relations for create-questionnaire request * * @param int $questionnaireId Questionnaire ID (intern) * @param array $teacherArray Array of teacher ID's (intern) * * @return array * * @throws Indicate2_Exception */ public function createQuestionnaireQuestionContexts($questionnaireId, $teacherArray, $blockId) { try { $questionPrefix = getQuestionPrefix(); $contextPrefix = getContextPrefix(); $questionnairePrefix = getQuestionnairePrefix(); $teacherPrefix = getTeacherPrefix(); $questionnaireQuestionContexts = array(); // get models $questionnaireModel = new Questionnaire(); $questionnaireContextQuestionModel = new Questionnaire_Context_Question(); $contextModel = new Context(); $questionModel = new Question(); $teacherBlock = new Teacher_Block(); $questionnaireData = $questionnaireContextQuestionModel->fetchAll($questionnairePrefix . 'id = ' . $questionnaireId, array($contextPrefix . 'order ASC', $questionPrefix . 'order ASC')); if ($questionnaireData->count() != 0) { $questionnaireData = $questionnaireData->toArray(); } else { $questionnaireData = array(); } $addIndex4PersonContext = 0; $isPersonContextAdd = false; foreach ($questionnaireData as $value) { $questionData = $questionModel->getData($value[$questionPrefix . 'id']); // set context if ($contextModel->isPersonContext(intval($value[$contextPrefix . 'id']))) { if (!$isPersonContextAdd) { // create personcontext from teacher foreach ($teacherArray as $teacherId) { // increase index for context order $questionnaireQuestionContexts[intval(intval($value[$contextPrefix . 'order']) - 1 + $addIndex4PersonContext)]['ContextId'] = $this->getIndicate2PersonContextId($teacherId); $teacherIds[$addIndex4PersonContext] = $teacherId; $addIndex4PersonContext++; } $addIndex4PersonContext--; // set personcontext-created flag $isPersonContextAdd = true; } for ($i = 0; $i <= $addIndex4PersonContext; $i++) { $introText = $questionModel->isPersonRatingByData($questionData) ? $teacherBlock->getTeacherNote($teacherIds[$i], $blockId) : null; // add questions for all personcontexts $questionnaireQuestionContexts[intval(intval($value[$contextPrefix . 'order']) - 1 + $i)]['QuestionnaireQuestions']['QuestionnaireQuestion'][] = array('QuestionId' => $this->getIndicate2QuestionId($value[$questionPrefix . 'id']), 'InfoText' => $questionData[$questionPrefix . 'infotext'], 'IntroText' => $introText); } } else { $questionnaireQuestionContexts[intval(intval($value[$contextPrefix . 'order']) - 1 + $addIndex4PersonContext)]['ContextId'] = $this->getIndicate2ContextId($value[$contextPrefix . 'id']); $questionnaireQuestionContexts[intval(intval($value[$contextPrefix . 'order']) - 1 + $addIndex4PersonContext)]['QuestionnaireQuestions']['QuestionnaireQuestion'][] = array('QuestionId' => $this->getIndicate2QuestionId($value[$questionPrefix . 'id']), 'InfoText' => $questionData[$questionPrefix . 'infotext'], 'IntroText' => null); } } return $questionnaireQuestionContexts; } catch (Exception $e) { throw new Indicate2_Exception($e->getMessage()); } }