--- loncom/enrollment/localenroll.pm 2004/07/03 18:37:20 1.10 +++ loncom/enrollment/localenroll.pm 2006/07/11 02:28:27 1.15 @@ -1,6 +1,6 @@ # functions to glue school database system into Lon-CAPA for # automated enrollment -# $Id: localenroll.pm,v 1.10 2004/07/03 18:37:20 raeburn Exp $ +# $Id: localenroll.pm,v 1.15 2006/07/11 02:28:27 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -165,9 +165,9 @@ sub fetch_enrollment { # official sections and provides a checkbox to use to # select enrollment in the LON-CAPA course from each official section. # -# get_sections requires one argument - the institutional coursecode +# get_sections takes two arguments - (a) the institutional coursecode # (in the MSU case this is a concatenation of semester code, department -# and course number). +# and course number), and (b) the LON-CAPA domain that contains the course. # # If there is no access to official course sections at your institution, # then an empty array is returned, and the Automated Enrollment Manager @@ -200,12 +200,14 @@ sub get_sections { # The course section or crosslisted course will only be added to the list of # affiliates if 'ok' is returned. # -# new_course requires two arguments - -# the institutional courseID (in the MSU case this is a concatenation of +# new_course takes three arguments - +# (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). -# 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 # ################################# @@ -227,10 +229,11 @@ sub new_course { # # A valid courseID is confirmed by returning 'ok' # -# validate_courseID requires one argument - -# the institutional courseID (in the MSU case this is a concatenation of +# validate_courseID takes two arguments - +# (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 LON-CAPA domain that contains the course # ############################### @@ -249,13 +252,15 @@ sub validate_courseID { # for the tag from the classlist.xml files, or if this is blank, # the default authtype, set by the domain coordinator when creating the course # with loncreatecourse.pm. -# -# create_password requires one argument - -# the value of from the classlist.xml files, or if this is blank, -# the default autharg, set by the domain coordinator when creating the course -# with loncreatecourse.pm. +# +# create_password takes three arguments - +# (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) $dom - the domain of the new user. +# (c) $username - the username of the new user (currently not actually used) # -# Three values are returned: +# Four values are returned: # (a) the value of $authparam - which might have been changed # (b) a flag to indicate whether a password had been created # 0 means no password created @@ -268,14 +273,25 @@ sub validate_courseID { # (c) a flag to indicate that the authentication method is correct - 'ok'. # If $authchk is not set to 'ok' then account creation and enrollment of the # new user will not occur. -# +# (d) if a password was created it can be sent along. This is the password +# which will be included in the e-mail sent to the new user, or made available +# to the course owner/course coordinator if no e-mail address is provided. If +# you do not wish to send a password, but want to give instructions on obtaining +# one, you could set $newpasswd as those instructions. (e.g., +# $newpasswd = '(Please visit room 212, ACNS Bldg. to obtain your password)'; +# The value of $newpasswd is NOT written in the user's LON-CAPA passwd file in +# /home/httpd/lonUsers/$dom/a/b/c/abcuser/passwd, which in the case of a user +# employing localauth will contain 'localauth:$authparam'. If you need to include +# a parameter in the user's passwd file, you should return it as $authparam, +# i.e., the first of the variables returned by create_password(). ############################### sub create_password { - my ($authparam,$dom) = @_; + my ($authparam,$dom,$username) = @_; my $authchk = 'ok'; + my $newpasswd = ''; my $create_passwd = 0; - return ($authparam,$create_passwd,$authchk); + return ($authparam,$create_passwd,$authchk,$newpasswd); } ############################### @@ -288,7 +304,7 @@ sub create_password { # # Incoming data: # $dom (domain) -# $$courseIDs{'43551dedcd43febmsul1'} = 'Title of course' (hash of courseIDs) +# $$instcodes{'43551dedcd43febmsul1'} = 'Title of course' (hash of courseIDs) # # fs03nop590 would be split as follows # @{$codetitles} = ("year","semester","department","number") @@ -297,7 +313,7 @@ sub create_password { # $$codes{'department'} = 'nop' # $$codes{'number'} = '590' # -# requires five arguments: +# requires six arguments: # domain ($dom) # reference to hash of institutional course IDs ($instcodes) # reference to hash of codes ($codes) @@ -320,4 +336,104 @@ 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 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;