Moodle Plugins directory: Proctoring for Moodle | Moodle.org

Proctoring for Moodle
Quiz access rules ::: quizaccess_proctoring
Maintained by
Brain Station 23
The Moodle Proctoring plugin is a Quiz Access plugin designed to capture a user's picture via webcam to identify the individual attempting the Moodle quiz. It automatically captures images from the user's webcam at 30-second intervals (or any configurable time gap) and stores them as PNG files. Admins can analyze these images after the exam for verification purposes using the BS Face Matching API.
This plugin enables the capture of random images via webcam while the student or user is attempting a quiz.
Latest release:
1789 sites
1k downloads
97 fans
Current versions available: 2
Proctoring for Moodle
The Moodle Proctoring plugin is a Quiz Access plugin designed to capture a user's picture via webcam to identify the individual attempting the Moodle quiz. It automatically captures images from the user's webcam at 30-second intervals (or any configurable time gap) and stores them as PNG files. Admins can analyze these images after the exam for verification purposes using the BS Face Matching API.
This plugin enables the capture of random images via webcam while the student or user is attempting a quiz
Click here for plugin demo.
Features
- Automatically captures user/student images via a webcam during a quiz.
- Prevents quiz access if the user does not allow camera permissions.
- Admins can view reports to identify suspicious activities.
- Works seamlessly with the existing Question Bank and Quiz modules.
- Stores images in Moodledata as compact PNG files.
- Provides options to delete images individually or in bulk.
- Includes proctoring log reports with advanced search capabilities.
- Allows admins to upload base images for user face recognition.
- Supports face validation before quiz attempts.
- Configurable image resolution and capture interval.
- Face Recognition service(BS). [This feature validates the user image with an uploaded image. You can use Brain Station Face Recognition service. Please contact us (elearning@brainstation-23.com) if you want to obtain API Key for Brain Station face recognition service]
Installation and Configuration
Please the follow the GitHub Readme for updated installation and configuration process.
Proctoring Pro is available now! 🎉
Get the Proctoring Pro plugin now.
Our Flagship Plugins
Name | Description | Get More Info |
---|---|---|
Proctoring Pro for Moodle | Proctoring Pro: Auto-captures webcam photos using BS Face Recognition in quizzes. | Proctoring Pro |
Alap Schedular for Moodle | Alap Scheduler: Enables students to book teacher slots via a calendar, facilitating Zoom meetings | Alap Schedular |
Interactive PDF for Moodle | Interactive PDF: Enables teacher to add question between texts | Interactive PDF |
Interviewer for Moodle | Interview: Enables teacher to interview/viva with student and mark them. Can be used for job interviews | Interviewer |
For any Moodle related services, Contact us at elearning@brainstation-23.com
FAQ’s
1. How can I upload a user image?
> From the settings of the proctoring plugin, there is an option for uploading user images.
2. Why does the analyze image button give a red mark for all the images?
> Check whether the credentials for the face match methods are correct and the user’s image is uploaded by the admin.
3. Can the students upload their own images?
> No, only admins can access.
4. Where can I get the BS Service API credentials?
> Please contact here: elearning@brainstation-23.com for details.
5. Is the screenshot feature available?
> No, it is removed because of browser limitation.
6. How can I report an issue regarding this plugin?
> Please raise an issue in this link: GitHub Issues
7. Why is my moodle stuck while validating the face?
> Please check whether the credentials for the face match methods are correct
8. Why can’t I upload some of the user images?
> Every user image needs to have a face that can be detect. Please make sure the image is bright enough and there is no multiple face in that image. Otherwise, it can’t be uploaded.
9. As a student, why can’t I validate my face before starting a quiz?
> Student’s image must be uploaded by an admin in the moodle to validate their face before an attempt.
10. What does the yellow mark around the image mean?
> Case 1: Please check whether the user image is uploaded in moodle.
> Case 2: Images captured with previous version of proctoring plugin can’t be analyzed by the current version of proctoring plugin because it lacks some meta data.
License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
Useful links
Contributors
Brain Station 23 (Lead maintainer)
Please login to view contributors details and/or to contact them
See trace below:
Error
Exception - Class "mod_quiz\local\access_rule_base" not found
Debug info:
Error code: generalexceptionmessage
Stack trace:
• line 28 of /mod/quiz/accessrule/proctoring/rule.php: Error thrown
• line 834 of /lib/classes/component.php: call to include_once()
• line 93 of /mod/quiz/accessmanager.php: call to core_component::get_plugin_list_with_class()
• line 256 of /mod/quiz/accessmanager.php: call to quiz_access_manager::get_rule_classes()
• line 126 of /mod/quiz/attemptlib.php: call to quiz_access_manager::load_quiz_and_settings()
• line 2011 of /mod/quiz/lib.php: call to quiz::create()
• line 8064 of /lib/moodlelib.php: call to mod_quiz_core_calendar_provide_event_action()
• line 304 of /calendar/classes/local/event/container.php: call to component_callback()
• line 42 of /calendar/classes/local/event/factories/event_factory.php: call to core_calendar\local\event\container::apply_component_provide_event_action()
• line 205 of /calendar/classes/local/event/factories/event_abstract_factory.php: call to core_calendar\local\event\factories\event_factory->apply_component_action()
• line 369 of /calendar/classes/local/event/data_access/event_vault.php: call to core_calendar\local\event\factories\event_abstract_factory->create_instance()
• line 177 of /calendar/classes/local/event/data_access/event_vault.php: call to core_calendar\local\event\data_access\event_vault->transform_from_database_record()
• line 95 of /calendar/classes/local/api.php: call to core_calendar\local\event\data_access\event_vault->get_events()
• line 3521 of /calendar/lib.php: call to core_calendar\local\api::get_events()
• line 57 of /blocks/calendar_month/block_calendar_month.php: call to calendar_get_view()
• line 337 of /blocks/moodleblock.class.php: call to block_calendar_month->get_content()
• line 231 of /blocks/moodleblock.class.php: call to block_base->formatted_contents()
• line 1222 of /lib/blocklib.php: call to block_base->get_content_for_output()
• line 1280 of /lib/blocklib.php: call to block_manager->create_block_contents()
• line 377 of /lib/blocklib.php: call to block_manager->ensure_content_created()
• line 4097 of /lib/outputrenderers.php: call to block_manager->region_has_content()
• line 66 of /theme/remui/layout/common.php: call to core_renderer->blocks()
• line 29 of /theme/remui/layout/drawers.php: call to require_once()
• line 1477 of /lib/outputrenderers.php: call to include()
• line 1403 of /lib/outputrenderers.php: call to core_renderer->render_page_layout()
• line 179 of /my/index.php: call to core_renderer->header()
Please advise how to resolve the issue?
Fatal error: Cannot redeclare Aws\constantly() (previously declared in /var/www/___________/mod/quiz/accessrule/proctoring/vendor/aws/aws-sdk-php/src/functions.php:20) in /var/www/__________/local/aws/sdk/Aws/functions.php on line 20.
Moreover, it does not cleanly uninstall itself causing quizzes to stop working altogether. The users are neither able to attempt nor is it possible to edit the quiz causing issues. Basically, it is the following error:
Error reading from the database
More information about this error
Debug info: Table mdl_quizaccess_proctoring' doesn't exist
SELECT quiz.*, proctoring required, seb.requiresafeexambrowser AS seb_requiresafeexambrowser, seb.showsebtaskbar AS seb_showsebtaskbar, seb.showwificontrol AS seb_showwificontrol, seb.showreloadbutton AS seb_showreloadbutton, seb.showtime AS seb_showtime, seb.showkeyboardlayout AS seb_showkeyboardlayout, seb.allowuserquitseb AS seb_allowuserquitseb, seb.quitpassword AS seb_quitpassword, seb.linkquitseb AS seb_linkquitseb, seb.userconfirmquit AS seb_userconfirmquit, seb.enableaudiocontrol AS seb_enableaudiocontrol, seb.muteonstartup AS seb_muteonstartup, seb.allowspellchecking AS seb_allowspellchecking, seb.allowreloadinexam AS seb_allowreloadinexam, seb.activateurlfiltering AS seb_activateurlfiltering, seb.filterembeddedcontent AS seb_filterembeddedcontent, seb.expressionsallowed AS seb_expressionsallowed, seb.regexallowed AS seb_regexallowed, seb.expressionsblocked AS seb_expressionsblocked, seb.regexblocked AS seb_regexblocked, seb.allowedbrowserexamkeys AS seb_allowedbrowserexamkeys, seb.showsebdownloadlink AS seb_showsebdownloadlink, sebtemplate.id AS seb_templateid FROM mdl_quiz quiz LEFT JOIN mdl_quizaccess_proctoring proctoring ON proctoring.quizid = quiz.id LEFT JOIN mdl_quizaccess_seb_quizsettings seb ON seb.quizid = quiz.id LEFT JOIN mdl_quizaccess_seb_template sebtemplate ON seb.templateid = sebtemplate.id WHERE quiz.id = ?
[array (
0 => '968',
)]
Error code: dmlreadexception×Dismiss this notification
Stack trace:
line 494 of /lib/dml/moodle_database.php: dml_read_exception thrown
line 293 of /lib/dml/moodle_read_slave_trait.php: call to moodle_database->query_end()
line 1278 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->query_end()
line 1679 of /lib/dml/moodle_database.php: call to mysqli_native_moodle_database->get_records_sql()
line 258 of /mod/quiz/accessmanager.php: call to moodle_database->get_record_sql()
line 126 of /mod/quiz/attemptlib.php: call to quiz_access_manager::load_quiz_and_settings()
line 67 of /mod/quiz/view.php: call to quiz::create()
https://moodle.org/plugins/fileconverter_librelambda
Fatal error: Cannot redeclare Aws\constantly() (previously declared in /var/www/123/htdocs/mod/quiz/accessrule/proctoring/vendor/aws/aws-sdk-php/src/functions.php:20) in /var/www/123/htdocs/local/aws/sdk/Aws/functions.php on line 20
quizaccess_proctoring
DDL sql execution error
More information about this error
Debug info: Table 'mdl_quizaccess_proctoring' already exists
CREATE TABLE mdl_quizaccess_proctoring (
id BIGINT(10) NOT NULL auto_increment,
quizid BIGINT(10) NOT NULL,
proctoringrequired TINYINT(2) NOT NULL DEFAULT 0,
CONSTRAINT PRIMARY KEY (id)
, UNIQUE KEY mdl_quizproc_qui2_uix (quizid)
)
ENGINE = InnoDB
DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
COMMENT='Stores all the settings for this accessrule'
;
CREATE TABLE mdl_quizaccess_proctoring_logs (
id BIGINT(10) NOT NULL auto_increment,
courseid BIGINT(10) NOT NULL,
quizid BIGINT(10) NOT NULL,
userid BIGINT(10) NOT NULL DEFAULT 0,
webcampicture LONGTEXT COLLATE utf8mb4_0900_ai_ci NOT NULL,
status BIGINT(10) NOT NULL,
awsscore BIGINT(10) NOT NULL DEFAULT 0,
awsflag BIGINT(10) NOT NULL DEFAULT 0,
timemodified BIGINT(10) NOT NULL,
CONSTRAINT PRIMARY KEY (id)
)
ENGINE = InnoDB
DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
COMMENT='Stores all validations for reporting'
;
CREATE TABLE mdl_proctoring_facematch_task (
id BIGINT(10) NOT NULL auto_increment,
refimageurl LONGTEXT COLLATE utf8mb4_0900_ai_ci NOT NULL,
targetimageurl LONGTEXT COLLATE utf8mb4_0900_ai_ci NOT NULL,
reportid BIGINT(10) NOT NULL DEFAULT 0,
timemodified BIGINT(10) NOT NULL,
CONSTRAINT PRIMARY KEY (id)
)
ENGINE = InnoDB
DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
COMMENT='Stores check face recognition task logs'
;
CREATE TABLE mdl_aws_api_log (
id BIGINT(10) NOT NULL auto_increment,
reportid BIGINT(10) NOT NULL DEFAULT 0,
apiresponse LONGTEXT COLLATE utf8mb4_0900_ai_ci NOT NULL,
timecreated BIGINT(10) NOT NULL,
CONSTRAINT PRIMARY KEY (id)
)
ENGINE = InnoDB
DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
COMMENT='Stores aws api call log'
;
CREATE TABLE mdl_proctoring_fm_warnings (
id BIGINT(10) NOT NULL auto_increment,
reportid BIGINT(10) NOT NULL DEFAULT 0,
courseid BIGINT(10) NOT NULL DEFAULT 0,
quizid BIGINT(10) NOT NULL DEFAULT 0,
userid BIGINT(10) NOT NULL DEFAULT 0,
CONSTRAINT PRIMARY KEY (id)
)
ENGINE = InnoDB
DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
COMMENT='Stores face mismatch warnings'
;
CREATE TABLE mdl_proctoring_user_images (
id BIGINT(10) NOT NULL auto_increment,
user_id BIGINT(10) NOT NULL,
photo_draft_id BIGINT(20) NOT NULL,
CONSTRAINT PRIMARY KEY (id)
)
ENGINE = InnoDB
DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
COMMENT='Each record is a data of specific user'
;
CREATE TABLE mdl_proctoring_face_images (
id BIGINT(10) NOT NULL auto_increment,
parent_type VARCHAR(20) COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '1',
parentid BIGINT(20) NOT NULL,
faceimage LONGTEXT COLLATE utf8mb4_0900_ai_ci NOT NULL,
facefound VARCHAR(2) COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '0',
CONSTRAINT PRIMARY KEY (id)
)
ENGINE = InnoDB
DEFAULT COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT=Compressed
COMMENT='Each record is a data of specific Images'
Error code: ddlexecuteerror
×
Dismiss this notification
Stack trace:
line 500 of /lib/dml/moodle_database.php: ddl_change_structure_exception thrown
line 293 of /lib/dml/moodle_read_slave_trait.php: call to moodle_database->query_end()
line 1196 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->query_end()
line 77 of /lib/ddl/database_manager.php: call to mysqli_native_moodle_database->change_database_structure()
line 427 of /lib/ddl/database_manager.php: call to database_manager->execute_sql_arr()
line 372 of /lib/ddl/database_manager.php: call to database_manager->install_from_xmldb_structure()
line 765 of /lib/upgradelib.php: call to database_manager->install_from_xmldb_file()
line 1974 of /lib/upgradelib.php: call to upgrade_plugins()
line 726 of /admin/index.php: call to upgrade_noncore()
The error that appears is the following:
Exception - Argument 1 passed to quizaccess_proctoring::add_preflight_check_form_fields() must be an instance of quizaccess_proctoring_preflight_form_alias, instance of mod_quiz_preflight_check_form given, called in [dirroot]/mod/quiz/accessmanager_form.php on line 54
Installation aborted due to validation failure.