Attendance

Activities ::: mod_attendance
Maintained by Dan Marsden
Part of sets Attendance, MoodleCloud.
A plugin that allows an attendance log to be kept. - includes an optional block for easy access to relevant functions.
Latest release:
19713 sites
5k downloads
366 fans
Current versions available: 19

The Attendance activity allows teachers to maintain a record of attendance, replacing or supplementing a paper-based attendance register. It is primarily used in blended-learning environments where students are required to attend classes, lectures and tutorials and allows the teacher to track and optionally provide a grade for the students attendance. The instructor can set the frequency of their classes (# of days per week & length of course) or create specific sessions. 

To take attendance, the instructor clicks on the "Update Attendance" button and is presented with a list of all the students in that course, along with configurable options and comments. The default options provided are: Present, Absent, Late & Excused. Instructors can download the attendance for their course in Excel format or text format.

Sessions can also be configured to allow students to record their own attendance and a range of different reports are available.

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3

Contributors

Dan Marsden (Lead maintainer)
Фотография
Artem Andreev: Previous maintainer/developer
Dmitry Pupinin: Original author
Please login to view contributors details and/or to contact them

Comments RSS

Comments

  • Just wondering . . .
    Tue, 11 Aug 2015, 1:58 PM
    Dan, last week I had a request to see if Attendance reports could be exported out by cohort from a tutor at our Music school in Auckland. Any thoughts on this? Would it be a big fix?

    -Derek
  • Dan Marsden
    Tue, 11 Aug 2015, 3:47 PM
    Hey Derek, feel free to add that as a feature request in the github tracker. We have some incoming improvements (https://github.com/danmarsden/moodle-mod_attendance/pull/140) to the reports but nothing that adds cohort information that I'm aware of at this stage.
  • Bill Junkin
    Fri, 14 Aug 2015, 12:54 AM
    Hi, Dan,
    We have written a Moodle module for in-class polling called IPAL (In-class Polling for All Learners). At the request of the Moodle team at the University of Jerusalem I have added a utility so that teachers who use your Attendance module can easily use ipal to take attendance.
    If have posted this latest version at https://github.com/wjunkin/moodle-mod_ipal/tree/MOODLE_29_STABLE and will soon move this version into the official Moodle site for this module (https://moodle.org/plugins/view/mod_ipal). There is nothing that you have to do, but since ipal now can interact with your wonderful attendance module, I wanted you to know of this development.
    In case you are interested, here is how this works.
    1) A teacher sets up at least one attendance instance with at least one session in the course.
    2) In the ipal interface that allows the teacher to create polling questions, there is now an option to add one or more "Attendance questions." If the teacher selects this option, the ipal program parses the database and displays all the sessions already created in that course. The teacher can select one or more of these sessions and the ipal "Attendance Question(s)" are automatically created.
    3) In class when the teacher sends an Attendance Question to the students a unique number is generated and displayed to the teacher beside the question. The teacher can then give this unique number to all the students present in the class at that time. The Attendance Question asks the students to enter this unique number.
    4) At any time the teacher can click on a button in ipal beside a given Attendance Question requesting ipal to "Update Attendance." The ipal program then parses all the student answers to that particular question and every student whose answer matches the unique number for that Attendance Session is automatically marked present.
    Students can use any device with a browser to answer the ipal questions. Since ipal also has Apps for both the Android and the iOS smart phones, students can also use these apps on their smart phones to answer questions. At any time the teacher can go in by hand and update the attendance record. (Students that don't have a device (or the battery on their device is dead) can answer the question on a piece of paper and turn it in and the teacher can mark them present by hand.) However, we think that this may greatly facilitate using your module to take attendance.
    If you ever change the names of tables or fields in the tables if you will let me know, I will appreciate it, since the ipal script (obviously) interacts directly with the tables in your module.
    If you want more information or want to discuss this in greater detail, I will be happy to discuss this with you.
  • Dan Marsden
    Fri, 14 Aug 2015, 5:28 AM
    Thanks Bill - sounds interesting. It would probably make sense to write some shared functions that you could leverage from within the attendance lib files to use instead of direct access to the db - that way if the structure in the attendance plugin changes, as long as the internal functions are adjusted your plugin shouldn't care which version of the attendance is installed.
    Daniel Neis started to add some web-services functions which also made some of the internal functions more generic:
    https://github.com/danmarsden/moodle-mod_attendance/pull/90
    He didn't finish that off in the end but if that code got revived it could provide some more generic methods for you to leverage.
    I'll try to remember to get in touch if that work gets finished off.
  • Bill Junkin
    Fri, 14 Aug 2015, 6:07 AM
    Hi, Dan -- Having something like an API within the attendance code that I and others could use probably would be useful. (Ipal can also interact with the EJS module (https://moodle.org/plugins/view/mod_ejsapp) so that EJS simulations that are created in a course can be included in a polling question, and the ipal code uses an API that the EJS module authors created.) This would insure that you could change the attendance module as you wished and, as long as you also updated the API, nothing would get broken. However, I would recommend that we see if this becomes very popular before you spend much time on this. If work on that "gets revived" it probably would be useful if I sent you a list of all the queries that ipal makes on attendance tables.
  • Helen Foster
    Tue, 25 Aug 2015, 5:55 PM
    I'm pleased to announce that the Attendance module has received the Featured Moodle plugin award! See the post Featured plugin: Attendance module for an interview with Dan.

    Many thanks Dan, Artem and all other contributors for your work.
  • Just wondering . . .
    Wed, 26 Aug 2015, 5:20 AM
    Suggestion for enhancement, filter by cohort: https://github.com/danmarsden/moodle-mod_attendance/issues/146
    And well deserved FMP award. Great plugin. and Responsiveness from Dan is about as good as you can get.

    -Derek
  • Carlos Alberto Utrera Burgal
    Tue, 1 Sept 2015, 7:50 PM
    Good afternoon (almost here) Dan.

    I was iupgrading my moodle version (from 2.3.1+ to 2.9) using cli. After login I gone to notifications and saw that i missed attendance and other modules. After I have uploaded new versions y have clicked on upgrade and got this error:

    Debug info: Table 'attendance' already exists
    CREATE TABLE attendance (
    id BIGINT(10) NOT NULL auto_increment,
    course BIGINT(10) NOT NULL DEFAULT 0,
    name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
    grade BIGINT(10) NOT NULL DEFAULT 100,
    CONSTRAINT PRIMARY KEY (id)
    , KEY atte_cou_ix (course)
    )
    ENGINE = InnoDB
    DEFAULT CHARACTER SET utf8
    DEFAULT COLLATE = utf8_unicode_ci
    COMMENT='Attendance module table'
    ;
    CREATE TABLE attendance_sessions (
    id BIGINT(10) NOT NULL auto_increment,
    attendanceid BIGINT(10) NOT NULL DEFAULT 0,
    groupid BIGINT(10) NOT NULL DEFAULT 0,
    sessdate BIGINT(10) NOT NULL DEFAULT 0,
    duration BIGINT(10) NOT NULL DEFAULT 0,
    lasttaken BIGINT(10),
    lasttakenby BIGINT(10) NOT NULL DEFAULT 0,
    timemodified BIGINT(10),
    description LONGTEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
    descriptionformat TINYINT(2) NOT NULL DEFAULT 0,
    studentscanmark TINYINT(1) NOT NULL DEFAULT 0,
    CONSTRAINT PRIMARY KEY (id)
    , KEY attesess_att2_ix (attendanceid)
    , KEY attesess_gro2_ix (groupid)
    , KEY attesess_ses2_ix (sessdate)
    )
    ENGINE = InnoDB
    DEFAULT CHARACTER SET utf8
    DEFAULT COLLATE = utf8_unicode_ci
    COMMENT='attendance_sessions table retrofitted from MySQL'
    ;
    CREATE TABLE attendance_log (
    id BIGINT(10) NOT NULL auto_increment,
    sessionid BIGINT(10) NOT NULL DEFAULT 0,
    studentid BIGINT(10) NOT NULL DEFAULT 0,
    statusid BIGINT(10) NOT NULL DEFAULT 0,
    statusset VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
    timetaken BIGINT(10) NOT NULL DEFAULT 0,
    takenby BIGINT(10) NOT NULL DEFAULT 0,
    remarks VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
    CONSTRAINT PRIMARY KEY (id)
    , KEY attelog_ses2_ix (sessionid)
    , KEY attelog_stu2_ix (studentid)
    , KEY attelog_sta2_ix (statusid)
    )
    ENGINE = InnoDB
    DEFAULT CHARACTER SET utf8
    DEFAULT COLLATE = utf8_unicode_ci
    COMMENT='attendance_log table retrofitted from MySQL'
    ;
    CREATE TABLE attendance_statuses (
    id BIGINT(10) NOT NULL auto_increment,
    attendanceid BIGINT(10) NOT NULL DEFAULT 0,
    acronym VARCHAR(2) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
    description VARCHAR(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
    grade SMALLINT(3) NOT NULL DEFAULT 0,
    visible TINYINT(1) NOT NULL DEFAULT 1,
    deleted TINYINT(1) NOT NULL DEFAULT 0,
    CONSTRAINT PRIMARY KEY (id)
    , KEY attestat_att2_ix (attendanceid)
    , KEY attestat_vis2_ix (visible)
    , KEY attestat_del2_ix (deleted)
    )
    ENGINE = InnoDB
    DEFAULT CHARACTER SET utf8
    DEFAULT COLLATE = utf8_unicode_ci
    COMMENT='attendance_statuses table retrofitted from MySQL'
    Error code: ddlexecuteerror


    Stack trace:

    line 449 of /lib/dml/moodle_database.php: ddl_change_structure_exception thrown
    line 905 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end()
    line 76 of /lib/ddl/database_manager.php: call to mysqli_native_moodle_database->change_database_structure()
    line 412 of /lib/ddl/database_manager.php: call to database_manager->execute_sql_arr()
    line 364 of /lib/ddl/database_manager.php: call to database_manager->install_from_xmldb_structure()
    line 671 of /lib/upgradelib.php: call to database_manager->install_from_xmldb_file()
    line 424 of /lib/upgradelib.php: call to upgrade_plugins_modules()
    line 1630 of /lib/upgradelib.php: call to upgrade_plugins()
    line 433 of /admin/index.php: call to upgrade_noncore()

    Seem like instead of updating tables script is trying to create them and mysql launch an error because the table already exists.

    Could you help me.

    Thanks and best regards.

    PS: this is no my production modle site, is a test site in order to upgrade it and check possible problems ans errors.
  • Dan Marsden
    Wed, 2 Sept 2015, 5:28 AM
    Carlos - it sounds like you have the old attforblock plugin installed. The last version that supported migration from that code was the 2.7 version of the mod_attendance code. it's called in the version.php file here:
    https://github.com/danmarsden/moodle-mod_attendance/blob/MOODLE_27_STABLE/version.php#L45

    as your db is in a corrupt state you may need to start the upgrade process all over again.
  • surlie patel
    Tue, 20 Oct 2015, 5:42 AM
    Hello, colleagues,

    I am new here and hoping to get some direction. I am installing the attendance plug-n and received this message. Thank you so much in advance.
    "There is a request to install plugin Attendance (mod_attendance) version 2015040500 from the Moodle plugins directory on this site. However, the location /var/www/Moodle_2015_29/moodle/mod is not writable. You need to give write access for the web server user to the location, then press the continue button to repeat the check"
  • Valdi Tutunji
    Thu, 5 Nov 2015, 8:41 PM
    After the last update the plugin stopped working. Gives the following error: ERROR 500 - INTERNAL SERVER ERROR. Moodle 2.9+.
  • Valdi Tutunji
    Thu, 5 Nov 2015, 8:42 PM
    Thanks Your Help...
  • Mad Eye Moody - not as bad as he looks
    Sat, 7 Nov 2015, 12:41 AM
    I have the same issue with ERROR 500 after upgrading to version 3.0.0.1 of the plugin. I am in the middle of a course and urgently need to regain access to my Attendance activity. Thanks for any help.
  • Dan Marsden
    Mon, 9 Nov 2015, 4:10 AM
    Error 500 is a generic web server error and does not provide enough information for us to diagnose. Please look at your web server logs for more detailed information - there is also this FAQ which might help: https://docs.moodle.org/en/Errors_FAQ#Error:_.22500:Internal_Server_Error.22
  • Tülin Arslan
    Mon, 9 Nov 2015, 4:11 AM
    Dear all,
    I am using this plugin and have a question: is it possible to count the total non existing hours of students at the end of the course? I am doing it via import attendance as a excel data, but I want, that the student can see their attendance in total. Thank for your help!
Please login to post comments