Proyectos de Subversion Moodle

Rev

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/>.

/**
 * Notificationeabc enrolment plugin.
 *
 * This plugin notifies users when an event occurs on their enrolments (enrol, unenrol, update enrolment)
 *
 * @package    enrol_notificationeabc
 * @copyright  2017 e-ABC Learning
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @author     Osvaldo Arriola <osvaldo@e-abclearning.com>
 */

defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot . '/enrol/notificationeabc/lib.php');

/**
 * Observer definition
 *
 * @package    enrol_notificationeabc
 * @copyright  2017 e-ABC Learning
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @author     Osvaldo Arriola <osvaldo@e-abclearning.com>
 */
class enrol_notificationeabc_observer
{

    /**
     * hook enrol event
     * @param \core\event\user_enrolment_deleted $event
     */
    public static function user_unenroled(\core\event\user_enrolment_deleted $event) {
        global $DB;

        // Validate status plugin.
        $enableplugins = get_config(null, 'enrol_plugins_enabled');
        $enableplugins = explode(',', $enableplugins);
        $enabled = false;
        foreach ($enableplugins as $enableplugin) {
            if ($enableplugin === 'notificationeabc') {
                $enabled = true;
            }
        }
        if ($enabled) {
            $user = $DB->get_record('user', array('id' => $event->relateduserid));
            $course = $DB->get_record('course', array('id' => $event->courseid));

            $notificationeabc = new enrol_notificationeabc_plugin();

            $activeglobal = $notificationeabc->get_config('activarglobalunenrolalert');
            $activeunenrolalert = $notificationeabc->get_config('activeunenrolalert');

            $enrol = $DB->get_record('enrol', array('enrol' => 'notificationeabc', 'courseid' => $event->courseid));

            /*
            * check the instance status
            * status = 0 enabled and status = 1 disabled
            */
            $instanceenabled = false;
            if (!empty($enrol)) {
                if (!$enrol->status) {
                    $instanceenabled = true;
                }
            }
            if (!empty($enrol) && $instanceenabled) {
                $activeunenrolalert = $enrol->customint4;
            }

            if ($activeglobal == 1 && $activeunenrolalert == 1) {
                $notificationeabc->enviarmail($user, $course, 2);
            } else if (!empty($enrol) && !empty($activeunenrolalert) && $instanceenabled) {
                $notificationeabc->enviarmail($user, $course, 2);
            }
        }
    }

    /**
     * hook user update event
     * @param \core\event\user_enrolment_updated $event
     */
    public static function user_updated(\core\event\user_enrolment_updated $event) {
        global $DB;

        // Validate plugin status in system context.
        $enableplugins = get_config(null, 'enrol_plugins_enabled');
        $enableplugins = explode(',', $enableplugins);
        $enabled = false;
        foreach ($enableplugins as $enableplugin) {
            if ($enableplugin === 'notificationeabc') {
                $enabled = true;
            }
        }
        if ($enabled) {
            $user = $DB->get_record('user', array('id' => $event->relateduserid));
            $course = $DB->get_record('course', array('id' => $event->courseid));

            $notificationeabc = new enrol_notificationeabc_plugin();

            $activeglobal = $notificationeabc->get_config('activarglobalenrolupdated');
            $activeenrolupdatedalert = $notificationeabc->get_config('activeenrolupdatedalert');

            // Plugin instance in course.
            $enrol = $DB->get_record('enrol', array('enrol' => 'notificationeabc', 'courseid' => $event->courseid));

            /*
            * check the instance status
            * status = 0 enabled and status = 1 disabled
            */
            $instanceenabled = false;
            if (!empty($enrol)) {
                if (!$enrol->status) {
                    $instanceenabled = true;
                }
            }
            if (!empty($enrol) && $instanceenabled) {
                $activeenrolupdatedalert = $enrol->customint5;
            }

            if ($activeglobal == 1 && $activeenrolupdatedalert == 1) {
                $notificationeabc->enviarmail($user, $course, 3);
            } else if (!empty($enrol) && !empty($activeenrolupdatedalert) && $instanceenabled) {
                $notificationeabc->enviarmail($user, $course, 3);
            }
        }
    }

    /**
     * hook enrolment event
     * @param \core\event\user_enrolment_created $event
     */
    public static function user_enroled(\core\event\user_enrolment_created $event) {
        global $DB;

        // Validate plugin status in system context.
        $enableplugins = get_config(null, 'enrol_plugins_enabled');
        $enableplugins = explode(',', $enableplugins);
        $enabled = false;
        foreach ($enableplugins as $enableplugin) {
            if ($enableplugin === 'notificationeabc') {
                $enabled = true;
            }
        }
        if ($enabled) {
            $user = $DB->get_record('user', array('id' => $event->relateduserid));
            $course = $DB->get_record('course', array('id' => $event->courseid));

            $notificationeabc = new enrol_notificationeabc_plugin();

            $activeglobal = $notificationeabc->get_config('activarglobal');
            $activeenrolalert = $notificationeabc->get_config('activeenrolalert');

            $enrol = $DB->get_record('enrol', array('enrol' => 'notificationeabc', 'courseid' => $event->courseid));

            /*
            * check the instance status
            * status = 0 enabled and status = 1 disabled
            */
            $instanceenabled = false;
            if (!empty($enrol)) {
                if (!$enrol->status) {
                    $instanceenabled = true;
                }
            }

            if (!empty($enrol) && $instanceenabled) {
                $activeenrolalert = $enrol->customint3;
            }

            if ($activeglobal == 1 && $activeenrolalert == 1) {
                $notificationeabc->enviarmail($user, $course, 1);
            } else if (!empty($enrol) && !empty($activeenrolalert) && $instanceenabled) {
                $notificationeabc->enviarmail($user, $course, 1);
            }
        }
    }
}