Remove debug output from DataForm

Update Wobject.pm to use placeholders.  This will speed up reordering collateral a lot.
Fixes for sequenceNumbers for answers in surveys.
Upgrade script fixes sequenceNumbers for all existing surveys.
This commit is contained in:
Colin Kuskie 2006-11-07 05:09:41 +00:00
parent 0d1c1ea96a
commit 776a6bfdcc
5 changed files with 33 additions and 7 deletions

View file

@ -24,6 +24,7 @@
purge, and changeUrl
- fix: editing posts loses changes in preview
- change: Asset::getContainer no longer changes the session asset
- fix: Survey numeric multiple choice options
7.1.4
- Template variables in the main Survey Template were out of date in the

View file

@ -26,6 +26,7 @@ addRssUrlMacroProcessing($session);
addLastExportedAs($session);
addDeletionWorkflows($session);
addRSSFromParent($session);
reorderSurveyCollateral($session);
finish($session); # this line required
@ -180,6 +181,27 @@ EOT
$oldTag->setWorking if $oldTag;
}
##-------------------------------------------------
sub reorderSurveyCollateral {
my $session = shift;
print "\tFixing ordering problems with Survey answers.\n" unless ($quiet);
# and here's our code
my $sth1 = $session->db->prepare("select distinct(assetId) from Survey");
my $sth2 = $session->db->prepare("select Survey_questionId from Survey_question where Survey_Id=?");
$sth1->execute();
while (my ($assetId) = $sth1->array) { ##Iterate over all surveys
my $survey = WebGUI::Asset->new($session, $assetId, 'WebGUI::Asset::Wobject::Survey');
my $Survey_Id = $survey->get('Survey_id');
$sth2->execute([$Survey_Id]);
while (my ($questionId) = $sth2->array) { ##iterate over all questions in the survey
$session->errorHandler->warn($questionId);
$survey->reorderCollateral("Survey_answer", "Survey_answerId","Survey_questionId", $questionId);
}
$sth2->finish;
}
$sth1->finish;
}
# ---- DO NOT EDIT BELOW THIS LINE ----
#-------------------------------------------------

View file

@ -373,11 +373,14 @@ sub reorderCollateral {
my $setName = shift || "assetId";
my $setValue = shift || $self->get($setName);
my $i = 1;
my $sth = $self->session->db->read("select $keyName from $table where $setName=".$self->session->db->quote($setValue)." order by sequenceNumber");
my $sth = $self->session->db->read("select $keyName from $table where $setName=? order by sequenceNumber", [$setValue]);
my $sth2 = $self->session->db->prepare("update $table set sequenceNumber=? where $setName=? and $keyName=?");
while (my ($id) = $sth->array) {
$self->session->db->write("update $table set sequenceNumber=$i where $setName=".$self->session->db->quote($setValue)." and $keyName=".$self->session->db->quote($id));
$sth2->execute([$i, $setValue, $id]);
$i++;
}
$sth2->finish;
$sth->finish;
$sth->finish;
}
@ -437,7 +440,7 @@ sub setCollateral {
my $dbvalues = "";
unless ($useSequence eq "0") {
unless (exists $properties->{sequenceNumber}) {
my ($seq) = $self->session->db->quickArray("select max(sequenceNumber) from $table where $setName=".$self->session->db->quote($setValue));
my ($seq) = $self->session->db->quickArray("select max(sequenceNumber) from $table where $setName=?",[$setValue]);
$properties->{sequenceNumber} = $seq+1;
}
}

View file

@ -770,7 +770,6 @@ sub www_deleteTabConfirm {
sub www_editField {
my $self = shift;
my $fid = shift || $self->session->form->process("fid") || 'new';
$self->session->errorHandler->warn("fid: $fid");
return $self->session->privilege->insufficient() unless $self->canEdit;
my $i18n = WebGUI::International->new($self->session,"Asset_DataForm");
my (%field, $f, %fieldStatus,$tab);

View file

@ -432,7 +432,7 @@ sub getQuestionVars {
name=>'textResponse_'.$questionId
});
} else {
my $answer = $self->session->db->buildHashRef("select Survey_answerId,answer from Survey_answer where Survey_questionId=".$self->session->db->quote($question->{Survey_questionId})." order by sequenceNumber");
my $answer = $self->session->db->buildHashRef("select Survey_answerId,answer from Survey_answer where Survey_questionId=? order by sequenceNumber", [$question->{Survey_questionId}]);
if ($question->{randomizeAnswers}) {
$answer = randomizeHash($answer);
}
@ -885,14 +885,15 @@ sub www_editAnswer {
sub www_editAnswerSave {
my $self = shift;
return $self->session->privilege->insufficient() unless ($self->canEdit);
my $qid = $self->session->form->process("qid");
$self->setCollateral("Survey_answer", "Survey_answerId", {
Survey_answerId => $self->session->form->process("aid"),
Survey_questionId => $self->session->form->process("qid"),
Survey_questionId => $qid,
answer => $self->session->form->process("answer"),
isCorrect => $self->session->form->process("isCorrect"),
Survey_id=>$self->get("Survey_id"),
gotoQuestion => $self->session->form->process("gotoQuestion")
},1,0,"Survey_Id");
},1,0,"Survey_questionId", $qid);
if ($self->session->form->process("proceed") eq "addQuestion") {
return $self->www_editQuestion('new');
} elsif ($self->session->form->process("proceed") eq "addAnswer") {