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

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

made some changes to way rdf database is constructed.
Made an interface class to write to db and read from db.
interface returns array with survey information in the same way it gets it from the surveyCreationTool.
TODO, override existing survey when it is modified.

File size: 3.2 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
12{       
13    protected static $instance;
14       
15        protected $surveyRDFWriter;
16        protected $surveyRDFReader;
17 
18
19    protected function __construct()
20    {
21        //protected to prevent direct instantiation
22                $surveyUID = md5( uniqid(rand(), true) );
23               
24                $this->surveyRDFWriter = new SurveyRDFWriter($surveyUID);
25                $this->surveyRDFReader = new SurveyRDFReader($surveyUID);
26    }
27
28        public static function getInstance()
29    {
30        if (!self::$instance)
31        {
32            self::$instance = new SurveyDatabaseInterface();
33        }
34
35        return self::$instance;
36    }
37       
38        public function setSurveyInfo($survey)
39        {
40                $sTitle = $survey['surveyTitle'];
41                $sDescription = $survey['surveyDescription'];
42               
43                $this->surveyRDFWriter->createSurvey($sTitle,$sDescription);
44               
45                $qNumber = 1;
46                while (isset($survey['questionTitle'.$qNumber]))
47                {
48                        $qTitle = $survey['questionTitle'.$qNumber];
49                        $qDescription = $survey['questionDescription'.$qNumber];
50                        $qType = $survey['questionType'.$qNumber];
51                       
52                        $qAnswers = array();
53                        $aNumber = 1;
54                        while (isset($survey['q'.$qNumber.'ans'.$aNumber]))
55                        {
56                                $aArray = array();
57                                $aArray['Title'] = $survey['q'.$qNumber.'ans'.$aNumber];
58                                $aArray['Description'] = 'answerDescription'.$aNumber;
59                                $qAnswers[] = $aArray;
60                               
61                                $aNumber++;
62                        }
63                       
64                        $this->surveyRDFWriter->addQuestion($qTitle,$qDescription,$qType,$qAnswers);
65                       
66                        $qNumber++;
67                }
68
69                $this->surveyRDFWriter->saveSurvey();
70        }
71       
72        public function getSurveyInfo()
73        {
74                $surveyInfo = array();
75               
76                $resultSurvey = $this->surveyRDFReader->getSurveyInfo();
77               
78                $surveyInfo['surveyTitle'] = substr($resultSurvey[0][0]['?title'],9,strlen($resultSurvey[0][0]['?title'])-11);
79                $surveyInfo['surveyDescription'] = substr($resultSurvey[0][0]['?description'],9,strlen($resultSurvey[0][0]['?description'])-11);
80                                                                       
81                for($qNumber = 1;$qNumber<=sizeof($resultSurvey[1][0]);$qNumber++)
82                {
83                        $surveyInfo['questionTitle'.$qNumber] = substr($resultSurvey[1][0][$qNumber-1]['?questionTitle'],9,strlen($resultSurvey[1][0][$qNumber-1]['?questionTitle'])-11);
84                        $surveyInfo['questionDescription'.$qNumber] = substr($resultSurvey[1][1][$qNumber-1]['?questionDescription'],9,strlen($resultSurvey[1][1][$qNumber-1]['?questionDescription'])-11);
85                        $surveyInfo['questionType'.$qNumber] = substr($resultSurvey[1][2][$qNumber-1]['?questionType'],9,strlen($resultSurvey[1][2][$qNumber-1]['?questionType'])-11);
86                        $questionID = substr($resultSurvey[1][3][$qNumber-1]['?questionID'],9,strlen($resultSurvey[1][3][$qNumber-1]['?questionID'])-11);
87                       
88                        $resultAnswers = $this->surveyRDFReader->readSurveyAnswers($questionID);
89                                               
90                        if ($resultAnswers != null)
91                        {
92                                for($aNumber = 1;$aNumber<=sizeof($resultAnswers);$aNumber++)
93                                {
94                                        $surveyInfo['q'.$qNumber.'ans'.$aNumber] = substr($resultAnswers[$aNumber-1]['?answerTitle'],9,strlen($resultAnswers[$aNumber-1]['?answerTitle'])-11);
95                                }
96                        }
97                }
98                               
99                return $surveyInfo;
100        }
101
102}
103?>
Note: See TracBrowser for help on using the repository browser.