source: Dev/trunk/classes/SurveyCreationDatabaseInterface.php @ 83

Last change on this file since 83 was 83, checked in by basvannuland, 14 years ago

start with answer saving

File size: 5.9 KB
RevLine 
[26]1<?php
[40]2// Survey database interface class as intermediate for storing data from the site to the RDF database
[44]3require_once 'rdfConstants.php';
[26]4
5// Include RAP Library to write RDF files
6include(RDFAPI_INCLUDE_DIR . "RDFAPI.php");
7
8
9
[83]10class SurveyCreationDatabaseInterface
[28]11{               
[62]12    protected $surveyRDFWriter;
13    protected $surveyRDFReader;
[82]14    protected $questionRDFWriter;
15    protected $questionRDFReader;
[26]16
[40]17    public function __construct($surveyID)
[26]18    {
[62]19        if($surveyID == null)
20            $surveyUID = md5( uniqid(rand(), true) );
21        else
22            $surveyUID = $surveyID;
23
24        $this->surveyRDFWriter = new SurveyRDFWriter($surveyUID);
25        $this->surveyRDFReader = new SurveyRDFReader($surveyUID);
[82]26        $this->questionRDFWriter = new QuestionRDFWriter();
27        $this->questionRDFReader = new QuestionRDFReader();
[26]28    }
29
[82]30    public function setSurveyInfo($survey,$user)
[62]31    {
32        $sTitle = $survey['surveyTitle'];
33        $sDescription = $survey['surveyDescription'];
[26]34
[62]35        $this->surveyRDFWriter->createSurvey($sTitle,$sDescription);
36
[82]37        $sUserID = $user['username'];
[62]38
39        $this->surveyRDFWriter->setUserData($sUserID);
40
41        $qNumber = 1;
42        while (isset($survey['questionTitle'.$qNumber]))
43        {
44            $qTitle = $survey['questionTitle'.$qNumber];
45            $qDescription = $survey['questionDescription'.$qNumber];
46            $qType = $survey['questionType'.$qNumber];
47            if (isset($survey['questionID'.$qNumber]))
48                $qID = $survey['questionID'.$qNumber];
49            else
50                $qID = md5( uniqid(rand(), true) );
51
52            $qAnswers = array();
53            $aNumber = 1;
54            while (isset($survey['q'.$qNumber.'ans'.$aNumber]))
55            {
56                $aArray = array();
57                $aArray['Title'] = 'q'.$qNumber.'ans'.$aNumber;
58                $aArray['Description'] = $survey['q'.$qNumber.'ans'.$aNumber];
59                $qAnswers[] = $aArray;
60
61                $aNumber++;
62            }
63
[82]64            if(!$this->checkQuestionIDExists($qID))
65            {
66                $this->questionRDFWriter->createQuestion($qTitle,$qDescription,$qType,$qID,"null","null",$qAnswers);
67            }           
68            $this->surveyRDFWriter->addQuestion($qID);
[62]69
70            $qNumber++;
71        }
72
73        $this->surveyRDFWriter->saveSurvey();
[82]74        $this->questionRDFWriter->saveQuestions();
[62]75    }
76
77    public function getSurveyInfo()
78    {
79        $surveyInfo = array();
80
[82]81        $this->questionRDFReader->loadQuestions();
82       
[62]83        $resultSurvey = $this->surveyRDFReader->getSurveyInfo();
[82]84       
85        $surveyInfo['surveyID'] = $resultSurvey['info'][0]['?uid']->label;
86        $surveyInfo['surveyTitle'] = $resultSurvey['info'][0]['?title']->label;
87        $surveyInfo['surveyDescription'] = $resultSurvey['info'][0]['?description']->label;
88        $surveyInfo['surveyCreator'] = $resultSurvey['info'][0]['?creator']->label;
89        $surveyQuestionIDs = $resultSurvey['questionIDs'];
90       
91        if($surveyQuestionIDs != false)
92        {
93            $qNumber = 1;
94            foreach($surveyQuestionIDs as $qID)
95            {
96                $questionID = $qID['?questionID']->label;
97                $surveyInfo['questionID'.$qNumber] = $questionID;
[62]98
[82]99                $questionTitleObject = $this->questionRDFReader->readQuestionTitle($questionID);
100                $surveyInfo['questionTitle'.$qNumber] = $questionTitleObject[0]['?questionTitle']->label;
[62]101
[82]102                $questionDescriptionObject = $this->questionRDFReader->readQuestionDescription($questionID);
103                $surveyInfo['questionDescription'.$qNumber] = $questionDescriptionObject[0]['?questionDescription']->label;
[62]104
[82]105                $questionTypeObject = $this->questionRDFReader->readQuestionType($questionID);
106                $surveyInfo['questionType'.$qNumber] = $questionTypeObject[0]['?questionType']->label;
[62]107
[82]108                $resultAnswers = $this->questionRDFReader->readQuestionAnswers($questionID);
109
110                if ($resultAnswers != null)
[62]111                {
[82]112                    for($aNumber = 1;$aNumber<=sizeof($resultAnswers);$aNumber++)
113                    {
114                        $surveyInfo['q'.$qNumber.'ans'.$aNumber] = $resultAnswers[$aNumber-1]['?answerDescription']->label;
115                    }
[62]116                }
[82]117                $resultAnswers = null;
118                $qNumber++;
[62]119            }
120        }
[82]121       
[62]122        return $surveyInfo;
123    }
124
125    public function getExistingSurveys()
126    {
127        $surveyIDs = array();
128        $surveys = array();
129
130        if($handle = opendir('data/surveys/'))
131        {
132            while (false !== ($file = readdir($handle))) {
133                if(strstr($file, 'survey_') && strstr($file, '.rdf'))
134                    $surveyIDs[] = substr($file,7,strlen($file)-11);
135            }
136        }
[82]137       
[62]138        foreach($surveyIDs as $surveyID)
139        {
140            $surveyTitle = $this->surveyRDFReader->getSurveyTitleByID($surveyID);
[82]141            $surveys[$surveyID] = $surveyTitle[0]['?title']->label;
[62]142        }
143
144        return $surveys;
145    }
[80]146   
147    public function getSurveyTitleByID($surveyID)
148    {
149        $surveyTitleLiteral = $this->surveyRDFReader->getSurveyTitleByID($surveyID);
[82]150        $surveyTitle = $surveyTitle[0]['?title']->label;
[80]151       
152        return $surveyTitle;
153    }
[62]154
[82]155   
156   
157    public function checkQuestionIDExists($qID)
158    {
159        $result = false;
160
161        $questionIDs = $this->questionRDFReader->readQuestionIDs();
162       
163        if ($questionIDs != null)
164        {
165            foreach($questionIDs as $questionID)
166            {
167                $id = $questionID['?questionID']->label;
168                if(!strcmp($id ,$qID))
169                {
170                    $result = true;
171                    break;
172                }
173            }
174        }
175
176        return $result;
177    }
[26]178}
179?>
Note: See TracBrowser for help on using the repository browser.