tag:blogger.com,1999:blog-89773172469657793222024-02-19T14:25:05.895+05:30Isuru's Ideas"Always desire to learn something useful"U.Isuru Madushanka Weerarathnahttp://www.blogger.com/profile/06381987440493575612noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-8977317246965779322.post-48349269466424193552013-04-30T16:04:00.002+05:302013-04-30T16:06:45.188+05:30Moodle: Reminders now available for v2.4<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiltyVifS2Qu0ZhcPfLNpnp3_nGpoOSxvlSx7xVkg65ntH4yKoq_4SK55nREQeU9hr0Yunjbn5yQ2UE8Z-qYG17vfrMJnU4pEY7yS60MFxD782xcHzolF927Q8rQfFtJpg1CQ5zSnUMrz0/s1600/bell-icone-9872-128+copy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiltyVifS2Qu0ZhcPfLNpnp3_nGpoOSxvlSx7xVkg65ntH4yKoq_4SK55nREQeU9hr0Yunjbn5yQ2UE8Z-qYG17vfrMJnU4pEY7yS60MFxD782xcHzolF927Q8rQfFtJpg1CQ5zSnUMrz0/s1600/bell-icone-9872-128+copy.png" /></a></div>
<br />
Moodle: Reminders local plugin now has been released for Moodle v2.4.<br />
<br />
The changelog of the Reminders v1.2:<br />
<br />
<ul>
<li>Group reminder message's content has been enhanced by including information of course or activity.</li>
<li>New option for setting a special prefix for reminder message title.</li>
<li>Fixed issue with sending group based reminders.</li>
<li>Cron cycle interval has been decreased to 15-minutes, to reduce overhead sending many messages per cycle.</li>
</ul>
You can download the new version from here.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://moodle.org/plugins/download.php/2815/local_reminders_moodle24_2013042000.zip" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJoN7VmNI6oSaClKZ0E_BeYz8O_wdK5hSMYym9CXX6dLJTJJCJns0LbJ4h2691E6MgDzV4y3PJDzcL_SavHNc1BAz3oIKWK0Ko-9rWqIqNgpdQKxvyxaHNr3OLPrxM8mM2z7H4n9c5C1o/s1600/download.png" /></a></div>
<br />
Let me know if there is any issues or any features to be included in future versions. Enjoy!U.Isuru Madushanka Weerarathnahttp://www.blogger.com/profile/06381987440493575612noreply@blogger.com1tag:blogger.com,1999:blog-8977317246965779322.post-37056444801241452932012-07-05T07:53:00.001+05:302012-07-05T07:53:04.289+05:30My GSoC Diary: First Version Released!After weeks of effort, now the first version of working reminders plugin is released and it is ready to be tested. Now plugin can identify upcoming events in advance and send reminders to relevant users.<br />
I have posted several screenshots of the e-mails I received during the local testing period of the plugin in my developer documentation as you can see here. <a href="http://docs.moodle.org/dev/Email_reminders_for_calendar_events#Screenshots">http://docs.moodle.org/dev/Email_reminders_for_calendar_events#Screenshots</a><br />
<br />
If you have a Moodle server and I am kindly invite you to test my plugin in your server and let me know some feedback about the plugin because it will be helpful to the future development of the plugin. Currently the plugin has been tested only in Moodle 2.2, but it should be working any Moodle version greater than or equal to v2.0.<br />
<br />
For the last week I mainly focused into identifying events regarding activities in Moodle courses because activities do enter events differently to the Moodle event table. Also I wrote a README file for the distribution purpose.<br />
<br />
Finally you can get the plugin from this location for the testing purposes (<a href="https://github.com/isuru89/moodle-reminders-for-calendar-events">https://github.com/isuru89/moodle-reminders-for-calendar-events</a>) and let me know feedback in corresponding Moodle tracker issue (<a href="http://tracker.moodle.org/browse/CONTRIB-3647">http://tracker.moodle.org/browse/CONTRIB-3647</a>). Or you can individually contact me through mail <a href="mailto:uisurumadushanka89@gmail.com" target="_blank">uisurumadushanka89@gmail.com </a>U.Isuru Madushanka Weerarathnahttp://www.blogger.com/profile/06381987440493575612noreply@blogger.com0tag:blogger.com,1999:blog-8977317246965779322.post-22312046112447444232012-06-27T09:09:00.000+05:302012-06-27T09:09:10.457+05:30My GSoC Diary: Implementation ImprovementAfter successfully implemented a working version of reminders local plugin, my mentor showed me some of the mistakes and improvements I have done and I could have done to the code.<br />
First thing was to get rid of log records from identifying which events to be ready for sending reminders. Using a log record for each event is very inefficient and as Michael showed me it can transform into fixed time intervals. The logic is that now the plugin stores only the executed time of the cron cycle in the log table, and no more event log records. At each cron cycle it checks for any last reminders cron log record and gets the time associated with it. Now the time difference between now and retrieved time will be taken as the time slot and all the upcoming events in the Moodle calendar will be checked against whether they are gonna fall within this time slot in predefined days ahead (1,3 and 7 days ahead). If so, it will be marked as a ready event to sent reminders within this cron cycle. There is a consideration for the first ever cron cycle of the reminders plugin because it hasn't associated with a past log record. To overcome that I have defined a constant and it will be used to mark the boundary.<br />
Following figures shows how the events will be filtered.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNSVZMe7aco5wIec_SuFfEZu-BGEbqe6NLwtSzj472n7zbJ3k0yRFIQDDFCDZUeIa_AVwqVugLwfdqrZO7ZE4xOh8x_me3NaQvMu4BEHR9VOwtF7-sCv_AF82ibYgMRBxrYnbXBpoKMNE/s1600/first_cron.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNSVZMe7aco5wIec_SuFfEZu-BGEbqe6NLwtSzj472n7zbJ3k0yRFIQDDFCDZUeIa_AVwqVugLwfdqrZO7ZE4xOh8x_me3NaQvMu4BEHR9VOwtF7-sCv_AF82ibYgMRBxrYnbXBpoKMNE/s640/first_cron.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">If the running cron cycle is the first ever cron cycle.</td><td class="tr-caption" style="text-align: center;"><br /></td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
<ul>
<li> (t1,t2) is the time period the time period that cron is running.</li>
<li> (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.</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiizOh_Xyt3bneqzvfRxm2VR_VNoHo8Flj6jSDfV9kRpBtMezpSvxt2m8KDR48-niwneBsn90O0tzLT_fLwl80XqKVQALmhuQte1CTp_iDKqtgN5SKzKHLo4cAEFGzdgRXrLYwzazAHs8s/s1600/nth_cron.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiizOh_Xyt3bneqzvfRxm2VR_VNoHo8Flj6jSDfV9kRpBtMezpSvxt2m8KDR48-niwneBsn90O0tzLT_fLwl80XqKVQALmhuQte1CTp_iDKqtgN5SKzKHLo4cAEFGzdgRXrLYwzazAHs8s/s640/nth_cron.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Nth cron cycle</td></tr>
</tbody></table>
<ul>
<li> (t1,t2) is the interval between two cron cycles as defined in plugin.</li>
<li> (T1,T2) is the time inspecting region. (T1 will be decided by log record for the last cron cycle)</li>
</ul>
Other than this, I also changed the language file (<i>reminders/lang/en/local_reminders.php</i>) which makes more readable specially in mail contents.<br />
There is another major thing I should mention. That is dealing about course modules. There are about 13 types of modules in the Moodle 2.2 and as the guidance shown by Michael, I created an instance for each and every type except for SCORM activities. Thing I noticed is that not all activity types are adding an event for the Moodle calendar. Summary is shown below table.<br />
<br />
<div align="center">
<table>
<tbody>
<tr><th align="left" style="font-family: inherit;" width="100">Activity</th><th align="left" width="400">Details</th></tr>
<tr><td>Assignment</td><td rowspan="4">adds an event for due date</td></tr>
<tr><td>Chat</td></tr>
<tr><td>Quiz</td></tr>
<tr><td>Lesson</td></tr>
<tr><td><b>Choice</b></td><td><b>No event</b></td></tr>
<tr><td>Database</td><td rowspan="3">No event (only can add for rating due dates)</td></tr>
<tr><td>Forum</td></tr>
<tr><td>Glossary</td></tr>
<tr><td>Wiki</td><td rowspan="4">Not applicable</td></tr>
<tr><td>Workshop</td></tr>
<tr><td>Survey</td></tr>
<tr><td>External Tool</td></tr>
<tr><td>SCORM</td><td>Unable to test</td></tr>
</tbody></table>
</div>
<br />
It is wonder why choice activities doesn't generate any events in the calendar even if it has a significance as same as assignment or quiz. I tried searching in the Moodle tracker to find out are there any feature requests for that one, but not any. So, I am expecting to discuss about this with my mentor in this week and ask what to do.<br />
<br />U.Isuru Madushanka Weerarathnahttp://www.blogger.com/profile/06381987440493575612noreply@blogger.com0tag:blogger.com,1999:blog-8977317246965779322.post-88348351365573481402012-06-10T09:48:00.000+05:302012-06-10T09:48:26.049+05:30My GSoC Diary: Coding Continuing - A Happy Day!Last two days I was very happy because I could successfully sent a reminder message for one of my dummy events I have created in my local Moodle server. Now I think I have completed a prototype version of the plugin which can be refined and refactored then can be tested in real Moodle servers with helping hand of community.<br />
<br />Within last week I started implementation of the heart of plugin, that is the cron function in <i>lib.php</i> file and I did finish it in two days ago. That single function really tested my patience and dedication to the project. There were lot of errors and bugs I have faced during that time, but finally it begins to work.<br />
<br />One major concern about the implementation is that using past log records to identify whether a reminder has been sent for a specific event. (I really believe this gonna be make performance hit in actual servers since there can be million of records in the log and querying in such large table is really an overhead) I also did a small hack to identify whether a reminder has been sent for a event on a specific number of days ahead. I could use info column in the log table to store the identified day before the event.<br />
<br />My first successful reminder message is shown in below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj52cmmj5U8CON12b5mc-mYjseuZ0cS5dMMOS9FHe0_B-HLhydjmqxUnKBCHOWeaUg4NqES-dWjNFISJ3_vaOEr1YvZTGbkUMRIkktQ7gtC3eD7Ay36tFNJNp3GgnnsOxQklpuR_JYiV4o/s1600/first+reminder+mail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="173" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj52cmmj5U8CON12b5mc-mYjseuZ0cS5dMMOS9FHe0_B-HLhydjmqxUnKBCHOWeaUg4NqES-dWjNFISJ3_vaOEr1YvZTGbkUMRIkktQ7gtC3eD7Ay36tFNJNp3GgnnsOxQklpuR_JYiV4o/s400/first+reminder+mail.png" width="400" /></a></div>
<br />
Currently I have diverted all user's messages to my e-mail account in purpose of testing. Reason to do that is even though I could list all users in a group, still I couldn't list all users who has been enrolled for a course but hopefully I will be able to do in upcoming week. One thing is still to analyze is how to deal with repeated events and how the reminders should be sent.<br />
<br />If you are interested of my current progress you can take my implementation from <a href="https://github.com/isuru89/moodle-reminders-for-calendar-events" target="_blank">here</a> and test it in your Moodle server.U.Isuru Madushanka Weerarathnahttp://www.blogger.com/profile/06381987440493575612noreply@blogger.com0tag:blogger.com,1999:blog-8977317246965779322.post-83276016142407566202012-06-10T09:28:00.000+05:302012-06-10T09:28:14.180+05:30My GSoC Diary: Coding ContinuingI began this week by completing implementation of admin configuration page and creating message provider interfaces in the plugin. Following shows an actual screenshot of the configuration page I have created.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitm-R54DC3B8WhqmQi-5927_ZTVXeL_RJYIPqBTirIUTgzM4ri7ZUVQcA6lm9_vZzp8KHXA-Brg9U1pINvvtoymK3tVI2vN-wyPpY6UXqMH053tmIDYyejuLJ1o7tbHKqICM1olmnKp0A/s1600/Admin+setting+page+-+screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="274" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitm-R54DC3B8WhqmQi-5927_ZTVXeL_RJYIPqBTirIUTgzM4ri7ZUVQcA6lm9_vZzp8KHXA-Brg9U1pINvvtoymK3tVI2vN-wyPpY6UXqMH053tmIDYyejuLJ1o7tbHKqICM1olmnKp0A/s320/Admin+setting+page+-+screenshot.png" width="320" /></a></div>
<br />
Soon after completion of that I started working on creating reminder classes for each event type. I have created a class diagram and uploaded in to my developer documentation in Moodle to show the structure what I am going to implement and it is also shown in below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLDoUgzW4tiF6_0BFHR8fJehIkxvKsrR0kI2y5zwaH9AvjRpk4Ab6cdLEqi2B-HpRsx3lo6e97InnysC9zlDIRvS8susIvJMoZAA5W3_NXXobLND7St8g9n0LS_2wsAvtEWqoHQ09jHJA/s1600/reminders_class_diagram.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="191" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLDoUgzW4tiF6_0BFHR8fJehIkxvKsrR0kI2y5zwaH9AvjRpk4Ab6cdLEqi2B-HpRsx3lo6e97InnysC9zlDIRvS8susIvJMoZAA5W3_NXXobLND7St8g9n0LS_2wsAvtEWqoHQ09jHJA/s320/reminders_class_diagram.jpg" width="320" /></a></div>
<br />
The abstract class, <i>reminder.class.php</i> file will be in the plugin root's directory while all other concrete classes will be in the <i>content</i> folder. The reminder class mainly contains an event object and few abstract functions which must be implemented by concrete classes; course, global, user and group. Those functions can be shown as follows.<br />
<br />
<pre class="brush:php">abstract class reminder {
protected $aheaddays = 0;
protected $event;
...
public function __construct($event, $daysahead=1) {
$this->event = $event;
$this->aheaddays = $daysahead;
}
...
protected abstract function get_message_provider();
public abstract function get_message_html();
public abstract function get_message_plaintext();
public abstract function get_message_title();
}
</pre>
<br />
Each of class is responsible for generating message content and creating a message object to the cron function. By using such class structure it makes easy to change content for each event type. As an example, global event may not have a separate link but for course event there is a link to the module of that course. Those variations can easily be managed.
You can observe all concrete classes I have implemented so far from <a href="https://github.com/isuru89/moodle-reminders-for-calendar-events/tree/master/reminders/contents" target="_blank">here</a>.
<script src="http://isuru89-syntax-highlight-compiled.googlecode.com/svn/trunk/synHighLoader.js">
</script>U.Isuru Madushanka Weerarathnahttp://www.blogger.com/profile/06381987440493575612noreply@blogger.com0tag:blogger.com,1999:blog-8977317246965779322.post-38531797714877334292012-05-23T19:39:00.001+05:302012-05-23T19:39:37.470+05:30My GSoC Diary: Coding BeginsOne of the feature I noticed is that, this time community bonding period felt approximately our whole exam time period. Anyway I am happy about myself that I knew I have done considerable amount of work with compare to my other friends within that period.<br />
From 21st of May the official coding period has begun and now it's time to code. Before I am going to continue my coding I would rather better explain something about this plugin: reminders. I created some mockups and they are shown in the Moodle GSoC developer documentation file (see here: <a href="http://docs.moodle.org/dev/Email_reminders_for_calendar_events">http://docs.moodle.org/dev/Email_reminders_for_calendar_events</a>). Following shows the overall simple architecture of my plugin and how it works.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhChfEtcKY9M1P4QVvRlUO52I_Pozcj56GGt1L9Pp_m5_U_z8rZ4Ds-mJjX3fx7tjvgMTe6AvumuFMeIrRa6h5waMACGp7HOq0JmfVCX9Y9wVTE3GZh3oUVMDXe2LWwfZORAmaqq3DjbJE/s1600/overall+architecutre.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhChfEtcKY9M1P4QVvRlUO52I_Pozcj56GGt1L9Pp_m5_U_z8rZ4Ds-mJjX3fx7tjvgMTe6AvumuFMeIrRa6h5waMACGp7HOq0JmfVCX9Y9wVTE3GZh3oUVMDXe2LWwfZORAmaqq3DjbJE/s320/overall+architecutre.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Overall Architecture of Reminders Plugin</td><td class="tr-caption" style="text-align: center;"><br /></td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
<br />
Also I had another skype meeting with my mentor and he explained why it won't need a database for my plugin. Reason is that I could use Moodle log table to track down which reminders was sent before and not rather they are storing in a separate table. But also he said that if we want a database it won't be hard to implement it even in the middle or later stage of the development. There are other several decisions took in that meeting and it is better to summarize them as follows.<br />
<ul>
<li>It was decided to remove capabilities from the plugin which indicates the ability to receive reminders from the site. With this decision, now all can receive reminder messages without any restrictions. </li>
<li>Also I agreed to create several message providers for each event types in the Moodle.</li>
<li>There will be separate reminder configurations to admin for each event type. </li>
<li>Create some class hierarchy to encapsulate reminder objects for each event type. </li>
</ul>
<span id="goog_1561972365"></span><span id="goog_1561972366"></span><br />
Following shows the mockup I created for admin configuration page.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzGz4BEzv1D83TynyLaQ7GbazRZzuBvgJRkTdpaNhvVKN8JYXmevN2dX-2JgLtisHpPL8_SsX5OQS3LSF9YH0_3InLWFEOzgCnilpsWQg-JYygC81ZU_nM1gHY6OL6l_FHqQYZqqozTjA/s1600/reminders_admin_config_page.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzGz4BEzv1D83TynyLaQ7GbazRZzuBvgJRkTdpaNhvVKN8JYXmevN2dX-2JgLtisHpPL8_SsX5OQS3LSF9YH0_3InLWFEOzgCnilpsWQg-JYygC81ZU_nM1gHY6OL6l_FHqQYZqqozTjA/s320/reminders_admin_config_page.jpg" width="294" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Mockup of Admin Configuration Page for plugin.</td></tr>
</tbody></table>
<br />
Also at the end I created another two sub-tasks which align to the above taken decisions and they can be mentioned as,<br />
<ul>
<li>Implementing a separate message providers in reminders for each event type (<a href="http://tracker.moodle.org/browse/CONTRIB-3659" target="_blank">CONTRIB-3659</a>)</li>
<li>Creating the admin configuration page for the plugin. (<a href="http://tracker.moodle.org/browse/CONTRIB-3660" target="_blank">CONTRIB-3660</a>)</li>
</ul>
At the end of these days I am implementing above two requirements and soon after that I will expect to begin creating reminder classes for each event type.<br />
<br />U.Isuru Madushanka Weerarathnahttp://www.blogger.com/profile/06381987440493575612noreply@blogger.com0tag:blogger.com,1999:blog-8977317246965779322.post-56301535732775017632012-05-23T19:15:00.000+05:302012-05-23T19:15:35.867+05:30My GSoC Diary: Community Bonding Period - Week 4I had the second meeting with my mentor in this week and the developer documentation I have written was examined and gave feedback. One of important feedback was to remove the database table which I have proposed in the developer documentation. It's a little bit tricky one, because I have no idea how the plugin knows that a reminder was sent for a specific event in between two consecutive cron job cycles.<br />
Anyway, there are two primary jobs I have been given for this week. One is to create a issue tracker and second thing is to create the initial structure for the plugin. I was added to the developer list in the Moodle tracker so now I have privileges to customize an issue tracker as I desire. But, Michael created the following Moodle tracker (<a href="http://tracker.moodle.org/browse/CONTRIB-3647" target="_blank">CONTRIB-3647</a>) and I was informed to add several sub tasks as well. At first I created a sub-task called 'Creating a structure of reminders local plugin' (<a href="http://tracker.moodle.org/browse/CONTRIB-3648" target="_blank">CONTRIB-3648</a>).<br />
Then I began my initial development of the structure of reminders local plugin. Before everything I created a new git branch for my development based on 'master' branch. Then inside 'local' folder in Moodle root directory, I created the following file/folder structure.<br />
<table id="rounded-corner">
<thead>
<tr><th width="250">File</th><th width="400">Description</th></tr>
</thead>
<tfoot>
<tr><td class="rounded-foot-left" colspan="4"><i>Any files may add or remove later depend on the progress of the plugin implementations.</i></td><td class="rounded-foot-right"></td></tr>
</tfoot>
<tbody>
<tr><td width="225"><b>db/access.php</b></td><td width="400">Defines the capabilities of the plugin.</td></tr>
<tr><td><b>db/messages.php</b></td><td>Defines message provider(s) for reminders.</td></tr>
<tr><td><b>db/upgrade.php</b></td><td>The script to be run when plugin need to be updated.</td></tr>
<tr><td><b>lang/en/local_reminders.php</b></td><td>Language file which stored all the string literals regarding to this plugin.</td></tr>
<tr><td><b>lib.php</b></td><td>Contains main cron function which iterate through events to find out upcoming events and sending reminders accordingly.</td></tr>
<tr><td><b>version.php</b></td><td>A mandatory file which stores required plugin details and will be used when every time plugin is referenced.</td></tr>
<tr><td><b>settings.php</b></td><td>A page that contains configurations for administrator.</td></tr>
</tbody>
</table>
<br />
Although I continue this development in Moodle master branch, according to advice of my mentor I opened up a new Git repository to store my local plugin only. You can look at it from this link: <a href="https://github.com/isuru89/moodle-reminders-for-calendar-events">https://github.com/isuru89/moodle-reminders-for-calendar-events</a>.U.Isuru Madushanka Weerarathnahttp://www.blogger.com/profile/06381987440493575612noreply@blogger.com0tag:blogger.com,1999:blog-8977317246965779322.post-5645083181472651162012-05-08T13:24:00.005+05:302012-05-08T13:29:40.488+05:30My GSoC Diary : Community Bonding Period Week 1-3After all excitements from the moment of knowing selected in GSoC 2012, it has been started Community bonding period with Moodle. I have been for a while in the Moodle community before I even writing my project proposal making me easy to deal with the community. Either way I think objective of this period is to make introduce ourselves to the community and discuss about the project. I have one barrier on communicating with Moodle community due to the examination falls on same time period, but I talked with my mentor Michael and I promised to contact him as possible as I can.<br />
<br />
I hadn't any reason to publish my project proposal to the community immediately after I have been selected, because I have identified several problems - I don't like to call them as problems, but let me say anomalies - in my proposal. One thing is, proposed database table structure has additional attribute called <i>userid</i> which is really unnecessary and adds extra redundancy and complexity to the plugin because Moodle event table already has a column called <i>userid</i> to identify user(s) belong to a specific event. Other thing is that usage of Event API was blurred because I could observe that no event related thing can bring into my local plugin.<br />
<br />
So far there were two orientation meetings with Moodle; one was on 2nd May at 0700 UTC time that was the first. In there almost all Moodle mentors and selected students have participated and we introduced ourselves to each other. Then Michael demonstrated how we should continue throughout the period and what we should have done. It was helpful and understood what will be the procedures on upcoming weeks. I could know that I have been assigned another mentor, Rossiani Wijaya, with Michael de Raadt. Surprisingly and unexpectedly, now I have two mentors and it makes me so relief that I can ask so many questions either of them. :)<br />
<br />
Second meeting was just only with Michael and Rossiani. It was scheduled on the morning (0830 AM from local time). Even though I am going to have the two most hardest exam papers on following two days, I decided to agree for this meeting because I know that I can't take much marks even I studied them. Anyway, I reported my current progress - actually nothing much except for creating a single forum post - and Michael enabled the developer documentation link and advice me to edit the comprehensive project proposal there. Since it is a totally strange thing I have been informed to look for previous year documentation. By using them, I began to edit it immediately after the meeting.<br />
<br />
Next meeting has been scheduled in next week. So, I have to edit my documentation as possible as I can before that. I have to create some images describing my project design/architecture. I saw UML class diagrams has been used in some documentations but I am curious whether I had to draw such class diagrams because my one is somewhat different. I am going to create a comprehensive architectural diagram of my plugin indicating major components which are using and how they are being integrated each other. Additionally I am going to provide UI mockup of the administrative setting page as well.<br />
<br />
So, I am stopping here, until we meet again.U.Isuru Madushanka Weerarathnahttp://www.blogger.com/profile/06381987440493575612noreply@blogger.com0tag:blogger.com,1999:blog-8977317246965779322.post-30464260579309754072012-04-24T12:00:00.000+05:302012-05-02T14:46:41.002+05:30Selected to Google Summer of Code 2012 under Moodle!<div align="center">
<table border="0">
<tbody>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg40sgqTiW9Hu7a2-wI7Vkv2M8dY6Yr0cZQ3uXNAA88fnhG-0f3UMgRLiyMzk0roe8bQza8xoWlaAVcpH-OaqzO7flBW5-6djS2cumnh_EU4sHKXA3zMrqc6nVX49f4_5EzibtjAsLR3EE/s1600/Moodle_m_small.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="147" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg40sgqTiW9Hu7a2-wI7Vkv2M8dY6Yr0cZQ3uXNAA88fnhG-0f3UMgRLiyMzk0roe8bQza8xoWlaAVcpH-OaqzO7flBW5-6djS2cumnh_EU4sHKXA3zMrqc6nVX49f4_5EzibtjAsLR3EE/s200/Moodle_m_small.gif" width="150" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiltyVifS2Qu0ZhcPfLNpnp3_nGpoOSxvlSx7xVkg65ntH4yKoq_4SK55nREQeU9hr0Yunjbn5yQ2UE8Z-qYG17vfrMJnU4pEY7yS60MFxD782xcHzolF927Q8rQfFtJpg1CQ5zSnUMrz0/s1600/bell-icone-9872-128+copy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiltyVifS2Qu0ZhcPfLNpnp3_nGpoOSxvlSx7xVkg65ntH4yKoq_4SK55nREQeU9hr0Yunjbn5yQ2UE8Z-qYG17vfrMJnU4pEY7yS60MFxD782xcHzolF927Q8rQfFtJpg1CQ5zSnUMrz0/s1600/bell-icone-9872-128+copy.png" width="150" /></a></div>
</td>
</tr>
</tbody></table>
</div>
<br />
Finally a smile could add to my face after having some rough weeks without happening any important things. Yes, I have been accepted to the GSoC 2012 program! I had prepared only one application for this summer and that was Moodle. So, I am extremely happy to have selected for one and only application I put on. My project is about '<b>Email reminders for calendar events</b>'. First of all I would like to thank to the Moodle community and the selection panel for keeping faith on my project proposal and selecting me as the best candidate for that project. Specially I can't forget Michael de Raadt who gave me lots of valuable information as a starting point to the project. They were extremely useful and with the past experience of Moodle development I could grab them quickly. First time I saw the Moodle was when I entered to my university, Univeristy of Moratuwa. My Moodle development started nearly a year and half ago with the start of my level-3 project. [<a href="http://uisurumadushanka89.blogspot.com/2011/02/moodle-advanced-course-list-my-level-3.html">read here</a>]<br />
<br />
If I describe about what my project is going to do, it can be mentioned as follows. Currently Moodle has a Calendar which indicates all the time related events and a very good Messaging interface which allows sending messages to outsiders or even insiders. As we all have experienced in Google calendar, there we can set reminders for our calendar events which will be triggered on predefined time prior to the actual event triggering time. It happens automatically. The same overall concept can be used to implement the same functionality for the Moodle calendar and it is what I am going to do in this summer. I am going to develop a local plugin to achieve these functions by respecting to the modularity of the Moodle as the letter 'M' indicates. In simple word the plugin would be a bridge between those two components.<br />
<br />
Following shows the link to my initial project proposal as a Google document. [<a href="https://docs.google.com/open?id=0B-QivJxgrhJ-OFRUMlpwNjNUODY5X3gzV1hrODFHQQ" target="_blank">proposal</a>] From this moment on I will update the project progress throughout the summer on this blog.<br />
<br />
<br />U.Isuru Madushanka Weerarathnahttp://www.blogger.com/profile/06381987440493575612noreply@blogger.com0