|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 00003 require_once('../../../config.php'); 00004 require_once('../lib.php'); 00005 00006 $id = required_param('id', PARAM_INT); 00007 $groupid = optional_param('groupid', 0, PARAM_INT); // only for teachers 00008 $message = optional_param('message', '', PARAM_CLEANHTML); 00009 $refresh = optional_param('refresh', '', PARAM_RAW); // force refresh 00010 $last = optional_param('last', 0, PARAM_INT); // last time refresh or sending 00011 $newonly = optional_param('newonly', 0, PARAM_BOOL); // show only new messages 00012 00013 $url = new moodle_url('/mod/chat/gui_basic/index.php', array('id'=>$id)); 00014 if ($groupid !== 0) { 00015 $url->param('groupid', $groupid); 00016 } 00017 if ($message !== 0) { 00018 $url->param('message', $message); 00019 } 00020 if ($refresh !== 0) { 00021 $url->param('refresh', $refresh); 00022 } 00023 if ($last !== 0) { 00024 $url->param('last', $last); 00025 } 00026 if ($newonly !== 0) { 00027 $url->param('newonly', $newonly); 00028 } 00029 $PAGE->set_url($url); 00030 00031 if (!$chat = $DB->get_record('chat', array('id'=>$id))) { 00032 print_error('invalidid', 'chat'); 00033 } 00034 00035 if (!$course = $DB->get_record('course', array('id'=>$chat->course))) { 00036 print_error('invalidcourseid'); 00037 } 00038 00039 if (!$cm = get_coursemodule_from_instance('chat', $chat->id, $course->id)) { 00040 print_error('invalidcoursemodule'); 00041 } 00042 00043 $context = get_context_instance(CONTEXT_MODULE, $cm->id); 00044 require_login($course->id, false, $cm); 00045 require_capability('mod/chat:chat', $context); 00046 $PAGE->set_pagelayout('base'); 00047 00049 if ($groupmode = groups_get_activity_groupmode($cm)) { // Groups are being used 00050 if ($groupid = groups_get_activity_group($cm)) { 00051 if (!$group = groups_get_group($groupid)) { 00052 print_error('invalidgroupid'); 00053 } 00054 $groupname = ': '.$group->name; 00055 } else { 00056 $groupname = ': '.get_string('allparticipants'); 00057 } 00058 } else { 00059 $groupid = 0; 00060 $groupname = ''; 00061 } 00062 00063 $strchat = get_string('modulename', 'chat'); // must be before current_language() in chat_login_user() to force course language!!! 00064 $strchats = get_string('modulenameplural', 'chat'); 00065 $stridle = get_String('idle', 'chat'); 00066 if (!$chat_sid = chat_login_user($chat->id, 'basic', $groupid, $course)) { 00067 print_error('cantlogin', 'chat'); 00068 } 00069 00070 if (!$chatusers = chat_get_users($chat->id, $groupid, $cm->groupingid)) { 00071 print_error('errornousers', 'chat'); 00072 } 00073 00074 $DB->set_field('chat_users', 'lastping', time(), array('sid'=>$chat_sid)); 00075 00076 if (!isset($SESSION->chatprefs)) { 00077 $SESSION->chatprefs = array(); 00078 } 00079 if (!isset($SESSION->chatprefs[$chat->id])) { 00080 $SESSION->chatprefs[$chat->id] = array(); 00081 $SESSION->chatprefs[$chat->id]['chatentered'] = time(); 00082 } 00083 $chatentered = $SESSION->chatprefs[$chat->id]['chatentered']; 00084 00085 $refreshedmessage = ''; 00086 00087 if (!empty($refresh) and data_submitted()) { 00088 $refreshedmessage = $message; 00089 00090 chat_delete_old_users(); 00091 00092 } else if (empty($refresh) and data_submitted() and confirm_sesskey()) { 00093 00094 if ($message!='') { 00095 $newmessage = new stdClass(); 00096 $newmessage->chatid = $chat->id; 00097 $newmessage->userid = $USER->id; 00098 $newmessage->groupid = $groupid; 00099 $newmessage->systrem = 0; 00100 $newmessage->message = $message; 00101 $newmessage->timestamp = time(); 00102 $DB->insert_record('chat_messages', $newmessage); 00103 $DB->insert_record('chat_messages_current', $newmessage); 00104 00105 $DB->set_field('chat_users', 'lastmessageping', time(), array('sid'=>$chat_sid)); 00106 00107 add_to_log($course->id, 'chat', 'talk', "view.php?id=$cm->id", $chat->id, $cm->id); 00108 } 00109 00110 chat_delete_old_users(); 00111 00112 $url = new moodle_url('/mod/chat/gui_basic/index.php', array('id'=>$id, 'newonly'=>$newonly, 'last'=>$last)); 00113 redirect($url); 00114 } 00115 00116 $PAGE->set_title("$strchat: $course->shortname: ".format_string($chat->name,true)."$groupname"); 00117 echo $OUTPUT->header(); 00118 echo '<div id="">'; 00119 echo $OUTPUT->container_start(null, 'page-mod-chat-gui_basic'); 00120 echo $OUTPUT->heading(get_string('participants'), 2, 'mdl-left'); 00121 00122 echo $OUTPUT->box_start('generalbox', 'participants'); 00123 echo '<ul>'; 00124 foreach($chatusers as $chu) { 00125 echo '<li class="clearfix">'; 00126 echo $OUTPUT->user_picture($chu, array('size'=>24, 'courseid'=>$course->id)); 00127 echo '<div class="userinfo">'; 00128 echo fullname($chu).' '; 00129 if ($idle = time() - $chu->lastmessageping) { 00130 echo '<span class="idle">'.$stridle.' '.format_time($idle).'</span>'; 00131 } else { 00132 echo '<span class="idle" />'; 00133 } 00134 echo '</div>'; 00135 echo '</li>'; 00136 } 00137 echo '</ul>'; 00138 echo $OUTPUT->box_end(); 00139 echo '<div id="send">'; 00140 echo '<form id="editing" method="post" action="index.php">'; 00141 00142 echo '<h2><label for="message">'.get_string('sendmessage', 'message').'</label></h2>'; 00143 echo '<div>'; 00144 echo '<input type="text" id="message" name="message" value="'.s($refreshedmessage, true).'" size="60" />'; 00145 echo '</div><div>'; 00146 echo '<input type="hidden" name="id" value="'.$id.'" />'; 00147 echo '<input type="hidden" name="groupid" value="'.$groupid.'" />'; 00148 echo '<input type="hidden" name="last" value="'.time().'" />'; 00149 echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />'; 00150 echo '<input type="submit" value="'.get_string('submit').'" /> '; 00151 echo '<input type="submit" name="refresh" value="'.get_string('refresh').'" />'; 00152 echo '<input type="checkbox" name="newonly" id="newonly" '.($newonly?'checked="checked" ':'').'/><label for="newonly">'.get_string('newonlymsg', 'message').'</label>'; 00153 echo '</div>'; 00154 echo '</form>'; 00155 echo '</div>'; 00156 00157 echo '<div id="messages">'; 00158 echo $OUTPUT->heading(get_string('messages', 'chat'), 2, 'mdl-left'); 00159 00160 $allmessages = array(); 00161 $options = new stdClass(); 00162 $options->para = false; 00163 $options->newlines = true; 00164 00165 $params = array('last'=>$last, 'groupid'=>$groupid, 'chatid'=>$chat->id, 'chatentered'=>$chatentered); 00166 00167 if ($newonly) { 00168 $lastsql = "AND timestamp > :last"; 00169 } else { 00170 $lastsql = ""; 00171 } 00172 00173 $groupselect = $groupid ? "AND (groupid=:groupid OR groupid=0)" : ""; 00174 00175 $messages = $DB->get_records_select("chat_messages_current", 00176 "chatid = :chatid AND timestamp > :chatentered $lastsql $groupselect", $params, 00177 "timestamp DESC"); 00178 00179 if ($messages) { 00180 foreach ($messages as $message) { 00181 $allmessages[] = chat_format_message($message, $course->id, $USER); 00182 } 00183 } 00184 00185 if (empty($allmessages)) { 00186 echo get_string('nomessagesfound', 'message'); 00187 } else { 00188 foreach ($allmessages as $message) { 00189 echo $message->basic; 00190 } 00191 } 00192 00193 echo '</div>'; 00194 echo $OUTPUT->container_end(); 00195 echo $OUTPUT->footer();