From e71ba908bcd45513f21e839b3872368de447dc20 Mon Sep 17 00:00:00 2001 From: jordifontseca Date: Thu, 4 Sep 2014 18:25:46 +0200 Subject: [PATCH 1/3] Improved enrolment form Heading and textarea description were missing --- lang/ca/enrol_apply.php | 1 + lang/en/enrol_apply.php | 1 + lang/es/enrol_apply.php | 1 + locallib.php | 5 ++++- 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lang/ca/enrol_apply.php b/lang/ca/enrol_apply.php index 6744fd3..fa550cb 100644 --- a/lang/ca/enrol_apply.php +++ b/lang/ca/enrol_apply.php @@ -44,6 +44,7 @@ $string['notification'] = 'Sol·licitud d\'inscripció enviada correctamentEnrollment Application successfully sent.
instance = $instance; $plugin = enrol_get_plugin('self'); + $heading = $plugin->get_instance_name($instance); + $mform->addElement('header', 'selfheader', $heading); + if ($instance->password) { $heading = $plugin->get_instance_name($instance); $mform->addElement('header', 'selfheader', $heading); @@ -53,7 +56,7 @@ class enrol_apply_enrol_form extends moodleform { } $mform->addElement('html', '

'.$instance->customtext1.'

'); - $mform->addElement('textarea', 'applydescription','','cols="80"'); + $mform->addElement('textarea', 'applydescription', get_string('comment', 'enrol_apply'),'cols="80"'); $this->add_action_buttons(false, get_string('enrolme', 'enrol_self')); $mform->addElement('hidden', 'id'); From 699177ae61f632e72c5251d6743918d06afda60b Mon Sep 17 00:00:00 2001 From: jordifontseca Date: Thu, 4 Sep 2014 18:30:00 +0200 Subject: [PATCH 2/3] Improved notifications for teachers and managers Added option to send email to managers as well as teachers. The email message now contains a link to manage applications (the link allows teachers to manage all applications in a course, while managers see all applications in all courses). --- lang/ca/enrol_apply.php | 1 + lang/en/enrol_apply.php | 1 + lang/es/enrol_apply.php | 1 + lib.php | 41 +++++++++++++++++++++++++++++++++++------ settings.php | 4 ++-- 5 files changed, 40 insertions(+), 8 deletions(-) diff --git a/lang/ca/enrol_apply.php b/lang/ca/enrol_apply.php index fa550cb..89a972b 100644 --- a/lang/ca/enrol_apply.php +++ b/lang/ca/enrol_apply.php @@ -42,6 +42,7 @@ $string['apply:unenrolapply'] = 'Cancel·lar-se a si mateix del curs'; // Needs $string['notification'] = 'Sol·licitud d\'inscripció enviada correctament.

Rebràs una notificació per correu electrònic un cop estigui confirmada la inscripció.'; $string['sendmailtoteacher'] = 'Enviar notificacions per correu als professors'; +$string['sendmailtomanager'] = 'Enviar notificacions per correu als administradors'; $string['mailtoteacher_suject'] = 'Nova inscripció al curs!'; $string['editdescription'] = 'Descripció de l\'àrea de text'; $string['comment'] = 'Comentari'; diff --git a/lang/en/enrol_apply.php b/lang/en/enrol_apply.php index f67e2f9..c90be14 100644 --- a/lang/en/enrol_apply.php +++ b/lang/en/enrol_apply.php @@ -42,6 +42,7 @@ $string['apply:unenrolapply'] = 'Cancel self from the course'; $string['notification'] = 'Enrollment Application successfully sent.

You will be informed by email as soon as your enrollment has been confirmed. If you want to enroll to other courses, please click "course catalogue" in the top menu.'; $string['sendmailtoteacher'] = 'Send email notification to teachers'; +$string['sendmailtomanager'] = 'Send email notification to managers'; $string['mailtoteacher_suject'] = 'New Enrollment request!'; $string['editdescription'] = 'Textarea description'; $string['comment'] = 'Comment'; diff --git a/lang/es/enrol_apply.php b/lang/es/enrol_apply.php index 0ea4876..bec4033 100644 --- a/lang/es/enrol_apply.php +++ b/lang/es/enrol_apply.php @@ -42,6 +42,7 @@ $string['apply:unenrolapply'] = 'Cancelarse a si mismo del curso'; // Needs more $string['notification'] = 'Solicitud de matriculación enviada correctamente.

Será notificado por correo electrónico en cuanto se confirme su matriculación.'; $string['sendmailtoteacher'] = 'Enviar notificaciones por correo a los profesores'; +$string['sendmailtomanager'] = 'Enviar notificaciones por correo a los gestores'; $string['mailtoteacher_suject'] = 'Nueva matrícula!'; $string['editdescription'] = 'Descripción del área de texto'; $string['comment'] = 'Comentario'; diff --git a/lib.php b/lib.php index ee63ad5..d503b1d 100644 --- a/lib.php +++ b/lib.php @@ -93,7 +93,8 @@ class enrol_apply_plugin extends enrol_plugin { } $this->enrol_user($instance, $USER->id, $roleid, $timestart, $timeend,1); - sendConfirmMailToTeachers($instance->courseid,$data->applydescription); + sendConfirmMailToTeachers($instance->courseid, $instance->id, $data->applydescription); + sendConfirmMailToManagers($instance->courseid,$data->applydescription); add_to_log($instance->courseid, 'course', 'enrol', '../enrol/users.php?id='.$instance->courseid, $instance->courseid); //there should be userid somewhere! redirect("$CFG->wwwroot/course/view.php?id=$instance->courseid"); @@ -160,7 +161,7 @@ function getAllEnrolment($id = null){ if($id){ $userenrolments = $DB->get_records_sql('select ue.userid,ue.id,u.firstname,u.lastname,u.email,u.picture,c.fullname as course,ue.timecreated from '.$CFG->prefix.'user_enrolments as ue left join '.$CFG->prefix.'user as u on ue.userid=u.id left join '.$CFG->prefix.'enrol as e on ue.enrolid=e.id left join '.$CFG->prefix.'course as c on e.courseid=c.id where ue.status=1 and e.courseid='.$id); }else{ - $userenrolments = $DB->get_records_sql('select ue.userid,ue.id,u.firstname,u.lastname,u.email,u.picture,c.fullname as course,ue.timecreated from '.$CFG->prefix.'user_enrolments as ue left join '.$CFG->prefix.'user as u on ue.userid=u.id left join '.$CFG->prefix.'enrol as e on ue.enrolid=e.id left join '.$CFG->prefix.'course as c on e.courseid=c.id where ue.status=1'); + $userenrolments = $DB->get_records_sql('select ue.id,ue.userid,u.firstname,u.lastname,u.email,u.picture,c.fullname as course,ue.timecreated from '.$CFG->prefix.'user_enrolments as ue left join '.$CFG->prefix.'user as u on ue.userid=u.id left join '.$CFG->prefix.'enrol as e on ue.enrolid=e.id left join '.$CFG->prefix.'course as c on e.courseid=c.id where ue.status=1'); } return $userenrolments; } @@ -221,20 +222,23 @@ function sendConfirmMail($info){ email_to_user($info, $contact, $apply_setting['confirmmailsubject']->value, '', $body); } -function sendConfirmMailToTeachers($courseid,$desc){ +function sendConfirmMailToTeachers($courseid,$instanceid,$desc){ global $DB; global $CFG; global $USER; $apply_setting = $DB->get_records_sql("select name,value from ".$CFG->prefix."config_plugins where plugin='enrol_apply'"); if($apply_setting['sendmailtoteacher']->value == 1){ - $course = $DB->get_record('course',array('id'=>$courseid)); - $context = get_context_instance(CONTEXT_COURSE, $courseid, MUST_EXIST); + $course = get_course($courseid); + $context = context_course::instance($courseid, MUST_EXIST); $teacherType = $DB->get_record('role',array("shortname"=>"editingteacher")); $teachers = $DB->get_records('role_assignments', array('contextid'=>$context->id,'roleid'=>$teacherType->id)); foreach($teachers as $teacher){ $editTeacher = $DB->get_record('user',array('id'=>$teacher->userid)); - $body = '

Course: '.$course->fullname.'

First name: '.$USER->firstname.'

Last name: '.$USER->lastname.'

Information: '.$desc.'

'; + $body = '

'. get_string('coursename', 'enrol_apply') .': '.format_string($course->fullname).'

'; + $body .= '

'. get_string('applyuser', 'enrol_apply') .': '.$USER->firstname.' '.$USER->lastname.'

'; + $body .= '

'. get_string('comment', 'enrol_apply') .': '.$desc.'

'; + $body .= '

'. html_writer::link(new moodle_url("/enrol/apply/apply.php", array('id'=>$courseid,'enrolid'=>$instanceid)), get_string('applymanage', 'enrol_apply')).'

'; $contact = get_admin(); $info = $editTeacher; $info->coursename = $course->fullname; @@ -243,6 +247,31 @@ function sendConfirmMailToTeachers($courseid,$desc){ } } +function sendConfirmMailToManagers($courseid,$desc){ + global $DB; + global $CFG; + global $USER; + $apply_setting = $DB->get_records_sql("select name,value from ".$CFG->prefix."config_plugins where plugin='enrol_apply'"); + + if($apply_setting['sendmailtomanager']->value == 1){ + $course = get_course($courseid); + $context = context_system::instance(); + $managerType = $DB->get_record('role',array("shortname"=>"manager")); + $managers = $DB->get_records('role_assignments', array('contextid'=>$context->id,'roleid'=>$managerType->id)); + foreach($managers as $manager){ + $userWithManagerRole = $DB->get_record('user',array('id'=>$manager->userid)); + $body = '

'. get_string('coursename', 'enrol_apply') .': '.format_string($course->fullname).'

'; + $body .= '

'. get_string('applyuser', 'enrol_apply') .': '.$USER->firstname.' '.$USER->lastname.'

'; + $body .= '

'. get_string('comment', 'enrol_apply') .': '.$desc.'

'; + $body .= '

'. html_writer::link(new moodle_url('/enrol/apply/manage.php'), get_string('applymanage', 'enrol_apply')).'

'; + $contact = get_admin(); + $info = $userWithManagerRole; + $info->coursename = $course->fullname; + email_to_user($info, $contact, get_string('mailtoteacher_suject', 'enrol_apply'), '', $body); + } + } +} + function getRelatedInfo($enrolid){ global $DB; global $CFG; diff --git a/settings.php b/settings.php index f8d8493..c7df7e0 100644 --- a/settings.php +++ b/settings.php @@ -26,8 +26,8 @@ if ($ADMIN->fulltree) { $settings->add(new admin_setting_heading('enrol_apply_cancelmailcontent', '', get_string('cancelmailcontent_desc', 'enrol_apply'))); $settings->add(new admin_setting_confightmleditor('enrol_apply/cancelmailcontent', get_string('cancelmailcontent', 'enrol_apply'),'utf-8','')); - $settings->add(new admin_setting_configcheckbox('enrol_apply/sendmailtoteacher', - get_string('sendmailtoteacher', 'enrol_apply'), '', 0)); + $settings->add(new admin_setting_configcheckbox('enrol_apply/sendmailtoteacher', get_string('sendmailtoteacher', 'enrol_apply'), '', 0)); + $settings->add(new admin_setting_configcheckbox('enrol_apply/sendmailtomanager', get_string('sendmailtomanager', 'enrol_apply'), '', 0)); //--- enrol instance defaults ---------------------------------------------------------------------------- $settings->add(new admin_setting_heading('enrol_manual_defaults', From 876548ee4ad9acfd5f67bb297d52fbca303f0899 Mon Sep 17 00:00:00 2001 From: jordifontseca Date: Thu, 4 Sep 2014 18:32:20 +0200 Subject: [PATCH 3/3] Parse course fullname with format_string() so that filters are applied (such as multilingual filter). --- apply.php | 2 +- lib.php | 4 ++-- manage.php | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apply.php b/apply.php index 0781f38..7a0a315 100644 --- a/apply.php +++ b/apply.php @@ -61,7 +61,7 @@ echo ''; foreach ( $enrols as $enrol ) { $picture = get_user_picture($enrol->userid); echo ''; - echo '' . $enrol->course . ''; + echo '' . format_string($enrol->course) . ''; echo '' . $OUTPUT->render($picture) . ''; echo ''.$enrol->firstname . ' ' . $enrol->lastname.''; echo '' . $enrol->email . ''; diff --git a/lib.php b/lib.php index d503b1d..26dd06e 100644 --- a/lib.php +++ b/lib.php @@ -203,7 +203,7 @@ function sendCancelMail($info){ global $CFG; $apply_setting = $DB->get_records_sql("select name,value from ".$CFG->prefix."config_plugins where plugin='enrol_apply'"); - $replace = array('firstname'=>$info->firstname,'content'=>$info->coursename); + $replace = array('firstname'=>$info->firstname,'content'=>format_string($info->coursename)); $body = $apply_setting['cancelmailcontent']->value; $body = updateMailContent($body,$replace); $contact = get_admin(); @@ -215,7 +215,7 @@ function sendConfirmMail($info){ global $CFG; $apply_setting = $DB->get_records_sql("select name,value from ".$CFG->prefix."config_plugins where plugin='enrol_apply'"); - $replace = array('firstname'=>$info->firstname,'content'=>$info->coursename); + $replace = array('firstname'=>$info->firstname,'content'=>format_string($info->coursename)); $body = $apply_setting['confirmmailcontent']->value; $body = updateMailContent($body,$replace); $contact = get_admin(); diff --git a/manage.php b/manage.php index e27ae78..467fca5 100644 --- a/manage.php +++ b/manage.php @@ -50,7 +50,7 @@ echo '' . get_string ( 'applydate', 'enrol_apply' echo ''; foreach ( $enrols as $enrol ) { echo ''; - echo '' . $enrol->course . ''; + echo '' . format_string($enrol->course) . ''; echo '' . $enrol->firstname . ' ' . $enrol->lastname . ''; echo '' . $enrol->email . ''; echo '' . date ( "Y-m-d", $enrol->timecreated ) . '';