Diff for /loncom/enrollment/localenroll.pm between versions 1.6 and 1.18

version 1.6, 2003/12/11 15:45:25 version 1.18, 2007/02/26 20:52:55
Line 33  use strict; Line 33  use strict;
 # set this to return 1 if you want the auto enrollment to run  # set this to return 1 if you want the auto enrollment to run
 ################################  ################################
   
 sub run { return 0; }  sub run() {
       my $dom = shift;
       return 0;
   }
   
 ################################  ################################
 # sub fetch_enrollment  # sub fetch_enrollment
Line 50  sub run { return 0; } Line 53  sub run { return 0; }
 # where DOMAIN = msu  COURSE = 43551dedcd43febmsul1   # where DOMAIN = msu  COURSE = 43551dedcd43febmsul1 
 # INSTITUTIONALCODE = fs03nop590001   # INSTITUTIONALCODE = fs03nop590001 
 # (MSU's course naming scheme - fs03 = Fall semester 2003, nop =  # (MSU's course naming scheme - fs03 = Fall semester 2003, nop =
 # department name, 590 = course number, 001 = section number.  # department name, 590 = course number, 001 = section number.)
 #  #
 # fetch_enrollment requires three arguments -  # fetch_enrollment requires three arguments -
 # $dom - DOMAIN e.g., msu  # $dom - DOMAIN e.g., msu
Line 105  sub run { return 0; } Line 108  sub run { return 0; }
 #</students>  #</students>
 #  #
 # The <startdate> and the <enddate> are the activation date and expiration date  # The <startdate> and the <enddate> are the activation date and expiration date
 # for this student's role. If they are absent, then the date set for  # for this student's role. If they are absent, then the default access start and
 # first automated enrollment is used as the default activation date, and the  # default access end dates are used. The default access dates can be set when 
 # date set for last automated enrollment is used as the default expiration date.  # the course is created, and can be modified using the Automated Enrollment
   # Manager, or via the 'Upload a class list','Enroll a single student' or 
   # 'Modify student data' utilities in the Enrollment Manager, by checking the 
   # 'make these dates the default for future enrollment' checkbox. If no default 
   # dates have been set, then the tudent role will be active immediately, and will 
   # remain active until the role is explicitly expired using ENRL -> Drop students. 
 # If dates are to included in the XML file, they should be in the format  # If dates are to included in the XML file, they should be in the format
 # YYYY:MM:DD:HH:MM:SS (: separators required).  # YYYY:MM:DD:HH:MM:SS (: separators required).
 #  #
Line 135  sub run { return 0; } Line 143  sub run { return 0; }
 ################################  ################################
   
 sub fetch_enrollment {  sub fetch_enrollment {
   my ($dom,$affiliatesref,$replyref) = @_;      my ($dom,$affiliatesref,$replyref) = @_;
      foreach my $crs (sort keys %{$affiliatesref}) {      foreach my $crs (sort keys %{$affiliatesref}) {
          $$replyref{$crs} = 0;          $$replyref{$crs} = 0;
      }      }
   }      my $okflag = 0;
   my $okflag = 0;      return $okflag;
   return $okflag;  
 }  }
   
 ###############################  ###############################
Line 158  sub fetch_enrollment { Line 165  sub fetch_enrollment {
 # official sections and provides a checkbox to use to  # official sections and provides a checkbox to use to
 # select enrollment in the LON-CAPA course from each official section.    # select enrollment in the LON-CAPA course from each official section.  
 #  #
 # get_sections requires one argument - the instituional coursecode  # get_sections takes two arguments - (a) the institutional coursecode
 # (in the MSU case this is a concatenation of semester code, department  # (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,  # If there is no access to official course sections at your institution,
 # then an empty array is returned, and the Automated Enrollment Manager  # then an empty array is returned, and the Automated Enrollment Manager
 # interface will allow the course coordinator to enter section numbers  # interface will allow the course coordinator to enter section numbers
 # in text boxes.  # in text boxes.
 #   # 
 ################################   ###############################
   
 sub get_sections {  sub get_sections {
     my $coursecode = shift;      my ($coursecode,$dom) = @_;
     my @secs = ();      my @secs = ();
     return @secs;      return @secs;
 }  }
Line 182  sub get_sections { Line 189  sub get_sections {
 # lonpopulate.pm to record that fact that a new course section  # lonpopulate.pm to record that fact that a new course section
 # has been added to LON-CAPA that requires access to institutional data  # has been added to LON-CAPA that requires access to institutional data
 # At MSU, this is required, as institutional classlists can only made  # At MSU, this is required, as institutional classlists can only made
 # available to faculty who are officially assigned to a course  # available to faculty who are officially assigned to a course.
 #   # 
 # The new_course subroutine is used to check that the course owner  # The new_course subroutine is used to check that the course owner
 # of the LON-CAPA course is permitted to access the institutional  # of the LON-CAPA course is permitted to access the institutional
Line 193  sub get_sections { Line 200  sub get_sections {
 # The course section or crosslisted course will only be added to the list of  # The course section or crosslisted course will only be added to the list of
 # affiliates if 'ok' is returned.  # affiliates if 'ok' is returned.
 #  #
 # new_course requires two arguments -  # new_course takes three arguments -
 # the institutional courseID (in the MSU case this is a concatenation of   # (a) the institutional courseID (in the MSU case this is a concatenation of 
 # semester code, department code, course number, and section number  # semester code, department code, course number, and section number
 # e.g., fs03nop590001).  # e.g., fs03nop590001).
 # the course owner. This is the LON-CAPA username of the course coordinator   # (b) the course owner. This is the LON-CAPA username and domain of the course 
 # assigned to the course when it is first created.  # coordinator assigned to the course when it is first created, in the form
   # username:domain
   # (c) the LON-CAPA domain that contains the course
 #  #
 #################################  #################################
   
 sub new_course  {  sub new_course  {
     my ($course_id,$owner) = @_;      my ($course_id,$owner,$dom) = @_;
     my $outcome = 'ok';      my $outcome = 'ok';
     return $outcome;      return $outcome;
 }  }
Line 220  sub new_course  { Line 229  sub new_course  {
 #  #
 # A valid courseID is confirmed by returning 'ok'  # A valid courseID is confirmed by returning 'ok'
 #  #
 # validate_courseID requires one argument -  # validate_courseID takes two arguments -
 # the institutional courseID (in the MSU case this is a concatenation of  # (a) the institutional courseID (in the MSU case this is a concatenation of
 # semester code, department code, course number, and section number  # semester code, department code, course number, and section number
 # e.g., fs03nop590001).  # e.g., fs03nop590001).
   # (b) the LON-CAPA domain that contains the course
 #  #
 ###############################    ###############################  
   
 sub validate_courseID {  sub validate_courseID {
     my $course_id = shift;      my ($course_id,$dom) = @_;
     my $outcome = 'ok';      my $outcome = 'ok';
     return $outcome;         return $outcome;   
 }  }
Line 237  sub validate_courseID { Line 247  sub validate_courseID {
 # sub create_password   # sub create_password 
 #  #
 # This is called when the authentication method set for the automated   # This is called when the authentication method set for the automated 
 # enrollment process when enrolling new users in the domain is "local".  # enrollment process when enrolling new users in the domain is "localauth".
 # This could be signalled for the specific user by the value of local  # This could be signalled for the specific user by the value of localauth
 # for the <authtype> tag from the classlist.xml files, or if this is blank,  # for the <authtype> tag from the classlist.xml files, or if this is blank,
 # the default authtype, set by the domain coordinator when creating the course  # the default authtype, set by the domain coordinator when creating the course
 # with loncreatecourse.pm.  # with loncreatecourse.pm.
 #   #  
 # create_password requires one argument -  # create_password takes three arguments -
 # the value of <autharg> from the classlist.xml files, or if this is blank,  # (a) $authparam - the value of <autharg> from the classlist.xml files,
 # the default autharg, set by the domain coordinator when creating the course  # or if this blank, the default autharg, set by the domain coordinator when 
 # with loncreatecourse.pm.    # 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  # (a) the value of $authparam - which might have been changed
 # (b) a flag to indicate whether a password had been created  # (b) a flag to indicate whether a password had been created
 # 0 means no password created  # 0 means no password created
 # 1 means password created.  In this case the calling module - Enrollment.pm  # 1 means password created.  In this case the calling module - Enrollment.pm
 # will send the LON-CAPA username and passwod to the new user's e-mail  # will send the LON-CAPA username and password to the new user's e-mail
 # (if one was provided), or to the course owner (if one was not provided and  # (if one was provided), or to the course owner (if one was not provided and
 # the new user was created by the automated process), or to the active  # the new user was created by the automated process), or to the active
 # course coordinator (if the new user was created using the 'update roster  # course coordinator (if the new user was created using the 'update roster
 # now' interface included in the Automated Enrollment Manager.    # now' interface included in the Automated Enrollment Manager).  
 # (c) a flag to indicate that the authentication method is correct - 'ok'.  # (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   # If $authchk is not set to 'ok' then account creation and enrollment of the 
 # new user will not occur.  # 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 {  sub create_password {
     my $authparam = shift;      my ($authparam,$dom,$username) = @_;
     my $authchk = 'ok';      my $authchk = 'ok';
       my $newpasswd = '';
     my $create_passwd = 0;      my $create_passwd = 0;
     return ($authparam,$create_passwd,$authchk);      return ($authparam,$create_passwd,$authchk,$newpasswd);
   }
   
   ###############################
   # sub instcode_format 
   #
   # Split coursecodes into constituent parts.   
   # e.g., INSTITUTIONALCODE = fs03nop590, LON-CAPA COURSEID: 43551dedcd43febmsul1
   # (MSU's course naming scheme - fs03 = Fall semester 2003, nop =
   # department name, 590 = course number)
   #
   # Incoming data:
   # $dom (domain)
   # $$instcodes{'43551dedcd43febmsul1'} = 'fs03nop590' (hash of courseIDs)
   # 
   # fs03nop590 would be split as follows
   # @{$codetitles} = ("year","semester","department","number")
   # $$codes{{'year'} = '2003'
   # $$codes{'semester'} = 'Fall'
   # $$codes{'department'} = 'nop'
   # $$codes{'number'} = '590'
   #
   # requires six arguments:
   # domain ($dom)
   # reference to hash of institutional course IDs ($instcodes)  
   # reference to hash of codes ($codes)
   # reference to array of titles ($codetitles)
   # reference to hash of abbreviations used in categories
   # reference to hash of arrays specifying sort order used in category titles   
   #
   # e.g.,     %{$$cat_titles{'Semester'}} = (
   #                   fs => 'Fall',
   #                   ss => 'Spring',
   #                   us => 'Summer');
   #
   # e.g., @{$$cat_order{'Semester'}} = ('ss','us','fs'); 
   # returns 1 parameter: 'ok' if no processing errors.  
   ###############################
   
   sub instcode_format () {
       my ($dom,$instcodes,$codes,$codetitles,$cat_titles,$cat_order) = @_;
       my $outcome = 'ok';
       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 two optional arguments
   # 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. 
   # (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.
   #
   # 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) = @_;
       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) = @_;
       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;  1;

Removed from v.1.6  
changed lines
  Added in v.1.18


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.