source: Dev/trunk/classes/SurveyDatabaseInterface.php @ 36

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

new classes for survey answers writing and reading
added idtags as part of info

File size: 3.8 KB
RevLine 
[26]1<?php
2// Survey class as intermediate for storing data from the site to the RDF database
3require 'rdfConstants.php';
4
5// Include RAP Library to write RDF files
6define("RDFAPI_INCLUDE_DIR", "rdfapi/");
7include(RDFAPI_INCLUDE_DIR . "RDFAPI.php");
8
9
10
11class SurveyDatabaseInterface
[28]12{               
[26]13        protected $surveyRDFWriter;
14        protected $surveyRDFReader;
15 
16
[28]17    public function __construct($surveyID=null)
[26]18    {
[28]19                if($surveyID == null)
20                        $surveyUID = md5( uniqid(rand(), true) );
21                else
22                        $surveyUID = $surveyID;
23                                       
[26]24                $this->surveyRDFWriter = new SurveyRDFWriter($surveyUID);
25                $this->surveyRDFReader = new SurveyRDFReader($surveyUID);
26    }
27       
28        public function setSurveyInfo($survey)
29        {
30                $sTitle = $survey['surveyTitle'];
31                $sDescription = $survey['surveyDescription'];
32               
33                $this->surveyRDFWriter->createSurvey($sTitle,$sDescription);
34               
35                $qNumber = 1;
36                while (isset($survey['questionTitle'.$qNumber]))
37                {
38                        $qTitle = $survey['questionTitle'.$qNumber];
39                        $qDescription = $survey['questionDescription'.$qNumber];
40                        $qType = $survey['questionType'.$qNumber];
[31]41                        if (isset($survey['questionID'.$qNumber]))
42                                $qID = $survey['questionID'.$qNumber];
43                        else
44                                $qID = md5( uniqid(rand(), true) );
[26]45                       
46                        $qAnswers = array();
47                        $aNumber = 1;
48                        while (isset($survey['q'.$qNumber.'ans'.$aNumber]))
49                        {
50                                $aArray = array();
51                                $aArray['Title'] = $survey['q'.$qNumber.'ans'.$aNumber];
52                                $aArray['Description'] = 'answerDescription'.$aNumber;
53                                $qAnswers[] = $aArray;
54                               
55                                $aNumber++;
56                        }
57                       
[31]58                        $this->surveyRDFWriter->addQuestion($qTitle,$qDescription,$qType,$qID,$qAnswers);
[26]59                       
60                        $qNumber++;
61                }
62
63                $this->surveyRDFWriter->saveSurvey();
64        }
65       
66        public function getSurveyInfo()
67        {
68                $surveyInfo = array();
69               
70                $resultSurvey = $this->surveyRDFReader->getSurveyInfo();
71               
[28]72                $surveyInfo['surveyID'] = substr($resultSurvey[0][0]['?uid'],9,strlen($resultSurvey[0][0]['?uid'])-11);
[26]73                $surveyInfo['surveyTitle'] = substr($resultSurvey[0][0]['?title'],9,strlen($resultSurvey[0][0]['?title'])-11);
74                $surveyInfo['surveyDescription'] = substr($resultSurvey[0][0]['?description'],9,strlen($resultSurvey[0][0]['?description'])-11);
75                                                                       
76                for($qNumber = 1;$qNumber<=sizeof($resultSurvey[1][0]);$qNumber++)
77                {
[31]78                        $surveyInfo['questionID'.$qNumber] = substr($resultSurvey[1][3][$qNumber-1]['?questionID'],9,strlen($resultSurvey[1][3][$qNumber-1]['?questionID'])-11);
[26]79                        $surveyInfo['questionTitle'.$qNumber] = substr($resultSurvey[1][0][$qNumber-1]['?questionTitle'],9,strlen($resultSurvey[1][0][$qNumber-1]['?questionTitle'])-11);
80                        $surveyInfo['questionDescription'.$qNumber] = substr($resultSurvey[1][1][$qNumber-1]['?questionDescription'],9,strlen($resultSurvey[1][1][$qNumber-1]['?questionDescription'])-11);
81                        $surveyInfo['questionType'.$qNumber] = substr($resultSurvey[1][2][$qNumber-1]['?questionType'],9,strlen($resultSurvey[1][2][$qNumber-1]['?questionType'])-11);
82                                               
[31]83                        $resultAnswers = $this->surveyRDFReader->readSurveyAnswers($surveyInfo['questionID'.$qNumber]);
84                                               
[26]85                        if ($resultAnswers != null)
86                        {
87                                for($aNumber = 1;$aNumber<=sizeof($resultAnswers);$aNumber++)
88                                {
89                                        $surveyInfo['q'.$qNumber.'ans'.$aNumber] = substr($resultAnswers[$aNumber-1]['?answerTitle'],9,strlen($resultAnswers[$aNumber-1]['?answerTitle'])-11);
90                                }
91                        }
92                }
[31]93               
[26]94                return $surveyInfo;
95        }
96
[31]97        public function getExistingSurveys()
98        {
99                $surveyIDs = array();
100                $surveys = array();
101       
102                if($handle = opendir('surveys/'))
103                {
104                        while (false !== ($file = readdir($handle))) {
105                                if(strstr($file, 'survey_'))
106                                        $surveyIDs[] = substr($file,0,strlen($file)-4);
107                        }
108                }
109               
110                foreach($surveyIDs as $surveyID)
111                {
112                        $surveyTitle = $this->surveyRDFReader->getSurveyTitleByID($surveyID);
113                        $surveys[$surveyID] = substr($surveyTitle[0]['?title'],9,strlen($surveyTitle[0]['?title'])-11);
114                }
115               
116                return $surveys;
117        }
[26]118}
119?>
Note: See TracBrowser for help on using the repository browser.