Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Plagiarism API improvements

From MoodleDocs
Plagiarism API improvements
Project state Community Bonding
Tracker issue MDL-32225
Discussion
Assignee Kanika Goyal

Moodle 2.3

GSOC '12

Introduction

This is a GSOC 2012 Project. The goal of this project is to extend some core modules to use the plagiarism API.

Project Details

Description

The Plagiarism API is a core set of functions that all Moodle code can use to send user submitted content to Plagiarism Prevention systems. When a user submits a file (or content) inside a module that has been configured for the Plagiarism Plugin, an event is triggered which contains details about user, module and submissions. Plagiarism plugin has event handlers which will then check for plagiarism content. Plugin will return the hooks (defined in Plagiarism API) for displaying information to both the user and the teacher.

Currently, Plagiarism API only supports Single upload assignment and Advanced uploading of assignments. This project aims at extending the support to other Moodle modules such as -

1. Online assignment type

2. Workshop module

3. Quiz module (essay questions)

4. Forums posts (file attachments)

After the implementation of relevant hooks for the Plagiarism API and then adding the support for new hooks in the above mentioned modules, the current Plagiarism Plugins will be improved to support these new hooks. First Open Source Plagiarism plugin Crot will be worked upon followed by Commercial plugins Turnitin and URKUND.


Implementation

Plagiarism API requires hooks for modules to trigger an event (like assessable_file_upload in case of assignment module), that is, to pass user submitted content to Plagiarism Plugin and also to allow display of information (such as similarity score) on teachers and students page. Plagiarism plugin have listener for the event which will then do the necessary processing, that is, check submitted content for plagiarism. Settings of Plagiarism API are configured by adding a hook plagiarism_get_form_elements_module ($mform, $course_context) in the module form.

Currently, Plagiarism Plugin (Crot) has function to convert a file's content to plain text (as plagiarism tool checker can check for plaintext only). Basically, information to be sent to the plagiarism checker tool can be in either of the two forms - File (Assignment uploads) or Text and other responses stored in the Database.

In case of-

1. Quiz module (essay questions) - The short answers are stored in database for each student. A function is required in the module lib to extract the relevant information from the database and then trigger an event and send the information to Plagiarism Plugin. Plagiarism plugin will have necessary event handler to listen to this event. Plagiarism API will also have a hook to display the results on the teacher's and student's page.

2. In workshop module, as there can be file attachments as well as online text (stored in the database). It requires a function to send both (uploaded file and online text) to plagiarism plugin for checking the content for plagiarism.

3. In forum posts, file attachments are stored in moodledata folder which is same as in case of assignment uploads. Since the current Plagiarism API supports assignment module, similar hooks can be implemented for file attachments in forum posts. As in all cases, event triggers are required which will then be handled by Plagiarism Plugins.

4. Online assignment type - This assignment type asks users to compose and edit text, using the normal editing tools. This data is also stored in the database, which can be implemented in same way as that of quiz module for essay questions.

Plagiarism API is also responsible for displaying the results to teachers "view submission" and students "view page". The hooks for display results may or may not be same for all the modules.

After implementing the relevant hooks for the modules, and then integrating the new hooks in them, the current Plagiarism Plugins - Crot , Turnitin and URKUND will be extended to add the new functionality.


Schedule of Deliverables

24th April - 30th May - Discuss with the mentor and prepare an outline of all the relevant hooks to be added in the modules and their implementation. 31st May - 6th June (1 week) - Add Plagiarism API support to essay questions (quiz module) - MDL-32226.

7th - 13th June (1 week) - Add Plagiarism API support to Workshop Module - MDL-32227.

14th - 24th June (1.5 week) - Add Plagiarism API support to Online Assignment Type -MDL-32228 and File attachments in Forum posts - MDL-32229.

25th - 27th June (3 days) - Writing documentation of Plagiarism API (for new hooks)

28th June - 30th June (3 days) - Test all modules for the new Plagiarism support, identify bugs and fix them.

1st July - 13th July (2 weeks) - Improving Open-Source Crot Plugin to support the new hooks.

Midterm Evaluation Target- Includes completion of first part of project along with documentation and extending Crot plugin's support to new hooks.

14th - 23rd July (1.5 week) - Implementing new hooks in Turnitin.

21st - 30th July (1.5 week) - Implementing new hooks in URKUND plagiarism plugin.

31st July- 3rd Aug (4 days) - Updating documentation of current Plagiarism plugins (Crot, Turnitin and URKUND) about new hooks.

4th - 19th Aug (around 2 weeks) - Testing, identifying and fixing bugs.


Relevant Links

Tracker

Discussions