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

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

updates to the database system. ao New file structure

File size: 4.6 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        $sUserID = "Creator";
35
36        $this->surveyRDFWriter->setUserData($sUserID);
37
38        $qNumber = 1;
39        while (isset($survey['questionTitle'.$qNumber]))
40        {
41            $qTitle = $survey['questionTitle'.$qNumber];
42            $qDescription = $survey['questionDescription'.$qNumber];
43            $qType = $survey['questionType'.$qNumber];
44            if (isset($survey['questionID'.$qNumber]))
45                $qID = $survey['questionID'.$qNumber];
46            else
47                $qID = md5( uniqid(rand(), true) );
48
49            $qAnswers = array();
50            $aNumber = 1;
51            while (isset($survey['q'.$qNumber.'ans'.$aNumber]))
52            {
53                $aArray = array();
54                $aArray['Title'] = 'q'.$qNumber.'ans'.$aNumber;
55                $aArray['Description'] = $survey['q'.$qNumber.'ans'.$aNumber];
56                $qAnswers[] = $aArray;
57
58                $aNumber++;
59            }
60
61            $this->surveyRDFWriter->addQuestion($qTitle,$qDescription,$qType,$qID,$qAnswers);
62
63            $qNumber++;
64        }
65
66        $this->surveyRDFWriter->saveSurvey();
67    }
68
69    public function getSurveyInfo()
70    {
71        $surveyInfo = array();
72
73        $resultSurvey = $this->surveyRDFReader->getSurveyInfo();
74
75        $surveyInfo['surveyID'] = substr($resultSurvey[0][0]['?uid'],9,strlen($resultSurvey[0][0]['?uid'])-11);
76        $surveyInfo['surveyTitle'] = substr($resultSurvey[0][0]['?title'],9,strlen($resultSurvey[0][0]['?title'])-11);
77        $surveyInfo['surveyDescription'] = substr($resultSurvey[0][0]['?description'],9,strlen($resultSurvey[0][0]['?description'])-11);
78        $surveyInfo['surveyCreator'] = substr($resultSurvey[0][0]['?creator'],9,strlen($resultSurvey[0][0]['?creator'])-11);
79
80        for($qNumber = 1;$qNumber<=sizeof($resultSurvey[1][0]);$qNumber++)
81        {
82            $surveyInfo['questionID'.$qNumber] = substr($resultSurvey[1][3][$qNumber-1]['?questionID'],9,strlen($resultSurvey[1][3][$qNumber-1]['?questionID'])-11);
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
87            $resultAnswers = $this->surveyRDFReader->readSurveyAnswers($surveyInfo['questionID'.$qNumber]);
88
89            if ($resultAnswers != null)
90            {
91                for($aNumber = 1;$aNumber<=sizeof($resultAnswers);$aNumber++)
92                {
93                    $surveyInfo['q'.$qNumber.'ans'.$aNumber] = substr($resultAnswers[$aNumber-1]['?answerDescription'],9,strlen($resultAnswers[$aNumber-1]['?answerDescription'])-11);
94                }
95            }
96        }
97
98        return $surveyInfo;
99    }
100
101    public function getExistingSurveys()
102    {
103        $surveyIDs = array();
104        $surveys = array();
105
106        if($handle = opendir('data/surveys/'))
107        {
108            while (false !== ($file = readdir($handle))) {
109                if(strstr($file, 'survey_') && strstr($file, '.rdf'))
110                    $surveyIDs[] = substr($file,7,strlen($file)-11);
111            }
112        }
113
114        foreach($surveyIDs as $surveyID)
115        {
116            $surveyTitle = $this->surveyRDFReader->getSurveyTitleByID($surveyID);
117            $surveys[$surveyID] = substr($surveyTitle[0]['?title'],9,strlen($surveyTitle[0]['?title'])-11);
118        }
119
120        return $surveys;
121    }
122
123}
124?>
Note: See TracBrowser for help on using the repository browser.