--- loncom/interface/lonfeedback.pm 2012/01/10 01:06:26 1.332 +++ loncom/interface/lonfeedback.pm 2012/01/10 14:52:57 1.333 @@ -1,7 +1,7 @@ # The LearningOnline Network # Feedback # -# $Id: lonfeedback.pm,v 1.332 2012/01/10 01:06:26 www Exp $ +# $Id: lonfeedback.pm,v 1.333 2012/01/10 14:52:57 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1019,7 +1019,6 @@ sub build_posting_display { my $twoplus=$ave+2.*$stddev; my $oneminus=$ave-$stddev; my $twominus=$ave-2.*$stddev; -# &Apache::lonnet::logthis(join(',',@theselikes)." Ave $ave StdDev $stddev $twominus $oneminus $oneplus $twoplus"); # # This is now the real loop. Go through all entries, pick up what we need # @@ -1156,6 +1155,10 @@ sub build_posting_display { @{$$namesort{$lastname}{$firstname}} = ("$idx"); } if ($outputtarget ne 'tex') { + my $karma=&userkarma($contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'}); + for (my $i=1;$i<=$karma;$i++) { + $sender.=''.&mt('Contributor Kudos').''; + } unless ($likes{$symb.':'.$idx.':likers'}=~/\,\Q$thisuser\E\,/) { $sender.=' '.&discussion_link($symb,''.&mt('Like').'','like',$idx,$$newpostsflag,$prevread,&group_args($group),&mt("Like this posting")); } @@ -3065,6 +3068,7 @@ sub adddiscuss { $newrecord{'subnumber'}=$record{'subnumber'}+1; $status.='
'.&mt('Registering').': '. &Apache::lonnet::cstore(\%newrecord,'_discussion'); + &updatekarma(); } } else { $status.='Failed.'; @@ -3112,6 +3116,27 @@ sub updatekarma { unless ($udom) { $udom=$env{'user.domain'}; } unless ($course) { $course=$env{'request.course.id'}; } my $karma=&calcdiscussionkarma($uname,$udom,$course); + &Apache::lonnet::cstore({ 'karma' => $karma },'_discussion',$course,$udom,$uname); + &Apache::lonnet::do_cache_new('karma',$uname.':'.$udom.':'.$course,$karma,3600); + return $karma; +} + +# Retrieve karma + +sub userkarma { + my ($uname,$udom,$course)=@_; + unless ($uname) { $uname=$env{'user.name'}; } + unless ($udom) { $udom=$env{'user.domain'}; } + unless ($course) { $course=$env{'request.course.id'}; } + my $hashkey=$uname.':'.$udom.':'.$course; + my ($karma,$cached)=&Apache::lonnet::is_cached_new('karma',$hashkey); + if ($cached) { + return $karma; + } + my %userdisc=&getdiscussionrecords($uname,$udom,$course); + $karma=$userdisc{'karma'}; + &Apache::lonnet::do_cache_new('karma',$hashkey,$karma,3600); + return $karma; } # Store discussion credit @@ -3148,7 +3173,11 @@ sub storediscussionlikes { 'likes' => $likes, 'totallikes' => $totallikes, 'totalvotes' => $totalvotes); - return &Apache::lonnet::cstore(\%newrecord,'_discussion',$course,$udom,$uname); + my $status=&Apache::lonnet::cstore(\%newrecord,'_discussion',$course,$udom,$uname); + if ($status eq 'ok') { + &updatekarma($uname,$udom,$course); + } + return $status; } sub get_discussion_info {