From 645ba122dc59b728b9348e513e6ec608dd408e3e Mon Sep 17 00:00:00 2001 From: Andreas Grabs Date: Thu, 20 May 2010 15:33:00 +0000 Subject: [PATCH] MDL-19835 - Produce list of emails for non-respondents --- mod/feedback/feedback.js | 2 +- mod/feedback/lang/en/feedback.php | 1 + mod/feedback/lib.php | 9 +++-- mod/feedback/show_nonrespondents.php | 53 ++++++++++++++++++++++++---- 4 files changed, 55 insertions(+), 10 deletions(-) diff --git a/mod/feedback/feedback.js b/mod/feedback/feedback.js index ed6685cd43e..f0d214c4b23 100644 --- a/mod/feedback/feedback.js +++ b/mod/feedback/feedback.js @@ -19,7 +19,7 @@ function setcourseitemfilter(item, item_typ) { M.mod_feedback = {}; -M.mod_feedback.init_sendmail = function(Y) { +M.mod_feedback.init_sendmessage = function(Y) { Y.on('click', function(e) { Y.all('input.usercheckbox').each(function() { this.set('checked', 'checked'); diff --git a/mod/feedback/lang/en/feedback.php b/mod/feedback/lang/en/feedback.php index e15c4b7a564..4209fee0f85 100644 --- a/mod/feedback/lang/en/feedback.php +++ b/mod/feedback/lang/en/feedback.php @@ -252,6 +252,7 @@ $string['sort_by_course'] = 'Sort by course'; $string['start'] = 'Start'; $string['started'] = 'started'; $string['stop'] = 'End'; +$string['subject'] = 'Subject'; $string['switch_group'] = 'Switch group'; $string['switch_item_to_not_required'] = 'switch to: answer not required'; $string['switch_item_to_required'] = 'switch to: answer required'; diff --git a/mod/feedback/lib.php b/mod/feedback/lib.php index 3003de93313..57cfd0ea6cc 100644 --- a/mod/feedback/lib.php +++ b/mod/feedback/lib.php @@ -2494,7 +2494,8 @@ function feedback_send_email($cm, $feedback, $course, $userid) { if($feedback->anonymous == FEEDBACK_ANONYMOUS_NO) { $eventdata = new object(); - $eventdata->modulename = 'feedback'; + $eventdata->name = 'feedback'; + $eventdata->component = 'mod'; $eventdata->userfrom = $user; $eventdata->userto = $teacher; $eventdata->subject = $postsubject; @@ -2505,7 +2506,8 @@ function feedback_send_email($cm, $feedback, $course, $userid) { message_send($eventdata); }else { $eventdata = new object(); - $eventdata->modulename = 'feedback'; + $eventdata->name = 'feedback'; + $eventdata->component = 'mod'; $eventdata->userfrom = $teacher; $eventdata->userto = $teacher; $eventdata->subject = $postsubject; @@ -2556,7 +2558,8 @@ function feedback_send_email_anonym($cm, $feedback, $course) { $posthtml = ($teacher->mailformat == 1) ? feedback_send_email_html($info, $course, $cm) : ''; $eventdata = new object(); - $eventdata->modulename = 'feedback'; + $eventdata->name = 'feedback'; + $eventdata->component = 'mod'; $eventdata->userfrom = $teacher; $eventdata->userto = $teacher; $eventdata->subject = $postsubject; diff --git a/mod/feedback/show_nonrespondents.php b/mod/feedback/show_nonrespondents.php index c2807baf87f..b90b412a21b 100644 --- a/mod/feedback/show_nonrespondents.php +++ b/mod/feedback/show_nonrespondents.php @@ -16,6 +16,11 @@ //get the params //////////////////////////////////////////////////////// $id = required_param('id', PARAM_INT); + $subject = optional_param('subject','',PARAM_CLEANHTML); + $message = optional_param('message','',PARAM_CLEANHTML); + $format = optional_param('format',FORMAT_MOODLE,PARAM_INT); + $messageuser = optional_param('messageuser',PARAM_INT); + $action = optional_param('action',PARAM_ALPHA); $perpage = optional_param('perpage', FEEDBACK_DEFAULT_PAGE_COUNT, PARAM_INT); // how many per page $showall = optional_param('showall', false, PARAM_INT); // should we show all users // $SESSION->feedback->current_tab = $do_show; @@ -24,7 +29,6 @@ //////////////////////////////////////////////////////// //get the objects //////////////////////////////////////////////////////// - if (! $cm = get_coursemodule_from_id('feedback', $id)) { print_error('invalidcoursemodule'); } @@ -64,6 +68,34 @@ require_capability('mod/feedback:viewreports', $context); + if(has_capability('moodle/course:bulkmessaging', $coursecontext)) { + // require_once($CFG->dirroot.'/message/lib.php'); + $good = 1; + if(is_array($messageuser)) { + foreach ($messageuser as $userid) { + $senduser = $DB->get_record('user', array('id'=>$userid)); + $eventdata = new object(); + $eventdata->name = 'feedback'; + $eventdata->component = 'mod'; + $eventdata->userfrom = $USER; + $eventdata->userto = $senduser; + $eventdata->subject = $subject; + $eventdata->fullmessage = $message; + $eventdata->fullmessageformat = FORMAT_PLAIN; + $eventdata->fullmessagehtml = ''; + $eventdata->smallmessage = ''; + $good = $good && message_send($eventdata); + } + if (!empty($good)) { + $msg = $OUTPUT->heading(get_string('messagedselectedusers')); + } else { + $msg = $OUTPUT->heading(get_string('messagedselectedusersfailed')); + } + redirect($url, $msg, 4); + exit; + } + } + //////////////////////////////////////////////////////// //get the responses of given user //////////////////////////////////////////////////////// @@ -182,7 +214,7 @@ echo ' ('.$matchcount.')
'; if(has_capability('moodle/course:bulkmessaging', $coursecontext)) { - echo '
'; + echo ''; } foreach ($students as $student){ $user = $DB->get_record('user', array('id'=>$student)); @@ -214,23 +246,32 @@ echo $OUTPUT->container(html_writer::link($allurl, get_string('showall', '', $matchcount)), array(), 'showall'); } if(has_capability('moodle/course:bulkmessaging', $coursecontext)) { + $usehtmleditor = can_use_html_editor(); echo '
'; echo ' '; echo ' '; echo ''; echo ''.get_string('send_message', 'feedback').''; - echo ''; - echo ''; - echo ''; + echo '
'; + print_textarea($usehtmleditor, 15, 25, 30, 10, "message", $message); + if ($usehtmleditor) { + print_string('formathtml'); + echo ''; + } else { + choose_from_menu(format_text_menu(), "format", $format, ""); + } echo '
'; echo ''; echo '
'; echo ''; + echo ''; + echo ''; + echo ''; echo ''; //include the needed js $module = array('name'=>'mod_feedback', 'fullpath'=>'/mod/feedback/feedback.js'); - $PAGE->requires->js_init_call('M.mod_feedback.init_sendmail', null, false, $module); + $PAGE->requires->js_init_call('M.mod_feedback.init_sendmessage', null, false, $module); } } echo $OUTPUT->box_end();