<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Isuru89</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Isuru89"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Isuru89"/>
	<updated>2026-09-15T22:29:49Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=35417</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=35417"/>
		<updated>2012-09-06T11:54:50Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# DONE - Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* DONE - Creating a suitable version file.&lt;br /&gt;
::* DONE - Creating a language file.&lt;br /&gt;
::* DONE - Creating a message provider file.&lt;br /&gt;
::* DONE - Creating a lib file for the cron function.&lt;br /&gt;
:3. DONE - Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. DONE - Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. DONE - Implementing necessary reminder classes. (CONTRIB-3669)&lt;br /&gt;
::* DONE - Creating abstract reminder class.&lt;br /&gt;
::* DONE - Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. DONE - Building functionality.&lt;br /&gt;
::* DONE - Generation of message content for reminders. (CONTRIB-3671)&lt;br /&gt;
::* DONE - Implementation of Cron function. (CONTRIB-3670)&lt;br /&gt;
::* DONE - Extending to support plugin for repeated events. (CONTRIB-3672)&lt;br /&gt;
:7. IN PROGRESS - Testing&lt;br /&gt;
:8. IN PROGRESS - Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* contents/course_reminder.class.php&lt;br /&gt;
* contents/site_reminder.class.php&lt;br /&gt;
* contents/group_reminder.class.php&lt;br /&gt;
* contents/user_reminder.class.php&lt;br /&gt;
* contents/due_reminder.class.php&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* reminder.class.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== Explanation ===&lt;br /&gt;
Picking up relevant events to send reminders in advance is very important and critical. Reminders must be sent only once for a event on predefined ahead of days. Identifying such events has to be done efficiently and carefully. It shows below how it can be achieved.&lt;br /&gt;
&lt;br /&gt;
Events are checked against a &#039;&#039;fixed amount of time period&#039;&#039; in each and every cron cycle.&lt;br /&gt;
&lt;br /&gt;
If any of event is falling exactly 1, 3 or 7 days ahead for that checking time period, that event will be marked as&lt;br /&gt;
a ready event to send reminders. In mathematically, if any event should satisfy to send reminders &lt;br /&gt;
&lt;br /&gt;
        (t(Ei) - X &amp;gt; T1) AND (t(Ei) - X &amp;lt;= T2) AND (t(Ei) &amp;gt; T2)&lt;br /&gt;
&lt;br /&gt;
Where t(Ei) is the start time of the event and X is a set of constants indicates 1,3 or 7 days in seconds.&lt;br /&gt;
&lt;br /&gt;
That &#039;&#039;fixed amount of time period&#039;&#039; is decided as the timestamp different between last cron cycle (this timestamp is not the&lt;br /&gt;
timestamp corresponding to the start of that cron cycle, but the time it began to check for its previous timeslot. This&lt;br /&gt;
can be extracted from info field in log record) and current time.&lt;br /&gt;
&lt;br /&gt;
:1. If the running cron cycle is the first ever cron cycle (i.e. no log record could find for a previous cron cycle), then the time will be cutoff by X amount of days before as configured.&lt;br /&gt;
[[File:first_cron.jpg]]&lt;br /&gt;
&lt;br /&gt;
::* (t1,t2) is the time period the time period that cron is running.&lt;br /&gt;
::* (T1,T2) is the time period which will be checked against events. (T1-T2) will be a constant and will be used at most once.&lt;br /&gt;
&lt;br /&gt;
:2. Otherwise,&lt;br /&gt;
[[File:nth_cron.jpg]]&lt;br /&gt;
::* (t1,t2) is the interval between two cron cycles as defined in plugin.&lt;br /&gt;
::* (T1,T2) is the time inspecting region. (T1 will be decided by log record for the last cron cycle)&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminder_class_diagram_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
=== Admin Settings Page ===&lt;br /&gt;
[[File:settings_page_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sample e-mail reminder for course event ===&lt;br /&gt;
[[File:sample_email_reminder_course.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sample e-mail reminder for due event ===&lt;br /&gt;
[[File:sample_email_reminder_due.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* Mentors: [http://moodle.org/user/view.php?id=381842&amp;amp;course=5 Michael de Raadt] and [http://moodle.org/user/view.php?id=955449&amp;amp;course=5 Rossiani Wijaya]&lt;br /&gt;
* Special thanks goes to [http://moodle.org/user/profile.php?id=1297063 Luiggi Sansonetti] who translated the plugin into French language.&lt;br /&gt;
* Another thank goes to Guido Roessling for providing a German translation for this plugin&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* CONTRIB-3647 Automating Email reminders for calendar events&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Plugin development [https://github.com/isuru89/moodle-reminders-for-calendar-events Repository]&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34617</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34617"/>
		<updated>2012-08-02T02:04:11Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# DONE - Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* DONE - Creating a suitable version file.&lt;br /&gt;
::* DONE - Creating a language file.&lt;br /&gt;
::* DONE - Creating a message provider file.&lt;br /&gt;
::* DONE - Creating a lib file for the cron function.&lt;br /&gt;
:3. DONE - Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. DONE - Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. DONE - Implementing necessary reminder classes. (CONTRIB-3669)&lt;br /&gt;
::* DONE - Creating abstract reminder class.&lt;br /&gt;
::* DONE - Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. DONE - Building functionality.&lt;br /&gt;
::* DONE - Generation of message content for reminders. (CONTRIB-3671)&lt;br /&gt;
::* DONE - Implementation of Cron function. (CONTRIB-3670)&lt;br /&gt;
::* DONE - Extending to support plugin for repeated events. (CONTRIB-3672)&lt;br /&gt;
:7. IN PROGRESS - Testing&lt;br /&gt;
:8. IN PROGRESS - Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* contents/course_reminder.class.php&lt;br /&gt;
* contents/site_reminder.class.php&lt;br /&gt;
* contents/group_reminder.class.php&lt;br /&gt;
* contents/user_reminder.class.php&lt;br /&gt;
* contents/due_reminder.class.php&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* reminder.class.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== Explanation ===&lt;br /&gt;
Picking up relevant events to send reminders in advance is very important and critical. Reminders must be sent only once for a event on predefined ahead of days. Identifying such events has to be done efficiently and carefully. It shows below how it can be achieved.&lt;br /&gt;
&lt;br /&gt;
Events are checked against a &#039;&#039;fixed amount of time period&#039;&#039; in each and every cron cycle.&lt;br /&gt;
&lt;br /&gt;
If any of event is falling exactly 1, 3 or 7 days ahead for that checking time period, that event will be marked as&lt;br /&gt;
a ready event to send reminders. In mathematically, if any event should satisfy to send reminders &lt;br /&gt;
&lt;br /&gt;
        (t(Ei) - X &amp;gt; T1) AND (t(Ei) - X &amp;lt;= T2) AND (t(Ei) &amp;gt; T2)&lt;br /&gt;
&lt;br /&gt;
Where t(Ei) is the start time of the event and X is a set of constants indicates 1,3 or 7 days in seconds.&lt;br /&gt;
&lt;br /&gt;
That &#039;&#039;fixed amount of time period&#039;&#039; is decided as the timestamp different between last cron cycle (this timestamp is not the&lt;br /&gt;
timestamp corresponding to the start of that cron cycle, but the time it began to check for its previous timeslot. This&lt;br /&gt;
can be extracted from info field in log record) and current time.&lt;br /&gt;
&lt;br /&gt;
:1. If the running cron cycle is the first ever cron cycle (i.e. no log record could find for a previous cron cycle), then the time will be cutoff by X amount of days before as configured.&lt;br /&gt;
[[File:first_cron.jpg]]&lt;br /&gt;
&lt;br /&gt;
::* (t1,t2) is the time period the time period that cron is running.&lt;br /&gt;
::* (T1,T2) is the time period which will be checked against events. (T1-T2) will be a constant and will be used at most once.&lt;br /&gt;
&lt;br /&gt;
:2. Otherwise,&lt;br /&gt;
[[File:nth_cron.jpg]]&lt;br /&gt;
::* (t1,t2) is the interval between two cron cycles as defined in plugin.&lt;br /&gt;
::* (T1,T2) is the time inspecting region. (T1 will be decided by log record for the last cron cycle)&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminder_class_diagram_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
=== Admin Settings Page ===&lt;br /&gt;
[[File:settings_page_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sample e-mail reminder for course event ===&lt;br /&gt;
[[File:sample_email_reminder_course.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sample e-mail reminder for due event ===&lt;br /&gt;
[[File:sample_email_reminder_due.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* Mentors: [http://moodle.org/user/view.php?id=381842&amp;amp;course=5 Michael de Raadt] and [http://moodle.org/user/view.php?id=955449&amp;amp;course=5 Rossiani Wijaya]&lt;br /&gt;
* Special thanks goes to [http://moodle.org/user/profile.php?id=1297063 Luiggi Sansonetti] who translated the plugin into French language.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* CONTRIB-3647 Automating Email reminders for calendar events&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Plugin development [https://github.com/isuru89/moodle-reminders-for-calendar-events Repository]&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34319</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34319"/>
		<updated>2012-06-27T02:59:06Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# DONE - Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* DONE - Creating a suitable version file.&lt;br /&gt;
::* DONE - Creating a language file.&lt;br /&gt;
::* DONE - Creating a message provider file.&lt;br /&gt;
::* DONE - Creating a lib file for the cron function.&lt;br /&gt;
:3. DONE - Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. DONE - Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. DONE - Implementing necessary reminder classes. (CONTRIB-3669)&lt;br /&gt;
::* DONE - Creating abstract reminder class.&lt;br /&gt;
::* DONE - Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. IMPLEMENTING - Building functionality.&lt;br /&gt;
::* DONE - Generation of message content for reminders. (CONTRIB-3671)&lt;br /&gt;
::* DONE - Implementation of Cron function. (CONTRIB-3670)&lt;br /&gt;
::* Extending to support plugin for repeated events. (CONTRIB-3672)&lt;br /&gt;
:7. Testing&lt;br /&gt;
:8. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* contents/course_reminder.class.php&lt;br /&gt;
* contents/site_reminder.class.php&lt;br /&gt;
* contents/group_reminder.class.php&lt;br /&gt;
* contents/user_reminder.class.php&lt;br /&gt;
* contents/due_reminder.class.php&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* reminder.class.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== Explanation ===&lt;br /&gt;
Picking up relevant events to send reminders in advance is very important and critical. Reminders must be sent only once for a event on predefined ahead of days. Identifying such events has to be done efficiently and carefully. It shows below how it can be achieved.&lt;br /&gt;
&lt;br /&gt;
Events are checked against a &#039;&#039;fixed amount of time period&#039;&#039; in each and every cron cycle.&lt;br /&gt;
&lt;br /&gt;
If any of event is falling exactly 1, 3 or 7 days ahead for that checking time period, that event will be marked as&lt;br /&gt;
a ready event to send reminders. In mathematically, if any event should satisfy to send reminders &lt;br /&gt;
&lt;br /&gt;
        (t(Ei) - X &amp;gt; T1) AND (t(Ei) - X &amp;lt;= T2) AND (t(Ei) &amp;gt; T2)&lt;br /&gt;
&lt;br /&gt;
Where t(Ei) is the start time of the event and X is a set of constants indicates 1,3 or 7 days in seconds.&lt;br /&gt;
&lt;br /&gt;
That &#039;&#039;fixed amount of time period&#039;&#039; is decided as the timestamp different between last cron cycle (this timestamp is not the&lt;br /&gt;
timestamp corresponding to the start of that cron cycle, but the time it began to check for its previous timeslot. This&lt;br /&gt;
can be extracted from info field in log record) and current time.&lt;br /&gt;
&lt;br /&gt;
:1. If the running cron cycle is the first ever cron cycle (i.e. no log record could find for a previous cron cycle), then the time will be cutoff by X amount of days before as configured.&lt;br /&gt;
[[File:first_cron.jpg]]&lt;br /&gt;
&lt;br /&gt;
::* (t1,t2) is the time period the time period that cron is running.&lt;br /&gt;
::* (T1,T2) is the time period which will be checked against events. (T1-T2) will be a constant and will be used at most once.&lt;br /&gt;
&lt;br /&gt;
:2. Otherwise,&lt;br /&gt;
[[File:nth_cron.jpg]]&lt;br /&gt;
::* (t1,t2) is the interval between two cron cycles as defined in plugin.&lt;br /&gt;
::* (T1,T2) is the time inspecting region. (T1 will be decided by log record for the last cron cycle)&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminder_class_diagram_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
=== Admin Settings Page ===&lt;br /&gt;
[[File:settings_page_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sample e-mail reminder for course event ===&lt;br /&gt;
[[File:sample_email_reminder_course.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sample e-mail reminder for due event ===&lt;br /&gt;
[[File:sample_email_reminder_due.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* CONTRIB-3647 Automating Email reminders for calendar events&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Plugin development [https://github.com/isuru89/moodle-reminders-for-calendar-events Repository]&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:nth_cron.jpg&amp;diff=34219</id>
		<title>File:nth cron.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:nth_cron.jpg&amp;diff=34219"/>
		<updated>2012-06-17T05:18:34Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:first_cron.jpg&amp;diff=34218</id>
		<title>File:first cron.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:first_cron.jpg&amp;diff=34218"/>
		<updated>2012-06-17T05:18:13Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34217</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34217"/>
		<updated>2012-06-17T05:17:40Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# DONE - Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* DONE - Creating a suitable version file.&lt;br /&gt;
::* DONE - Creating a language file.&lt;br /&gt;
::* DONE - Creating a message provider file.&lt;br /&gt;
::* DONE - Creating a lib file for the cron function.&lt;br /&gt;
:3. DONE - Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. DONE - Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. DONE - Implementing necessary reminder classes. (CONTRIB-3669)&lt;br /&gt;
::* DONE - Creating abstract reminder class.&lt;br /&gt;
::* DONE - Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. IMPLEMENTING - Building functionality.&lt;br /&gt;
::* DONE - Generation of message content for reminders. (CONTRIB-3671)&lt;br /&gt;
::* DONE - Implementation of Cron function. (CONTRIB-3670)&lt;br /&gt;
::* Extending to support plugin for repeated events. (CONTRIB-3672)&lt;br /&gt;
:7. Testing&lt;br /&gt;
:8. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* contents/course_reminder.class.php&lt;br /&gt;
* contents/site_reminder.class.php&lt;br /&gt;
* contents/group_reminder.class.php&lt;br /&gt;
* contents/user_reminder.class.php&lt;br /&gt;
* contents/due_reminder.class.php&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* reminder.class.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== Explanation ===&lt;br /&gt;
Picking up relevant events to send reminders in advance is very important and critical. Reminders must be sent only once for a event on predefined ahead of days. Identifying such events has to be done efficiently and carefully. It shows below how it can be achieved.&lt;br /&gt;
&lt;br /&gt;
Events are checked against a &#039;&#039;fixed amount of time period&#039;&#039; in each and every cron cycle.&lt;br /&gt;
&lt;br /&gt;
If any of event is falling exactly 1, 3 or 7 days ahead for that checking time period, that event will be marked as&lt;br /&gt;
a ready event to send reminders. In mathematically, if any event should satisfy to send reminders &lt;br /&gt;
&lt;br /&gt;
        (t(Ei) - X &amp;gt;= T1) AND (t(Ei) - X &amp;lt;= T2) AND (t(Ei) &amp;gt; T2)&lt;br /&gt;
&lt;br /&gt;
Where t(Ei) is the start time of the event and X is a set of constants indicates 1,3 or 7 days in seconds.&lt;br /&gt;
&lt;br /&gt;
That &#039;&#039;fixed amount of time period&#039;&#039; is decided as the timestamp different between last cron cycle (this timestamp is not the&lt;br /&gt;
timestamp corresponding to the start of that cron cycle, but the time it began to check for its previous timeslot. This&lt;br /&gt;
can be extracted from info field in log record) and current time.&lt;br /&gt;
&lt;br /&gt;
:1. If the running cron cycle is the first ever cron cycle (i.e. no log record could find for a previous cron cycle), then the time will be cutoff by X amount of days before as configured.&lt;br /&gt;
[[File:first_cron.jpg]]&lt;br /&gt;
&lt;br /&gt;
::* (t1,t2) is the time period the time period that cron is running.&lt;br /&gt;
::* (T1,T2) is the time period which will be checked against events. (T1-T2) will be a constant and will be used at most once.&lt;br /&gt;
&lt;br /&gt;
:2. Otherwise,&lt;br /&gt;
[[File:nth_cron.jpg]]&lt;br /&gt;
::* (t1,t2) is the interval between two cron cycles as defined in plugin.&lt;br /&gt;
::* (T1,T2) is the time inspecting region. (T1 will be decided by log record for the last cron cycle)&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminder_class_diagram_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
=== Admin Settings Page ===&lt;br /&gt;
[[File:settings_page_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sample e-mail reminder for course event ===&lt;br /&gt;
[[File:sample_email_reminder_course.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sample e-mail reminder for due event ===&lt;br /&gt;
[[File:sample_email_reminder_due.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* CONTRIB-3647 Automating Email reminders for calendar events&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Plugin development [https://github.com/isuru89/moodle-reminders-for-calendar-events Repository]&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:sample_email_reminder_due.jpg&amp;diff=34216</id>
		<title>File:sample email reminder due.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:sample_email_reminder_due.jpg&amp;diff=34216"/>
		<updated>2012-06-16T07:33:24Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:sample_email_reminder_course.jpg&amp;diff=34215</id>
		<title>File:sample email reminder course.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:sample_email_reminder_course.jpg&amp;diff=34215"/>
		<updated>2012-06-16T07:32:42Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:settings_page_1.jpg&amp;diff=34214</id>
		<title>File:settings page 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:settings_page_1.jpg&amp;diff=34214"/>
		<updated>2012-06-16T07:32:12Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34213</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34213"/>
		<updated>2012-06-16T07:31:35Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# DONE - Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* DONE - Creating a suitable version file.&lt;br /&gt;
::* DONE - Creating a language file.&lt;br /&gt;
::* DONE - Creating a message provider file.&lt;br /&gt;
::* DONE - Creating a lib file for the cron function.&lt;br /&gt;
:3. DONE - Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. DONE - Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. DONE - Implementing necessary reminder classes. (CONTRIB-3669)&lt;br /&gt;
::* DONE - Creating abstract reminder class.&lt;br /&gt;
::* DONE - Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. IMPLEMENTING - Building functionality.&lt;br /&gt;
::* DONE - Generation of message content for reminders. (CONTRIB-3671)&lt;br /&gt;
::* DONE - Implementation of Cron function. (CONTRIB-3670)&lt;br /&gt;
::* Extending to support plugin for repeated events. (CONTRIB-3672)&lt;br /&gt;
:7. Testing&lt;br /&gt;
:8. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* contents/course_reminder.class.php&lt;br /&gt;
* contents/site_reminder.class.php&lt;br /&gt;
* contents/group_reminder.class.php&lt;br /&gt;
* contents/user_reminder.class.php&lt;br /&gt;
* contents/due_reminder.class.php&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* reminder.class.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminder_class_diagram_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
=== Admin Settings Page ===&lt;br /&gt;
[[File:settings_page_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sample e-mail reminder for course event ===&lt;br /&gt;
[[File:sample_email_reminder_course.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sample e-mail reminder for due event ===&lt;br /&gt;
[[File:sample_email_reminder_due.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* CONTRIB-3647 Automating Email reminders for calendar events&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Plugin development [https://github.com/isuru89/moodle-reminders-for-calendar-events Repository]&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34212</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34212"/>
		<updated>2012-06-16T07:27:57Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# DONE - Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* DONE - Creating a suitable version file.&lt;br /&gt;
::* DONE - Creating a language file.&lt;br /&gt;
::* DONE - Creating a message provider file.&lt;br /&gt;
::* DONE - Creating a lib file for the cron function.&lt;br /&gt;
:3. DONE - Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. DONE - Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. DONE - Implementing necessary reminder classes. (CONTRIB-3669)&lt;br /&gt;
::* DONE - Creating abstract reminder class.&lt;br /&gt;
::* DONE - Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. IMPLEMENTING - Building functionality.&lt;br /&gt;
::* DONE - Generation of message content for reminders. (CONTRIB-3671)&lt;br /&gt;
::* DONE - Implementation of Cron function. (CONTRIB-3670)&lt;br /&gt;
::* Extending to support plugin for repeated events. (CONTRIB-3672)&lt;br /&gt;
:7. Testing&lt;br /&gt;
:8. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* contents/course_reminder.class.php&lt;br /&gt;
* contents/site_reminder.class.php&lt;br /&gt;
* contents/group_reminder.class.php&lt;br /&gt;
* contents/user_reminder.class.php&lt;br /&gt;
* contents/due_reminder.class.php&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* reminder.class.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminder_class_diagram_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
=== Sample e-mail reminder for course event&lt;br /&gt;
[[File:sample_email_reminder_course.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Sample e-mail reminder for due event&lt;br /&gt;
[[File:sample_email_reminder_due.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* CONTRIB-3647 Automating Email reminders for calendar events&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Plugin development [https://github.com/isuru89/moodle-reminders-for-calendar-events Repository]&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34211</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34211"/>
		<updated>2012-06-16T07:21:59Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# DONE - Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* DONE - Creating a suitable version file.&lt;br /&gt;
::* DONE - Creating a language file.&lt;br /&gt;
::* DONE - Creating a message provider file.&lt;br /&gt;
::* DONE - Creating a lib file for the cron function.&lt;br /&gt;
:3. DONE - Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. DONE - Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. DONE - Implementing necessary reminder classes. (CONTRIB-3669)&lt;br /&gt;
::* DONE - Creating abstract reminder class.&lt;br /&gt;
::* DONE - Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. IMPLEMENTING - Building functionality.&lt;br /&gt;
::* DONE - Generation of message content for reminders. (CONTRIB-3671)&lt;br /&gt;
::* DONE - Implementation of Cron function. (CONTRIB-3670)&lt;br /&gt;
::* Extending to support plugin for repeated events. (CONTRIB-3672)&lt;br /&gt;
:7. Testing&lt;br /&gt;
:8. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* contents/course_reminder.class.php&lt;br /&gt;
* contents/site_reminder.class.php&lt;br /&gt;
* contents/group_reminder.class.php&lt;br /&gt;
* contents/user_reminder.class.php&lt;br /&gt;
* contents/due_reminder.class.php&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* reminder.class.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminder_class_diagram_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* CONTRIB-3647 Automating Email reminders for calendar events&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Plugin development [https://github.com/isuru89/moodle-reminders-for-calendar-events Repository]&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34210</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34210"/>
		<updated>2012-06-16T07:21:28Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# DONE - Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* DONE - Creating a suitable version file.&lt;br /&gt;
::* DONE - Creating a language file.&lt;br /&gt;
::* DONE - Creating a message provider file.&lt;br /&gt;
::* DONE - Creating a lib file for the cron function.&lt;br /&gt;
:3. DONE - Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. DONE - Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. DONE - Implementing necessary reminder classes. (CONTRIB-3669)&lt;br /&gt;
::* Creating abstract reminder class.&lt;br /&gt;
::* Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. IMPLEMENTING - Building functionality.&lt;br /&gt;
::* DONE - Generation of message content for reminders. (CONTRIB-3671)&lt;br /&gt;
::* DONE - Implementation of Cron function. (CONTRIB-3670)&lt;br /&gt;
::* Extending to support plugin for repeated events. (CONTRIB-3672)&lt;br /&gt;
:7. Testing&lt;br /&gt;
:8. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* contents/course_reminder.class.php&lt;br /&gt;
* contents/site_reminder.class.php&lt;br /&gt;
* contents/group_reminder.class.php&lt;br /&gt;
* contents/user_reminder.class.php&lt;br /&gt;
* contents/due_reminder.class.php&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* reminder.class.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminder_class_diagram_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* CONTRIB-3647 Automating Email reminders for calendar events&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Plugin development [https://github.com/isuru89/moodle-reminders-for-calendar-events Repository]&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34209</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34209"/>
		<updated>2012-06-16T07:20:29Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# DONE - Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* DONE - Creating a suitable version file.&lt;br /&gt;
::* DONE - Creating a language file.&lt;br /&gt;
::* DONE - Creating a message provider file.&lt;br /&gt;
::* DONE - Creating a lib file for the cron function.&lt;br /&gt;
:3. DONE - Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. DONE - Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. DONE - Implementing necessary reminder classes. (CONTRIB-3669)&lt;br /&gt;
::* Creating abstract reminder class.&lt;br /&gt;
::* Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. IMPLEMENTING - Building functionality.&lt;br /&gt;
::* DONE - Generation of message content for reminders. (CONTRIB-3671)&lt;br /&gt;
::* DONE - Implementation of Cron function. (CONTRIB-3670)&lt;br /&gt;
::* Extending to support plugin for repeated events. (CONTRIB-3672)&lt;br /&gt;
:7. Testing&lt;br /&gt;
:8. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* contents/course_reminder.class.php&lt;br /&gt;
* contents/global_reminder.class.php&lt;br /&gt;
* contents/group_reminder.class.php&lt;br /&gt;
* contents/user_reminder.class.php&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* reminder.class.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminder_class_diagram_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* CONTRIB-3647 Automating Email reminders for calendar events&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Plugin development [https://github.com/isuru89/moodle-reminders-for-calendar-events Repository]&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:reminder_class_diagram_1.jpg&amp;diff=34208</id>
		<title>File:reminder class diagram 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:reminder_class_diagram_1.jpg&amp;diff=34208"/>
		<updated>2012-06-16T07:16:54Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34207</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34207"/>
		<updated>2012-06-16T07:16:08Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
::* Creating a message provider file.&lt;br /&gt;
::* Creating a lib file for the cron function.&lt;br /&gt;
:3. Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. Implementing necessary reminder classes. (CONTRIB-3669)&lt;br /&gt;
::* Creating abstract reminder class.&lt;br /&gt;
::* Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. Building functionality.&lt;br /&gt;
::* Generation of message content for reminders. (CONTRIB-3671)&lt;br /&gt;
::* Implementation of Cron function. (CONTRIB-3670)&lt;br /&gt;
::* Extending to support plugin for repeated events. (CONTRIB-3672)&lt;br /&gt;
:7. Testing&lt;br /&gt;
:8. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* contents/course_reminder.class.php&lt;br /&gt;
* contents/global_reminder.class.php&lt;br /&gt;
* contents/group_reminder.class.php&lt;br /&gt;
* contents/user_reminder.class.php&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* reminder.class.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminder_class_diagram_1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* CONTRIB-3647 Automating Email reminders for calendar events&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Plugin development [https://github.com/isuru89/moodle-reminders-for-calendar-events Repository]&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=GSOC/2012&amp;diff=34205</id>
		<title>GSOC/2012</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=GSOC/2012&amp;diff=34205"/>
		<updated>2012-06-15T15:51:21Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: /* Email reminders for calendar events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:banner-gsoc2012.png|right|400px]]This page provides an overview of the [http://www.google-melange.com/gsoc/program/home/google/gsoc2012 Google Summer of Code 2012] projects for Moodle.&lt;br /&gt;
&lt;br /&gt;
==Improving SCORM 2004 Support==&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Student&#039;&#039;&#039;: [http://moodle.org/user/view.php?id=1277285&amp;amp;course=5 Mayank Gupta]&lt;br /&gt;
:&#039;&#039;&#039;Mentor&#039;&#039;&#039;: [http://moodle.org/user/view.php?id=21591&amp;amp;course=5 Dan Marsden]&lt;br /&gt;
:&#039;&#039;&#039;Specification&#039;&#039;&#039;: [[Improve_SCORM_2004_Support]]&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* MDL-7068&lt;br /&gt;
* Developer blog [http://www.guptamayank.com/ # Mayank Gupta]&lt;br /&gt;
&lt;br /&gt;
==Improving Plagiarism API==&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Student&#039;&#039;&#039;: [http://moodle.org/user/profile.php?id=1411986 Kanika Goyal]&lt;br /&gt;
:&#039;&#039;&#039;Mentor&#039;&#039;&#039;: [http://moodle.org/user/view.php?id=21591&amp;amp;course=5 Dan Marsden]&lt;br /&gt;
:&#039;&#039;&#039;Specification&#039;&#039;&#039;: [[Plagiarism_API_improvements]]&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* MDL-32225&lt;br /&gt;
&lt;br /&gt;
==Email reminders for calendar events==&lt;br /&gt;
:&#039;&#039;&#039;Student&#039;&#039;&#039;: [http://moodle.org/user/view.php?id=1240428&amp;amp;course=5 Isuru Madushanka Weerarathna]&lt;br /&gt;
:&#039;&#039;&#039;Mentors&#039;&#039;&#039;: [http://moodle.org/user/view.php?id=381842&amp;amp;course=5 Michael de Raadt], [http://moodle.org/user/view.php?id=955449&amp;amp;course=5 Rossiani Wijaya]&lt;br /&gt;
:&#039;&#039;&#039;Specification&#039;&#039;&#039;: [[Email reminders for calendar events]]&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
&lt;br /&gt;
* Tracker issue MDL-1329&lt;br /&gt;
* Developer blog [http://uisurumadushanka89.blogspot.com Isuru&#039;s Ideas]&lt;br /&gt;
&lt;br /&gt;
==Video/audio capture repository plugin==&lt;br /&gt;
:&#039;&#039;&#039;Student&#039;&#039;&#039;: [http://moodle.org/user/profile.php?id=1439658 Ankit Gupta]&lt;br /&gt;
:&#039;&#039;&#039;Mentor&#039;&#039;&#039;: [http://moodle.org/user/profile.php?id=1328988 Rajesh Taneja]&lt;br /&gt;
:&#039;&#039;&#039;Specification&#039;&#039;&#039;: [[ Audio/Video Capture repository plugin ]]&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* Tracker Issue CONTRIB-3631&lt;br /&gt;
* Developer blog [http://ankitgupta90.tumblr.com/ # Ankit Gupta]&lt;br /&gt;
[[Category:GSOC]]&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34033</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34033"/>
		<updated>2012-05-29T01:59:18Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
::* Creating a message provider file.&lt;br /&gt;
::* Creating a lib file for the cron function.&lt;br /&gt;
:3. Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. Implementing necessary reminder classes. (CONTRIB-3669)&lt;br /&gt;
::* Creating abstract reminder class.&lt;br /&gt;
::* Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. Building functionality.&lt;br /&gt;
::* Generation of message content for reminders. (CONTRIB-3671)&lt;br /&gt;
::* Implementation of Cron function. (CONTRIB-3670)&lt;br /&gt;
::* Extending to support plugin for repeated events. (CONTRIB-3672)&lt;br /&gt;
:7. Testing&lt;br /&gt;
:8. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* contents/course_reminder.class.php&lt;br /&gt;
* contents/global_reminder.class.php&lt;br /&gt;
* contents/group_reminder.class.php&lt;br /&gt;
* contents/user_reminder.class.php&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* reminder.class.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminders_class_diagram.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* CONTRIB-3647 Automating Email reminders for calendar events&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Plugin development [https://github.com/isuru89/moodle-reminders-for-calendar-events Repository]&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34022</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=34022"/>
		<updated>2012-05-27T10:48:17Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
::* Creating a message provider file.&lt;br /&gt;
::* Creating a lib file for the cron function.&lt;br /&gt;
:3. Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. Implementing necessary reminder classes. (CONTRIB-3669)&lt;br /&gt;
::* Creating abstract reminder class.&lt;br /&gt;
::* Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. Building functionality.&lt;br /&gt;
::* Generation of message content for reminders. (CONTRIB-3671)&lt;br /&gt;
::* Implementation of Cron function. (CONTRIB-3670)&lt;br /&gt;
::* Extending to support plugin for repeated events. (CONTRIB-3672)&lt;br /&gt;
:7. Testing&lt;br /&gt;
:8. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/install.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminders_class_diagram.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* CONTRIB-3647 Automating Email reminders for calendar events&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Plugin development [https://github.com/isuru89/moodle-reminders-for-calendar-events Repository]&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:reminders_admin_config_page.jpg&amp;diff=33953</id>
		<title>File:reminders admin config page.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:reminders_admin_config_page.jpg&amp;diff=33953"/>
		<updated>2012-05-22T06:13:57Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33952</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33952"/>
		<updated>2012-05-22T06:11:52Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
::* Creating a message provider file.&lt;br /&gt;
::* Creating a lib file for the cron function.&lt;br /&gt;
:3. Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. Implementing necessary reminder classes.&lt;br /&gt;
::* Creating abstract reminder class.&lt;br /&gt;
::* Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. Building functionality.&lt;br /&gt;
::* Implementation of Cron function.&lt;br /&gt;
:7. Testing&lt;br /&gt;
:8. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/install.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminders_class_diagram.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_config_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/CONTRIB-3647 Automating Email reminders for calendar events]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:reminders_admin_settings_page.jpg&amp;diff=33951</id>
		<title>File:reminders admin settings page.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:reminders_admin_settings_page.jpg&amp;diff=33951"/>
		<updated>2012-05-22T06:06:26Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: uploaded a new version of &amp;amp;quot;File:reminders admin settings page.jpg&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:reminders_class_diagram.jpg&amp;diff=33950</id>
		<title>File:reminders class diagram.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:reminders_class_diagram.jpg&amp;diff=33950"/>
		<updated>2012-05-22T06:02:49Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33949</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33949"/>
		<updated>2012-05-22T05:01:21Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# DONE - Refine the project proposal with Michael, Rossiani and the community&lt;br /&gt;
# DONE - Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Reminders can be sent by customizing according to each event type.&lt;br /&gt;
::* Separate message providers for each event type.&lt;br /&gt;
::* Ability to customize message content according to event type.&lt;br /&gt;
:2. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created &#039;&#039;for each event type&#039;&#039;.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on each message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. DONE - Finalize the abstract architecture.&lt;br /&gt;
:2. DONE - Implementing the basic structure of the plugin. (CONTRIB-3648)&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
::* Creating a message provider file.&lt;br /&gt;
::* Creating a lib file for the cron function.&lt;br /&gt;
:3. Implementing message providers for each event type. (CONTRIB-3659)&lt;br /&gt;
:4. Providing a administrator settings page. (CONTRIB-3660)&lt;br /&gt;
:5. Implementing necessary reminder classes.&lt;br /&gt;
::* Creating abstract reminder class.&lt;br /&gt;
::* Creating concrete reminder classes for each event type.&lt;br /&gt;
:6. Building functionality.&lt;br /&gt;
::* Implementation of Cron function.&lt;br /&gt;
:7. Testing&lt;br /&gt;
:8. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Following shows expected file structure of the plugin. Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/install.php&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Reminders Class Diagram ===&lt;br /&gt;
[[File:reminders_class_diagram.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_settings_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/CONTRIB-3647 Automating Email reminders for calendar events]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33947</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33947"/>
		<updated>2012-05-21T15:47:12Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# Refine the project proposal with Michael and the community&lt;br /&gt;
# Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created for every due event in Moodle calendar.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 5 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on corresponding message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. Finalize the overall architecture.&lt;br /&gt;
:2. Finalize file structure and database table schema.&lt;br /&gt;
:3. Designing a proper message content.&lt;br /&gt;
:4. Building the basic structure of the plugin - Implementation Phase 1&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Define the database structure in XMLDB file.&lt;br /&gt;
::* Define capabilities.&lt;br /&gt;
::* Define the message provider.&lt;br /&gt;
::* Define a set of administrator page settings&lt;br /&gt;
::** Implementation of an option for enabling/disabling reminder.&lt;br /&gt;
::** Implementation of a set of options to configure per-defined number of days ahead which reminders should be invoked.&lt;br /&gt;
::* Implementation of the initial script to be run.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
:5. Building functions - Implementation Phase 2&lt;br /&gt;
::* Implementation of supportive functions for main cron function.&lt;br /&gt;
::** HTML message content.&lt;br /&gt;
::** Reminder Plain-text.&lt;br /&gt;
::* Implementation of the cron function.&lt;br /&gt;
::** Removing expired reminders.&lt;br /&gt;
::** Fetching all active reminders.&lt;br /&gt;
::** Fetching all users correspondent to the event.&lt;br /&gt;
::** Deleting reminders that have been already sent.&lt;br /&gt;
:6. Testing&lt;br /&gt;
:7. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/install.php&lt;br /&gt;
* db/install.xml&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* db/events.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== Database Structure ===&lt;br /&gt;
A single database will be used to store these reminders. Database name would be &amp;quot;&#039;&#039;local_reminders&#039;&#039;&amp;quot;. Following shows its structure. (Subject to change)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Type&lt;br /&gt;
! width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Primary key for reminder records.&lt;br /&gt;
|-&lt;br /&gt;
| eventid&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Foreign key for corresponding event.&lt;br /&gt;
|-&lt;br /&gt;
| daysahead&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Number of days ahead such that reminder should be invoked.&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| mailed&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| Indicates whether this reminder has been already mailed. Mailed reminders will be deleted after sometime.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:reminders_admin_settings_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/CONTRIB-3647 Automating Email reminders for calendar events]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:reminders_admin_settings_page.jpg&amp;diff=33946</id>
		<title>File:reminders admin settings page.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:reminders_admin_settings_page.jpg&amp;diff=33946"/>
		<updated>2012-05-21T15:45:44Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33945</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33945"/>
		<updated>2012-05-21T15:42:19Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# Refine the project proposal with Michael and the community&lt;br /&gt;
# Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created for every due event in Moodle calendar.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 5 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on corresponding message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. Finalize the overall architecture.&lt;br /&gt;
:2. Finalize file structure and database table schema.&lt;br /&gt;
:3. Designing a proper message content.&lt;br /&gt;
:4. Building the basic structure of the plugin - Implementation Phase 1&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Define the database structure in XMLDB file.&lt;br /&gt;
::* Define capabilities.&lt;br /&gt;
::* Define the message provider.&lt;br /&gt;
::* Define a set of administrator page settings&lt;br /&gt;
::** Implementation of an option for enabling/disabling reminder.&lt;br /&gt;
::** Implementation of a set of options to configure per-defined number of days ahead which reminders should be invoked.&lt;br /&gt;
::* Implementation of the initial script to be run.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
:5. Building functions - Implementation Phase 2&lt;br /&gt;
::* Implementation of supportive functions for main cron function.&lt;br /&gt;
::** HTML message content.&lt;br /&gt;
::** Reminder Plain-text.&lt;br /&gt;
::* Implementation of the cron function.&lt;br /&gt;
::** Removing expired reminders.&lt;br /&gt;
::** Fetching all active reminders.&lt;br /&gt;
::** Fetching all users correspondent to the event.&lt;br /&gt;
::** Deleting reminders that have been already sent.&lt;br /&gt;
:6. Testing&lt;br /&gt;
:7. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/install.php&lt;br /&gt;
* db/install.xml&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* db/events.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== Database Structure ===&lt;br /&gt;
A single database will be used to store these reminders. Database name would be &amp;quot;&#039;&#039;local_reminders&#039;&#039;&amp;quot;. Following shows its structure. (Subject to change)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Type&lt;br /&gt;
! width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Primary key for reminder records.&lt;br /&gt;
|-&lt;br /&gt;
| eventid&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Foreign key for corresponding event.&lt;br /&gt;
|-&lt;br /&gt;
| daysahead&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Number of days ahead such that reminder should be invoked.&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| mailed&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| Indicates whether this reminder has been already mailed. Mailed reminders will be deleted after sometime.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:admin_settings_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
== Tracker ==&lt;br /&gt;
* [http://tracker.moodle.org/browse/CONTRIB-3647 Automating Email reminders for calendar events]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:admin_settings_page.jpg&amp;diff=33944</id>
		<title>File:admin settings page.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:admin_settings_page.jpg&amp;diff=33944"/>
		<updated>2012-05-21T15:40:12Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: uploaded a new version of &amp;amp;quot;File:admin settings page.jpg&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33782</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33782"/>
		<updated>2012-05-11T14:51:32Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# Refine the project proposal with Michael and the community&lt;br /&gt;
# Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created for every due event in Moodle calendar.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 5 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on corresponding message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. Finalize the overall architecture.&lt;br /&gt;
:2. Finalize file structure and database table schema.&lt;br /&gt;
:3. Designing a proper message content.&lt;br /&gt;
:4. Building the basic structure of the plugin - Implementation Phase 1&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Define the database structure in XMLDB file.&lt;br /&gt;
::* Define capabilities.&lt;br /&gt;
::* Define the message provider.&lt;br /&gt;
::* Define a set of administrator page settings&lt;br /&gt;
::** Implementation of an option for enabling/disabling reminder.&lt;br /&gt;
::** Implementation of a set of options to configure per-defined number of days ahead which reminders should be invoked.&lt;br /&gt;
::* Implementation of the initial script to be run.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
:5. Building functions - Implementation Phase 2&lt;br /&gt;
::* Implementation of supportive functions for main cron function.&lt;br /&gt;
::** HTML message content.&lt;br /&gt;
::** Reminder Plain-text.&lt;br /&gt;
::* Implementation of the cron function.&lt;br /&gt;
::** Removing expired reminders.&lt;br /&gt;
::** Fetching all active reminders.&lt;br /&gt;
::** Fetching all users correspondent to the event.&lt;br /&gt;
::** Deleting reminders that have been already sent.&lt;br /&gt;
:6. Testing&lt;br /&gt;
:7. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/install.php&lt;br /&gt;
* db/install.xml&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* db/events.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== Database Structure ===&lt;br /&gt;
A single database will be used to store these reminders. Database name would be &amp;quot;&#039;&#039;local_reminders&#039;&#039;&amp;quot;. Following shows its structure. (Subject to change)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Type&lt;br /&gt;
! width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Primary key for reminder records.&lt;br /&gt;
|-&lt;br /&gt;
| eventid&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Foreign key for corresponding event.&lt;br /&gt;
|-&lt;br /&gt;
| daysahead&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Number of days ahead such that reminder should be invoked.&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| mailed&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| Indicates whether this reminder has been already mailed. Mailed reminders will be deleted after sometime.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:admin_settings_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
* Message Content:&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;${message_title}&#039;&#039;&#039;&lt;br /&gt;
: Reminder - #n days remaining&lt;br /&gt;
&lt;br /&gt;
: When -&amp;gt; ${event_time}&lt;br /&gt;
: What -&amp;gt; ${event_course} or ${event_type}&lt;br /&gt;
: Description -&amp;gt; ${event_description}&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://docs.moodle.org/dev/Projects_for_new_developers Moodle - Google Summer of Code 2012 Idea List]&lt;br /&gt;
* [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/isuru89/1 Original Proposal - GSoC 2012]&lt;br /&gt;
* RSS Feed from Personal Blog, [http://uisurumadushanka89.blogspot.com/feeds/posts/default/-/gsoc RSS Feed].&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:overall_architecture.jpg&amp;diff=33781</id>
		<title>File:overall architecture.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:overall_architecture.jpg&amp;diff=33781"/>
		<updated>2012-05-11T14:35:52Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33780</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33780"/>
		<updated>2012-05-11T14:35:22Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# Refine the project proposal with Michael and the community&lt;br /&gt;
# Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created for every due event in Moodle calendar.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 5 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on corresponding message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. Finalize the overall architecture.&lt;br /&gt;
:2. Finalize file structure and database table schema.&lt;br /&gt;
:3. Designing a proper message content.&lt;br /&gt;
:4. Building the basic structure of the plugin - Implementation Phase 1&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Define the database structure in XMLDB file.&lt;br /&gt;
::* Define capabilities.&lt;br /&gt;
::* Define the message provider.&lt;br /&gt;
::* Define a set of administrator page settings&lt;br /&gt;
::** Implementation of an option for enabling/disabling reminder.&lt;br /&gt;
::** Implementation of a set of options to configure per-defined number of days ahead which reminders should be invoked.&lt;br /&gt;
::* Implementation of the initial script to be run.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
:5. Building functions - Implementation Phase 2&lt;br /&gt;
::* Implementation of supportive functions for main cron function.&lt;br /&gt;
::** HTML message content.&lt;br /&gt;
::** Reminder Plain-text.&lt;br /&gt;
::* Implementation of the cron function.&lt;br /&gt;
::** Removing expired reminders.&lt;br /&gt;
::** Fetching all active reminders.&lt;br /&gt;
::** Fetching all users correspondent to the event.&lt;br /&gt;
::** Deleting reminders that have been already sent.&lt;br /&gt;
:6. Testing&lt;br /&gt;
:7. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/install.php&lt;br /&gt;
* db/install.xml&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* db/events.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== Database Structure ===&lt;br /&gt;
A single database will be used to store these reminders. Database name would be &amp;quot;&#039;&#039;local_reminders&#039;&#039;&amp;quot;. Following shows its structure. (Subject to change)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Type&lt;br /&gt;
! width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Primary key for reminder records.&lt;br /&gt;
|-&lt;br /&gt;
| eventid&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Foreign key for corresponding event.&lt;br /&gt;
|-&lt;br /&gt;
| daysahead&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Number of days ahead such that reminder should be invoked.&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| mailed&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| Indicates whether this reminder has been already mailed. Mailed reminders will be deleted after sometime.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== High Level Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[File:overall_architecture.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:admin_settings_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message format plaintext.jpg]]&lt;br /&gt;
== Screenshots ==&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33743</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33743"/>
		<updated>2012-05-10T15:16:22Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# Refine the project proposal with Michael and the community&lt;br /&gt;
# Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created for every due event in Moodle calendar.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 5 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on corresponding message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. Finalize the overall architecture.&lt;br /&gt;
:2. Finalize file structure and database table schema.&lt;br /&gt;
:3. Designing a proper message content.&lt;br /&gt;
:4. Building the basic structure of the plugin - Implementation Phase 1&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Define the database structure in XMLDB file.&lt;br /&gt;
::* Define capabilities.&lt;br /&gt;
::* Define the message provider.&lt;br /&gt;
::* Define a set of administrator page settings&lt;br /&gt;
::** Implementation of an option for enabling/disabling reminder.&lt;br /&gt;
::** Implementation of a set of options to configure per-defined number of days ahead which reminders should be invoked.&lt;br /&gt;
::* Implementation of the initial script to be run.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
:5. Building functions - Implementation Phase 2&lt;br /&gt;
::* Implementation of supportive functions for main cron function.&lt;br /&gt;
::** HTML message content.&lt;br /&gt;
::** Reminder Plain-text.&lt;br /&gt;
::* Implementation of the cron function.&lt;br /&gt;
::** Removing expired reminders.&lt;br /&gt;
::** Fetching all active reminders.&lt;br /&gt;
::** Fetching all users correspondent to the event.&lt;br /&gt;
::** Deleting reminders that have been already sent.&lt;br /&gt;
:6. Testing&lt;br /&gt;
:7. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/install.php&lt;br /&gt;
* db/install.xml&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* db/events.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== Database Structure ===&lt;br /&gt;
A single database will be used to store these reminders. Database name would be &amp;quot;&#039;&#039;local_reminders&#039;&#039;&amp;quot;. Following shows its structure. (Subject to change)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Type&lt;br /&gt;
! width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Primary key for reminder records.&lt;br /&gt;
|-&lt;br /&gt;
| eventid&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Foreign key for corresponding event.&lt;br /&gt;
|-&lt;br /&gt;
| daysahead&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Number of days ahead such that reminder should be invoked.&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| mailed&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| Indicates whether this reminder has been already mailed. Mailed reminders will be deleted after sometime.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:admin_settings_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message_format_HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message format plaintext.jpg]]&lt;br /&gt;
== Screenshots ==&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:message_format_HTML.jpg&amp;diff=33742</id>
		<title>File:message format HTML.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:message_format_HTML.jpg&amp;diff=33742"/>
		<updated>2012-05-10T15:15:03Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: uploaded a new version of &amp;amp;quot;File:message format HTML.jpg&amp;amp;quot;: Reverted to version as of 15:13, 10 May 2012&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:message_format_HTML.jpg&amp;diff=33741</id>
		<title>File:message format HTML.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:message_format_HTML.jpg&amp;diff=33741"/>
		<updated>2012-05-10T15:14:41Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: uploaded a new version of &amp;amp;quot;File:message format HTML.jpg&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:message_format_HTML.jpg&amp;diff=33740</id>
		<title>File:message format HTML.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:message_format_HTML.jpg&amp;diff=33740"/>
		<updated>2012-05-10T15:13:01Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33739</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33739"/>
		<updated>2012-05-10T15:12:15Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# Refine the project proposal with Michael and the community&lt;br /&gt;
# Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created for every due event in Moodle calendar.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 5 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on corresponding message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. Finalize the overall architecture.&lt;br /&gt;
:2. Finalize file structure and database table schema.&lt;br /&gt;
:3. Designing a proper message content.&lt;br /&gt;
:4. Building the basic structure of the plugin - Implementation Phase 1&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Define the database structure in XMLDB file.&lt;br /&gt;
::* Define capabilities.&lt;br /&gt;
::* Define the message provider.&lt;br /&gt;
::* Define a set of administrator page settings&lt;br /&gt;
::** Implementation of an option for enabling/disabling reminder.&lt;br /&gt;
::** Implementation of a set of options to configure per-defined number of days ahead which reminders should be invoked.&lt;br /&gt;
::* Implementation of the initial script to be run.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
:5. Building functions - Implementation Phase 2&lt;br /&gt;
::* Implementation of supportive functions for main cron function.&lt;br /&gt;
::** HTML message content.&lt;br /&gt;
::** Reminder Plain-text.&lt;br /&gt;
::* Implementation of the cron function.&lt;br /&gt;
::** Removing expired reminders.&lt;br /&gt;
::** Fetching all active reminders.&lt;br /&gt;
::** Fetching all users correspondent to the event.&lt;br /&gt;
::** Deleting reminders that have been already sent.&lt;br /&gt;
:6. Testing&lt;br /&gt;
:7. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/install.php&lt;br /&gt;
* db/install.xml&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* db/events.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== Database Structure ===&lt;br /&gt;
A single database will be used to store these reminders. Database name would be &amp;quot;&#039;&#039;local_reminders&#039;&#039;&amp;quot;. Following shows its structure. (Subject to change)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Type&lt;br /&gt;
! width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Primary key for reminder records.&lt;br /&gt;
|-&lt;br /&gt;
| eventid&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Foreign key for corresponding event.&lt;br /&gt;
|-&lt;br /&gt;
| daysahead&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Number of days ahead such that reminder should be invoked.&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| mailed&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| Indicates whether this reminder has been already mailed. Mailed reminders will be deleted after sometime.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:admin_settings_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message format HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message format plaintext.jpg]]&lt;br /&gt;
== Screenshots ==&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:admin_settings_page.jpg&amp;diff=33738</id>
		<title>File:admin settings page.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:admin_settings_page.jpg&amp;diff=33738"/>
		<updated>2012-05-10T15:11:30Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33737</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33737"/>
		<updated>2012-05-10T15:09:56Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# Refine the project proposal with Michael and the community&lt;br /&gt;
# Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created for every due event in Moodle calendar.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 5 days, 3 days and 1 day.&lt;br /&gt;
::* Ability to keep/remove history of reminder events.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on corresponding message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. Finalize the overall architecture.&lt;br /&gt;
:2. Finalize file structure and database table schema.&lt;br /&gt;
:3. Designing a proper message content.&lt;br /&gt;
:4. Building the basic structure of the plugin - Implementation Phase 1&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Define the database structure in XMLDB file.&lt;br /&gt;
::* Define capabilities.&lt;br /&gt;
::* Define the message provider.&lt;br /&gt;
::* Define a set of administrator page settings&lt;br /&gt;
::** Implementation of an option for enabling/disabling reminder.&lt;br /&gt;
::** Implementation of a set of options to configure per-defined number of days ahead which reminders should be invoked.&lt;br /&gt;
::* Implementation of the initial script to be run.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
:5. Building functions - Implementation Phase 2&lt;br /&gt;
::* Implementation of supportive functions for main cron function.&lt;br /&gt;
::** HTML message content.&lt;br /&gt;
::** Reminder Plain-text.&lt;br /&gt;
::* Implementation of the cron function.&lt;br /&gt;
::** Removing expired reminders.&lt;br /&gt;
::** Fetching all active reminders.&lt;br /&gt;
::** Fetching all users correspondent to the event.&lt;br /&gt;
::** Deleting reminders that have been already sent.&lt;br /&gt;
:6. Testing&lt;br /&gt;
:7. Bug fixing&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
Plugin name would be &amp;quot;&#039;&#039;reminders&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/install.php&lt;br /&gt;
* db/install.xml&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* db/events.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== Database Structure ===&lt;br /&gt;
A single database will be used to store these reminders. Database name would be &amp;quot;&#039;&#039;local_reminders&#039;&#039;&amp;quot;. Following shows its structure. (Subject to change)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Type&lt;br /&gt;
! width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Primary key for reminder records.&lt;br /&gt;
|-&lt;br /&gt;
| eventid&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Foreign key for corresponding event.&lt;br /&gt;
|-&lt;br /&gt;
| daysahead&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Number of days ahead such that reminder should be invoked.&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| mailed&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| Indicates whether this reminder has been already mailed. Mailed reminders will be deleted after sometime.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
=== Administrator Setting Page ===&lt;br /&gt;
[[File:admin settings page.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (HTML) ===&lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message format HTML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Message Format (Plain-text) === &lt;br /&gt;
* Message Title : Reminder: ${event_detail} @ ${event_date_time}&lt;br /&gt;
&lt;br /&gt;
[[File:message format plaintext.jpg]]&lt;br /&gt;
== Screenshots ==&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33736</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33736"/>
		<updated>2012-05-10T13:45:44Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# Refine the project proposal with Michael and the community&lt;br /&gt;
# Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created for every due event in Moodle calendar.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 5 days, 3 days and 1 day.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on corresponding message provider.&lt;br /&gt;
&lt;br /&gt;
== Coding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
&lt;br /&gt;
:1. Finalize the overall architecture.&lt;br /&gt;
:2. Finalize file structure and database table schema.&lt;br /&gt;
:3. Building the basic structure of the plugin - Implementation Phase 1&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
::* Define the database structure in XMLDB file.&lt;br /&gt;
::* Define capabilities.&lt;br /&gt;
::* Define the message provider.&lt;br /&gt;
::* Define a set of administrator page settings&lt;br /&gt;
::** Implement an option for enabling/disabling reminder.&lt;br /&gt;
::** Implement a set of options to configure per-defined number of days ahead which reminders should be invoked.&lt;br /&gt;
::* Implement the initial script to be run.&lt;br /&gt;
::* Creating a language file.&lt;br /&gt;
:4. Building functions - Implementation Phase 2&lt;br /&gt;
::* Creating a suitable version file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
&lt;br /&gt;
* db/access.php&lt;br /&gt;
* db/message.php&lt;br /&gt;
* db/install.php&lt;br /&gt;
* db/install.xml&lt;br /&gt;
* db/upgrade.php&lt;br /&gt;
* db/events.php&lt;br /&gt;
* lang/en/local_reminders.php&lt;br /&gt;
* version.php&lt;br /&gt;
* lib.php&lt;br /&gt;
* settings.php&lt;br /&gt;
* README&lt;br /&gt;
&lt;br /&gt;
=== Database Structure ===&lt;br /&gt;
A single database will be used to store these reminders. Following shows its structure. (Subject to change)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;nicetable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Field&lt;br /&gt;
! Type&lt;br /&gt;
! width=&amp;quot;500&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| id&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Primary key for reminder records.&lt;br /&gt;
|-&lt;br /&gt;
| eventid&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Foreign key for corresponding event.&lt;br /&gt;
|-&lt;br /&gt;
| daysahead&lt;br /&gt;
| bigint(10)&lt;br /&gt;
| Number of days ahead such that reminder should be invoked.&lt;br /&gt;
|-&lt;br /&gt;
| enabled&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| mailed&lt;br /&gt;
| smallint(4)&lt;br /&gt;
| Indicates whether this reminder has been already mailed. Mailed reminders will be deleted after sometime.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33688</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33688"/>
		<updated>2012-05-08T04:30:16Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
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 &#039;&#039;automatically&#039;&#039; to relevant users on timely manner via Moodle message interface. It will be implemented as a local plugin to the Moodle.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
Moodle 2.2 required&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
=== Milestones ===&lt;br /&gt;
# Refine the project proposal with Michael and the community&lt;br /&gt;
# Feature discussion&lt;br /&gt;
# Create mockups&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
Following features are expecting to package with the reminders plugin.&lt;br /&gt;
&lt;br /&gt;
:1. Administrator configurations&lt;br /&gt;
::* Administrator can enable/disable the process of sending reminders without uninstalling the plugin.&lt;br /&gt;
::* Ability to choose how many days ahead should the reminders be created for every due event in Moodle calendar.&lt;br /&gt;
::** Reminders can be created only by days.&lt;br /&gt;
::** Supported only fixed amount of days ahead such as 7 days, 5 days, 3 days and 1 day.&lt;br /&gt;
:2. User configurations&lt;br /&gt;
::* User can select desired method of receiving reminder notifications on corresponding message provider.&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33680</id>
		<title>Email reminders for calendar events</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Email_reminders_for_calendar_events&amp;diff=33680"/>
		<updated>2012-05-08T03:46:04Z</updated>

		<summary type="html">&lt;p&gt;Isuru89: Created page with &amp;quot;== Introduction ==  This project is about creating a set of reminders for Moodle Calendar events and sending them &amp;#039;&amp;#039;automatically&amp;#039;&amp;#039; to relevant users on timely manner.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This project is about creating a set of reminders for Moodle Calendar events and sending them &#039;&#039;automatically&#039;&#039; to relevant users on timely manner.&lt;/div&gt;</summary>
		<author><name>Isuru89</name></author>
	</entry>
</feed>