My university is abandoning its current attendance tracking system which involves students tapping their embedded chip ID card on a station outside their classroom. In its place, I am trying to get the university to adopt the attendance module. The module, however, in its current state cannot be used efficiently for student-based input. It was primarily designed for use by teachers, or students in a computer lab environment.
Since we are in a hurry and I had the wherewithall to make the modifications myself, I haven't gone through the standard process of making a suggestion on the tracker. My apologies to Dan Marsden! I hope, however, that the intended functionality can be implemented in the standard version of the module, rather than having to be a privately-managed alternate version with an alternate name.
What I have done is to allow the instructor to create a set of sessions with a unique code that is announced to the students at the beginning of each class. There is also a setting called "minutes until late" that allows the teacher to set a time frame of perhaps 5-10 minutes after the start of the class, where the student is deemed "present". After that, until the end of the class (as input by the instructor), the student would be marked "late".
There is also a function for specifying an IP address range, and if the student uses the attendance function outside that IP range, then the student is listed as "off site" rather than "present". This has not been thoroughly tested, however, and will not work if 1) the wifi transmitters in/near the classroom do not have specific IP addresses, or 2) students register with the smartphones while using their provider's connection rather than the university's WiFi system.
This is how it works. If students log in to the attendance module instance on the class page, they will simply see their attendance record. If, however, their class is currently in progress, a window embedded in a red bar will appear at the top of the attendance display. If they then input the keyword, their attendance will be registered.
We have had to make one tweak to the "settings" where the instructor can set both the character used to specify the various attendance levels, as well as the description of the levels. In the standard version of the module, these can be modified and the various levels specified in any order. We now require the topmost level to represent "Present" and the 2nd level to represent "Late". This is normally that case, but does not necessarily have to be input that way.
This version works (available at http://tomrobb.com/attendance-robb.tar -- 360mb) on Moodle 2.6 & 2.7 and might work on 2.8. We are working on another version for 2.9 & 3.0. This revision does need more testing. If you do, beware that it does modify the database tables. attendance_sessions now contains two more fields "keyw" (keywords being used = "1") and "keyword" (specifies the keyword for each session). This may or may not prevent you from reverting to the standard module if you decide to do so. (No fields have been deleted, so it might not cause a problem.)
I look forward to your feedback!