Merge branch 'MDL-50225_master' of git://github.com/markn86/moodle

This commit is contained in:
Andrew Nicols 2018-08-08 08:14:55 +08:00
commit 03655bb050
13 changed files with 94 additions and 344 deletions

View File

@ -120,3 +120,18 @@ selectnotestate,core_notes
extendenrol,core
groupextendenrol,core
virusfounduser,core_antivirus
formattexttype,core
currentlyselectedusers,core
emailuserhasnone,core
emaildisplayhidden,core
sitemessage,core
coursemessage,core
addedrecip,core
addedrecips,core
messagingdisabled,core_message
messagedselectedcountusersfailed,core
backtoparticipants,core
keepsearching,core
allfieldsrequired,core
previewhtml,core
messagedselecteduserfailed,core

View File

@ -72,7 +72,6 @@ $string['message'] = 'Message';
$string['messagepreferences'] = 'Message preferences';
$string['messages'] = 'Messages';
$string['messagingdatahasnotbeenmigrated'] = 'Your messages are temporarily unavailable due to upgrades in the messaging infrastructure. Please wait for them to be migrated.';
$string['messagingdisabled'] = 'Messaging is disabled on this site, emails will be sent instead';
$string['newonlymsg'] = 'Show only new';
$string['newmessage'] = 'New message';
$string['newmessagesearch'] = 'Select or search for a contact to send a new message.';
@ -179,3 +178,6 @@ $string['viewnotificationresource'] = 'Go to: {$a}';
$string['viewunreadmessageswith'] = 'View unread messages with {$a}';
$string['writeamessage'] = 'Write a message...';
$string['you'] = 'You:';
// Deprecated since Moodle 3.6.
$string['messagingdisabled'] = 'Messaging is disabled on this site, emails will be sent instead';

View File

@ -51,8 +51,6 @@ $string['addcountertousername'] = 'Create user by adding number to username';
$string['addcreator'] = 'Add course creator';
$string['adddots'] = 'Add...';
$string['added'] = 'Added {$a}';
$string['addedrecip'] = 'Added {$a} new recipient';
$string['addedrecips'] = 'Added {$a} new recipients';
$string['addedtogroup'] = 'Added to group "{$a}"';
$string['addedtogroupnot'] = 'Not added to group "{$a}"';
$string['addedtogroupnotenrolled'] = 'Not added to group "{$a}", because not enrolled in course';
@ -127,7 +125,6 @@ $string['allactions'] = 'All actions';
$string['allactivities'] = 'All activities';
$string['allcategories'] = 'All categories';
$string['alldays'] = 'All days';
$string['allfieldsrequired'] = 'All fields are required';
$string['allfiles'] = 'All files';
$string['allgroups'] = 'All groups';
$string['allchanges'] = 'All changes';
@ -173,7 +170,6 @@ $string['backto'] = 'Back to {$a}';
$string['backtocourselisting'] = 'Back to course listing';
$string['backtohome'] = 'Back to the site home';
$string['backtopageyouwereon'] = 'Back to the page you were on';
$string['backtoparticipants'] = 'Back to participants list';
$string['backup'] = 'Backup';
$string['backupactivehelp'] = 'Choose whether or not to do automated backups.';
$string['backupcancelled'] = 'Backup cancelled';
@ -347,7 +343,6 @@ $string['courseoverviewfilesext'] = 'Course summary files extensions';
$string['courseoverviewfileslimit'] = 'Course summary files limit';
$string['courseoverviewfiles_help'] = 'Course summary files, such as images, are displayed in the list of courses together with the summary.';
$string['courseinfo'] = 'Course info';
$string['coursemessage'] = 'Message course users';
$string['coursenotaccessible'] = 'This course does not allow public access';
$string['courselegacyfiles'] = 'Legacy course files';
$string['courselegacyfiles_help'] = 'The course files area provides some backward compatibility with Moodle 1.9 and earlier. All files in this area are always accessible to all participants in the course (whether you link to them or not) and there is no way to know where any of these files are being used in Moodle.
@ -437,7 +432,6 @@ $string['currentcourseadding'] = 'Current course, adding data to it';
$string['currentcoursedeleting'] = 'Current course, deleting it first';
$string['currentlanguage'] = 'Current language';
$string['currentlocaltime'] = 'your current local time';
$string['currentlyselectedusers'] = 'Currently selected users';
$string['currentpicture'] = 'Current picture';
$string['currentrelease'] = 'Current release information';
$string['currentversion'] = 'Current version';
@ -632,7 +626,6 @@ $string['emaildisableclick'] = 'Click here to disable all email from being sent
$string['emaildisplay'] = 'Email display';
$string['emaildisplay_help'] = 'Privileged users (such as teachers and managers) will always be able to see your email address.';
$string['emaildisplaycourse'] = 'Allow only other course members to see my email address';
$string['emaildisplayhidden'] = 'Email hidden';
$string['emaildisplayno'] = 'Hide my email address from non-privileged users';
$string['emaildisplayyes'] = 'Allow everyone to see my email address';
$string['emailenable'] = 'This email address is enabled';
@ -726,7 +719,6 @@ $string['emailresetconfirmsent'] = 'An email has been sent to your address at <b
If you continue to have difficulty, contact the site administrator.';
$string['emailtoprivatefiles'] = 'You can also e-mail files as attachments straight to your private files space. Simply attach your files to an e-mail and send it to {$a}';
$string['emailtoprivatefilesdenied'] = 'Your administrator has disabled the option to upload your own private files.';
$string['emailuserhasnone'] = 'There is no email address for the user.';
$string['emailvia'] = '{$a->name} (via {$a->siteshortname})';
$string['emptydragdropregion'] = 'empty region';
$string['enable'] = 'Enable';
@ -861,7 +853,6 @@ $string['formathtml'] = 'HTML format';
$string['formatmarkdown'] = 'Markdown format';
$string['formatplain'] = 'Plain text format';
$string['formattext'] = 'Moodle auto-format';
$string['formattexttype'] = 'Formatting';
$string['forumpreferences'] = 'Forum preferences';
$string['framesetinfo'] = 'This frameset document contains:';
$string['from'] = 'From';
@ -1090,7 +1081,6 @@ $string['ip_address'] = 'IP address';
$string['jump'] = 'Jump';
$string['jumpto'] = 'Jump to...';
$string['keep'] = 'Keep';
$string['keepsearching'] = 'Keep searching';
$string['langltr'] = 'Language direction left-to-right';
$string['langrtl'] = 'Language direction right-to-left';
$string['language'] = 'Language';
@ -1190,9 +1180,7 @@ $string['maxsizeandattachmentsandareasize'] = 'Maximum size for new files: {$a->
$string['memberincourse'] = 'People in the course';
$string['messagebody'] = 'Message body';
$string['messagedselectedusers'] = 'Selected users have been messaged and the recipient list has been reset.';
$string['messagedselecteduserfailed'] = 'The message was not sent to user {$a->fullname}.';
$string['messagedselectedusersfailed'] = 'Something went wrong while messaging selected users. Some may have received the email.';
$string['messagedselectedcountusersfailed'] = 'A problem occurred and {$a} messages have not been sent.';
$string['messageprovider:availableupdate'] = 'Available update notifications';
$string['messageprovider:backup'] = 'Backup notifications';
$string['messageprovider:badgecreatornotice'] = 'Badge creator notifications';
@ -1555,7 +1543,6 @@ $string['preferredtheme'] = 'Preferred theme';
$string['preprocessingbackupfile'] = 'Preprocessing backup file';
$string['prev'] = 'Prev';
$string['preview'] = 'Preview';
$string['previewhtml'] = 'HTML format preview';
$string['previeworchoose'] = 'Preview or choose a theme';
$string['previous'] = 'Previous';
$string['previouslyselectedusers'] = 'Previously selected users not matching \'{$a}\'';
@ -1856,7 +1843,6 @@ $string['sitefilesused'] = 'Site files used in this course';
$string['sitehome'] = 'Site home';
$string['sitelegacyfiles'] = 'Legacy site files';
$string['sitelogs'] = 'Site logs';
$string['sitemessage'] = 'Message users';
$string['sitenews'] = 'Site announcements';
$string['sitepages'] = 'Site pages';
$string['sitepartlist'] = 'You do not have the required permissions to view the participants list';
@ -2087,7 +2073,6 @@ $string['uploadthisfile'] = 'Upload this file';
$string['url'] = 'URL';
$string['used'] = 'Used';
$string['usedinnplaces'] = 'Used in {$a} places';
$string['usemessageform'] = 'or use the form below to send a message to the selected students';
$string['user'] = 'User';
$string['useraccount'] = 'User account';
$string['userconfirmed'] = 'Confirmed {$a}';
@ -2213,3 +2198,19 @@ $string['sectionusedefaultname'] = 'Use default section name';
$string['publish'] = 'Publish';
$string['extendenrol'] = 'Extend enrolment (individual)';
$string['groupextendenrol'] = 'Extend enrolment (common)';
// Deprecated since Moodle 3.6.
$string['addedrecip'] = 'Added {$a} new recipient';
$string['addedrecips'] = 'Added {$a} new recipients';
$string['allfieldsrequired'] = 'All fields are required';
$string['backtoparticipants'] = 'Back to participants list';
$string['currentlyselectedusers'] = 'Currently selected users';
$string['coursemessage'] = 'Message course users';
$string['emaildisplayhidden'] = 'Email hidden';
$string['emailuserhasnone'] = 'There is no email address for the user.';
$string['formattexttype'] = 'Formatting';
$string['keepsearching'] = 'Keep searching';
$string['messagedselectedcountusersfailed'] = 'A problem occurred and {$a} messages have not been sent.';
$string['messagedselecteduserfailed'] = 'The message was not sent to user {$a->fullname}.';
$string['previewhtml'] = 'HTML format preview';
$string['sitemessage'] = 'Message users';

View File

@ -768,7 +768,10 @@ function print_side_block() {
/**
* Prints a basic textarea field.
*
* @deprecated since Moodle 2.0
* This was 'deprecated' in 2.0, but not properly (there was no alternative) so the
* debugging message was commented out.
*
* @deprecated since Moodle 3.6
*
* When using this function, you should
*
@ -790,13 +793,12 @@ function print_textarea($unused, $rows, $cols, $width, $height, $name, $value=''
/// However, you can set them to zero to override the mincols and minrows values below.
// Disabling because there is not yet a viable $OUTPUT option for cases when mforms can't be used
// debugging('print_textarea() has been deprecated. You should be using mforms and the editor element.');
debugging('print_textarea() is deprecated. Please use $OUTPUT->print_textarea() instead.', DEBUG_DEVELOPER);
global $CFG;
global $OUTPUT;
$mincols = 65;
$minrows = 10;
$str = '';
if ($id === '') {
$id = 'edit-'.$name;
@ -809,19 +811,12 @@ function print_textarea($unused, $rows, $cols, $width, $height, $name, $value=''
$cols = $mincols;
}
editors_head_setup();
$editor = editors_get_preferred_editor(FORMAT_HTML);
$editor->set_text($value);
$editor->use_editor($id, array('legacy'=>true));
$str .= "\n".'<textarea class="form-textarea" id="'. $id .'" name="'. $name .'" rows="'. $rows .'" cols="'. $cols .'" spellcheck="true">'."\n";
$str .= htmlspecialchars($value); // needed for editing of cleaned text!
$str .= '</textarea>'."\n";
$textarea = $OUTPUT->print_textarea($name, $id, $value, $rows, $cols);
if ($return) {
return $str;
return $textarea;
}
echo $str;
echo $textarea;
}
/**

View File

@ -91,21 +91,17 @@ class MoodleQuickForm_htmleditor extends MoodleQuickForm_textarea{
*
* @return string
*/
function toHtml(){
public function toHtml() {
global $OUTPUT;
if ($this->_flagFrozen) {
return $this->getFrozenHtml();
} else {
$value = preg_replace("/(\r\n|\n|\r)/", '&#010;', $this->getValue());
return $this->_getTabs() .
print_textarea(true,
$this->_options['rows'],
$this->_options['cols'],
$this->_options['width'],
$this->_options['height'],
$this->getName(),
preg_replace("/(\r\n|\n|\r)/", '&#010;',$this->getValue()),
0, // unused anymore
true,
$this->getAttribute('id'));
$OUTPUT->print_textarea($this->getName(), $this->getAttribute('id'), $value, $this->_options['rows'],
$this->_options['cols']);
}
}

View File

@ -1518,6 +1518,35 @@ class core_renderer extends renderer_base {
return $this->render($menu);
}
/**
* Returns the HTML for a basic textarea field.
*
* @param string $name Name to use for the textarea element
* @param string $id The id to use fort he textarea element
* @param string $value Initial content to display in the textarea
* @param int $rows Number of rows to display
* @param int $cols Number of columns to display
* @return string the HTML to display
*/
public function print_textarea($name, $id, $value, $rows, $cols) {
global $OUTPUT;
editors_head_setup();
$editor = editors_get_preferred_editor(FORMAT_HTML);
$editor->set_text($value);
$editor->use_editor($id, []);
$context = [
'id' => $id,
'name' => $name,
'value' => $value,
'rows' => $rows,
'cols' => $cols
];
return $OUTPUT->render_from_template('core_form/editor_textarea', $context);
}
/**
* Renders an action menu component.
*

View File

@ -7,6 +7,7 @@ information provided here is intended especially for developers.
callback. If a string is returned, it is displayed instead of the list of suggested items. This can be used, for
example, to inform the user that there are too many items matching the current search criteria.
* The form element 'htmleditor' has been deprecated. Please use the 'editor' element instead.
* The print_textarea() function has been deprecated. Please use $OUTPUT->print_textarea() instead.
* The following functions have been finally deprecated and can not be used any more:
- external_function_info()
- core_renderer::update_module_button()

View File

@ -31,7 +31,7 @@ require_once($CFG->libdir.'/tablelib.php');
////////////////////////////////////////////////////////
$id = required_param('id', PARAM_INT);
$subject = optional_param('subject', '', PARAM_CLEANHTML);
$message = optional_param('message', '', PARAM_CLEANHTML);
$message = optional_param_array('message', '', PARAM_CLEANHTML);
$format = optional_param('format', FORMAT_MOODLE, PARAM_INT);
$messageuser = optional_param_array('messageuser', false, PARAM_INT);
$action = optional_param('action', '', PARAM_ALPHA);
@ -44,6 +44,10 @@ $current_tab = 'nonrespondents';
//get the objects
////////////////////////////////////////////////////////
if ($message) {
$message = $message['text'];
}
list ($course, $cm) = get_course_and_cm_from_cmid($id, 'feedback');
if (! $feedback = $DB->get_record("feedback", array("id"=>$cm->instance))) {
print_error('invalidcoursemodule');
@ -275,7 +279,7 @@ if (empty($students)) {
echo '<label for="feedback_subject">'.get_string('subject', 'feedback').'&nbsp;</label>';
echo '<input type="text" id="feedback_subject" size="50" maxlength="255" name="subject" value="'.s($subject).'" />';
echo '</div>';
print_textarea(true, 15, 25, 30, 10, "message", $message);
echo $OUTPUT->print_textarea('message', 'edit-message', $message, 15, 25);
print_string('formathtml');
echo '<input type="hidden" name="format" value="'.FORMAT_HTML.'" />';
echo '<br /><div class="buttons">';

View File

@ -1,34 +0,0 @@
<?php
/**
* This file defines a simple editor
*
* @author Jordi Piguillem
* @author Josep Arus
*
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
* @package mod_wiki
*
*/
/**
* @TODO: Doc this function
*/
function wiki_print_editor_html($pageid, $content, $version = -1, $section = null, $upload = false, $deleteuploads = array()) {
global $CFG, $OUTPUT;
$OUTPUT->heading(strtoupper(get_string('formathtml', 'wiki')), 3);
$action = $CFG->wwwroot.'/mod/wiki/edit.php?pageid='.$pageid;
if (!empty($section)) {
$action .= "&section=".urlencode($section);
}
echo $OUTPUT->container_start('container');
echo '<form method="post" action="'.$action.'">';
$textarea = print_textarea(true, 20, 100, 0, 0, "newcontent", $content, 0, true, '', 'form-textarea-advanced');
echo $OUTPUT->container($textarea, 'wiki_editor');
wiki_print_edit_form_default_fields('html', $pageid, $version, $upload, $deleteuploads);
echo '</form>';
echo $OUTPUT->container_end();
}

View File

@ -75,7 +75,8 @@ function wiki_print_editor_wiki($pageid, $content, $editor, $version = -1, $sect
echo $OUTPUT->container_start();
echo '<form method="post" id="mform1" action="' . $action . '">';
echo $OUTPUT->container(print_textarea(false, 20, 60, 0, 0, "newcontent", $content, 0, true), false, 'wiki_editor');
$textarea = $OUTPUT->print_textarea('newcontent', 'edit-newcontent', $content, 20, 60);
echo $OUTPUT->container($textarea, false, 'wiki_editor');
echo $OUTPUT->container_start();
wiki_print_edit_form_default_fields($editor, $pageid, $version, $upload, $deleteuploads);
echo $OUTPUT->container_end();

View File

@ -41,9 +41,13 @@ $pageid = required_param('pageid', PARAM_TEXT);
$action = optional_param('action', '', PARAM_ALPHANUMEXT);
$id = optional_param('id', 0, PARAM_INT);
$commentid = optional_param('commentid', 0, PARAM_INT);
$newcontent = optional_param('newcontent', '', PARAM_CLEANHTML);
$newcontent = optional_param_array('newcontent', '', PARAM_CLEANHTML);
$confirm = optional_param('confirm', 0, PARAM_BOOL);
if ($newcontent) {
$newcontent = $newcontent['text'];
}
if (!$page = wiki_get_page($pageid)) {
print_error('incorrectpageid', 'wiki');
}

View File

@ -1,59 +0,0 @@
<form id="theform" method="post" action="messageselect.php">
<input type="hidden" name="id" value="<?php p($id) ?>" />
<input type="hidden" name="sesskey" value="<?php echo sesskey() ?>" />
<input type="hidden" name="returnto" value="<?php p($returnto) ?>" />
<input type="hidden" name="deluser" value="" />
<?php echo $OUTPUT->box_start(); ?>
<table border="0" cellpadding="5">
<tr valign="top">
<td align="right"><b>
<?php print_string("messagebody"); ?>:
</b></td>
<td align="left">
<?php print_textarea(true, 15, 65, 1, 1, "messagebody", $messagebody); ?>
</td>
</tr>
<tr valign="top">
<td align="right"><label for="menuformat"><b><?php print_string("formattexttype"); ?>:</b></label></td>
<td>
<?php
print_string('formathtml');
echo '<input type="hidden" name="format" value="'.FORMAT_HTML.'" />';
?>
</td>
</tr>
<tr><td align="center" colspan="2">
<input type="submit" name="send" value="<?php print_string('sendmessage', 'message'); ?>" />
<input type="submit" name="preview" value="<?php print_string('preview'); ?>" />
</td></tr>
</table>
<?php echo $OUTPUT->box_end(); ?>
<table align="center"><tr><th colspan="4" scope="row"><?php print_string('currentlyselectedusers'); ?></th></tr>
<?php
if (count($SESSION->emailto[$id])) {
foreach ($SESSION->emailto[$id] as $user) {
echo '<tr><td>'.fullname($user,true).'</td>';
// Check to see if we should be showing the email address.
if ($user->maildisplay == 0) { // 0 = don't display my email to anyone.
echo '<td>' . get_string('emaildisplayhidden') . '</td><td>';
} else {
echo '<td>'.$user->email.'</td><td>';
}
if (empty($user->email)) {
$error = get_string('emailuserhasnone');
}
if (!empty($error)) {
echo $OUTPUT->pix_icon('t/emailno', $error);
unset($error);
}
echo '</td><td><input type="submit" onClick="this.form.deluser.value='.$user->id.';" value="' . get_string('remove') . '" /></td></tr>';
}
}
else {
echo '<tr><td colspan="3" align="center">'.get_string('nousersyet').'</td></tr>';
}
?>
</table>
</form>

View File

@ -1,205 +0,0 @@
<?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 is part of the User section Moodle
*
* @copyright 1999 Martin Dougiamas http://dougiamas.com
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @package core_user
*/
require_once('../config.php');
require_once($CFG->dirroot.'/message/lib.php');
require_once($CFG->dirroot . '/course/lib.php');
$id = required_param('id', PARAM_INT);
$messagebody = optional_param('messagebody', '', PARAM_CLEANHTML);
$send = optional_param('send', '', PARAM_BOOL);
$preview = optional_param('preview', '', PARAM_BOOL);
$edit = optional_param('edit', '', PARAM_BOOL);
$returnto = optional_param('returnto', '', PARAM_LOCALURL);
$format = optional_param('format', FORMAT_MOODLE, PARAM_INT);
$deluser = optional_param('deluser', 0, PARAM_INT);
$url = new moodle_url('/user/messageselect.php', array('id' => $id));
if ($messagebody !== '') {
$url->param('messagebody', $messagebody);
}
if ($send !== '') {
$url->param('send', $send);
}
if ($preview !== '') {
$url->param('preview', $preview);
}
if ($edit !== '') {
$url->param('edit', $edit);
}
if ($returnto !== '') {
$url->param('returnto', $returnto);
}
if ($format !== FORMAT_MOODLE) {
$url->param('format', $format);
}
if ($deluser !== 0) {
$url->param('deluser', $deluser);
}
$PAGE->set_url($url);
if (!$course = $DB->get_record('course', array('id' => $id))) {
print_error('invalidcourseid');
}
require_login($course);
$coursecontext = context_course::instance($id); // Course context.
$systemcontext = context_system::instance(); // SYSTEM context.
require_capability('moodle/course:bulkmessaging', $coursecontext);
if (empty($SESSION->emailto)) {
$SESSION->emailto = array();
}
if (!array_key_exists($id, $SESSION->emailto)) {
$SESSION->emailto[$id] = array();
}
if ($deluser) {
if (array_key_exists($id, $SESSION->emailto) && array_key_exists($deluser, $SESSION->emailto[$id])) {
unset($SESSION->emailto[$id][$deluser]);
}
}
if (empty($SESSION->emailselect[$id]) || $messagebody) {
$SESSION->emailselect[$id] = array('messagebody' => $messagebody);
}
$messagebody = $SESSION->emailselect[$id]['messagebody'];
$count = 0;
if ($data = data_submitted()) {
require_sesskey();
$namefields = get_all_user_name_fields(true);
foreach ($data as $k => $v) {
if (preg_match('/^(user|teacher)(\d+)$/', $k, $m)) {
if (!array_key_exists($m[2], $SESSION->emailto[$id])) {
if ($user = $DB->get_record_select('user', "id = ?", array($m[2]), 'id, '.
$namefields . ', idnumber, email, mailformat, lastaccess, lang, '.
'maildisplay, auth, suspended, deleted, emailstop, username')) {
$SESSION->emailto[$id][$m[2]] = $user;
$count++;
}
}
}
}
}
if ($course->id == SITEID) {
$strtitle = get_string('sitemessage');
$PAGE->set_pagelayout('admin');
} else {
$strtitle = get_string('coursemessage');
$PAGE->set_pagelayout('incourse');
}
$link = null;
if (course_can_view_participants($coursecontext) || course_can_view_participants($systemcontext)) {
$link = new moodle_url("/user/index.php", array('id' => $course->id));
}
$PAGE->navbar->add(get_string('participants'), $link);
$PAGE->navbar->add($strtitle);
$PAGE->set_title($strtitle);
$PAGE->set_heading($strtitle);
echo $OUTPUT->header();
// If messaging is disabled on site, we can still allow users with capabilities to send emails instead.
if (empty($CFG->messaging)) {
echo $OUTPUT->notification(get_string('messagingdisabled', 'message'));
}
if ($count) {
if ($count == 1) {
$heading = get_string('addedrecip', 'moodle', $count);
} else {
$heading = get_string('addedrecips', 'moodle', $count);
}
echo $OUTPUT->heading($heading);
}
if (!empty($messagebody) && !$edit && !$deluser && ($preview || $send)) {
require_sesskey();
if (count($SESSION->emailto[$id])) {
if (!empty($preview)) {
echo '<form method="post" action="messageselect.php" style="margin: 0 20px;">
<input type="hidden" name="returnto" value="'.s($returnto).'" />
<input type="hidden" name="id" value="'.$id.'" />
<input type="hidden" name="format" value="'.$format.'" />
<input type="hidden" name="sesskey" value="' . sesskey() . '" />
';
echo "<h3>".get_string('previewhtml')."</h3>";
echo "<div class=\"messagepreview\">\n".format_text($messagebody, $format)."\n</div>\n";
echo '<p align="center"><input type="submit" name="send" value="'.get_string('sendmessage', 'message').'" />'."\n";
echo '<input type="submit" name="edit" value="'.get_string('update').'" /></p>';
echo "\n</form>";
} else if (!empty($send)) {
$fails = array();
foreach ($SESSION->emailto[$id] as $user) {
if (!message_post_message($USER, $user, $messagebody, $format)) {
$user->fullname = fullname($user);
$fails[] = get_string('messagedselecteduserfailed', 'moodle', $user);
};
}
if (empty($fails)) {
echo $OUTPUT->heading(get_string('messagedselectedusers'));
unset($SESSION->emailto[$id]);
unset($SESSION->emailselect[$id]);
} else {
echo $OUTPUT->heading(get_string('messagedselectedcountusersfailed', 'moodle', count($fails)));
echo '<ul>';
foreach ($fails as $f) {
echo '<li>', $f, '</li>';
}
echo '</ul>';
}
echo '<p align="center"><a href="index.php?id='.$id.'">'.get_string('backtoparticipants').'</a></p>';
}
echo $OUTPUT->footer();
exit;
} else {
echo $OUTPUT->notification(get_string('nousersyet'));
}
}
echo '<p align="center"><a href="'.$returnto.'">'.get_string("keepsearching").'</a>'.
((count($SESSION->emailto[$id])) ? ', '.get_string('usemessageform') : '').'</p>';
if ((!empty($send) || !empty($preview) || !empty($edit)) && (empty($messagebody))) {
echo $OUTPUT->notification(get_string('allfieldsrequired'));
}
if (count($SESSION->emailto[$id])) {
require_sesskey();
require("message.html");
}
$PAGE->requires->yui_module('moodle-core-formchangechecker',
'M.core_formchangechecker.init',
array(array(
'formid' => 'theform'
))
);
$PAGE->requires->string_for_js('changesmadereallygoaway', 'moodle');
echo $OUTPUT->footer();