File:  [LON-CAPA] / loncom / enrollment / localenroll.pm
Revision 1.3: download - view: text, annotated - select for diffs
Tue Dec 9 20:06:37 2003 UTC (20 years, 6 months ago) by albertel
Branches: MAIN
CVS tags: HEAD
- adding GPL headers

    1: # local bits for automated enrollment
    2: # $Id: localenroll.pm,v 1.3 2003/12/09 20:06:37 albertel Exp $
    3: #
    4: # Copyright Michigan State University Board of Trustees
    5: #
    6: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
    7: #
    8: # LON-CAPA is free software; you can redistribute it and/or modify
    9: # it under the terms of the GNU General Public License as published by
   10: # the Free Software Foundation; either version 2 of the License, or
   11: # (at your option) any later version.
   12: #
   13: # LON-CAPA is distributed in the hope that it will be useful,
   14: # but WITHOUT ANY WARRANTY; without even the implied warranty of
   15: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   16: # GNU General Public License for more details.
   17: #
   18: # You should have received a copy of the GNU General Public License
   19: # along with LON-CAPA; if not, write to the Free Software
   20: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   21: #
   22: # /home/httpd/html/adm/gpl.txt
   23: #
   24: # http://www.lon-capa.org/
   25: #
   26: package localenroll;
   27: 
   28: use strict;
   29: use DBI;
   30: use LONCAPA::Configuration;
   31: 
   32: sub fetch_enrollment {
   33:   my ($dom,$affiliatesref,$replyref) = @_;
   34:   $ENV{SYBASE} = '/usr/local/freetds';
   35: 
   36:   my $DB_PATH = "dbi:Sybase:server=ESDB1;database=RO_ClassList";
   37:   my $DB_USER =""; # Not stored in CVS
   38:   my $DB_PASSWD = ""; # Not stored in CVS
   39: 
   40:   my $configvars = &LONCAPA::Configuration::read_conf('loncapa.conf');
   41: 
   42:   my $dbh= DBI->connect($DB_PATH,$DB_USER,$DB_PASSWD);
   43:   my $dbflag = 0;
   44:   if (defined $dbh) {
   45:      $dbflag = 1; 
   46:      foreach my $crs (sort keys %{$affiliatesref}) {
   47:          my $xmlstem =  $$configvars{'lonDaemons'}."/tmp/".$dom."_".$crs."_";
   48:          $$replyref{$crs} = &write_class_data ($dbh,$xmlstem,\@{$$affiliatesref{$crs}});
   49:      }
   50:      $dbh->disconnect;
   51:   }
   52:   return $dbflag;
   53: }
   54: 
   55: sub write_class_data {
   56:   my ($dbh,$xmlstem,$coursesref) = @_;
   57:   my $stucount = 0;
   58:   foreach my $class (@{$coursesref}) {
   59:       if ($class =~ m/^([suf]s\d{2})(\w{2,3})(\d{3,4}\w?)(\d{3})$/) {
   60:           my $xmlfile = $xmlstem.$class."_classlist.xml";
   61:           open(FILE, ">$xmlfile");
   62:           print FILE qq|<?xml version="1.0" encoding="UTF-8"?>
   63: <!DOCTYPE text>
   64: <students>
   65: |;
   66: 
   67:           my $sth = $dbh->prepare("SELECT Pid,Pilot_Id,Student_Name FROM LONCAPA_ClassList WHERE Term_Code = '$1' AND Subj_Code = '$2' AND Crse_Code = '$3' AND Sctn_Code = '$4'  ORDER BY Student_Name");
   68:           $sth->execute();
   69:           while ( my($pid,$pilot,$name)  = $sth->fetchrow_array ) {
   70:               $stucount ++;
   71:               $name =~ s/^\s//g;
   72:               $name =~ s/\s$//g;
   73:               my ($last,$given,$first,$middle);
   74:               $last = substr($name,0,index($name,","));
   75:               $given = substr($name,index($name,",")+1);
   76:               $given =~ s/^\s//g;
   77:               if ($given =~ m/\w\s\w/) {
   78:                   $first = substr($given,0,index($given," "));
   79:                   $middle = substr($given,index($given," ")+1);
   80:                   $middle =~ s/\s//g;
   81:               } else {
   82:                   $first = $given;
   83:               }
   84:               $first =~ s/\s$//g;
   85:               print FILE qq| <student username="$pilot">
   86:   <autharg>MSU.EDU</autharg>
   87:   <authtype>krb4</authtype>
   88:   <email>$pilot\@msu.edu</email>
   89:   <enddate></enddate>
   90:   <firstname>$first</firstname>
   91:   <generation></generation>
   92:   <groupID>$class</groupID>
   93:   <lastname>$last</lastname>
   94:   <middlename>$middle</middlename>
   95:   <startdate></startdate>
   96:   <studentID>$pid</studentID>
   97:  </student>
   98: |;
   99: # Format for startdate is YYYY:MM:DD:HH:MM:SS
  100: # Format forenddate is YYYY:MM:DD:HH:MM:SS
  101: # Authentication is one of: krb4, krb5, int or loc
  102: # Password is either the password for int, or Kerberos domain (for krb4 or krb5), or argument (for loc).
  103: # If authentication, password, startdate or enddate are blank, the default for the course is used.  These defaults can be modified using the Automated Enrollment Manager.
  104:           }
  105:           $sth->finish;
  106:           print FILE qq|</students>|;
  107:           close(FILE);
  108:       }
  109:   }
  110:   return $stucount;
  111: }
  112: 
  113: sub get_sections {
  114: 
  115: }
  116: 
  117: 1;

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