surveyRDFWriter = new SurveyRDFWriter($surveyUID); $this->surveyRDFReader = new SurveyRDFReader($surveyUID); $this->questionRDFWriter = new QuestionRDFWriter(); $this->questionRDFReader = new QuestionRDFReader(); } public function setSurveyInfo($survey,$user) { $sTitle = $survey['surveyTitle']; $sDescription = $survey['surveyDescription']; $this->surveyRDFWriter->createSurvey($sTitle,$sDescription); $sUserID = $user['username']; $this->surveyRDFWriter->setUserData($sUserID); $qNumber = 1; while (isset($survey['questionCode'.$qNumber])) { $qCode = $survey['questionCode'.$qNumber]; $this->surveyRDFWriter->addQuestion($qCode); $qNumber++; } $this->surveyRDFWriter->saveSurvey(); $this->questionRDFWriter->saveQuestions(); } public function saveQuestion($questionInfo) { $qCode = $question['questionCode'.$qNumber]; $qTitle = $question['questionTitle'.$qNumber]; $qDescription = $question['questionDescription'.$qNumber]; $qType = $question['questionType'.$qNumber]; $qAnswers = array(); $aNumber = 1; while (isset($question['ans'.$aNumber])) { $qAnswers[] = $question['ans'.$aNumber]; $aNumber++; } if($this->checkQuestionCodeExists($qCode)) { return 'Question code (' . $qCode . ') already in use. Please try a new code.'; } else { $this->questionRDFWriter->createQuestion($qTitle,$qDescription,$qType,$qCode,"null",$qAnswers); return 'Question saved'; } } public function getSurveyInfo() { $surveyInfo = array(); $this->questionRDFReader->loadQuestions(); $resultSurvey = $this->surveyRDFReader->getSurveyInfo(); $surveyInfo['surveyID'] = $resultSurvey['info'][0]['?uid']->label; $surveyInfo['surveyTitle'] = $resultSurvey['info'][0]['?title']->label; $surveyInfo['surveyDescription'] = $resultSurvey['info'][0]['?description']->label; $surveyInfo['surveyCreator'] = $resultSurvey['info'][0]['?creator']->label; $surveyQuestionIDs = $resultSurvey['questionIDs']; if($surveyQuestionIDs != false) { $qNumber = 1; foreach($surveyQuestionIDs as $qID) { $questionID = $qID['?questionID']->label; $surveyInfo['questionID'.$qNumber] = $questionID; $questionTitleObject = $this->questionRDFReader->readQuestionTitle($questionID); $surveyInfo['questionTitle'.$qNumber] = $questionTitleObject[0]['?questionTitle']->label; $questionDescriptionObject = $this->questionRDFReader->readQuestionDescription($questionID); $surveyInfo['questionDescription'.$qNumber] = $questionDescriptionObject[0]['?questionDescription']->label; $questionTypeObject = $this->questionRDFReader->readQuestionType($questionID); $surveyInfo['questionType'.$qNumber] = $questionTypeObject[0]['?questionType']->label; $resultAnswers = $this->questionRDFReader->readQuestionAnswers($questionID); if ($resultAnswers != null) { for($aNumber = 1;$aNumber<=sizeof($resultAnswers);$aNumber++) { $surveyInfo['q'.$qNumber.'ans'.$aNumber] = $resultAnswers[$aNumber-1]['?answerDescription']->label; } } $resultAnswers = null; $qNumber++; } } return $surveyInfo; } public function getExistingSurveys() { $surveyIDs = array(); $surveys = array(); if($handle = opendir('data/surveys/')) { while (false !== ($file = readdir($handle))) { if(strstr($file, 'survey_') && strstr($file, '.rdf')) $surveyIDs[] = substr($file,7,strlen($file)-11); } } foreach($surveyIDs as $surveyID) { $surveyTitle = $this->surveyRDFReader->getSurveyTitleByID($surveyID); $surveys[$surveyID] = $surveyTitle[0]['?title']->label; } return $surveys; } public function getExistingQuestions() { $questions = array(); $resultQuestions = $this->questionRDFReader->readQuestionCodes(); foreach ($resultQuestions as $questionCodeObject) { $questionCode = $questionCodeObject[0]['?questionCode']->label; $questionTitle = $this->questionRDFReader->readQuestionTitle($questionCode); $questions[$questionCode] = $questionTitle[0]['?questionTitle']->label; } return $questions; } public function getSurveyTitleByID($surveyID) { $surveyTitleLiteral = $this->surveyRDFReader->getSurveyTitleByID($surveyID); $surveyTitle = $surveyTitle[0]['?title']->label; return $surveyTitle; } public function checkQuestionCodeExists($qCode) { $result = false; $questionCodes = $this->questionRDFReader->readQuestionCodes(); if ($questionCodes != null) { foreach($questionCodes as $questionCode) { $code = $questionCode['?questionCode']->label; if(!strcmp($code ,$qCode)) { $result = true; break; } } } return $result; } } ?>