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

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

Application save load from db should work. styles not part of save yet.
More work on session save load

File size: 4.9 KB
RevLine 
[26]1<?php
[40]2// Survey database interface class as intermediate for storing data from the site to the RDF database
[44]3require_once 'rdfConstants.php';
[26]4
5// Include RAP Library to write RDF files
6include(RDFAPI_INCLUDE_DIR . "RDFAPI.php");
7
8
9
10class SurveyDatabaseInterface
[28]11{               
[62]12    protected $surveyRDFWriter;
13    protected $surveyRDFReader;
[26]14
[62]15
[40]16    public function __construct($surveyID)
[26]17    {
[62]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);
[26]25    }
26
[62]27    public function setSurveyInfo($survey)
28    {
29        $sTitle = $survey['surveyTitle'];
30        $sDescription = $survey['surveyDescription'];
[26]31
[62]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    }
[80]122   
123    public function getSurveyTitleByID($surveyID)
124    {
125        $surveyTitleLiteral = $this->surveyRDFReader->getSurveyTitleByID($surveyID);
126        $surveyTitle = substr($surveyTitle[0]['?title'],9,strlen($surveyTitle[0]['?title'])-11);
127       
128        return $surveyTitle;
129    }
[62]130
[26]131}
132?>
Note: See TracBrowser for help on using the repository browser.