Note:

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

Email reminders for calendar events: Difference between revisions

From MoodleDocs
No edit summary
No edit summary
Line 8: Line 8:


=== Milestones ===
=== Milestones ===
# Refine the project proposal with Michael and the community
# DONE - Refine the project proposal with Michael, Rossiani and the community
# Feature discussion
# DONE - Feature discussion
# Create mockups
# Create mockups


Line 15: Line 15:
Following features are expecting to package with the reminders plugin.
Following features are expecting to package with the reminders plugin.


:1. Administrator configurations
:1. Reminders can be sent by customizing according to each event type.
::* Separate message providers for each event type.
::* Ability to customize message content according to event type.
:2. Administrator configurations
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.
::* Ability to choose how many days ahead should the reminders be created for every due event in Moodle calendar.
::* Ability to choose how many days ahead should the reminders be created ''for each event type''.
::** Reminders can be created only by days.
::** Reminders can be created only by days.
::** Supported only fixed amount of days ahead such as 7 days, 5 days, 3 days and 1 day.
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.
::* Ability to keep/remove history of reminder events.
::* Ability to keep/remove history of reminder events.
:2. User configurations
:2. User configurations
::* User can select desired method of receiving reminder notifications on corresponding message provider.
::* User can select desired method of receiving reminder notifications on each message provider.


== Coding Period ==
== Coding Period ==
Line 28: Line 31:
=== Milestones ===
=== Milestones ===


:1. Finalize the overall architecture.
:1. DONE - Finalize the abstract architecture.
:2. Finalize file structure and database table schema.
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)
:3. Designing a proper message content.
:4. Building the basic structure of the plugin - Implementation Phase 1
::* Creating a suitable version file.
::* Creating a suitable version file.
::* Define the database structure in XMLDB file.
::* Define capabilities.
::* Define the message provider.
::* Define a set of administrator page settings
::** Implementation of an option for enabling/disabling reminder.
::** Implementation of a set of options to configure per-defined number of days ahead which reminders should be invoked.
::* Implementation of the initial script to be run.
::* Creating a language file.
::* Creating a language file.
:5. Building functions - Implementation Phase 2
::* Creating a message provider file.
::* Implementation of supportive functions for main cron function.
::* Creating a lib file for the cron function.
::** HTML message content.
:3. Implementing message providers for each event type. (CONTRIB-3659)
::** Reminder Plain-text.
:4. Providing a administrator settings page. (CONTRIB-3660)
::* Implementation of the cron function.
:5. Implementing necessary reminder classes.
::** Removing expired reminders.
::* Creating abstract reminder class.
::** Fetching all active reminders.
::* Creating concrete reminder classes for each event type.
::** Fetching all users correspondent to the event.
:6. Building functionality.
::** Deleting reminders that have been already sent.
::* Implementation of Cron function.
:6. Testing
:7. Testing
:7. Bug fixing
:8. Bug fixing


=== File Structure ===
=== File Structure ===
Plugin name would be "''reminders''".
Following shows expected file structure of the plugin. Plugin name would be "''reminders''".


* db/access.php
* db/access.php
* db/message.php
* db/message.php
* db/install.php
* db/install.php
* db/install.xml
* db/upgrade.php
* db/upgrade.php
* db/events.php
* lang/en/local_reminders.php
* lang/en/local_reminders.php
* version.php
* version.php
Line 67: Line 59:
* settings.php
* settings.php
* README
* README
=== Database Structure ===
A single database will be used to store these reminders. Database name would be "''local_reminders''". Following shows its structure. (Subject to change)
{| class="nicetable"
|-
! Field
! Type
! width="500" | Description
|-
| id
| bigint(10)
| Primary key for reminder records.
|-
| eventid
| bigint(10)
| Foreign key for corresponding event.
|-
| daysahead
| bigint(10)
| Number of days ahead such that reminder should be invoked.
|-
| enabled
| smallint(4)
| Indicates whether this single reminder is enabled or not. Disabled reminder will not be invoked only for that time. If it has been found enabled later, then it would be invoked.
|-
| mailed
| smallint(4)
| Indicates whether this reminder has been already mailed. Mailed reminders will be deleted after sometime.
|}


=== High Level Architecture Diagram ===
=== High Level Architecture Diagram ===


[[File:overall_architecture.jpg]]
[[File:overall_architecture.jpg]]
=== Reminders Class Diagram ===
[[File:reminders_class_diagram.jpg]]


== Mockups ==
== Mockups ==

Revision as of 05:01, 22 May 2012

Introduction

Reminders are very useful for both students as well as teachers to recall their scheduled event before the actual moment. This project is about creating a set of reminders for Moodle calendar events and sending them automatically to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.

Requirements

Moodle 2.2 required

Community Bonding Period

Milestones

  1. DONE - Refine the project proposal with Michael, Rossiani and the community
  2. DONE - Feature discussion
  3. Create mockups

Features

Following features are expecting to package with the reminders plugin.

1. Reminders can be sent by customizing according to each event type.
  • Separate message providers for each event type.
  • Ability to customize message content according to event type.
2. Administrator configurations
  • Administrator can enable/disable the process of sending reminders without uninstalling the plugin.
  • Ability to choose how many days ahead should the reminders be created for each event type.
    • Reminders can be created only by days.
    • Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.
  • Ability to keep/remove history of reminder events.
2. User configurations
  • User can select desired method of receiving reminder notifications on each message provider.

Coding Period

Milestones

1. DONE - Finalize the abstract architecture.
2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)
  • Creating a suitable version file.
  • Creating a language file.
  • Creating a message provider file.
  • Creating a lib file for the cron function.
3. Implementing message providers for each event type. (CONTRIB-3659)
4. Providing a administrator settings page. (CONTRIB-3660)
5. Implementing necessary reminder classes.
  • Creating abstract reminder class.
  • Creating concrete reminder classes for each event type.
6. Building functionality.
  • Implementation of Cron function.
7. Testing
8. Bug fixing

File Structure

Following shows expected file structure of the plugin. Plugin name would be "reminders".

  • db/access.php
  • db/message.php
  • db/install.php
  • db/upgrade.php
  • lang/en/local_reminders.php
  • version.php
  • lib.php
  • settings.php
  • README

High Level Architecture Diagram

overall architecture.jpg

Reminders Class Diagram

reminders class diagram.jpg

Mockups

Administrator Setting Page

reminders admin settings page.jpg

Message Format (HTML)

  • Message Title : Reminder: ${event_detail} @ ${event_date_time}

message format HTML.jpg

Message Format (Plain-text)

  • Message Title : Reminder: ${event_detail} @ ${event_date_time}
  • Message Content:
${message_title}
Reminder - #n days remaining
When -> ${event_time}
What -> ${event_course} or ${event_type}
Description -> ${event_description}

Screenshots

Tracker

See also