--- loncom/interface/lonfeedback.pm 2012/01/04 00:42:20 1.317
+++ loncom/interface/lonfeedback.pm 2012/01/04 20:12:40 1.320
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Feedback
#
-# $Id: lonfeedback.pm,v 1.317 2012/01/04 00:42:20 www Exp $
+# $Id: lonfeedback.pm,v 1.320 2012/01/04 20:12:40 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2787,21 +2787,85 @@ sub send_msg {
}
}
-
- my %record=&Apache::lonnet::restore('_feedback');
- my ($temp)=keys(%record);
- unless ($temp=~/^error\:/) {
- my %newrecord=();
- $newrecord{'resource'}=$feedurl;
- $newrecord{'subnumber'}=$record{'subnumber'}+1;
- unless (&Apache::lonnet::cstore(\%newrecord,'_feedback') eq 'ok') {
- $status.='
'.&mt('Not registered').'
';
- }
+# Records of number of feedback messages are kept under the "symb" called "_feedback"
+# There are two entries within the framework of a course:
+# - the URLs for which feedback was provided
+# - the total number of contributions
+ if ($sendsomething) {
+ my %record=&getfeedbackrecords();
+ my ($temp)=keys(%record);
+ unless ($temp=~/^error\:/) {
+ my %newrecord=();
+ $newrecord{'resource'}=$feedurl;
+ $newrecord{'subnumber'}=$record{'subnumber'}+1;
+ unless (&Apache::lonnet::cstore(\%newrecord,'_feedback') eq 'ok') {
+ $status.='
'.&mt('Not registered').'
';
+ }
+ }
}
-
return ($status,$sendsomething);
}
+# Routine to get the complete feedback records
+
+sub getfeedbackrecords {
+ my ($uname,$udom,$course)=@_;
+ unless ($uname) { $uname=$env{'user.name'}; }
+ unless ($udom) { $udom=$env{'user.domain'}; }
+ unless ($course) { $course=$env{'request.course.id'}; }
+ my %record=&Apache::lonnet::restore('_feedback',$course,$udom,$uname);
+ return %record;
+}
+
+# Routine to get feedback statistics
+
+sub getfeedbackstats {
+ my %record=&getfeedbackrecords(@_);
+ my $subnumber=$record{'subnumber'};
+ my $points=0;
+ my $likes=0;
+ foreach my $key (keys(%record)) {
+ if ($key=~/^\d+\:points$/) {
+ $points+=$record{$key};
+ }
+ if ($key=~/^\d+\:likes$/) {
+ $likes+=$record{$key};
+ }
+ }
+ return ($subnumber,$points,$likes);
+}
+
+# Store feedback credit
+
+sub storefeedbackpoints {
+ my ($points,$uname,$udom,$course)=@_;
+ unless ($points) { $points=0; }
+ unless ($uname) { $uname=$env{'user.name'}; }
+ unless ($udom) { $udom=$env{'user.domain'}; }
+ unless ($course) { $course=$env{'request.course.id'}; }
+ my %record=('grader_user' => $env{'user.name'},
+ 'grader_domain' => $env{'user.domain'},
+ 'points' => $points);
+ return &Apache::lonnet::cstore(\%record,'_feedback');
+}
+
+# Store feedback "likes"
+
+sub storefeedbacklikes {
+ my ($likes,$uname,$udom,$course)=@_;
+ unless ($likes) { $likes=0; }
+ if ($likes>0) { $likes=1; }
+ if ($likes<0) { $likes=-1; }
+ unless ($uname) { $uname=$env{'user.name'}; }
+ unless ($udom) { $udom=$env{'user.domain'}; }
+ unless ($course) { $course=$env{'request.course.id'}; }
+ my %record=('likes_user' => $env{'user.name'},
+ 'likes_domain' => $env{'user.domain'},
+ 'likes' => $likes);
+ return &Apache::lonnet::cstore(\%record,'_feedback');
+}
+
+
sub adddiscuss {
my ($symb,$email,$anon,$attachmenturl,$subject,$group)=@_;
my $status='';