Annotation of loncom/enrollment/localenroll.pm, revision 1.4
1.4 ! raeburn 1: package localenroll;
! 2:
! 3: use strict;
! 4:
! 5: ################################
! 6: # sub fetch_enrollment
1.3 albertel 7: #
1.4 ! raeburn 8: # connects to the institutional classlist data source,
! 9: # reads classlist data and stores in an XML file
! 10: # in /home/httpd/perl/tmp/
! 11: #
! 12: # classlist files are named as follows:
! 13: #
! 14: # DOMAIN_COURSE_INSTITUTIONALCODE_classlist.xml
! 15: #
! 16: # e.g., msu_43551dedcd43febmsul1_fs03nop590001_classlist.xml
! 17: # where DOMAIN = msu COURSE = 43551dedcd43febmsul1
! 18: # INSTITUTIONALCODE = fs03nop590001
! 19: # (MSU's course naming scheme - fs03 = Fall semester 2003, nop =
! 20: # department name, 590 = course number, 001 = section number.
! 21: #
! 22: # fetch_enrollment requires three arguments -
! 23: # $dom - DOMAIN e.g., msu
! 24: # $affiliatesref - a reference to a hash of arrays that contains LON-CAPA
! 25: # courses that are to be updated as keys, and institutional coursecodes
! 26: # contributing enrollment to that LON-CAPA course as elements in each array.
! 27: # $replyref - a reference to a hash that contains LON-CAPA courses
! 28: # that are to be updated as keys, and the total enrollment count in all
! 29: # affiliated sections, as determined from institutional data as hash elements.
! 30: #
! 31: # As an example, if fetch_enrollment is called to retrieve institutional
! 32: # classlists for a single LON-CAPA course - 43551dedcd43febmsul1 which
! 33: # corresponds to fs03nop590, sections 001, 601 and 602 , and the course
! 34: # also accommodates enrollment from a crosslisted course in the ost
! 35: # department - fs03ost580002:
! 36: #
! 37: # the affiliatesref would be a reference to %affiliates which would be:
! 38: #
! 39: # @{$affiliates{'43551dedcd43febmsul1'}} =
! 40: # ("fs03nop590001","fs03nop590601","fs03nop590602","fs03ost580002");
! 41: #
! 42: # fetch_enrollment would create four files in /home/httpd/perl/tmp/.
! 43: # msu_43551dedcd43febmsul1_fs03nop590001_classlist.xml
! 44: # msu_43551dedcd43febmsul1_fs03nop590601_classlist.xml
! 45: # msu_43551dedcd43febmsul1_fs03nop590602_classlist.xml
! 46: # msu_43551dedcd43febmsul1_fs03ost580002_classlist.xml
! 47: #
! 48: # In each file, student data would be stored in the following format
! 49: #
! 50: # <student username="smith">
! 51: # <autharg>MSU.EDU</autharg>
! 52: # <authtype>krb4</authtype>
! 53: # <email>smith@msu.edu</email>
! 54: # <enddate></enddate>
! 55: # <firstname>John</firstname>
! 56: # <generation>II</generation>
! 57: # <groupID>fs03nop590001</groupID>
! 58: # <lastname>Smith</lastname>
! 59: # <middlename>D</middlename>
! 60: # <startdate></startdate>
! 61: # <studentID>A12345678</studentID>
! 62: # </student>
! 63: #
! 64: # with the following at the top of the file
! 65: #<?xml version="1.0" encoding="UTF-8"?>
! 66: #<!DOCTYPE text>
! 67: #<students>
! 68: #
! 69: # (all comment - #s removed)
! 70: #
! 71: # and a closing:
! 72: #</students>
! 73: #
! 74: # The <startdate> and the <enddate> are the activation date and expiration date
! 75: # for this student's role. If they are absent, then the date set for
! 76: # first automated enrollment is used as the default activation date, and the
! 77: # date set for last automated enrollment is used as the default expiration date.
! 78: # If dates are to included in the XML file, they should be in the format
! 79: # YYYY:MM:DD:HH:MM:SS (: separators required).
! 80: #
! 81: # If there were 10 students in fs03nop590001, 5 students in fs03nop59o601,
! 82: # 8 students in fs03nop590602, and 2 students in fs03ost580002,
! 83: # then $$reply{'43551dedcd43febmsul1'} = 25
! 84: #
! 85: # The purpose of the %reply hash is to detect cases where the institutional
! 86: # enrollment is 0 (most likely due to a problem with the data source).
! 87: # In such a case, the LON-CAPA course roster is left unchanged (i.e., no
! 88: # students are expired, even if automated drops is enabled.
! 89: #
! 90: # fetch_enrollment should return a 0 or 1, depending on whether a connection
! 91: # could be established to the institutional data source.
! 92: # 0 is returned if no connection could be made.
! 93: # 1 is returned if connection was successful
! 94: #
! 95: # A return of 1 is required for the calling modules to perform LON-CAPA
! 96: # roster changes based on the contents of the XML classlist file(s), e,g,,
! 97: # msu_43551dedcd43febmsul1_fs03nop590001_classlist.xml
1.3 albertel 98: #
1.4 ! raeburn 99: # XML classlist files are temporary. They are deleted after the enrollment
! 100: # update process in the calling module is complete.
1.3 albertel 101: #
1.4 ! raeburn 102: ################################
1.1 raeburn 103:
104: sub fetch_enrollment {
105: my ($dom,$affiliatesref,$replyref) = @_;
106: foreach my $crs (sort keys %{$affiliatesref}) {
1.4 ! raeburn 107: $$replyref{$crs} = 0;
1.1 raeburn 108: }
109: }
1.4 ! raeburn 110: my $okflag = 0;
! 111: return $okflag;
! 112: }
! 113:
! 114: ###############################
! 115: # sub get_sections
! 116: #
! 117: # This is called by the Automated Enrollment Manager interface
! 118: # (lonpopulate.pm) to create an array of valid sections for
! 119: # a specific institutional coursecode.
! 120: # e.g., for MSU coursecode: fs03nop590
! 121: # ("001","601","602") would be returned
! 122: #
! 123: # If the array returned contains at least one element, then
! 124: # the interface offerred to the course coordinator, lists
! 125: # official sections and provides a checkbox to use to
! 126: # select enrollment in the LON-CAPA course from each official section.
! 127: #
! 128: # get_sections requires one argument - the instituional coursecode
! 129: # (in the MSU case this is a concatenation of semester code, department
! 130: # and course number).
! 131: #
! 132: # If there is no access to official course sections at your institution,
! 133: # then an empty array is returned, and the Automated Enrollment Manager
! 134: # interface will allow the course coordinator to enter section numbers
! 135: # in text boxes.
! 136: #
! 137: ################################
! 138:
! 139: sub get_sections {
! 140: my $coursecode = shift;
! 141: my @secs = ();
! 142: return @secs;
1.1 raeburn 143: }
144:
1.4 ! raeburn 145: ###############################
! 146: # sub new_course
! 147: #
! 148: # This is called by loncreatecourse.pm and
! 149: # lonpopulate.pm to record that fact that a new course section
! 150: # has been added to LON-CAPA that requires access to institutional data
! 151: # At MSU, this is required, as institutional classlists can only made
! 152: # available to faculty who are officially assigned to a course
! 153: #
! 154: # The new_course subroutine is used to check that the course owner
! 155: # of the LON-CAPA course is permitted to access the institutional
! 156: # classlist for any course sections and crosslisted classes that
! 157: # the course coordinator wishes to have affiliated with the course.
! 158: #
! 159: # If access is permitted, then 'ok' is returned.
! 160: # The course section or crosslisted course will only be added to the list of
! 161: # affiliates if 'ok' is returned.
! 162: #
! 163: # new_course requires two arguments -
! 164: # the institutional courseID (in the MSU case this is a concatenation of
! 165: # semester code, department code, course number, and section number
! 166: # e.g., fs03nop590001).
! 167: # the course owner. This is the LON-CAPA username of the course coordinator
! 168: # assigned to the course when it is first created.
! 169: #
! 170: #################################
! 171:
! 172: sub new_course {
! 173: my ($course_id,$owner) = @_;
! 174: my $outcome = 'ok';
! 175: return $outcome;
1.1 raeburn 176: }
177:
1.4 ! raeburn 178: ###############################
! 179: # sub validate_courseID
! 180: #
! 181: # This is called whenever a new course section or crosslisted course
! 182: # is being affiliated with a LON-CAPA course (i.e., by loncreatecourse.pm
! 183: # and the Automated Enrollment Manager in lonpopulate.pm).
! 184: # A check is made that the courseID that the course coordinator wishes
! 185: # to affiliate with the course is valid according to the institutional
! 186: # schedule of official classes
! 187: #
! 188: # A valid courseID is confirmed by returning 'ok'
! 189: #
! 190: # validate_courseID requires one argument -
! 191: # the institutional courseID (in the MSU case this is a concatenation of
! 192: # semester code, department code, course number, and section number
! 193: # e.g., fs03nop590001).
! 194: #
! 195: ###############################
! 196:
! 197: sub validate_courseID {
! 198: my $course_id = shift;
! 199: my $outcome = 'ok';
! 200: return $outcome;
! 201: }
1.1 raeburn 202:
1.4 ! raeburn 203: ###############################
! 204: # sub create_password
! 205: #
! 206: # This is called when the authentication method set for the automated
! 207: # enrollment process when enrolling new users in the domain is "local".
! 208: # This could be signalled for the specific user by the value of local
! 209: # for the <authtype> tag from the classlist.xml files, or if this is blank,
! 210: # the default authtype, set by the domain coordinator when creating the course
! 211: # with loncreatecourse.pm.
! 212: #
! 213: # create_password requires one argument -
! 214: # the value of <autharg> from the classlist.xml files, or if this is blank,
! 215: # the default autharg, set by the domain coordinator when creating the course
! 216: # with loncreatecourse.pm.
! 217: #
! 218: # Three values are returned:
! 219: # (a) the value of $authparam - which might have been changed
! 220: # (b) a flag to indicate whether a password had been created
! 221: # 0 means no password created
! 222: # 1 means password created. In this case the calling module - Enrollment.pm
! 223: # will send the LON-CAPA username and passwod to the new user's e-mail
! 224: # (if one was provided), or to the course owner (if one was not provided and
! 225: # the new user was created by the automated process), or to the active
! 226: # course coordinator (if the new user was created using the 'update roster
! 227: # now' interface included in the Automated Enrollment Manager.
! 228: # (c) a flag to indicate that the authentication method is correct - 'ok'.
! 229: # If $authchk is not set to 'ok' then account creation and enrollment of the
! 230: # new user will not occur.
! 231: #
! 232: ###############################
! 233:
! 234: sub create_password {
! 235: my $authparam = shift;
! 236: my $authchk = 'ok';
! 237: my $create_passwd = 0;
! 238: return ($authparam,$create_passwd,$authchk);
1.1 raeburn 239: }
240:
241: 1;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>