Corrected survey timeout issues.
This commit is contained in:
parent
20070aac8d
commit
5741d71445
3 changed files with 189 additions and 87 deletions
|
|
@ -887,8 +887,8 @@ SQL
|
||||||
'link' => $postUrl,
|
'link' => $postUrl,
|
||||||
guid => $postUrl,
|
guid => $postUrl,
|
||||||
description => $post->get('synopsis'),
|
description => $post->get('synopsis'),
|
||||||
epochDate => $post->get('creationDate'),
|
epochDate => $post->get('revisionDate'),
|
||||||
pubDate => $datetime->epochToMail($post->get('creationDate')),
|
pubDate => $datetime->epochToMail($post->get('revisionDate')),
|
||||||
attachmentLoop => $attachmentLoop,
|
attachmentLoop => $attachmentLoop,
|
||||||
userDefined1 => $post->get("userDefined1"),
|
userDefined1 => $post->get("userDefined1"),
|
||||||
userDefined2 => $post->get("userDefined2"),
|
userDefined2 => $post->get("userDefined2"),
|
||||||
|
|
|
||||||
|
|
@ -39,23 +39,23 @@ sub definition {
|
||||||
label => "Template ID"
|
label => "Template ID"
|
||||||
},
|
},
|
||||||
showProgress => {
|
showProgress => {
|
||||||
fieldType => "yesNo",
|
fieldType => "yesNo",
|
||||||
defaultValue => 0,
|
defaultValue => 0,
|
||||||
tab => 'properties',
|
tab => 'properties',
|
||||||
label => "Show user their progress"
|
label => "Show user their progress"
|
||||||
},
|
},
|
||||||
showTimeLimit => {
|
showTimeLimit => {
|
||||||
fieldType => "yesNo",
|
fieldType => "yesNo",
|
||||||
defaultValue => 0,
|
defaultValue => 0,
|
||||||
tab => 'properties',
|
tab => 'properties',
|
||||||
label => "Show user their time remaining"
|
label => "Show user their time remaining"
|
||||||
},
|
},
|
||||||
timeLimit => {
|
timeLimit => {
|
||||||
fieldType => 'integer',
|
fieldType => 'integer',
|
||||||
defaultValue => 0,
|
defaultValue => 0,
|
||||||
tab => 'properties',
|
tab => 'properties',
|
||||||
hoverHelp => $i18n->get('timelimit hoverHelp'),
|
hoverHelp => $i18n->get('timelimit hoverHelp'),
|
||||||
label => $i18n->get('timelimit')
|
label => $i18n->get('timelimit')
|
||||||
},
|
},
|
||||||
groupToEditSurvey => {
|
groupToEditSurvey => {
|
||||||
fieldType => 'group',
|
fieldType => 'group',
|
||||||
|
|
@ -260,9 +260,9 @@ Loads the initial edit survey page. All other edit actions are JSON calls from
|
||||||
|
|
||||||
sub www_editSurvey {
|
sub www_editSurvey {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return $self->session->privilege->insufficient()
|
return $self->session->privilege->insufficient()
|
||||||
unless ($self->session->user->isInGroup($self->get('groupToEditSurvey')));
|
unless ( $self->session->user->isInGroup( $self->get('groupToEditSurvey') ) );
|
||||||
|
|
||||||
my %var;
|
my %var;
|
||||||
my $out = $self->processTemplate( \%var, $self->get("surveyEditTemplateId") );
|
my $out = $self->processTemplate( \%var, $self->get("surveyEditTemplateId") );
|
||||||
|
|
@ -273,9 +273,9 @@ sub www_editSurvey {
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
sub www_submitObjectEdit {
|
sub www_submitObjectEdit {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return $self->session->privilege->insufficient()
|
return $self->session->privilege->insufficient()
|
||||||
unless ($self->session->user->isInGroup($self->get('groupToEditSurvey')));
|
unless ( $self->session->user->isInGroup( $self->get('groupToEditSurvey') ) );
|
||||||
|
|
||||||
# my $ref = @{from_json($self->session->form->process("data"))};
|
# my $ref = @{from_json($self->session->form->process("data"))};
|
||||||
my $responses = $self->session->form->paramsHashRef();
|
my $responses = $self->session->form->paramsHashRef();
|
||||||
|
|
@ -339,10 +339,10 @@ sub deleteObject {
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
sub www_newObject {
|
sub www_newObject {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return $self->session->privilege->insufficient()
|
return $self->session->privilege->insufficient()
|
||||||
unless ($self->session->user->isInGroup($self->get('groupToEditSurvey')));
|
unless ( $self->session->user->isInGroup( $self->get('groupToEditSurvey') ) );
|
||||||
|
|
||||||
my $ref;
|
my $ref;
|
||||||
|
|
||||||
my $ids = $self->session->form->process("data");
|
my $ids = $self->session->form->process("data");
|
||||||
|
|
@ -363,11 +363,11 @@ sub www_newObject {
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
sub www_dragDrop {
|
sub www_dragDrop {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return $self->session->privilege->insufficient()
|
return $self->session->privilege->insufficient()
|
||||||
unless ($self->session->user->isInGroup($self->get('groupToEditSurvey')));
|
unless ( $self->session->user->isInGroup( $self->get('groupToEditSurvey') ) );
|
||||||
|
|
||||||
my $p = from_json( $self->session->form->process("data") );
|
my $p = from_json( $self->session->form->process("data") );
|
||||||
|
|
||||||
my @tid = split /-/, $p->{target}->{id};
|
my @tid = split /-/, $p->{target}->{id};
|
||||||
my @bid = split /-/, $p->{before}->{id};
|
my @bid = split /-/, $p->{before}->{id};
|
||||||
|
|
@ -415,6 +415,7 @@ sub www_dragDrop {
|
||||||
$self->survey->insertObject( $target, [ $bid[0], $bid[1], $bid[2] ] );
|
$self->survey->insertObject( $target, [ $bid[0], $bid[1], $bid[2] ] );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
#else put it back where it was
|
#else put it back where it was
|
||||||
$self->survey->insertObject( $target, \@tid );
|
$self->survey->insertObject( $target, \@tid );
|
||||||
}
|
}
|
||||||
|
|
@ -579,19 +580,90 @@ sub view {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my %var;
|
my %var;
|
||||||
|
|
||||||
$var{'edit_survey_url'} = $self->getUrl('func=editSurvey');
|
$var{'edit_survey_url'} = $self->getUrl('func=editSurvey');
|
||||||
$var{'take_survey_url'} = $self->getUrl('func=takeSurvey');
|
$var{'take_survey_url'} = $self->getUrl('func=takeSurvey');
|
||||||
$var{'view_simple_results_url'} = $self->getUrl('func=exportSimpleResults');
|
$var{'view_simple_results_url'} = $self->getUrl('func=exportSimpleResults');
|
||||||
$var{'view_transposed_results_url'} = $self->getUrl('func=exportTransposedResults');
|
$var{'view_transposed_results_url'} = $self->getUrl('func=exportTransposedResults');
|
||||||
$var{'view_statistical_overview_url'} = $self->getUrl('func=viewStatisticalOverview');
|
$var{'view_statistical_overview_url'} = $self->getUrl('func=viewStatisticalOverview');
|
||||||
$var{'view_grade_book_url'} = $self->getUrl('func=viewGradeBook');
|
$var{'view_grade_book_url'} = $self->getUrl('func=viewGradeBook');
|
||||||
$var{'user_canTakeSurvey'} = $self->session->user->isInGroup( $self->get("groupToTakeSurvey") );
|
$var{'user_canTakeSurvey'} = $self->session->user->isInGroup( $self->get("groupToTakeSurvey") );
|
||||||
$var{'user_canViewReports'} = $self->session->user->isInGroup( $self->get("groupToViewReports") );
|
$var{'user_canViewReports'} = $self->session->user->isInGroup( $self->get("groupToViewReports") );
|
||||||
$var{'user_canEditSurvey'} = $self->session->user->isInGroup( $self->get("groupToEditSurvey") );
|
$var{'user_canEditSurvey'} = $self->session->user->isInGroup( $self->get("groupToEditSurvey") );
|
||||||
|
$var{'user_canEditSurvey'} = $self->session->user->isInGroup( $self->get("groupToEditSurvey") );
|
||||||
|
my ( $code, $overTakeLimit ) = $self->getResponseInfoForView();
|
||||||
|
$var{'lastResponseCompleted'} = $code;
|
||||||
|
$var{'lastResponseTimedOut'} = $code > 1 ? 1 : 0;
|
||||||
|
$var{'maxResponsesSubmitted'} = $overTakeLimit;
|
||||||
my $out = $self->processTemplate( \%var, undef, $self->{_viewTemplate} );
|
my $out = $self->processTemplate( \%var, undef, $self->{_viewTemplate} );
|
||||||
|
|
||||||
return $out;
|
return $out;
|
||||||
}
|
} ## end sub view
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getResponseInfoForView ( )
|
||||||
|
|
||||||
|
Looks to see if this user has a response, looks at the last one to see if it was completed or timed out.
|
||||||
|
Then it checks to see if the user has reached the max number of responses.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getResponseInfoForView {
|
||||||
|
my $self = shift;
|
||||||
|
|
||||||
|
my ( $code, $taken );
|
||||||
|
|
||||||
|
my $maxTakes = $self->getValue("maxResponsesPerUser");
|
||||||
|
my $id = $self->session->user->userId();
|
||||||
|
my $anonId
|
||||||
|
= $self->session->form->process("userid")
|
||||||
|
|| $self->session->http->getCookies->{"Survey2AnonId"}
|
||||||
|
|| undef;
|
||||||
|
$self->session->http->setCookie( "Survey2AnonId", $anonId ) if ($anonId);
|
||||||
|
my $ip = $self->session->env->getIp;
|
||||||
|
my $string;
|
||||||
|
|
||||||
|
#if there is an anonid or id is for a WG user
|
||||||
|
if ( $anonId or $id != 1 ) {
|
||||||
|
$string = 'userId';
|
||||||
|
if ($anonId) {
|
||||||
|
$string = 'anonId';
|
||||||
|
$id = $anonId;
|
||||||
|
}
|
||||||
|
my $responseId
|
||||||
|
= $self->session->db->quickScalar(
|
||||||
|
"select Survey_responseId from Survey_response where $string = ? and assetId = ? and isComplete = 0",
|
||||||
|
[ $id, $self->getId() ] );
|
||||||
|
if ( !$responseId ) {
|
||||||
|
$code = $self->session->db->quickScalar(
|
||||||
|
"select isComplete from Survey_response where $string = ? and assetId = ? and isComplete > 0 order by endDate desc limit 1",
|
||||||
|
[ $id, $self->getId() ]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$taken
|
||||||
|
= $self->session->db->quickScalar(
|
||||||
|
"select count(*) from Survey_response where $string = ? and assetId = ? and isComplete > 0",
|
||||||
|
[ $id, $self->getId() ] );
|
||||||
|
|
||||||
|
} ## end if ( $anonId or $id !=...
|
||||||
|
elsif ( $id == 1 ) {
|
||||||
|
my $responseId = $self->session->db->quickScalar(
|
||||||
|
"select Survey_responseId from Survey_response where userId = ? and ipAddress = ? and assetId = ? and isComplete = 0",
|
||||||
|
[ $id, $ip, $self->getId() ]
|
||||||
|
);
|
||||||
|
if ( !$responseId ) {
|
||||||
|
$code = $self->session->db->quickScalar(
|
||||||
|
"select isComplete from Survey_response where userId = ? and ipAddress = ? and assetId = ? and isComplete > 0 order by endDate desc limit 1",
|
||||||
|
[ $id, $ip, $self->getId() ]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$taken = $self->session->db->quickScalar(
|
||||||
|
"select count(*) from Survey_response where userId = ? and ipAddress = ? and assetId = ? and isComplete > 0",
|
||||||
|
[ $id, $ip, $self->getId() ]
|
||||||
|
);
|
||||||
|
} ## end elsif ( $id == 1 )
|
||||||
|
return ( $code, $taken >= $maxTakes );
|
||||||
|
} ## end sub getResponseInfoForView
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -615,24 +687,26 @@ sub www_takeSurvey {
|
||||||
my $responseId = $self->getResponseId();
|
my $responseId = $self->getResponseId();
|
||||||
if ( !$responseId ) {
|
if ( !$responseId ) {
|
||||||
$self->session->log->debug('No responseId, surveyEnd');
|
$self->session->log->debug('No responseId, surveyEnd');
|
||||||
# return $self->surveyEnd(); # disabled. let the js handle the exitUrl redirection
|
|
||||||
} else {
|
# return $self->surveyEnd(); # disabled. let the js handle the exitUrl redirection
|
||||||
|
}
|
||||||
|
else {
|
||||||
$self->session->log->debug("ResponseId: $responseId");
|
$self->session->log->debug("ResponseId: $responseId");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
my $out = $self->processTemplate( \%var, $self->get("surveyTakeTemplateId") );
|
my $out = $self->processTemplate( \%var, $self->get("surveyTakeTemplateId") );
|
||||||
return $self->session->style->process($out,$self->get("styleTemplateId"));
|
return $self->session->style->process( $out, $self->get("styleTemplateId") );
|
||||||
}
|
} ## end sub www_takeSurvey
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
sub www_deleteResponses {
|
sub www_deleteResponses {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return $self->session->privilege->insufficient()
|
return $self->session->privilege->insufficient()
|
||||||
unless ($self->session->user->isInGroup($self->get('groupToEditSurvey')));
|
unless ( $self->session->user->isInGroup( $self->get('groupToEditSurvey') ) );
|
||||||
|
|
||||||
$self->session->db->write('delete from Survey_response where assetId = ?',[$self->getId]);
|
$self->session->db->write( 'delete from Survey_response where assetId = ?', [ $self->getId ] );
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -650,7 +724,7 @@ sub www_submitQuestions {
|
||||||
my $responseId = $self->getResponseId();
|
my $responseId = $self->getResponseId();
|
||||||
if ( !$responseId ) {
|
if ( !$responseId ) {
|
||||||
$self->session->log->debug('No response id, surveyEnd');
|
$self->session->log->debug('No response id, surveyEnd');
|
||||||
return $self->surveyEnd();
|
return $self->surveyEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
my $responses = $self->session->form->paramsHashRef();
|
my $responses = $self->session->form->paramsHashRef();
|
||||||
|
|
@ -660,7 +734,7 @@ sub www_submitQuestions {
|
||||||
|
|
||||||
$self->loadBothJSON();
|
$self->loadBothJSON();
|
||||||
|
|
||||||
my $termInfo = $self->response->recordResponses($self->session, $responses);
|
my $termInfo = $self->response->recordResponses( $self->session, $responses );
|
||||||
|
|
||||||
$self->saveResponseJSON();
|
$self->saveResponseJSON();
|
||||||
|
|
||||||
|
|
@ -718,9 +792,9 @@ sub www_loadQuestions {
|
||||||
$self->session->log->debug('No responseId, surveyEnd');
|
$self->session->log->debug('No responseId, surveyEnd');
|
||||||
return $self->surveyEnd();
|
return $self->surveyEnd();
|
||||||
}
|
}
|
||||||
if($self->response->hasTimedOut($self->get('timeLimit'))){
|
if ( $self->response->hasTimedOut( $self->get('timeLimit') ) ) {
|
||||||
$self->session->log->debug('Response hasTimedOut, surveyEnd');
|
$self->session->log->debug('Response hasTimedOut, surveyEnd');
|
||||||
return $self->surveyEnd();
|
return $self->surveyEnd( undef, 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $self->response->surveyEnd() ) {
|
if ( $self->response->surveyEnd() ) {
|
||||||
|
|
@ -740,19 +814,41 @@ sub www_loadQuestions {
|
||||||
} ## end sub www_loadQuestions
|
} ## end sub www_loadQuestions
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
#called when the survey is over.
|
#called when the survey is over.
|
||||||
|
|
||||||
|
=head2 surveyEnd ( [ $url ], [ $completeCode ] )
|
||||||
|
|
||||||
|
Marks the survey completed with either 1 or the $completeCode and then sends the url to the site home or if defined, $url.
|
||||||
|
|
||||||
|
=head3 $url
|
||||||
|
|
||||||
|
An optional url to send the user to upon survey completion.
|
||||||
|
|
||||||
|
=head3 $completeCode
|
||||||
|
|
||||||
|
An optional code (defaults to 1) to say how the user completed the survey.
|
||||||
|
|
||||||
|
1 is normal completion.
|
||||||
|
2 is timed out.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
sub surveyEnd {
|
sub surveyEnd {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $url = shift;
|
my $url = shift;
|
||||||
|
my $completeCode = shift;
|
||||||
if (my $responseId = $self->getResponseId()) { #also loads the survey and response
|
|
||||||
# $self->session->db->write("update Survey_response set endDate = ? and isComplete = 1 where Survey_responseId = ?",[WebGUI::DateTime->now->toDatabase,$responseId]);
|
$completeCode = defined $completeCode ? $completeCode : 1;
|
||||||
|
|
||||||
|
if ( my $responseId = $self->getResponseId() ) { #also loads the survey and response
|
||||||
|
# $self->session->db->write("update Survey_response set endDate = ? and isComplete > 0 where Survey_responseId = ?",[WebGUI::DateTime->now->toDatabase,$responseId]);
|
||||||
$self->session->db->setRow(
|
$self->session->db->setRow(
|
||||||
"Survey_response",
|
"Survey_response",
|
||||||
"Survey_responseId", {
|
"Survey_responseId", {
|
||||||
Survey_responseId => $responseId,
|
Survey_responseId => $responseId,
|
||||||
endDate => time(),#WebGUI::DateTime->now->toDatabase,
|
endDate => time(), #WebGUI::DateTime->now->toDatabase,
|
||||||
isComplete => 1
|
isComplete => $completeCode
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -767,8 +863,9 @@ sub surveyEnd {
|
||||||
$url = "/";
|
$url = "/";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# $self->session->http->setRedirect($url);
|
|
||||||
return to_json({ "type", "forward", "url", $url });
|
# $self->session->http->setRedirect($url);
|
||||||
|
return to_json( { "type", "forward", "url", $url } );
|
||||||
} ## end sub surveyEnd
|
} ## end sub surveyEnd
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
@ -815,12 +912,13 @@ sub prepareShowSurveyTemplate {
|
||||||
$$q{'verte'} = "</p>";
|
$$q{'verte'} = "</p>";
|
||||||
}
|
}
|
||||||
} ## end foreach my $q (@$questions)
|
} ## end foreach my $q (@$questions)
|
||||||
$section->{'questions'} = $questions;
|
$section->{'questions'} = $questions;
|
||||||
$section->{'questionsAnswered'} = $self->response->{questionsAnswered};
|
$section->{'questionsAnswered'} = $self->response->{questionsAnswered};
|
||||||
$section->{'totalQuestions'} = @{$self->response->surveyOrder};
|
$section->{'totalQuestions'} = @{ $self->response->surveyOrder };
|
||||||
$section->{'showProgress'} = $self->get('showProgress');
|
$section->{'showProgress'} = $self->get('showProgress');
|
||||||
$section->{'showTimeLimit'} = $self->get('showTimeLimit');
|
$section->{'showTimeLimit'} = $self->get('showTimeLimit');
|
||||||
$section->{'minutesLeft'} = int((($self->response->startTime() + (60 * $self->get('timeLimit'))) - time())/60);
|
$section->{'minutesLeft'}
|
||||||
|
= int( ( ( $self->response->startTime() + ( 60 * $self->get('timeLimit') ) ) - time() ) / 60 );
|
||||||
|
|
||||||
my $out = $self->processTemplate( $section, $self->get("surveyQuestionsId") );
|
my $out = $self->processTemplate( $section, $self->get("surveyQuestionsId") );
|
||||||
|
|
||||||
|
|
@ -944,8 +1042,8 @@ sub getResponseId {
|
||||||
userId => $id,
|
userId => $id,
|
||||||
ipAddress => $ip,
|
ipAddress => $ip,
|
||||||
username => $self->session->user->username,
|
username => $self->session->user->username,
|
||||||
startDate => $time,#WebGUI::DateTime->now->toDatabase,
|
startDate => $time, #WebGUI::DateTime->now->toDatabase,
|
||||||
endDate => 0,#WebGUI::DateTime->now->toDatabase,
|
endDate => 0, #WebGUI::DateTime->now->toDatabase,
|
||||||
assetId => $self->getId(),
|
assetId => $self->getId(),
|
||||||
anonId => $anonId
|
anonId => $anonId
|
||||||
}
|
}
|
||||||
|
|
@ -954,7 +1052,7 @@ sub getResponseId {
|
||||||
$self->response->createSurveyOrder();
|
$self->response->createSurveyOrder();
|
||||||
$self->{responseId} = $responseId;
|
$self->{responseId} = $responseId;
|
||||||
$self->saveResponseJSON();
|
$self->saveResponseJSON();
|
||||||
|
|
||||||
} ## end if ( $haveTaken < $allowedTakes)
|
} ## end if ( $haveTaken < $allowedTakes)
|
||||||
else {
|
else {
|
||||||
$self->session->log->debug("haveTaken ($haveTaken) >= allowedTakes ($allowedTakes)");
|
$self->session->log->debug("haveTaken ($haveTaken) >= allowedTakes ($allowedTakes)");
|
||||||
|
|
@ -985,14 +1083,14 @@ sub canTakeSurvey {
|
||||||
if ( $id == 1 ) {
|
if ( $id == 1 ) {
|
||||||
$takenCount = $self->session->db->quickScalar(
|
$takenCount = $self->session->db->quickScalar(
|
||||||
"select count(*) from Survey_response where userId = ? and ipAddress = ? and assetId = ?
|
"select count(*) from Survey_response where userId = ? and ipAddress = ? and assetId = ?
|
||||||
and isComplete = ?", [ $id, $ip, $self->getId(), 1 ]
|
and isComplete > ?", [ $id, $ip, $self->getId(), 0 ]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$takenCount
|
$takenCount
|
||||||
= $self->session->db->quickScalar(
|
= $self->session->db->quickScalar(
|
||||||
"select count(*) from Survey_response where userId = ? and assetId = ? and isComplete = ?",
|
"select count(*) from Survey_response where userId = ? and assetId = ? and isComplete > ?",
|
||||||
[ $id, $self->getId(), 1 ] );
|
[ $id, $self->getId(), 0 ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $takenCount >= $maxTakes ) {
|
if ( $takenCount >= $maxTakes ) {
|
||||||
|
|
@ -1004,32 +1102,36 @@ sub canTakeSurvey {
|
||||||
return $self->{canTake};
|
return $self->{canTake};
|
||||||
|
|
||||||
} ## end sub canTakeSurvey
|
} ## end sub canTakeSurvey
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
sub www_viewGradeBook{
|
sub www_viewGradeBook {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return $self->session->privilege->insufficient()
|
return $self->session->privilege->insufficient()
|
||||||
unless ( $self->session->user->isInGroup( $self->get("groupToViewReports") ) );
|
unless ( $self->session->user->isInGroup( $self->get("groupToViewReports") ) );
|
||||||
|
|
||||||
$self->loadTempReportTable();
|
$self->loadTempReportTable();
|
||||||
|
|
||||||
my @peoples = $self->session->db->quickArray("SELECT UNIQUE(Survey_responseId) from Survey_tempReport where assetId = ?",[$self->getId()]);
|
my @peoples
|
||||||
for my $people(@peoples){
|
= $self->session->db->quickArray( "SELECT UNIQUE(Survey_responseId) from Survey_tempReport where assetId = ?",
|
||||||
|
[ $self->getId() ] );
|
||||||
|
for my $people (@peoples) {
|
||||||
|
|
||||||
#my $
|
#my $
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
} ## end sub www_viewGradeBook
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
sub www_exportSimpleResults{
|
sub www_exportSimpleResults {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
return $self->session->privilege->insufficient()
|
return $self->session->privilege->insufficient()
|
||||||
unless ( $self->session->user->isInGroup( $self->get("groupToViewReports") ) );
|
unless ( $self->session->user->isInGroup( $self->get("groupToViewReports") ) );
|
||||||
|
|
||||||
$self->loadTempReportTable();
|
$self->loadTempReportTable();
|
||||||
|
|
||||||
my $filename = $self->session->url->escape( $self->get("title") . "_results.tab" );
|
my $filename = $self->session->url->escape( $self->get("title") . "_results.tab" );
|
||||||
my $content
|
my $content
|
||||||
= $self->session->db->quickTab(
|
= $self->session->db->quickTab(
|
||||||
|
|
|
||||||
|
|
@ -693,7 +693,7 @@ Logs an error to the webgui log file, using the session logger.
|
||||||
sub log {
|
sub log {
|
||||||
my ( $self, $message ) = @_;
|
my ( $self, $message ) = @_;
|
||||||
if ( defined $self->{log} ) {
|
if ( defined $self->{log} ) {
|
||||||
$self->{log}->error($message);
|
$self->{log}->debug($message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
1;
|
1;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue