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

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

added database readers and writers for application info and facilitator info

possible to store survey application and creator info

File size: 3.9 KB
RevLine 
[26]1<?php
[40]2// Survey database interface class as intermediate for storing data from the site to the RDF database
[26]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
[40]17    public function __construct($surveyID)
[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_'))
[40]106                                        $surveyIDs[] = substr($file,7,strlen($file)-11);
[31]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        }
[40]118       
[26]119}
120?>
Note: See TracBrowser for help on using the repository browser.