[LON-CAPA-cvs] cvs: loncom /interface lonuserutils.pm
raeburn
lon-capa-cvs-allow@mail.lon-capa.org
Wed, 27 Aug 2008 16:54:49 -0000
raeburn Wed Aug 27 12:54:49 2008 EDT
Modified files:
/loncom/interface lonuserutils.pm
Log:
&classlist_drop() is called when a student role is deleted.
- Replace use of lonnet::cput() with &update_classlist().
- A full record is now written to classlist.db so that loncoursedata::get_classlist()
will no longer attempt to complete the record (with section set to -1) next time
the classlist is retrieved.
- Modify &update_classlist(), originally built to propagate ID/name changes, to support this alternative usage.
Index: loncom/interface/lonuserutils.pm
diff -u loncom/interface/lonuserutils.pm:1.62 loncom/interface/lonuserutils.pm:1.63
--- loncom/interface/lonuserutils.pm:1.62 Wed Aug 20 17:28:14 2008
+++ loncom/interface/lonuserutils.pm Wed Aug 27 12:54:49 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Utility functions for managing LON-CAPA user accounts
#
-# $Id: lonuserutils.pm,v 1.62 2008/08/20 21:28:14 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.63 2008/08/27 16:54:49 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -169,7 +169,7 @@
}
sub update_classlist {
- my ($cdom,$cnum,$udom,$uname,$user) = @_;
+ my ($cdom,$cnum,$udom,$uname,$user,$newend) = @_;
my ($uid,$classlistentry);
my $fullname =
&Apache::lonnet::format_name($user->{'firstname'},$user->{'middlename'},
@@ -180,15 +180,37 @@
my @classinfo = split(/:/,$classhash{$uname.':'.$udom});
my $ididx=&Apache::loncoursedata::CL_ID() - 2;
my $nameidx=&Apache::loncoursedata::CL_FULLNAME() - 2;
+ my $endidx = &Apache::loncoursedata::CL_END() - 2;
+ my $startidx = &Apache::loncoursedata::CL_START() - 2;
for (my $i=0; $i<@classinfo; $i++) {
- if ($i == $ididx) {
+ if ($i == $endidx) {
+ if ($newend ne '') {
+ $classlistentry .= $newend.':';
+ } else {
+ $classlistentry .= $classinfo[$i].':';
+ }
+ } elsif ($i == $startidx) {
+ if ($newend ne '') {
+ if ($classinfo[$i] > $newend) {
+ $classlistentry .= $newend.':';
+ } else {
+ $classlistentry .= $classinfo[$i].':';
+ }
+ } else {
+ $classlistentry .= $classinfo[$i].':';
+ }
+ } elsif ($i == $ididx) {
if (defined($user->{'id'})) {
$classlistentry .= $user->{'id'}.':';
} else {
$classlistentry .= $classinfo[$i].':';
}
} elsif ($i == $nameidx) {
- $classlistentry .= $fullname.':';
+ if (defined($user->{'lastname'})) {
+ $classlistentry .= $fullname.':';
+ } else {
+ $classlistentry .= $classinfo[$i].':';
+ }
} else {
$classlistentry .= $classinfo[$i].':';
}
@@ -4256,11 +4278,9 @@
my ($scope,$uname,$udom,$now) = @_;
my ($cdom,$cnum) = ($scope=~m{^/($match_domain)/($match_courseid)});
if (&Apache::lonnet::is_course($cdom,$cnum)) {
- my $user = $uname.':'.$udom;
if (!&active_student_roles($cnum,$cdom,$uname,$udom)) {
- my $result =
- &Apache::lonnet::cput('classlist',
- { $user => $now },$cdom,$cnum);
+ my %user;
+ my $result = &update_classlist($cdom,$cnum,$udom,$uname,\%user,$now);
return &mt('Drop from classlist: [_1]',
'<b>'.$result.'</b>').'<br />';
}