Annotation of loncom/debugging_tools/updateclasslist.pl, revision 1.3

1.1       albertel    1: #!/usr/bin/perl
                      2: #
                      3: # The LearningOnline Network
                      4: #
1.3     ! albertel    5: # - propagate the ids in ids.db to all course classlists
1.1       albertel    6: #
1.3     ! albertel    7: # $Id: updateclasslist.pl,v 1.2 2005/11/17 21:54:18 albertel Exp $
1.1       albertel    8: #
                      9: # Copyright Michigan State University Board of Trustees
                     10: #
                     11: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
                     12: #
                     13: # LON-CAPA is free software; you can redistribute it and/or modify
                     14: # it under the terms of the GNU General Public License as published by
                     15: # the Free Software Foundation; either version 2 of the License, or
                     16: # (at your option) any later version.
                     17: #
                     18: # LON-CAPA is distributed in the hope that it will be useful,
                     19: # but WITHOUT ANY WARRANTY; without even the implied warranty of
                     20: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     21: # GNU General Public License for more details.
                     22: #
                     23: # You should have received a copy of the GNU General Public License
                     24: # along with LON-CAPA; if not, write to the Free Software
                     25: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
                     26: #
                     27: # /home/httpd/html/adm/gpl.txt
                     28: #
                     29: # http://www.lon-capa.org/
                     30: #
                     31: #################################################
                     32: use strict;
                     33: BEGIN {
                     34:     eval "use Apache2::compat;";
                     35: }
                     36: use lib '/home/httpd/lib/perl';
                     37: use Apache::lonnet;
                     38: use Apache::loncoursedata;
                     39: use LONCAPA::Configuration;
                     40: use File::Find;
                     41: 
                     42: my $perlvar = LONCAPA::Configuration::read_conf('loncapa.conf');
                     43: my $ver=&get_loncapa_version();
                     44: 
                     45: &main();
                     46: 
                     47: sub main {
                     48:     my @domains = &Apache::lonnet::current_machine_domains();
                     49:     my @hostids = &Apache::lonnet::current_machine_ids();
                     50:     foreach my $dom (sort(@domains)) {
                     51: 	my %courses = 
                     52: 	    &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.',1,\@hostids);
1.2       albertel   53: 	my $total = scalar(keys(%courses));
                     54: 	print("Found $total to do\n");
                     55: 	my $i=0;
1.1       albertel   56: 	foreach my $course (keys(%courses)) {
1.2       albertel   57: 	    $i++;
                     58: 	    print("Done $i/$total\n");
1.1       albertel   59: 	    my ($cdom,$cnum) = split('_',$course);
                     60: 	    my $classlist = ($ver =~ /^2\.0/) 
                     61: 		? &Apache::loncoursedata::get_classlist($cdom.'_'.$cnum,$cdom,$cnum)
                     62: 		: &Apache::loncoursedata::get_classlist($cdom,$cnum);
                     63: 
                     64: 	    foreach my $user (keys(%{ $classlist })) {
                     65: 		my ($uname,$udom) = split(':',$user);
                     66: 		my %info=&Apache::lonnet::get('environment',['id'],
                     67: 					      $udom, $uname);
                     68: 		my $id=$info{'id'};
                     69: 		my $cur_id = $classlist->{$user}[&Apache::loncoursedata::CL_ID()];
                     70: 		if (defined($id) && $id ne $cur_id) {
                     71: 		    print("needs update $user -- $id <- $cur_id\n");
                     72: 		    my $enrolldata = join(':',
                     73: 					  $classlist->{$user}[&Apache::loncoursedata::CL_END()],
                     74: 					  $classlist->{$user}[&Apache::loncoursedata::CL_START()],
                     75: 					  $id,
                     76: 					  $classlist->{$user}[&Apache::loncoursedata::CL_SECTION()],
                     77: 					  $classlist->{$user}[&Apache::loncoursedata::CL_FULLNAME()]);
                     78: 		    my $reply=&Apache::lonnet::cput('classlist',
                     79: 						    {$user => $enrolldata},
                     80: 						    $cdom,$cnum);
                     81: 		}
                     82: 	    } 
                     83: 	}
                     84:     }
                     85: }
                     86: exit;
                     87: 
                     88: ######################################
                     89: sub unescape {
                     90:     my $str=shift;
                     91:     $str =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
                     92:     return $str;
                     93: }
                     94: sub get_loncapa_version {
                     95:     open(REL,'</etc/loncapa-release');
                     96:     my $line = <REL>;
                     97:     $line =~ s/LON\-CAPA release//;
                     98:     $line =~ s/-\d+//;
                     99:     $line =~ s/\s//g;
                    100:     return $line;
                    101: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>