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

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

new file structure. surveys/users/application DBs in data folder

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