AutorÃa | Ultima modificación | Ver Log |
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Event observers used in forum.
*
* @package report
* @subpackage coursestats
* @copyright 2017 Paulo Jr.
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
require(__DIR__. '/../constants.php');
class report_coursestats_observer {
public static function forum_discussion_created(\mod_forum\event\discussion_created $event) {
global $DB;
// Check if the forum instance is for announcements
$result = $DB->get_record(FORUM_TABLE_NAME, array('id'=>$event->other['forumid']));
if ($result->type === NEWS_FORUM_NAME) {
// Get the course, based on its id
$course = $DB->get_record(COURSE_TABLE_NAME, array('id'=>$event->courseid));
/*
* Check if there is no records for the 'courseid' in the table 'report_coursestats'.
* If yes, a record is created with usage type classified as 'forum'.
*/
if (!$DB->record_exists(PLUGIN_TABLE_NAME, array('courseid'=>$event->courseid))) {
$record = new stdClass();
$record->courseid = $event->courseid;
$record->prev_usage_type = NULL_USAGE_TYPE;
$record->curr_usage_type = FORUM_USAGE_TYPE;
$record->last_update = time();
$DB->insert_record(PLUGIN_TABLE_NAME, $record);
}
}
}
private static function handle_module($event) {
global $DB;
/*
* If the module name is 'url', 'folder' or 'resource', then the usage type is 'repository'.
* Otherwise, the usage type is 'activity'
*/
$usage_type = '';
if (in_array($event->other['modulename'], unserialize(REPOSITORY_MODULES))) {
$usage_type = REPOSITORY_USAGE_TYPE;
} else {
$usage_type = ACTIVITY_USAGE_TYPE;
}
// Get the course, based on its id
$course = $DB->get_record(COURSE_TABLE_NAME, array('id'=>$event->courseid));
if (!$DB->record_exists(PLUGIN_TABLE_NAME, array('courseid'=>$event->courseid))) {
$record = new stdClass();
$record->courseid = $event->courseid;
$record->prev_usage_type = NULL_USAGE_TYPE;
$record->curr_usage_type = $usage_type;
$record->last_update = time();
$record->categoryid = $course->category;
$DB->insert_record(PLUGIN_TABLE_NAME, $record);
} else {
$result = $DB->get_record(PLUGIN_TABLE_NAME, array('courseid'=>$event->courseid));
if ($result->curr_usage_type === FORUM_USAGE_TYPE or
($result->curr_usage_type === REPOSITORY_USAGE_TYPE and $usage_type === ACTIVITY_USAGE_TYPE)) {
$result->prev_usage_type = $result->curr_usage_type;
$result->curr_usage_type = $usage_type;
$result->categoryid = $course->category;
$result->last_update = time();
$DB->update_record(PLUGIN_TABLE_NAME, $result);
}
}
}
public static function course_module_created(\core\event\course_module_created $event) {
self::handle_module($event);
}
public static function course_module_updated(\core\event\course_module_updated $event) {
self::handle_module($event);
}
}