Backing out Survey for now

This commit is contained in:
Graham Knop 2008-11-12 02:40:27 +00:00
parent 4c546d312f
commit 151e705286
25 changed files with 2519 additions and 3365 deletions

View file

@ -8,8 +8,6 @@
- The Syndicated Content asset was rewritten, and now uses 35% less memory
and is 400% faster.
- fixed #9025: Testing function of UsersOnline macro fails.
- Brand new Survey system. Make sure to export your old results as they will
not be imported, only the surveys themselves.
- fixed #9028: Thingy fails when setting values containing single quotes
- fixed #9047: Unable to reorder DataForm tabs
- added: Delete columns from DataTable

View file

@ -19,10 +19,6 @@ save you many hours of grief.
* You must upgrade to 7.6.2 before you can upgrade to 7.6.3.
* The Survey system has been completely updated. Please make sure you
create full backups of your survey results and export them as needed.
Results will not be imported into the new Survey system. Your old surveys
will be imported into the new survey system.
7.6.1
--------------------------------------------------------------------

View file

@ -33,7 +33,6 @@ createLastUpdatedField($session);
createFieldShowOnline($session);
upgradeSyndicatedContentTemplates($session);
removeCaseInsensitiveConfig($session);
migrateSurvey($session);
finish($session); # this line required
@ -48,193 +47,6 @@ sub removeCaseInsensitiveConfig {
print " Done.\n" unless $quiet;
}
#----------------------------------------------------------------------------
# This method migrates the the old survey system and existing surveys to the new survey system
#
#
sub migrateSurvey{
my $session = shift;
print "Migrating surveys to new survey system..." unless $quiet;
_moveOldSurveyTables($session);
_addSurveyTables($session);
print "\n";
my $surveys = $session->db->buildArrayRefOfHashRefs(
"SELECT * FROM Survey_old s
where s.revisionDate = (select max(s1.revisionDate) from Survey_old s1 where s1.assetId = s.assetId)"
);
for my $survey(@$surveys){
#move over survey
$session->db->write("insert into Survey
values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
[
$$survey{groupToTakeSurvey},$$survey{groupToViewReports},'PBtmpl0000000000000064','PBtmpl0000000000000063',$$survey{maxResponsesPerUser},
$$survey{gradebookTemplateId},$$survey{assetId},'PBtmpl0000000000000061',$$survey{revisionDate},'GRUNFctldUgop-qRLuo_DA','AjhlNO3wZvN5k4i4qioWcg',
'wAc4azJViVTpo-2NYOXWvg', '1oBRscNIcFOI-pETrCOspA','d8jMMMRddSQ7twP4l1ZSIw','CxMpE_UPauZA3p8jdrOABw','','{}'
]
);
my $sjson = WebGUI::Asset::Wobject::Survey::SurveyJSON->new();
#move over sections
my $sql = "select * from Survey_section_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber";
my $sections = $session->db->buildArrayRefOfHashRefs($sql);
my $sId = 0;
my %sMap;
for my $section(@$sections){
my $random = $$section{questionOrder} eq 'random' ? 1 : 0;
$sMap{$$section{Survey_sectionId}} = $sId;
$sjson->update([$sId++],
{
'text','','title',$$section{sectionName},'variable',$$section{Survey_sectionId},
'questionsPerPage',$$survey{questionsPerPage},'randomizeQuestions',$random
}
);
}
#move over questions
#my %qMap = ('radioList','Multiple Choice','text','Text','HTMLArea','Text','textArea','Text');
$sql = "select * from Survey_question_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber";
my $questions = $session->db->buildArrayRefOfHashRefs($sql);
my $qId = 0;
my %qMap;
my %qS;
for my $question(@$questions){
$qMap{$$question{Survey_questionId}} = $qId;
$qS{$$question{Survey_questionId}} = $$question{Survey_sectionId};
$sjson->update([$sMap{$$question{Survey_sectionId}},$qId++],
{
'text',$$question{question},'variable',$$question{Survey_questionId},'allowComment',$$question{allowComment},
'randomizeAnswers',$$question{randomizeAnswers},'questionType',$qMap{$$question{answerField}}
}
);
}
#move over answers
$sql = "select * from Survey_answer_old where Survey_id = '$$survey{Survey_id}' order by sequenceNumber";
my $answers = $session->db->buildArrayRefOfHashRefs($sql);
my $aId = 0;
my %aMap;
for my $answer(@$answers){
$aMap{$$survey{Survey_answerId}} = $aId;
$sjson->update([$sMap{$qS{$$answer{Survey_questionId}}},$qMap{$$answer{Survey_questionId}},$aId++],
{
'text',$$answer{answer},'goto',$$answer{Survey_questionId},'recordedAnswer',$$answer{answer},
'isCorrect',$$answer{isCorrect},'NEED TO MAP QUESTION TYPES'
}
);
}
my $date = $session->db->quickScalar('select max(revisionDate) from Survey where assetId = ?',[$$survey{assetId}]);
$session->db->write('update Survey set surveyJSON = ? where assetId = ? and revisionDate = ?',[$sjson->freeze,$$survey{assetId},$date]);
my $rjson = WebGUI::Asset::Wobject::Survey::ResponseJSON->new(undef,undef,$sjson);
$rjson->createSurveyOrder();
#move over responses
$sql = "select * from Survey_response_old where Survey_id = '$$survey{Survey_id}'";
my $responses = $session->db->buildArrayRefOfHashRefs($sql);
for my $response(@$responses){
$session->db->write('insert into Survey_response values(?,?,?,?,?,?,?,?,?,?)',
[
$$survey{assetId},$$response{Survey_responseId},$$response{userId},$$response{userName},$$response{ipAddress},$$response{startDate},$$response{endDate},
$$response{isComplete},undef,'{}'
]
);
#$sql = "select * from Survey_questionResponse_old where Survey_responseId = '$$response{Survey_responseId}'";
#my $qresponses = $session->db->buildArrayRefOfHashRefs($sql);
#for my $qresponse(@$qresponses){
#}
}
}
print "Finished\n" unless $quiet;
}
sub _moveOldSurveyTables{
my $session = shift;
eval{
$session->db->write("alter table Survey rename to Survey_old");
$session->db->write("alter table Survey_answer rename to Survey_answer_old");
$session->db->write("alter table Survey_question rename to Survey_question_old");
$session->db->write("alter table Survey_section rename to Survey_section_old");
$session->db->write("alter table Survey_response rename to Survey_response_old");
$session->db->write("alter table Survey_questionResponse rename to Survey_questionResponse_old");
};
}
sub _addSurveyTables{
my $session = shift;
$session->db->write("DROP TABLE IF EXISTS `Survey`");
$session->db->write("
CREATE TABLE `Survey` (
`groupToTakeSurvey` char(22) character set utf8 collate utf8_bin NOT NULL default '2',
`groupToViewReports` char(22) character set utf8 collate utf8_bin NOT NULL default '3',
`responseTemplateId` char(22) character set utf8 collate utf8_bin NOT NULL,
`overviewTemplateId` char(22) character set utf8 collate utf8_bin NOT NULL,
`maxResponsesPerUser` int(11) NOT NULL default '1',
`gradebookTemplateId` char(22) character set utf8 collate utf8_bin NOT NULL,
`assetId` char(22) character set utf8 collate utf8_bin NOT NULL,
`templateId` char(22) character set utf8 collate utf8_bin NOT NULL,
`revisionDate` bigint(20) NOT NULL default '0',
`surveyEditTemplateId` char(22) default NULL,
`answerEditTemplateId` char(22) default NULL,
`questionEditTemplateId` char(22) default NULL,
`sectionEditTemplateId` char(22) default NULL,
`surveyTakeTemplateId` char(22) default NULL,
`surveyQuestionsId` char(22) default NULL,
`exitURL` varchar(512) default NULL,
`surveyJSON` longblob,
PRIMARY KEY (`assetId`,`revisionDate`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
");
$session->db->write("DROP TABLE IF EXISTS `Survey_response`");
$session->db->write("
CREATE TABLE `Survey_response` (
`assetId` char(22) character set utf8 collate utf8_bin NOT NULL,
`Survey_responseId` char(22) character set utf8 collate utf8_bin NOT NULL,
`userId` char(22) default NULL,
`username` char(255) default NULL,
`ipAddress` char(15) default NULL,
`startDate` bigint(20) NOT NULL default '0',
`endDate` bigint(20) NOT NULL default '0',
`isComplete` int(11) NOT NULL default '0',
`anonId` varchar(255) default NULL,
`responseJSON` longblob,
PRIMARY KEY (`Survey_responseId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
");
$session->db->write("DROP TABLE IF EXISTS `Survey_tempReport`");
$session->db->write("
CREATE TABLE `Survey_tempReport` (
`assetId` char(22) NOT NULL,
`Survey_responseId` char(22) NOT NULL,
`order` smallint(5) unsigned NOT NULL,
`sectionNumber` smallint(5) unsigned NOT NULL,
`sectionName` varchar(512) default NULL,
`questionNumber` smallint(5) unsigned NOT NULL,
`questionName` varchar(512) default NULL,
`questionComment` mediumtext,
`answerNumber` smallint(5) unsigned default NULL,
`answerValue` mediumtext,
`answerComment` mediumtext,
`entryDate` bigint(20) unsigned NOT NULL COMMENT 'UTC Unix Time',
`isCorrect` tinyint(3) unsigned default NULL,
`value` int(11) default NULL,
`fileStoreageId` char(22) default NULL COMMENT 'Not implemented yet',
PRIMARY KEY (`assetId`,`Survey_responseId`,`order`),
KEY `assetId` (`assetId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
");
}
#----------------------------------------------------------------------------
sub createLastUpdatedField {
my $session = shift;