Martin, the achitecture seems very promising. From a user point of view, following some consideration about went to my mind and ready for discussion:
- the architecture could allow for time-based enrollment. For example, a student purchase a course, then he or she has a pre-configured time window into wich he can attend to the course. At the end of time window, the sudent is no more allowed to access the course unless the SysAdmin further allow it. The time window could be set by sysadmin as course level setting and it should be manually edited in case of need for each enrollment or for groups of enrollment.
- as for student, the same could be for teachers. In such case the teacher would purchase a service wich allows him to teach it's course into a timed window. For SysAdmins I think it would be very important to more finely define what the teacher can do: in the scenario of purchased time window to teach, in my opinion there could be an issue allowing a teacher to modify some course settings, so it would be interesting to have such settings under SysAdmin control, for example the upload quota, course category, course code, start date and so on.
- would be great if the the plugin architecture could be also open to Payment gateway (to be further implemented) other than Payment processor such as PayPal.
- it would be very fine if the html form code were the post to PayPal are sent could be encrypted, either with MD5-like php built in functions or by an arbitrary key entered by sysAdmin and hosted outside the web space.
- and, last but not least, would also be great if the architecture could handle a customized success/no-success payment customer experience and, upon payment success, the handling of needed emal to customer with instruction and access key.
A nice feature would also be the sending of a pdf diploma after attending a course and reaching a course-defined grading.
- Yes, timelimits is built in to the plan (in fact the fields have been in the table since Moodle was started but never used)
- Interesting idea, hadn't thought about teacher limits - will keep that in mind.
- Yes, other processors are definitely planned - they can just plug in.
- Paypal stuff is always encrypted by default - the form in Moodle will basically only be a button that calls Paypal.com
- Yes, no-success should be handled, thanks for the reminder. No need to email the key though, since a successful transaction will put the user right in the course (ie the act of paying is equivalent to entering the key).
Certificates? That's another feature.
this is interesting. I am looking at a general integration interface with enrollment software already in use in tertiary institutions.
How long will you keep the consultation phase open? I may need a few days before have sound feedback on the proposed interfaces.
I'm planning to get a rough version of the main API done first (so that it at least replicates existing Moodle) then we can try writing new modules and see what else the API needs before it starts to solidify.
I just started on something very similar in design last week for the college I work for. I'd like to coordinate my efforts with this project.
I'm primarily interested (at this time) in being able to cron a script that processes enrollments from a delimited flat file. So, according to this design I would need to implement enroll_cron() in a flat file plugin. Has any work started on this yet? How can I get involved?
Also, I'll do some more research but does the authentication plugin interface define something similar to enroll_cron for creating users? I'd like to pull the users to create from a flat file as well. Creating users when they login has proved very convenient in many cases but it we need to create/enroll students before the class starts.
- look for the file in a specified place, and if one is found:
- discover the format by looking at the first line
- parse the file, performing enroll/unenroll for each line as necessary
Then when the API is implemented we can quickly rework that into a 'flatfile' module called by cron.
The script cvs:/moodle/admin/uploaduser.php might be a good starting point.
Anyone know the reason that the link to uploaduser.php in /admin/index.php is only shown if using internal authentication?
It currentlty doesn't make sense to add users manually when external authentication is being used, that's why it's disabled. This will change when multipoint authentication is added and each user account is marked with an identifier about its source.
An instructor wants a new course in moodle so they call our helpdesk and a ticket is assigned to someone that creates the course. Now we need to add the instructor to the course. We use LDAP so the userupload script is not available (I can certainly change the code but thats not the point). So, we end up having to ask the instructor to login first and the we can make them an instructor. This obviously doesn't scale very well so my thought is we automatically create user accounts and enrollments every night like we do with our bb system.
For reference, we have about 800 class sections running online (about 2-300 are fully online) per semester in our bb system. We pull data from our Student system on the mainframe and from Active Directory every night and auto create courses, users and enrollments.
For now we'll only have 5-10 sections in moodle but I'm guessing that will grow fairly rapidly provided we can provide similar integration and given the trouble we continually have with bb even though we have spent well over 100K in hardware (8 front-end blade servers, 1 8 way db server, 1 bade for DFS/shared file system, redundant hardware load balancers and redundant SSL accelerators) and have even forced their president to send a letter of apology to our faculty and students for the trouble their software has caused. Sorry that turned into a little rant there...
Thought: Is there any way to "scan" LDAP and extract a listing of all accounts? It'd be great to have a cron feature to do this on a regular basis.
For our bb system we are basically scanning LDAP for accounts (for teacher accounts). We have a particular OU where all our teacher accounts are and I have a script that queries that container (OU) for all objects with objectclass = 'user' and puts them in a delimited file that the bb integration process picks up to create the accounts in bb. We create all the teacher accounts because it's too much of a pain to decide who needs to be created and who doesn't and it really doesn't hurt anything since there's only about 2000.
So, then how about a script that takes LDAP credentials like the auth module plus an LDAP query/filter, runs the query and auto creates the accounts?
That would take care of creating teacher accounts. Great idea Martin.
Student accounts are also in AD/LDAP but there's over 100,000 accounts because every student in the last 2 years has gotten an account. Unfortunately there's not much info in AD I could use to decide which accounts to pull. Most of the information is in an MS-SQL server that's populated from our mainframe so I would probably just decide from there if a student is taking one of the moodle courses and then create them.
Sorry to bore you, I'm just thinking out loud.
Thanks for your help
> plus an LDAP query/filter, runs the query and auto creates the accounts?
Your homework assignment!
Please review the SIF Standard at http://sifinfo.org. We have developed a SIF agent for Moodle that creates the user accounts by attaching to the Student Info System and HR system. It supports Student Personal Object, Student Enrollmet, Staff Personal, Staff Enrollment, Course Info, Section Info Section Enrollment, Term Info and school Info. The system will create all the courses and section through automation and assign 6the users to the section as well as the teachers.
When user move or graduate it keeps all sections up to date. The agent also creates and maintains all the user accounts. Itsuses a single sign on to ADS and will automatically maintain the Groups in sync.
I would be more than glad to give you a demo of how this all works.
Is it possible to control group membership from an external database at this time? If not, is it being considered for a future version?
We see there is an upload users function which can read files containing group information. Can this function be called from cron? Can it be used in conjunction with the external database mechanism?