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 . '/lib/moodlelib.php');
/**
* Lib class
*
* @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_plugin extends enrol_plugin
{
/** @var log.*/
private $log = '';
// Funcion que envia las notificaciones a los usuarios.
/**
* Send mail method
* @param stdClass $user instancia usuario
* @param stdClass $course instancia curso
* @param int $type aviso matriculacion, actualizacion o desmatriculacion
* @return bool
*/
public function enviarmail(stdClass $user, stdClass $course, $type) {
global $CFG, $DB, $COURSE;
$course->url = $CFG->wwwroot . '/course/view.php?id=' . $course->id;
$enrol = $DB->get_record('enrol', array('enrol' => 'notificationeabc', 'courseid' => $course->id, 'status' => 0));
$activeglobalenrol = $this->get_config('activarglobal');
$activarglobalunenrolalert = $this->get_config('activarglobalunenrolalert');
$activarglobalenrolupdated = $this->get_config('activarglobalenrolupdated');
$mensajeenrol = $this->get_config('location');
$plainmensajeenrol = strip_tags($mensajeenrol);
$mensajeunenrol = $this->get_config('unenrolmessage');
$plainmensajeunenrol = strip_tags($mensajeunenrol);
$mensajeupdateenrol = $this->get_config('updatedenrolmessage');
$plainmensajeupdateenrol = strip_tags($mensajeupdateenrol);
switch ((int)$type) {
case 1:
// Si no se configuro un mensaje personalizado se envia uno por defecto basico.
if (!empty($enrol) && !empty($enrol->customtext1)) {
$texto = strip_tags($enrol->customtext1);
if (!empty($texto)) {
$mensaje = $this->process_mensaje($enrol->customtext1, $user, $course);
} else {
$mensaje = get_string("filelockedmail", "enrol_notificationeabc", $course);
}
} else if (!empty($activeglobalenrol) && !empty($plainmensajeenrol)) {
$mensaje = $this->process_mensaje($mensajeenrol, $user, $course);
} else {
$mensaje = get_string("filelockedmail", "enrol_notificationeabc", $course);
}
break;
case 2:
if (!empty($enrol) && !empty($enrol->customtext2)) {
$texto = strip_tags($enrol->customtext2);
if (!empty($texto)) {
$mensaje = $this->process_mensaje($enrol->customtext2, $user, $course);
} else {
$mensaje = get_string("unenrolmessagedefault", "enrol_notificationeabc", $course);
}
} else if (!empty($activarglobalunenrolalert) && !empty($plainmensajeunenrol)) {
$mensaje = $this->process_mensaje($mensajeunenrol, $user, $course);
} else {
$mensaje = get_string("unenrolmessagedefault", "enrol_notificationeabc", $course);
}
break;
case 3:
if (!empty($enrol) && !empty($enrol->customtext3)) {
$texto = strip_tags($enrol->customtext3);
if (!empty($texto)) {
$mensaje = $this->process_mensaje($enrol->customtext3, $user, $course);
} else {
$mensaje = get_string("updatedenrolmessagedefault", "enrol_notificationeabc", $course);
}
} else if (!empty($activarglobalenrolupdated) && !empty($plainmensajeupdateenrol)) {
$mensaje = $this->process_mensaje($mensajeupdateenrol, $user, $course);
} else {
$mensaje = get_string("updatedenrolmessagedefault", "enrol_notificationeabc", $course);
}
break;
default:
break;
}
$soporte = core_user::get_support_user();
$sender = get_admin();
if (!empty($enrol) && !empty($enrol->customchar1)) {
$sender->email = $enrol->customchar1;
} else {
$sender->email = $soporte->email;
}
if (!empty($enrol) && !empty($enrol->customchar2)) {
$sender->firstname = $enrol->customchar2;
} else {
$sender->firstname = $soporte->firstname;
}
$sender->lastname = $soporte->lastname;
$eventdata = new \core\message\message();
$eventdata->courseid = $course->id;
$eventdata->modulename = 'moodle';
$eventdata->component = 'enrol_notificationeabc';
$eventdata->name = 'notificationeabc_enrolment';
$eventdata->userfrom = $sender;
$eventdata->userto = $user->id;
$eventdata->subject = get_string('subject', 'enrol_notificationeabc');
$eventdata->fullmessage = '';
$eventdata->fullmessageformat = FORMAT_HTML;
$eventdata->fullmessagehtml = $mensaje;
$eventdata->smallmessage = '';
$strdata = new stdClass();
$strdata->username = $user->username;
$strdata->coursename = $course->fullname;
if (message_send($eventdata)) {
$this->log .= get_string('succefullsend', 'enrol_notificationeabc', $strdata);
return true;
} else {
$this->log .= get_string('failsend', 'enrol_notificationeabc', $strdata);
return false;
}
} // End of function.
// Procesa el mensaje para aceptar marcadores.
/**
* Proccess message method
* @param String $mensaje el mensaje en bruto
* @param stdClass $user instancia usuario
* @param stdClass $course instancia curso
* @return String el mensaje procesado
*/
public function process_mensaje($mensaje, stdClass $user, stdClass $course) {
global $CFG;
$m = $mensaje;
$url = new moodle_url($CFG->wwwroot . '/course/view.php', array('id' => $course->id));
$m = str_replace('{COURSENAME}', $course->fullname, $m);
$m = str_replace('{USERNAME}', $user->username, $m);
$m = str_replace('{NOMBRE}', $user->firstname, $m);
$m = str_replace('{APELLIDO}', $user->lastname, $m);
$m = str_replace('{URL}', $url, $m);
return $m;
}
/**
* Returns link to page which may be used to add new instance of enrolment plugin in course.
* @param int $courseid
* @return moodle_url page url
*/
public function get_newinstance_link($courseid) {
global $DB;
$numenrol = $DB->count_records('enrol', array('courseid' => $courseid, 'enrol' => 'notificationeabc'));
$context = context_course::instance($courseid, MUST_EXIST);
if (!has_capability('enrol/notificationeabc:manage', $context) or $numenrol >= 1) {
return null;
}
return new moodle_url('/enrol/notificationeabc/edit.php', array('courseid' => $courseid));
}
/**
* Returns defaults for new instances.
* @return array
*/
public function get_instance_defaults() {
$fields = array();
$fields['customtext1'] = $this->get_config('location');
$fields['customtext2'] = $this->get_config('unenrolmessage');
$fields['customtext3'] = $this->get_config('updatedenrolmessage');
$fields['status'] = 1;
$fields['customint1'] = 0;
$fields['customint2'] = 0;
$fields['customint3'] = $this->get_config('activeenrolalert');
$fields['customint4'] = $this->get_config('activeunenrolalert');
$fields['customint5'] = $this->get_config('activeenrolupdatedalert');
$fields['customchar1'] = $this->get_config('emailsender');
$fields['customchar2'] = $this->get_config('namesender');
return $fields;
}
/**
* Get icons
* @param stdClass $instance
* @return array
* @throws coding_exception
*/
public function get_action_icons(stdClass $instance) {
global $OUTPUT;
if ($instance->enrol !== 'notificationeabc') {
throw new coding_exception('invalid enrol instance!');
}
$context = context_course::instance($instance->courseid);
$icons = array();
if (has_capability('enrol/notificationeabc:manage', $context)) {
$editlink = new moodle_url(
"/enrol/notificationeabc/edit.php",
array('courseid' => $instance->courseid, 'id' => $instance->id)
);
$icons[] = $OUTPUT->action_icon(
$editlink,
new pix_icon(
'i/edit',
get_string('edit'),
'core',
array('class' => 'icon')
)
);
}
return $icons;
}
/**
* get info icons method
* @param array $instances
* @return array
*/
public function get_info_icons(array $instances) {
$icons = array();
$icons[] = new pix_icon('email', get_string('pluginname', 'enrol_notificationeabc'), 'enrol_notificationeabc');
return $icons;
}
} // End of class.