每当导师对学生的作业提出反馈时,我都试图将电子邮件通知发送给学生。但是电子邮件无法正确触发。我编写的电子邮件通知代码位于正确的功能中,即 set_editor_text 。任何帮助将是可观的。我已经突出显示了电子邮件触发的代码。
<?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/>.
/**
* This file contains the definition for the library class for comment feedback plugin
*
* @package assignfeedback_comments
* @copyright 2012 NetSpot {@link http://www.netspot.com.au}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
// File component for feedback comments.
define('ASSIGNFEEDBACK_COMMENTS_COMPONENT', 'assignfeedback_comments');
// File area for feedback comments.
define('ASSIGNFEEDBACK_COMMENTS_FILEAREA', 'feedback');
/**
* Library class for comment feedback plugin extending feedback plugin base class.
*
* @package assignfeedback_comments
* @copyright 2012 NetSpot {@link http://www.netspot.com.au}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class assign_feedback_comments extends assign_feedback_plugin {
/**
* Get the name of the online comment feedback plugin.
* @return string
*/
public function get_name() {
return get_string('pluginname', 'assignfeedback_comments');
}
/**
* Get the feedback comment from the database.
*
* @param int $gradeid
* @return stdClass|false The feedback comments for the given grade if it exists.
* False if it doesn't.
*/
public function get_feedback_comments($gradeid) {
global $DB;
return $DB->get_record('assignfeedback_comments', array('grade'=>$gradeid));
}
/**
* Get quickgrading form elements as html.
*
* @param int $userid The user id in the table this quickgrading element relates to
* @param mixed $grade - The grade data - may be null if there are no grades for this user (yet)
* @return mixed - A html string containing the html form elements required for quickgrading
*/
public function get_quickgrading_html($userid, $grade) {
$commenttext = '';
if ($grade) {
$feedbackcomments = $this->get_feedback_comments($grade->id);
if ($feedbackcomments) {
$commenttext = $feedbackcomments->commenttext;
}
}
$pluginname = get_string('pluginname', 'assignfeedback_comments');
$labeloptions = array('for'=>'quickgrade_comments_' . $userid,
'class'=>'accesshide');
$textareaoptions = array('name'=>'quickgrade_comments_' . $userid,
'id'=>'quickgrade_comments_' . $userid,
'class'=>'quickgrade');
return html_writer::tag('label', $pluginname, $labeloptions) .
html_writer::tag('textarea', $commenttext, $textareaoptions);
}
/**
* Has the plugin quickgrading form element been modified in the current form submission?
*
* @param int $userid The user id in the table this quickgrading element relates to
* @param stdClass $grade The grade
* @return boolean - true if the quickgrading form element has been modified
*/
public function is_quickgrading_modified($userid, $grade) {
$commenttext = '';
if ($grade) {
$feedbackcomments = $this->get_feedback_comments($grade->id);
if ($feedbackcomments) {
$commenttext = $feedbackcomments->commenttext;
}
}
// Note that this handles the difference between empty and not in the quickgrading
// form at all (hidden column).
$newvalue = optional_param('quickgrade_comments_' . $userid, false, PARAM_RAW);
return ($newvalue !== false) && ($newvalue != $commenttext);
}
/**
* Has the comment feedback been modified?
*
* @param stdClass $grade The grade object.
* @param stdClass $data Data from the form submission.
* @return boolean True if the comment feedback has been modified, else false.
*/
public function is_feedback_modified(stdClass $grade, stdClass $data) {
$commenttext = '';
if ($grade) {
$feedbackcomments = $this->get_feedback_comments($grade->id);
if ($feedbackcomments) {
$commenttext = $feedbackcomments->commenttext;
}
}
$formtext = $data->assignfeedbackcomments_editor['text'];
// Need to convert the form text to use @@PLUGINFILE@@ and format it so we can compare it with what is stored in the DB.
if (isset($data->assignfeedbackcomments_editor['itemid'])) {
$formtext = file_rewrite_urls_to_pluginfile($formtext, $data->assignfeedbackcomments_editor['itemid']);
$formtext = format_text($formtext, FORMAT_HTML);
}
if ($commenttext == $formtext) {
return false;
} else {
return true;
}
}
/**
* Override to indicate a plugin supports quickgrading.
*
* @return boolean - True if the plugin supports quickgrading
*/
public function supports_quickgrading() {
return true;
}
/**
* Return a list of the text fields that can be imported/exported by this plugin.
*
* @return array An array of field names and descriptions. (name=>description, ...)
*/
public function get_editor_fields() {
return array('comments' => get_string('pluginname', 'assignfeedback_comments'));
}
/**
* Get the saved text content from the editor.
*
* @param string $name
* @param int $gradeid
* @return string
*/
public function get_editor_text($name, $gradeid) {
if ($name == 'comments') {
$feedbackcomments = $this->get_feedback_comments($gradeid);
if ($feedbackcomments) {
return $feedbackcomments->commenttext;
}
}
return '';
}
/**
* Get the saved text content from the editor.
*
* @param string $name
* @param string $value
* @param int $gradeid
* @return string
*/
public function set_editor_text($name, $value, $gradeid) {
global $DB;
if ($name == 'comments') {
$feedbackcomment = $this->get_feedback_comments($gradeid);
if ($feedbackcomment) {
$feedbackcomment->commenttext = $value;
return $DB->update_record('assignfeedback_comments', $feedbackcomment);
} else {
$feedbackcomment = new stdClass();
$feedbackcomment->commenttext = $value;
$feedbackcomment->commentformat = FORMAT_HTML;
$feedbackcomment->grade = $gradeid;
$feedbackcomment->assignment = $this->assignment->get_instance()->id;
return $DB->insert_record('assignfeedback_comments', $feedbackcomment) > 0;
**$tooo = $DB->get_record('role', array('shortname' => 'student'));
}
}
}
$tooo = $DB->get_record('role', array('shortname' => 'student'));
$too = $DB->get_records('role_assignments', array('roleid' => $tooo->id));
$pageNos = array();
foreach ($too as $new) {
if(!in_array($new->userid,$pageNos))
{
$t = $DB->get_record('assign_submission', array('roleid'=>$new->roleid));
$tt = $DB->get_record('assign', array('id'=>$t->assignment));
$tttt=$DB->get_record('groups_members', array('groupid' => $t->groupid, 'userid' => $new->userid));
$pageNos[] = $new->userid;
$name = $DB->get_record('user', array('id' => $tttt->userid));
$body = "Hi";
email_to_user($name,$USER,'hi','The text of the message',$body);**
}
}
return false;
}
}