2005-04-14 09:28:07 +00:00
< ? php // $Id$
2006-12-25 22:34:05 +00:00
2005-04-14 09:28:07 +00:00
require ( '../config.php' );
require ( 'lib.php' );
require_login ();
if ( isguest ()) {
redirect ( $CFG -> wwwroot );
}
if ( empty ( $CFG -> messaging )) {
error ( " Messaging is disabled on this site " );
}
/// Script parameters
2006-12-25 22:34:05 +00:00
$userid = required_param ( 'id' , PARAM_INT );
$noframesjs = optional_param ( 'noframesjs' , 0 , PARAM_BOOL );
2005-04-14 09:28:07 +00:00
/// Check the user we are talking to is valid
if ( ! $user = get_record ( 'user' , 'id' , $userid )) {
error ( " User ID was incorrect " );
}
2006-12-25 22:34:05 +00:00
/// Check if frame&jsless mode selected
if ( ! get_user_preferences ( 'message_noframesjs' , 0 ) and ! $noframesjs ) {
/// Print frameset to contain all the various panes
@ header ( 'Content-Type: text/html; charset=utf-8' );
2005-04-14 09:28:07 +00:00
?>
2005-11-05 10:50:35 +00:00
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Frameset//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd " >
2005-04-14 09:28:07 +00:00
< html >
2005-11-05 10:50:35 +00:00
< head >
2006-11-11 17:23:20 +00:00
< meta http - equiv = " content-type " content = " text/html; charset=utf-8 " />
2005-11-05 10:50:35 +00:00
< title >< ? php echo get_string ( 'discussion' , 'message' ) . ': ' . fullname ( $user ) ?> </title>
</ head >
2006-12-18 09:04:33 +00:00
< frameset rows = " 110,*,0,200 " >
2006-12-25 22:34:05 +00:00
< noframes >< body >< ? php
echo '<a href="discussion.php?id=' . $userid . '&noframesjs=1">' . get_string ( 'noframesjs' , 'message' ) . '<a/>' ;
?> </body></noframes>
2006-12-18 09:04:33 +00:00
2006-12-25 22:34:05 +00:00
< frame src = " user.php?id=<?php p( $user->id )?>&frame=user " name = " user "
2006-12-18 09:04:33 +00:00
scrolling = " no " marginwidth = " 0 " marginheight = " 0 " frameborder = " 0 " />
2006-12-25 22:34:05 +00:00
< frame src = " messages.php " name = " messages "
2006-12-18 09:04:33 +00:00
scrolling = " yes " marginwidth = " 10 " marginheight = " 10 " frameborder = " 0 " />
2006-12-25 22:34:05 +00:00
< frame src = " refresh.php?id=<?php p( $user->id )?>&name=<?php echo urlencode(fullname( $user )) ?> " name = " refresh "
2006-12-18 09:04:33 +00:00
scrolling = " no " marginwidth = " 0 " marginheight = " 0 " frameborder = " 0 " />
2006-12-25 22:34:05 +00:00
< frame src = " send.php?id=<?php p( $user->id )?> " name = " send "
2006-12-18 09:04:33 +00:00
scrolling = " no " marginwidth = " 2 " marginheight = " 2 " frameborder = " 0 " />
2005-04-14 09:28:07 +00:00
</ frameset >
</ html >
2006-12-25 22:34:05 +00:00
< ? php
die ;
}
/// user wants simple frame&js-less mode
$start = optional_param ( 'start' , time (), PARAM_INT );
$message = optional_param ( 'message' , '' , PARAM_CLEAN );
$format = optional_param ( 'format' , FORMAT_MOODLE , PARAM_INT );
$refresh = optional_param ( 'refresh' , '' , PARAM_RAW );
2006-12-27 16:06:17 +00:00
$last = optional_param ( 'last' , 0 , PARAM_INT );
$newonly = optional_param ( 'newonly' , 0 , PARAM_BOOL );
2006-12-25 22:34:05 +00:00
$addcontact = optional_param ( 'addcontact' , 0 , PARAM_INT ); // adding a contact
$removecontact = optional_param ( 'removecontact' , 0 , PARAM_INT ); // removing a contact
$blockcontact = optional_param ( 'blockcontact' , 0 , PARAM_INT ); // blocking a contact
$unblockcontact = optional_param ( 'unblockcontact' , 0 , PARAM_INT ); // unblocking a contact
if ( $addcontact and confirm_sesskey ()) {
add_to_log ( SITEID , 'message' , 'add contact' ,
'discussion.php?user1=' . $addcontact . '&user2=' . $USER -> id , $addcontact );
message_add_contact ( $addcontact );
}
if ( $removecontact and confirm_sesskey ()) {
add_to_log ( SITEID , 'message' , 'remove contact' ,
'discussion.php?user1=' . $removecontact . '&user2=' . $USER -> id , $removecontact );
message_remove_contact ( $removecontact );
}
if ( $blockcontact and confirm_sesskey ()) {
add_to_log ( SITEID , 'message' , 'block contact' ,
'discussion.php?user1=' . $blockcontact . '&user2=' . $USER -> id , $blockcontact );
message_block_contact ( $blockcontact );
}
if ( $unblockcontact and confirm_sesskey ()) {
add_to_log ( SITEID , 'message' , 'unblock contact' ,
'history.php?user1=' . $unblockcontact . '&user2=' . $USER -> id , $unblockcontact );
message_unblock_contact ( $unblockcontact );
}
/// Check that the user is not blocking us!!
if ( $contact = get_record ( 'message_contacts' , 'userid' , $user -> id , 'contactid' , $USER -> id )) {
if ( $contact -> blocked and ! has_capability ( 'moodle/site:readallmessages' , get_context_instance ( CONTEXT_SYSTEM , SITEID ))) {
print_heading ( get_string ( 'userisblockingyou' , 'message' ));
exit ;
}
}
if ( get_user_preferences ( 'message_blocknoncontacts' , 0 , $user -> id )) { // User is blocking non-contacts
if ( empty ( $contact )) { // We are not a contact!
print_heading ( get_string ( 'userisblockingyounoncontact' , 'message' ));
exit ;
}
}
$refreshedmessage = '' ;
if ( ! empty ( $refresh ) and data_submitted ()) {
$refreshedmessage = $message ;
} else if ( empty ( $refresh ) and data_submitted () and confirm_sesskey ()) {
if ( $message != '' ) {
message_post_message ( $USER , $user , $message , $format , 'direct' );
}
2006-12-27 16:06:17 +00:00
redirect ( 'discussion.php?id=' . $userid . '&start=' . $start . '&noframesjs=' . $noframesjs . '&newonly=' . $newonly . '&last=' . $last );
2006-12-25 22:34:05 +00:00
}
$userfullname = fullname ( $user );
$mefullname = fullname ( $USER );
2007-01-03 20:35:09 +00:00
print_header ( get_string ( 'discussion' , 'message' ) . ': ' . fullname ( $user ), '' , '' , 'edit-message' );
2006-12-25 22:34:05 +00:00
echo '<div class="message-discussion-noframes">' ;
echo '<div id="userinfo">' ;
echo print_user_picture ( $user -> id , SITEID , $user -> picture , 48 , true , true , 'userwindow' );
2006-12-27 16:06:17 +00:00
echo '<div class="name"><h1>' . $userfullname . '</h1></div>' ;
2006-12-25 22:34:05 +00:00
echo '<div class="commands"><ul>' ;
if ( $contact = get_record ( 'message_contacts' , 'userid' , $USER -> id , 'contactid' , $user -> id )) {
if ( $contact -> blocked ) {
echo '<li>' ;
2006-12-27 16:06:17 +00:00
message_contact_link ( $user -> id , 'add' , false , 'discussion.php?id=' . $user -> id . '&noframesjs=' . $noframesjs . '&newonly=' . $newonly . '&last=' . $last , true );
2006-12-25 22:34:05 +00:00
echo '</li><li>' ;
2006-12-27 16:06:17 +00:00
message_contact_link ( $user -> id , 'unblock' , false , 'discussion.php?id=' . $user -> id . '&noframesjs=' . $noframesjs . '&newonly=' . $newonly . '&last=' . $last , true );
2006-12-25 22:34:05 +00:00
echo '</li>' ;
} else {
echo '<li>' ;
2006-12-27 16:06:17 +00:00
message_contact_link ( $user -> id , 'remove' , false , 'discussion.php?id=' . $user -> id . '&noframesjs=' . $noframesjs . '&newonly=' . $newonly . '&last=' . $last , true );
2006-12-25 22:34:05 +00:00
echo '</li><li>' ;
2006-12-27 16:06:17 +00:00
message_contact_link ( $user -> id , 'block' , false , 'discussion.php?id=' . $user -> id . '&noframesjs=' . $noframesjs . '&newonly=' . $newonly . '&last=' . $last , true );
2006-12-25 22:34:05 +00:00
echo '</li>' ;
}
} else {
echo '<li>' ;
2006-12-27 16:06:17 +00:00
message_contact_link ( $user -> id , 'add' , false , 'discussion.php?id=' . $user -> id . '&noframesjs=' . $noframesjs . '&newonly=' . $newonly . '&last=' . $last , true );
2006-12-25 22:34:05 +00:00
echo '</li><li>' ;
2006-12-27 16:06:17 +00:00
message_contact_link ( $user -> id , 'block' , false , 'discussion.php?id=' . $user -> id . '&noframesjs=' . $noframesjs . '&newonly=' . $newonly . '&last=' . $last , true );
2006-12-25 22:34:05 +00:00
echo '</li>' ;
}
echo '<li>' ;
message_history_link ( $user -> id , 0 , false , '' , '' , 'both' );
echo '</li>' ;
echo '</ul>' ;
echo '</div>' ;
echo '</div>' ; // class="userinfo"
echo '<div id="send">' ;
2007-01-03 20:35:09 +00:00
echo '<form id="editing" method="post" action="discussion.php">' ;
2006-12-25 22:34:05 +00:00
$usehtmleditor = ( can_use_html_editor () && get_user_preferences ( 'message_usehtmleditor' , 0 ));
echo '<h1><label for="edit-message">' . get_string ( 'sendmessage' , 'message' ) . '</label></h1>' ;
2006-12-27 16:06:17 +00:00
echo '<div>' ;
2006-12-25 22:34:05 +00:00
if ( $usehtmleditor ) {
print_textarea ( true , 8 , 34 , 100 , 100 , 'message' , $refreshedmessage );
use_html_editor ( 'message' , 'formatblock subscript superscript copy cut paste clean undo redo justifyleft justifycenter justifyright justifyfull lefttoright righttoleft insertorderedlist insertunorderedlist outdent indent inserthorizontalrule createanchor nolink inserttable' );
echo '<input type="hidden" name="format" value="' . FORMAT_HTML . '" />' ;
} else {
2006-12-25 22:38:56 +00:00
print_textarea ( false , 8 , 50 , 0 , 0 , 'message' , $refreshedmessage );
2006-12-25 22:34:05 +00:00
echo '<input type="hidden" name="format" value="' . FORMAT_MOODLE . '" />' ;
}
2006-12-27 16:06:17 +00:00
echo '</div><div>' ;
2007-01-03 20:35:09 +00:00
echo '<input type="hidden" name="id" value="' . $user -> id . '" />' ;
echo '<input type="hidden" name="start" value="' . $start . '" />' ;
echo '<input type="hidden" name="noframesjs" value="' . $noframesjs . '" />' ;
echo '<input type="hidden" name="last" value="' . time () . '" />' ;
echo '<input type="hidden" name="sesskey" value="' . $USER -> sesskey . '" />' ;
2006-12-27 16:06:17 +00:00
echo '<input type="submit" value="' . get_string ( 'sendmessage' , 'message' ) . '" /> ' ;
2006-12-29 18:33:41 +00:00
echo '<input type="submit" name="refresh" value="' . get_string ( 'refresh' ) . '" />' ;
2006-12-27 16:06:17 +00:00
echo '<input type="checkbox" name="newonly" id="newonly" ' . ( $newonly ? 'checked="checked" ' : '' ) . '/><label for="newonly">' . get_string ( 'newonlymsg' , 'message' ) . '</label>' ;
echo '</div>' ;
2006-12-25 22:34:05 +00:00
echo '</form>' ;
echo '</div>' ;
echo '<div id="messages">' ;
echo '<h1>' . get_string ( 'messages' , 'message' ) . '</h1>' ;
$allmessages = array ();
$playbeep = false ;
$options = new object ();
$options -> para = false ;
$options -> newlines = true ;
2006-12-27 16:06:17 +00:00
if ( $newonly ) {
$lastsql = " AND timecreated > $last " ;
} else {
$lastsql = " " ;
}
if ( $messages = get_records_select ( 'message_read' , " (useridto = ' $USER->id ' AND useridfrom = ' $userid ' AND timeread > ' $start ' $lastsql ) OR (useridto = ' $userid ' AND useridfrom = ' $USER->id ' AND timeread > ' $start ' $lastsql ) " )) {
2006-12-25 22:34:05 +00:00
foreach ( $messages as $message ) {
$time = userdate ( $message -> timecreated , get_string ( 'strftimedaytime' ));
if ( $message -> useridfrom == $USER -> id ) {
$fullname = $mefullname ;
} else {
$fullname = $userfullname ;
}
$printmessage = format_text ( $message -> message , $message -> format , $options , 0 );
$printmessage = '<div class="message other"><span class="author">' . $fullname . '</span> ' .
'<span class="time">[' . $time . ']</span>: ' .
'<span class="content">' . $printmessage . '</span></div>' ;
2006-12-30 10:55:32 +00:00
$i = 0 ;
$sortkey = $message -> timecreated . " $i " ; // we need string bacause we would run out of int range
while ( array_key_exists ( $sortkey , $allmessages )) {
$i ++ ;
$sortkey = $message -> timecreated . " $i " ;
}
$allmessages [ $sortkey ] = $printmessage ;
2006-12-25 22:34:05 +00:00
}
}
2006-12-27 16:06:17 +00:00
if ( $messages = get_records_select ( 'message' , " useridto = ' $userid ' AND useridfrom = ' $USER->id ' $lastsql " )) {
2006-12-25 22:34:05 +00:00
foreach ( $messages as $message ) {
$time = userdate ( $message -> timecreated , get_string ( 'strftimedaytime' ));
$printmessage = format_text ( $message -> message , $message -> format , $options , 0 );
$printmessage = '<div class="message other"><span class="author">' . $mefullname . '</span> ' .
'<span class="time">[' . $time . ']</span>: ' .
'<span class="content">' . $printmessage . '</span></div>' ;
2006-12-30 10:55:32 +00:00
$i = 0 ;
$sortkey = $message -> timecreated . " $i " ; // we need string bacause we would run out of int range
while ( array_key_exists ( $sortkey , $allmessages )) {
$i ++ ;
$sortkey = $message -> timecreated . " $i " ;
}
$allmessages [ $sortkey ] = $printmessage ;
2006-12-25 22:34:05 +00:00
}
}
2006-12-27 16:06:17 +00:00
if ( $messages = get_records_select ( 'message' , " useridto = ' $USER->id ' AND useridfrom = ' $userid ' $lastsql " )) {
2006-12-25 22:34:05 +00:00
foreach ( $messages as $message ) {
$time = userdate ( $message -> timecreated , get_string ( 'strftimedaytime' ));
$printmessage = format_text ( $message -> message , $message -> format , $options , 0 );
$printmessage = '<div class="message other"><span class="author">' . $userfullname . '</span> ' .
'<span class="time">[' . $time . ']</span>: ' .
'<span class="content">' . $printmessage . '</span></div>' ;
2006-12-30 10:55:32 +00:00
$i = 0 ;
$sortkey = $message -> timecreated . " $i " ; // we need string bacause we would run out of int range
while ( array_key_exists ( $sortkey , $allmessages )) {
$i ++ ;
$sortkey = $message -> timecreated . " $i " ;
}
$allmessages [ $sortkey ] = $printmessage ;
2006-12-25 22:34:05 +00:00
/// Move the entry to the other table
$messageid = $message -> id ;
unset ( $message -> id );
$message -> timeread = time ();
$message = addslashes_object ( $message );
if ( insert_record ( 'message_read' , $message )) {
delete_records ( 'message' , 'id' , $messageid );
}
if ( $message -> timecreated < $start ) {
$start = $message -> timecreated ; // move start back so that we see all current history
}
}
$playbeep = true ;
}
krsort ( $allmessages );
if ( empty ( $allmessages )) {
echo get_string ( 'nomessagesfound' , 'message' );
} else {
2006-12-30 11:20:26 +00:00
echo '<ul class="messagelist">' ;
2006-12-25 22:34:05 +00:00
foreach ( $allmessages as $message ) {
2006-12-30 11:20:26 +00:00
echo '<li>' ;
2006-12-25 22:34:05 +00:00
echo $message ;
2006-12-30 11:20:26 +00:00
echo '</li>' ;
2006-12-25 22:34:05 +00:00
}
2006-12-30 11:20:26 +00:00
echo '</ul>' ;
2006-12-25 22:34:05 +00:00
if ( $playbeep and get_user_preferences ( 'message_beepnewmessage' , 0 )) {
echo '<embed src="bell.wav" autostart="true" hidden="true" name="bell" />' ;
}
}
echo '</div></div>' ;
print_footer ( 'none' );
?>