--- loncom/enrollment/localenroll.pm 2006/02/07 04:54:17 1.11 +++ loncom/enrollment/localenroll.pm 2007/08/28 20:04:50 1.23 @@ -1,6 +1,6 @@ # functions to glue school database system into Lon-CAPA for # automated enrollment -# $Id: localenroll.pm,v 1.11 2006/02/07 04:54:17 raeburn Exp $ +# $Id: localenroll.pm,v 1.23 2007/08/28 20:04:50 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -31,6 +31,11 @@ use strict; ################################ # sub run # set this to return 1 if you want the auto enrollment to run +# +# Beginning with LON-CAPA version 2.4, use of this routine is +# deprecated. Whether or not Autoenroll.pl should run is set +# by the Domain Coordinator via "Set domain configuration", +# provided in the Domain Management section of the Main menu. ################################ sub run() { @@ -204,8 +209,9 @@ sub get_sections { # (a) the institutional courseID (in the MSU case this is a concatenation of # semester code, department code, course number, and section number # e.g., fs03nop590001). -# (b) the course owner. This is the LON-CAPA username of the course coordinator -# assigned to the course when it is first created. +# (b) the course owner. This is the LON-CAPA username and domain of the course +# coordinator assigned to the course when it is first created, in the form +# username:domain # (c) the LON-CAPA domain that contains the course # ################################# @@ -256,8 +262,8 @@ sub validate_courseID { # (a) $authparam - the value of from the classlist.xml files, # or if this blank, the default autharg, set by the domain coordinator when # creating the course with loncreatecourse.pm -# (b) $username - the username of the new user # (b) $dom - the domain of the new user. +# (c) $username - the username of the new user (currently not actually used) # # Four values are returned: # (a) the value of $authparam - which might have been changed @@ -286,7 +292,7 @@ sub validate_courseID { ############################### sub create_password { - my ($authparam,$username,$dom) = @_; + my ($authparam,$dom,$username) = @_; my $authchk = 'ok'; my $newpasswd = ''; my $create_passwd = 0; @@ -303,7 +309,7 @@ sub create_password { # # Incoming data: # $dom (domain) -# $$instcodes{'43551dedcd43febmsul1'} = 'Title of course' (hash of courseIDs) +# $$instcodes{'43551dedcd43febmsul1'} = 'fs03nop590' (hash of courseIDs) # # fs03nop590 would be split as follows # @{$codetitles} = ("year","semester","department","number") @@ -335,4 +341,268 @@ sub instcode_format () { return $outcome; } +############################### +# sub institutional_photos +# +# Called when automated enrollment manager is used to update student photos. +# +# Incoming data: six arguments +# (a) $dom (domain) +# (b) $crs (LONCAPA course number) +# (c) $affiliates: a reference to a hash with the keys set to the +# institutional course IDs for the course. +# (d) $result: a reference to a hash which will return usernames +# of students (& separated) in following categories (the keys): +# new, update, missing, same, deleted, noid, nouser. The list +# includes those students for whom the result of the modification +# process was either addition of a new photo. update of an +# existing photo, photo was found to be missing from institution's +# data store, photo used is same as before, or photo was +# deleted from storage on LON-CAPA server housing student's +# information, no student ID was available. + +# (e) $action: the type of action needed. (e.g., update, delete); +# (f) $students: a reference to a hash with the keys set to student +# usernames and domains in the form username:domain, and values set +# to the studentID, if action is required for specific students. +# +# returns 1 parameter: 'ok' if no processing errors. +# other course or student specific values can be stored as values +# in the appropriate referenced hashes. +############################### + +sub institutional_photos { + my ($dom,$crs,$affiliates,$result,$action,$students) = @_; + my $outcome = 'ok'; + return $outcome; +} + +############################### +# sub photo_permission +# +# Incoming data: three arguments +# (a) $dom (domain) +# (b) $perm_reqd: a reference to a a scalar that is either 'yes' +# if a course owner must indicate acceptance of conditions of use, +# 'no' otherwise. +# (c) $conditions: the text of the conditions of use. +# +# returns 1 parameter: 'ok' if no processing errors. +# $$perm_reqd is set to 'yes' or 'no' +# $$agreement is set to conditions of use - plain text string +# which will be displayed in a textarea in a web form. +############################### + +sub photo_permission { + my ($dom,$perm_reqd,$conditions) = @_; + $$perm_reqd = 'no'; + $$conditions = ''; + my $outcome = 'ok'; + return $outcome; +} + + +############################### +# sub manager_photo_update +# +# Incoming data: one argument +# (a) $dom (domain) +# +# returns 2 parameters: update (0 or 1), and comment. +# Called by automated enrollment manager, to determine +# whether "Update Student photos" button will be available, +# and if so, the message (plain text string) that will be displayed +# with the button. +############################### + +sub manager_photo_update { + my ($dom) = @_; + my $update = 0; + my $comment = ''; + return ($update,$comment); +} + +############################### +# sub check_section +# +# Incoming data: three arguments (+ fourth optional argument) +# (a) $class - institutional class id (coursecode concatanated with section) +# (b) $owner - course owner (2.2 and later username:domain; pre-2.2 username) +# (c) $dom 0 domain of course +# (d) $dbh - optional database handle +# +# returns 1 parameter - $sectioncheck ('ok' or other value). +# Verifies that course owner has access to classlist for specific class +# according to institution's SIS. 'ok' if access available +############################### + +sub check_section { + my ($class,$owner,$dom,$dbh) = @_; + my $sectioncheck = 'ok'; + return $sectioncheck; +} + +############################### +# sub instcode_defaults +# +# Incoming data: three arguments +# (a) $dom - domain +# (b) $defaults - reference to hash which will contain default regular +# expression matches for different components of an +# institutional course code +# (c) $code_order - reference to array which will contain order of +# component parts used in institutional code. +# +# returns 1 parameter - ('ok' or other value). +# Used to construct a regular expression to be used when searching for +# courses based on fragments of an institutional code. +# $defaults contains defaults to use for each component, and code_order +# contains keys of hash in order in which they are to be concatenated. +# +# e.g., INSTITUTIONALCODE = fs03nop590 +# (MSU's course naming scheme - fs = semester, 03 = year, nop = +# department name, 590 = course number) +# +# %{$defaults} = ( +# 'Year' => '\d{2}', +# 'Semester' => '^[sfu]s', +# 'Department' => '\w{2,3}', +# 'Number' => '\d{3,4}\w?', +# ); +# +# @{$code_order} = ('Semester','Year','Department','Number'); +# +############################### + +sub instcode_defaults { + my ($dom,$defaults,$code_order) = @_; + return 'ok'; +} + +############################### +# sub allusers_info +# +# Incoming data: three arguments +# (a) $dom - domain +# (b) $instusers - reference to hash which will contain hashes, +# where keys will be usernames and value will be a +# hash of user information. Keys in the inner hash +# will be some or all of: lastname,firstname, +# middlename, generation, id, inststatus - +# institutional status (e.g., faculty,staff,student) +# Values are all scalars except inststatus, +# which is an array. +# (c) $instids - reference to hash which will contain ID numbers. +# keys will be unique IDs (student or faculty/staff ID) +# values will be either: scalar (username) or an array +# if a single ID matches multiple usernames. +# returns 1 parameter - ('ok' or other value). +# side effects - populates the $instusers and $instids refs to hashes. +# with information for all users from all available +# institutional datafeeds. +# +############################### + +sub allusers_info { + my ($dom,$instusers,$instids) = @_; + my $outcome = 'ok'; + return $outcome; +} + +############################### +# sub get_userinfo +# +# Incoming data: four required arguments and additional optional arguments +# Two modes of operation: +# (1) Retrieves institutional data for a single user either by username +# if $uname is included as second argument, or by ID if $id is +# included as a third argument. Either (b) or (c) must be provided. +# (g), (h) and (i) will be undefined. +# (2) Retrieves institutional user data from search of an institutional +# directory based on a search. (g) and (h) are required. +# (i) is optional. (b) and (c) will be undefined. +# +# (a) $dom - domain +# (b) $uname - username of user +# (c) $id - student/faculty ID of user +# (d) $instusers - reference to hash which will contain info for user +# as key = value; keys will be one or all of: +# lastname,firstname,middlename,generation,id,inststatus - +# institutional status (e.g., faculty,staff,student) +# Values are all scalars except inststatus, +# which is an array. +# (e) $instids - reference to hash which will contain ID numbers - +# keys will be unique IDs (student or faculty/staff ID) +# values will be either: scalar (username) or an array +# if a single ID matches multiple usernames. +# (f) $types - optional reference to array which contains +# institutional types to check. +# (g) $srchby - optional if $uname or $id defined, otherwise required. +# Allowed values include: 1. lastfirst, 2. last, 3. uname +# corresponding to searches by 1. lastname,firstname; +# 2. lastname; 3. username +# (h) $srchterm - optional if $uname or $id defined, otherwise required +# String to search for. +# (i) $srchtype - optional. Allowed values: contains, begins (defaults +# to exact match otherwise). +# +# returns 1 parameter - ('ok' or other value). +# side effects - populates the $instusers and $instids refs to hashes. +# with information for specified username, or specified +# id, if fifth argument provided, from all available, or +# specified (e.g., faculty only) institutional datafeeds, +# if sixth argument provided. +############################### + +sub get_userinfo { + my ($dom,$uname,$id,$instusers,$instids,$types, + $srchby,$srchterm,$srchtype) = @_; + my $outcome = 'ok'; + return $outcome; +} + +############################### +# sub inst_usertypes +# +# Incoming data: three arguments +# (a) $dom - domain +# (b) $usertypes - reference to hash which will contain +# key = value, where keys are institution +# affiliation types (e.g., Faculty, Student etc.) +# and values are titles (e.g., Faculty/Academic Staff) +# (c) $order - reference to array which will contain the order in +# which institutional types should be shown +# when displaying data tables (e.g., default quotas +# or updateable user fields (see domainprefs.pm) +# returns 1 parameter - ('ok' or other value). +# +############################### + +sub inst_usertypes { + my ($dom,$usertypes,$order) = @_; + @{$order} = (); + %{$usertypes} = (); + my $outcome = 'ok'; + return $outcome; +} + +############################### +# sub AUTOLOAD +# +# Incoming data: none +# Returns '' +# +# Prevents errors when undefined subroutines are called in this package +# Will allow new routines added in the future to be called from lond etc. +# without the need for customized versions of local*.pm packages to be +# modified to include the new subroutines immediately. +# +# See "Programming Perl" 3rd ed. pp 296-298. +############################### + +sub AUTOLOAD { + our $AUTOLOAD; + return ''; +} + 1;