From: skodak Date: Sun, 10 Oct 2004 20:32:51 +0000 (+0000) Subject: fixed line endings broken by my WinMerge X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=d3b65a9bf5751cbc0b9d499a14bdd9301dd0559a;p=moodle.git fixed line endings broken by my WinMerge --- diff --git a/mod/dialogue/dialogues.php b/mod/dialogue/dialogues.php index 357a90972e..48f58562a0 100644 --- a/mod/dialogue/dialogues.php +++ b/mod/dialogue/dialogues.php @@ -1,309 +1,309 @@ -course)) { - error("Course is misconfigured"); - } - - if (! $dialogue = get_record("dialogue", "id", $cm->instance)) { - error("Course module dialogue is incorrect"); - } - - require_login($course->id); - - // set up some general variables - $usehtmleditor = can_use_html_editor(); - - $strdialogues = get_string("modulenameplural", "dialogue"); - $strdialogue = get_string("modulename", "dialogue"); - - // ... print the header and... - print_header_simple("$dialogue->name", "", - "id\">$strdialogues -> - id\">$dialogue->name", - "", "", true); - - - require_variable($action); // need something to do! - - /************** close conversation ************************************/ - if ($action == 'closeconversation') { - if (empty($_GET['cid'])) { - error("Close dialogue: Missing conversation id"); - } - else { - $conversationid = $_GET['cid']; - } - if (!set_field("dialogue_conversations", "closed", 1, "id", $conversationid)) { - error("Close dialogue: unable to set closed"); - } - if (!set_field("dialogue_conversations", "lastid", $USER->id, "id", $conversationid)) { - error("Close dialogue: unable to set lastid"); - } - $pane=$_GET['pane']; - - add_to_log($course->id, "dialogue", "closed", "view.php?id=$cm->id", "$conversationid"); - redirect("view.php?id=$cm->id&pane=$pane", get_string("dialogueclosed", "dialogue")); - } - - - /****************** confirm close ************************************/ - elseif ($action == 'confirmclose' ) { - - if (empty($_GET['cid'])) { - error("Confirm Close: conversation id missing"); - } - if (!$conversation = get_record("dialogue_conversations", "id", $_GET['cid'])) { - error("Confirm close: cannot get conversation record"); - } - if ($conversation->userid == $USER->id) { - if (!$user = get_record("user", "id", $conversation->recipientid)) { - error("Confirm Close: cannot get recipient record"); - } - } - else { - if (!$user = get_record("user", "id", $conversation->userid)) { - error("Confirm Close: cannot get user record"); - } - } - $pane = $_GET['pane']; - notice_yesno(get_string("confirmclosure", "dialogue", fullname($user)), - "dialogues.php?action=closeconversation&id=$cm->id&cid=$conversation->id&pane=$pane", - "view.php?id=$cm->id&pane=$pane"); - } - - /****************** get subject ************************************/ - elseif ($action == 'getsubject' ) { - - if (empty($_GET['cid'])) { - error("Confirm Close: conversation id missing"); - } - print_heading(get_string("addsubject", "dialogue")); - echo "
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo ""; - echo "\n"; - echo "\n"; - echo "
".get_string("subject", "dialogue")."
\n"; - } - - - /****************** insert conversation entries ******************************/ - elseif ($action == 'insertentries' ) { - - $timenow = time(); - $n = 0; - // get all the open conversations for this user - if ($conversations = dialogue_get_conversations($dialogue, $USER, "closed = 0")) { - foreach ($conversations as $conversation) { - $textarea_name = "reply$conversation->id"; - $stripped_text = ''; - if (isset($_POST[$textarea_name])) { - $stripped_text = strip_tags(trim($_POST[$textarea_name])); - } - if ($stripped_text) { - unset($item); - $item->dialogueid = $dialogue->id; - $item->conversationid = $conversation->id; - $item->userid = $USER->id; - $item->timecreated = time(); - // reverse the dialogue mail default - $item->mailed = !$dialogue->maildefault; - $item->text = clean_text($_POST[$textarea_name]); - if (!$item->id = insert_record("dialogue_entries", $item)) { - error("Insert Entries: Could not insert dialogue record!"); - } - if (!set_field("dialogue_conversations", "lastid", $USER->id, "id", $conversation->id)) { - error("Insert Dialogue Entries: could not set lastid"); - } - if (!set_field("dialogue_conversations", "timemodified", $timenow, "id", - $conversation->id)) { - error("Insert Dialogue Entries: could not set lastid"); - } - // reset seenon time - if (!set_field("dialogue_conversations", "seenon", 0, "id", - $conversation->id)) { - error("Insert Dialogue Entries: could not reset seenon"); - } - add_to_log($course->id, "dialogue", "add entry", "view.php?id=$cm->id", "$item->id"); - $n++; - } - } - } - redirect("view.php?id=$cm->id&pane={$_POST['pane']}", get_string("numberofentriesadded", - "dialogue", $n)); - } - - /****************** list closed conversations *********************************/ - elseif ($action == 'listclosed') { - - print_simple_box( text_to_html($dialogue->intro) , "center"); - echo "
"; - - dialogue_list_closed_conversations($dialogue); - } - - /****************** open conversation ************************************/ - elseif ($action == 'openconversation' ) { - - if (empty($_POST['recipientid'])) { - redirect("view.php?id=$cm->id", get_string("nopersonchosen", "dialogue")); - } else { - $recipientid = $_POST['recipientid']; - if (substr($recipientid, 0, 1) == 'g') { // it's a group - $groupid = intval(substr($recipientid, 1)); - if ($groupid) { // it's a real group - $recipients = get_records_sql("SELECT u.* - FROM {$CFG->prefix}user u, - {$CFG->prefix}groups_members g - WHERE g.groupid = $groupid and - u.id = g.userid"); - } else { // it's all participants - $recipients = get_course_students($course->id); - } - } else { - $recipients[$recipientid] = get_record("user", "id", $recipientid); - } - if ($recipients) { - $n = 0; - foreach ($recipients as $recipient) { - if ($recipient->id == $USER->id) { // teacher could be member of a group - continue; - } - $stripped_text = strip_tags(trim($_POST['firstentry'])); - if (!$stripped_text) { - redirect("view.php?id=$cm->id", get_string("notextentered", "dialogue")); - } - unset($conversation); - $conversation->dialogueid = $dialogue->id; - $conversation->userid = $USER->id; - $conversation->recipientid = $recipient->id; - $conversation->lastid = $USER->id; // this USER is adding an entry too - $conversation->timemodified = time(); - $conversation->subject = clean_text($_POST['subject']); // may be blank - if (!$conversation->id = insert_record("dialogue_conversations", $conversation)) { - error("Open dialogue: Could not insert dialogue record!"); - } - add_to_log($course->id, "dialogue", "open", "view.php?id=$cm->id", "$dialogue->id"); - - // now add the entry - unset($entry); - $entry->dialogueid = $dialogue->id; - $entry->conversationid = $conversation->id; - $entry->userid = $USER->id; - $entry->timecreated = time(); - // reverse the dialogue default value - $entry->mailed = !$dialogue->maildefault; - $entry->text = clean_text($_POST['firstentry']); - if (!$entry->id = insert_record("dialogue_entries", $entry)) { - error("Insert Entries: Could not insert dialogue record!"); - } - add_to_log($course->id, "dialogue", "add entry", "view.php?id=$cm->id", "$entry->id"); - $n++; - } - print_heading(get_string("numberofentriesadded", "dialogue", $n)); - } else { - redirect("view.php?id=$cm->id", get_string("noavailablepeople", "dialogue")); - } - if (isset($groupid)) { - if ($groupid) { // a real group - if (!$group = get_record("groups", "id", $groupid)) { - error("Dialogue open conversation: Group not found"); - } - redirect("view.php?id=$cm->id", get_string("dialogueopened", "dialogue", $group->name)); - } else { // all participants - redirect("view.php?id=$cm->id", get_string("dialogueopened", "dialogue", - get_string("allparticipants"))); - } - } else { - if (!$user = get_record("user", "id", $conversation->recipientid)) { - error("Open dialogue: user record not found"); - } - redirect("view.php?id=$cm->id", get_string("dialogueopened", "dialogue", fullname($user) )); - } - } - } - - - /****************** print dialogue (allowing new entry)********************/ - elseif ($action == 'printdialogue') { - - if (!$conversation = get_record("dialogue_conversations", "id", $_GET['cid'])) { - error("Print Dialogue: can not get conversation record"); - } - - print_simple_box( text_to_html($dialogue->intro) , "center"); - echo "
"; - - dialogue_print_conversation($dialogue, $conversation); - } - - - /****************** show dialogues ****************************************/ - elseif ($action == 'showdialogues') { - - if (!$conversation = get_record("dialogue_conversations", "id", $_GET['cid'])) { - error("Show Dialogue: can not get conversation record"); - } - - print_simple_box( text_to_html($dialogue->intro) , "center"); - echo "
"; - - dialogue_show_conversation($dialogue, $conversation); - dialogue_show_other_conversations($dialogue, $conversation); - } - - - /****************** update subject ****************************************/ - elseif ($action == 'updatesubject') { - - if (!$conversation = get_record("dialogue_conversations", "id", $_POST['cid'])) { - error("Update Subject: can not get conversation record"); - } - - if (!$_POST['subject']) { - redirect("view.php?id=$cm->id&pane=$_POST[pane]", get_string("nosubject", "dialogue")); - } elseif (!set_field("dialogue_conversations", "subject", clean_text($_POST['subject']), "id", $_POST['cid'])) { - error("Update subject: could not update conversation record"); - } - redirect("view.php?id=$cm->id&pane=$_POST[pane]", get_string("subjectadded", "dialogue")); - } - - - /*************** no man's land **************************************/ - else { - error("Fatal Error: Unknown Action: ".$action."\n"); - } - - print_footer($course); - -?> +course)) { + error("Course is misconfigured"); + } + + if (! $dialogue = get_record("dialogue", "id", $cm->instance)) { + error("Course module dialogue is incorrect"); + } + + require_login($course->id); + + // set up some general variables + $usehtmleditor = can_use_html_editor(); + + $strdialogues = get_string("modulenameplural", "dialogue"); + $strdialogue = get_string("modulename", "dialogue"); + + // ... print the header and... + print_header_simple("$dialogue->name", "", + "id\">$strdialogues -> + id\">$dialogue->name", + "", "", true); + + + require_variable($action); // need something to do! + + /************** close conversation ************************************/ + if ($action == 'closeconversation') { + if (empty($_GET['cid'])) { + error("Close dialogue: Missing conversation id"); + } + else { + $conversationid = $_GET['cid']; + } + if (!set_field("dialogue_conversations", "closed", 1, "id", $conversationid)) { + error("Close dialogue: unable to set closed"); + } + if (!set_field("dialogue_conversations", "lastid", $USER->id, "id", $conversationid)) { + error("Close dialogue: unable to set lastid"); + } + $pane=$_GET['pane']; + + add_to_log($course->id, "dialogue", "closed", "view.php?id=$cm->id", "$conversationid"); + redirect("view.php?id=$cm->id&pane=$pane", get_string("dialogueclosed", "dialogue")); + } + + + /****************** confirm close ************************************/ + elseif ($action == 'confirmclose' ) { + + if (empty($_GET['cid'])) { + error("Confirm Close: conversation id missing"); + } + if (!$conversation = get_record("dialogue_conversations", "id", $_GET['cid'])) { + error("Confirm close: cannot get conversation record"); + } + if ($conversation->userid == $USER->id) { + if (!$user = get_record("user", "id", $conversation->recipientid)) { + error("Confirm Close: cannot get recipient record"); + } + } + else { + if (!$user = get_record("user", "id", $conversation->userid)) { + error("Confirm Close: cannot get user record"); + } + } + $pane = $_GET['pane']; + notice_yesno(get_string("confirmclosure", "dialogue", fullname($user)), + "dialogues.php?action=closeconversation&id=$cm->id&cid=$conversation->id&pane=$pane", + "view.php?id=$cm->id&pane=$pane"); + } + + /****************** get subject ************************************/ + elseif ($action == 'getsubject' ) { + + if (empty($_GET['cid'])) { + error("Confirm Close: conversation id missing"); + } + print_heading(get_string("addsubject", "dialogue")); + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo ""; + echo "\n"; + echo "\n"; + echo "
".get_string("subject", "dialogue")."
\n"; + } + + + /****************** insert conversation entries ******************************/ + elseif ($action == 'insertentries' ) { + + $timenow = time(); + $n = 0; + // get all the open conversations for this user + if ($conversations = dialogue_get_conversations($dialogue, $USER, "closed = 0")) { + foreach ($conversations as $conversation) { + $textarea_name = "reply$conversation->id"; + $stripped_text = ''; + if (isset($_POST[$textarea_name])) { + $stripped_text = strip_tags(trim($_POST[$textarea_name])); + } + if ($stripped_text) { + unset($item); + $item->dialogueid = $dialogue->id; + $item->conversationid = $conversation->id; + $item->userid = $USER->id; + $item->timecreated = time(); + // reverse the dialogue mail default + $item->mailed = !$dialogue->maildefault; + $item->text = clean_text($_POST[$textarea_name]); + if (!$item->id = insert_record("dialogue_entries", $item)) { + error("Insert Entries: Could not insert dialogue record!"); + } + if (!set_field("dialogue_conversations", "lastid", $USER->id, "id", $conversation->id)) { + error("Insert Dialogue Entries: could not set lastid"); + } + if (!set_field("dialogue_conversations", "timemodified", $timenow, "id", + $conversation->id)) { + error("Insert Dialogue Entries: could not set lastid"); + } + // reset seenon time + if (!set_field("dialogue_conversations", "seenon", 0, "id", + $conversation->id)) { + error("Insert Dialogue Entries: could not reset seenon"); + } + add_to_log($course->id, "dialogue", "add entry", "view.php?id=$cm->id", "$item->id"); + $n++; + } + } + } + redirect("view.php?id=$cm->id&pane={$_POST['pane']}", get_string("numberofentriesadded", + "dialogue", $n)); + } + + /****************** list closed conversations *********************************/ + elseif ($action == 'listclosed') { + + print_simple_box( text_to_html($dialogue->intro) , "center"); + echo "
"; + + dialogue_list_closed_conversations($dialogue); + } + + /****************** open conversation ************************************/ + elseif ($action == 'openconversation' ) { + + if (empty($_POST['recipientid'])) { + redirect("view.php?id=$cm->id", get_string("nopersonchosen", "dialogue")); + } else { + $recipientid = $_POST['recipientid']; + if (substr($recipientid, 0, 1) == 'g') { // it's a group + $groupid = intval(substr($recipientid, 1)); + if ($groupid) { // it's a real group + $recipients = get_records_sql("SELECT u.* + FROM {$CFG->prefix}user u, + {$CFG->prefix}groups_members g + WHERE g.groupid = $groupid and + u.id = g.userid"); + } else { // it's all participants + $recipients = get_course_students($course->id); + } + } else { + $recipients[$recipientid] = get_record("user", "id", $recipientid); + } + if ($recipients) { + $n = 0; + foreach ($recipients as $recipient) { + if ($recipient->id == $USER->id) { // teacher could be member of a group + continue; + } + $stripped_text = strip_tags(trim($_POST['firstentry'])); + if (!$stripped_text) { + redirect("view.php?id=$cm->id", get_string("notextentered", "dialogue")); + } + unset($conversation); + $conversation->dialogueid = $dialogue->id; + $conversation->userid = $USER->id; + $conversation->recipientid = $recipient->id; + $conversation->lastid = $USER->id; // this USER is adding an entry too + $conversation->timemodified = time(); + $conversation->subject = clean_text($_POST['subject']); // may be blank + if (!$conversation->id = insert_record("dialogue_conversations", $conversation)) { + error("Open dialogue: Could not insert dialogue record!"); + } + add_to_log($course->id, "dialogue", "open", "view.php?id=$cm->id", "$dialogue->id"); + + // now add the entry + unset($entry); + $entry->dialogueid = $dialogue->id; + $entry->conversationid = $conversation->id; + $entry->userid = $USER->id; + $entry->timecreated = time(); + // reverse the dialogue default value + $entry->mailed = !$dialogue->maildefault; + $entry->text = clean_text($_POST['firstentry']); + if (!$entry->id = insert_record("dialogue_entries", $entry)) { + error("Insert Entries: Could not insert dialogue record!"); + } + add_to_log($course->id, "dialogue", "add entry", "view.php?id=$cm->id", "$entry->id"); + $n++; + } + print_heading(get_string("numberofentriesadded", "dialogue", $n)); + } else { + redirect("view.php?id=$cm->id", get_string("noavailablepeople", "dialogue")); + } + if (isset($groupid)) { + if ($groupid) { // a real group + if (!$group = get_record("groups", "id", $groupid)) { + error("Dialogue open conversation: Group not found"); + } + redirect("view.php?id=$cm->id", get_string("dialogueopened", "dialogue", $group->name)); + } else { // all participants + redirect("view.php?id=$cm->id", get_string("dialogueopened", "dialogue", + get_string("allparticipants"))); + } + } else { + if (!$user = get_record("user", "id", $conversation->recipientid)) { + error("Open dialogue: user record not found"); + } + redirect("view.php?id=$cm->id", get_string("dialogueopened", "dialogue", fullname($user) )); + } + } + } + + + /****************** print dialogue (allowing new entry)********************/ + elseif ($action == 'printdialogue') { + + if (!$conversation = get_record("dialogue_conversations", "id", $_GET['cid'])) { + error("Print Dialogue: can not get conversation record"); + } + + print_simple_box( text_to_html($dialogue->intro) , "center"); + echo "
"; + + dialogue_print_conversation($dialogue, $conversation); + } + + + /****************** show dialogues ****************************************/ + elseif ($action == 'showdialogues') { + + if (!$conversation = get_record("dialogue_conversations", "id", $_GET['cid'])) { + error("Show Dialogue: can not get conversation record"); + } + + print_simple_box( text_to_html($dialogue->intro) , "center"); + echo "
"; + + dialogue_show_conversation($dialogue, $conversation); + dialogue_show_other_conversations($dialogue, $conversation); + } + + + /****************** update subject ****************************************/ + elseif ($action == 'updatesubject') { + + if (!$conversation = get_record("dialogue_conversations", "id", $_POST['cid'])) { + error("Update Subject: can not get conversation record"); + } + + if (!$_POST['subject']) { + redirect("view.php?id=$cm->id&pane=$_POST[pane]", get_string("nosubject", "dialogue")); + } elseif (!set_field("dialogue_conversations", "subject", clean_text($_POST['subject']), "id", $_POST['cid'])) { + error("Update subject: could not update conversation record"); + } + redirect("view.php?id=$cm->id&pane=$_POST[pane]", get_string("subjectadded", "dialogue")); + } + + + /*************** no man's land **************************************/ + else { + error("Fatal Error: Unknown Action: ".$action."\n"); + } + + print_footer($course); + +?> diff --git a/mod/dialogue/locallib.php b/mod/dialogue/locallib.php index f7c0435bd3..43e1f63dba 100644 --- a/mod/dialogue/locallib.php +++ b/mod/dialogue/locallib.php @@ -1,834 +1,834 @@ -id OR - recipientid = $user->id) AND lastid != $user->id AND closed = 0"); - } else { - return count_records_select("dialogue_conversations", "(userid = $USER->id OR - recipientid = $USER->id) AND lastid != $USER->id AND closed = 0"); - } -} - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_count_closed($dialogue, $user) { - - return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND - (userid = $user->id OR recipientid = $user->id) AND closed = 1"); - } - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_count_open($dialogue, $user) { - - return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND - (userid = $user->id OR recipientid = $user->id) AND closed = 0"); -} - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_count_needing_replies_other($dialogue, $user) { -// count [conversations] needing replies [from] other [person] - return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND - (userid = $user->id OR recipientid = $user->id) AND lastid = $user->id AND closed = 0"); -} - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_count_needing_replies_self($dialogue, $user) { -// count [conversations] needing replies [from] self - - return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND - (userid = $user->id OR recipientid = $user->id) AND lastid != $user->id AND closed = 0"); -} - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_get_participants($dialogueid) { -//Returns the users with data in one dialogue -//(users with records in dialogue_conversations, creators and receivers) - - global $CFG; - - //Get conversation's creators - $creators = get_records_sql("SELECT DISTINCT u.* - FROM {$CFG->prefix}user u, - {$CFG->prefix}dialogue_conversations c - WHERE c.dialogueid = '$dialogueid' and - u.id = c.userid"); - - //Get conversation's receivers - $receivers = get_records_sql("SELECT DISTINCT u.* - FROM {$CFG->prefix}user u, - {$CFG->prefix}dialogue_conversations c - WHERE c.dialogueid = '$dialogueid' and - u.id = c.recipientid"); - - //Add receivers to creators - if ($receivers) { - foreach ($receivers as $receiver) { - $creators[$receiver->id] = $receiver; - } - } - - //Return creators array (it contains an array of unique users, creators and receivers) - return ($creators); -} - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_get_available_users($dialogue) { - - if (! $course = get_record("course", "id", $dialogue->course)) { - error("Course is misconfigured"); - } - switch ($dialogue->dialoguetype) { - case 0 : // teacher to student - if (isteacher($course->id)) { - return dialogue_get_available_students($dialogue); - } - else { - return dialogue_get_available_teachers($dialogue); - } - case 1: // student to student - if (isstudent($course->id)) { - return dialogue_get_available_students($dialogue); - } - else { - return; - } - case 2: // everyone - if ($teachers = dialogue_get_available_teachers($dialogue)) { - foreach ($teachers as $userid=>$name) { - $names[$userid] = $name; - } - $names[-1] = "-------------"; - } - if ($students = dialogue_get_available_students($dialogue)) { - foreach ($students as $userid=>$name) { - $names[$userid] = $name; - } - } - if (isset($names)) { - return $names; - } - return; - } -} - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_get_available_students($dialogue) { -global $USER; - - if (! $course = get_record("course", "id", $dialogue->course)) { - error("Course is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { - error("Course Module ID was incorrect"); - } - - $groupid = get_current_group($course->id); - // add current group before list of students if it's the teacher - if (isteacher($course->id) and groupmode($course, $cm)) { - // show teacher their current group - if ($groupid) { - if (!$group = get_record("groups", "id", $groupid)) { - error("Dialogue get available students: group not found"); - } - $gnames["g$groupid"] = $group->name; - } else { // all participants - $gnames["g0"] = get_string("allparticipants"); - } - $gnames["spacer"] = "------------"; - } - // get the students on this course (default sort order)... - if ($users = get_course_students($course->id)) { - foreach ($users as $otheruser) { - // ...exclude self and... - if ($USER->id != $otheruser->id) { - // ...if teacher and groups then exclude students not in the current group - if (isteacher($course->id) and groupmode($course, $cm) and $groupid) { - if (!ismember($groupid, $otheruser->id)) { - continue; - } - } - // ...if student and groupmode is SEPARATEGROUPS then exclude students not in student's group - if (isstudent($course->id) and (groupmode($course, $cm) == SEPARATEGROUPS)) { - if (!ismember($groupid, $otheruser->id)) { - continue; - } - } - // ... and any already in any open conversations unless multiple conversations allowed - if ($dialogue->multipleconversations or count_records_select("dialogue_conversations", - "dialogueid = $dialogue->id AND - ((userid = $USER->id AND recipientid = $otheruser->id) OR - (userid = $otheruser->id AND recipientid = $USER->id)) AND closed = 0") == 0) { - $names[$otheruser->id] = fullname($otheruser); - } - } - } - } - if (isset($gnames)) { - $list = $gnames; - } - if (isset($names)) { - natcasesort($names); - if (isset($list)) { - $list += $names; - } else { - $list = $names; - } - } - if (isset($list)) { - return $list; - } else { - return; - } -} - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_get_available_teachers($dialogue) { -global $USER; - - if (! $course = get_record("course", "id", $dialogue->course)) { - error("Course is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { - error("Course Module ID was incorrect"); - } - - $groupid = get_current_group($course->id); - // get the teachers on this course (default sort order)... - if ($users = get_course_teachers($course->id)) { - // $names[0] = "-----------------------"; - foreach ($users as $otheruser) { - // ...exclude self and ... - if ($USER->id != $otheruser->id) { - // ...if groupmode is SEPARATEGROUPS then exclude teachers not in student's group - if ($groupid and (groupmode($course, $cm) == SEPARATEGROUPS)) { - if (!ismember($groupid, $otheruser->id)) { - continue; - } - } - // ...any already in open conversations unless multiple conversations allowed - if ($dialogue->multipleconversations or count_records_select("dialogue_conversations", - "dialogueid = $dialogue->id AND ((userid = $USER->id AND - recipientid = $otheruser->id) OR (userid = $otheruser->id AND - recipientid = $USER->id)) AND closed = 0") == 0) { - $names[$otheruser->id] = fullname($otheruser); - } - } - } - } - if (isset($names)) { - natcasesort($names); - return $names; - } - return; -} - - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_get_users_done($dialogue) { - global $CFG; - - // make sure it works on the site course - $select = "s.course = '$dialogue->course' AND"; - if ($courseid == SITEID) { - $select = ''; - } - if (!$students = get_records_sql("SELECT u.* - FROM {$CFG->prefix}user u, - {$CFG->prefix}user_students s, - {$CFG->prefix}dialogue_entries j - WHERE ($select s.userid = u.id) - AND u.id = j.userid - AND j.dialogue = '$dialogue->id' - ORDER BY j.modified DESC")) { - $students = array(); - } - if (!$teachers = get_records_sql("SELECT u.* - FROM {$CFG->prefix}user u, - {$CFG->prefix}user_teachers s, - {$CFG->prefix}dialogue_entries j - WHERE (s.course = '$dialogue->course' AND s.userid = u.id) - AND u.id = j.userid - AND j.dialogue = '$dialogue->id' - ORDER BY j.modified DESC")) { - $teachers = array(); - } - return $teachers + $students; - -// The following original version is very inefficient on large sites -// return get_records_sql("SELECT u.* -// FROM {$CFG->prefix}user u, -// {$CFG->prefix}user_students s, -// {$CFG->prefix}user_teachers t, -// {$CFG->prefix}dialogue_entries j -// WHERE ((s.course = '$dialogue->course' AND s.userid = u.id) -// OR (t.course = '$dialogue->course' AND t.userid = u.id)) -// AND u.id = j.userid -// AND j.dialogue = '$dialogue->id' -// ORDER BY j.modified DESC"); -} - - -// OTHER dialogue FUNCTIONS /////////////////////////////////////////////////////////////////// - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_list_conversations_closed($dialogue) { -// list the closed for the current user - global $USER; - - if (! $course = get_record("course", "id", $dialogue->course)) { - error("Course is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { - error("Course Module ID was incorrect"); - } - - if ($conversations = dialogue_get_conversations($dialogue, $USER, "closed = 1")) { - // reorder the conversations by (other) name - foreach ($conversations as $conversation) { - if ($USER->id != $conversation->userid) { - if (!$with = get_record("user", "id", $conversation->userid)) { - error("User's record not found"); - } - } - else { - if (!$with = get_record("user", "id", $conversation->recipientid)) { - error("User's record not found"); - } - } - $names[$conversation->id] = fullname($with); - } - natcasesort($names); - - print_simple_box_start("center"); - $table->head = array (get_string("dialoguewith", "dialogue"), get_string("subject", "dialogue"), - get_string("numberofentries", "dialogue"), get_string("lastentry", "dialogue"), - get_string("status", "dialogue")); - $table->width = "100%"; - $table->align = array ("left", "left", "center", "left", "left"); - $table->size = array ("*", "*", "*", "*", "*"); - $table->cellpadding = 2; - $table->cellspacing = 0; - - foreach ($names as $cid=>$name) { - if (!$conversation = get_record("dialogue_conversations", "id", $cid)) { - error("Closed conversations: could not find conversation record"); - } - $total = dialogue_count_entries($dialogue, $conversation); - $byuser = dialogue_count_entries($dialogue, $conversation, $USER); - if ($conversation->closed) { - $status = get_string("closed", "dialogue"); - } else { - $status = get_string("open", "dialogue"); - } - $table->data[] = array("id&action=showdialogues&cid=$conversation->id\">". - "$name", clean_text($conversation->subject), $byuser." ".get_string("of", "dialogue")." ".$total, - userdate($conversation->timemodified), $status); - } - print_table($table); - print_simple_box_end(); - } -} - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_list_conversations_other($dialogue) { -// list the conversations of the current user awaiting response from the other person - global $THEME, $USER; - - if (!$course = get_record("course", "id", $dialogue->course)) { - error("Course is misconfigured"); - } - if (!$cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { - error("Course Module ID was incorrect"); - } - - $timenow = time(); - if ($conversations = dialogue_get_conversations($dialogue, $USER, "lastid = $USER->id AND closed = 0")) { - // reorder the conversations by (other) name - foreach ($conversations as $conversation) { - if ($USER->id != $conversation->userid) { - if (!$with = get_record("user", "id", $conversation->userid)) { - error("User's record not found"); - } - } - else { - if (!$with = get_record("user", "id", $conversation->recipientid)) { - error("User's record not found"); - } - } - $names[$conversation->id] = fullname($with); - } - natcasesort($names); - - print_simple_box_start("center"); - $table->head = array (get_string("dialoguewith", "dialogue"), get_string("subject", "dialogue"), - get_string("numberofentries", "dialogue"), get_string("lastentry", "dialogue"), - get_string("status", "dialogue")); - $table->width = "100%"; - $table->align = array ("left", "left", "center", "left", "left"); - $table->size = array ("*", "*", "*", "*", "*"); - $table->cellpadding = 2; - $table->cellspacing = 0; - - foreach ($names as $cid=>$name) { - if (!$conversation = get_record("dialogue_conversations", "id", $cid)) { - error("Closed conversations: could not find conversation record"); - } - $total = dialogue_count_entries($dialogue, $conversation); - $byuser = dialogue_count_entries($dialogue, $conversation, $USER); - if ($conversation->seenon) { - $status = get_string("seen", "dialogue", format_time($timenow - $conversation->seenon)); - } else { - $status = get_string("notyetseen", "dialogue"); - } - $table->data[] = array("id&action=printdialogue&cid=$conversation->id\">". - "$name", clean_text($conversation->subject), $byuser." ".get_string("of", "dialogue")." ".$total, - userdate($conversation->timemodified), $status); - } - print_table($table); - print_simple_box_end(); - } -} - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_list_conversations_self($dialogue) { -// list open conversations of the current user awaiting their reply - global $THEME, $USER; - - if (! $course = get_record("course", "id", $dialogue->course)) { - error("Course is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { - error("Course Module ID was incorrect"); - } - - // set up some general variables - $usehtmleditor = can_use_html_editor(); - - $timenow = time(); - $showbutton = false; - - echo "
\n"; - echo "\n"; - echo "id\" />\n"; - echo "\n"; - - // list the conversations requiring a resonse from this user in full - if ($conversations = dialogue_get_conversations($dialogue, $USER, "lastid != $USER->id AND closed = 0")) { - $showbutton = true; - print_simple_box_start("center"); - foreach ($conversations as $conversation) { - // set seenon if required - if (!$conversation->seenon) { - if (!set_field("dialogue_conversations", "seenon", $timenow, "id", $conversation->id)) { - error("List conversations self: could not set seenon"); - } - } - echo "\n"; - echo ""; - echo ""; - - if ($entries = get_records_select("dialogue_entries", "conversationid = $conversation->id", - "id")) { - foreach ($entries as $entry) { - if ($entry->userid == $USER->id) { - echo "\n"; - } - else { - echo "\n"; - } - } - } - - echo "\n"; - echo ""; - echo "
cellheading2\" valign=\"top\">\n"; - if ($conversation->userid == $USER->id) { - if (!$otheruser = get_record("user", "id", $conversation->recipientid)) { - error("User not found"); - } - } - else { - if (!$otheruser = get_record("user", "id", $conversation->userid)) { - error("User not found"); - } - } - // print_user_picture($user->id, $course->id, $user->picture); - echo "".get_string("dialoguewith", "dialogue", fullname($otheruser)). - "cellheading2\">".clean_text($conversation->subject)." 
\n"; - echo "
\n"; - if (!$conversation->subject) { - // conversation does not have a subject, show add subject link - echo "id&cid=$conversation->id&pane=2\">". - get_string("addsubject", "dialogue")."\n"; - helpbutton("addsubject", get_string("addsubject", "dialogue"), "dialogue"); - echo "  | "; - } - if (dialogue_count_entries($dialogue, $conversation)) { - echo "id&cid=$conversation->id&pane=1\">". - get_string("close", "dialogue")."\n"; - helpbutton("closedialogue", get_string("close", "dialogue"), "dialogue"); - } - else { - echo " "; - } - echo "
\n"; - echo text_to_html("".get_string("onyouwrote", "dialogue", - userdate($entry->timecreated)).":
".clean_text($entry->text)); - echo "
body\">\n"; - echo text_to_html("".get_string("onwrote", "dialogue", - userdate($entry->timecreated)." ".$otheruser->firstname). - ":
".clean_text($entry->text)); - echo "
\n"; - if ($entries) { - echo "".get_string("typereply", "dialogue")."\n"; - } - else { - echo "".get_string("typefirstentry", "dialogue")."\n"; - } - echo "
\n"; - helpbutton("writing", get_string("helpwriting"), "moodle", true, true); - echo "
"; - echo "
\n"; - // use a cumbersome name on the textarea is just historical :-) - print_textarea($usehtmleditor, 20, 75, 630, 300, "reply$conversation->id"); - echo "

\n"; - } - print_simple_box_end(); - use_html_editor(); - if ($showbutton) { - echo "
\n"; - echo "

\n"; - } - echo "
\n"; - } -} - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_print_conversation($dialogue, $conversation) { -// print a conversation and allow a new entry - global $THEME, $USER; - - if (! $course = get_record("course", "id", $dialogue->course)) { - error("Course is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { - error("Course Module ID was incorrect"); - } - - $timenow = time(); - $showbutton = false; - - echo "
\n"; - echo "\n"; - echo "id\" />\n"; - echo "\n"; - - $showbutton = true; - print_simple_box_start("center", "", $THEME->cellcontent2); - echo "\n"; - echo ""; - echo "\n"; - - if ($entries = get_records_select("dialogue_entries", "conversationid = $conversation->id", "id")) { - foreach ($entries as $entry) { - if ($entry->userid == $USER->id) { - echo "\n"; - } - echo "\n"; - echo ""; - echo "
cellheading2\" valign=\"top\">\n"; - if ($conversation->userid == $USER->id) { - if (!$otheruser = get_record("user", "id", $conversation->recipientid)) { - error("User not found"); - } - } - else { - if (!$otheruser = get_record("user", "id", $conversation->userid)) { - error("User not found"); - } - } - // print_user_picture($user->id, $course->id, $user->picture); - echo "".get_string("dialoguewith", "dialogue", fullname($otheruser)). - "cellheading2\">".clean_text($conversation->subject)." 
\n"; - echo "
\n"; - if (!$conversation->subject) { - // conversation does not have a subject, show add subject link - echo "id&cid=$conversation->id&pane=2\">". - get_string("addsubject", "dialogue")."\n"; - helpbutton("addsubject", get_string("addsubject", "dialogue"), "dialogue"); - echo "  | "; - } - echo "id&cid=$conversation->id&pane=2\">". - get_string("close", "dialogue")."\n"; - helpbutton("closedialogue", get_string("close", "dialogue"), "dialogue"); - echo "
\n"; - echo text_to_html("".get_string("onyouwrote", "dialogue", - userdate($entry->timecreated)).":
".clean_text($entry->text)); - } - else { - echo "
body\">\n"; - echo text_to_html("".get_string("onwrote", "dialogue", - userdate($entry->timecreated)." ".$otheruser->firstname).":
". - clean_text($entry->text)); - } - } - echo "
". - get_string("typefollowup", "dialogue")."
\n"; - helpbutton("writing", get_string("helpwriting"), "moodle", true, true); - echo "
"; - echo "
\n"; - // use a cumbersome name on the textarea for historical reasons :-) - $usehtmleditor = can_use_html_editor(); - print_textarea($usehtmleditor, 20, 75, 630, 300, "reply$conversation->id"); - use_html_editor(); - echo "

\n"; - print_simple_box_end(); - if ($showbutton) { - echo "
\n"; - echo "
\n"; - } - echo "
\n"; -} - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_print_tabbed_heading($tabs) { -// Prints a tabbed heading where one of the tabs highlighted. -// $tabs is an object with several properties. -// $tabs->names is an array of tab names -// $tabs->urls is an array of links -// $tabs->align is an array of column alignments (defaults to "center") -// $tabs->size is an array of column sizes -// $tabs->wrap is an array of "nowrap"s or nothing -// $tabs->highlight is an index (zero based) of "active" heading . -// $tabs->width is an percentage of the page (defualts to 80%) -// $tabs->cellpadding padding on each cell (defaults to 5) - - global $CFG, $THEME; - - if (isset($tabs->names)) { - foreach ($tabs->names as $key => $name) { - if (!empty($tabs->urls[$key])) { - $url =$tabs->urls[$key]; - if ($tabs->highlight == $key) { - $tabcontents[$key] = "$name"; - } else { - $tabcontents[$key] = "$name"; - } - } else { - $tabcontents[$key] = "$name"; - } - } - } - - if (empty($tabs->width)) { - $tabs->width = "80%"; - } - - if (empty($tabs->cellpadding)) { - $tabs->cellpadding = "5"; - } - - // print_simple_box_start("center", "$table->width", "#ffffff", 0); - echo "width\" border=\"0\" valign=\"top\" align=\"center\" "; - echo " cellpadding=\"$tabs->cellpadding\" cellspacing=\"0\" class=\"generaltable\">\n"; - - if (!empty($tabs->names)) { - echo ""; - echo "\n"; - foreach ($tabcontents as $key => $tab) { - if (isset($align[$key])) { - $alignment = "align=\"$align[$key]\""; - } else { - $alignment = "align=\"center\""; - } - if (isset($size[$key])) { - $width = "width=\"$size[$key]\""; - } else { - $width = ""; - } - if (isset($wrap[$key])) { - $wrapping = "no wrap"; - } else { - $wrapping = ""; - } - if ($key == $tabs->highlight) { - echo "\n"; - } else { - echo "\n"; - } - echo "\n"; - } - echo "\n"; - } else { - echo "\n"; - } - // bottom stripe - $ncells = count($tabs->names)*2 +1; - $height = 2; - echo "\n"; - echo "
". - "wwwroot/pix/spacer.gif\" alt=\"\" />cellheading2\">$tabcellheading\">$tab". - "wwwroot/pix/spacer.gif\" alt=\"\" />
No names specified
cellheading2\">". - "wwwroot/pix/spacer.gif\" alt=\"\" />
\n"; - // print_simple_box_end(); - - return true; -} - - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_show_conversation($dialogue, $conversation) { - global $THEME, $USER; - - if (! $course = get_record("course", "id", $dialogue->course)) { - error("Course is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { - error("Course Module ID was incorrect"); - } - - $timenow = time(); - print_simple_box_start("center"); - echo "\n"; - - echo ""; - echo ""; - echo ""; - - if ($entries = get_records_select("dialogue_entries", "conversationid = $conversation->id", "id")) { - foreach ($entries as $entry) { - if ($entry->userid == $USER->id) { - echo "\n"; - } - else { - echo "\n"; - } - } - } - echo "
cellheading2\" valign=\"top\">\n"; - if ($conversation->userid == $USER->id) { - if (!$otheruser = get_record("user", "id", $conversation->recipientid)) { - error("User not found"); - } - } - else { - if (!$otheruser = get_record("user", "id", $conversation->userid)) { - error("User not found"); - } - } - // print_user_picture($user->id, $course->id, $user->picture); - echo "".get_string("dialoguewith", "dialogue", fullname($otheruser)). - "cellheading2\" valign=\"top\">".clean_text($conversation->subject)." 
\n"; - echo text_to_html("".get_string("onyouwrote", "dialogue", - userdate($entry->timecreated)). - ":
".clean_text($entry->text)); - echo "
body\">\n"; - echo text_to_html("".get_string("onwrote", "dialogue", - userdate($entry->timecreated)." ".$otheruser->firstname).":
".clean_text($entry->text)); - echo "

\n"; - print_simple_box_end(); - print_continue("view.php?id=$cm->id&pane=3"); -} - - -////////////////////////////////////////////////////////////////////////////////////// -function dialogue_show_other_conversations($dialogue, $conversation) { -// prints the other CLOSED conversations for this pair of users - global $THEME; - - if (! $course = get_record("course", "id", $dialogue->course)) { - error("Course is misconfigured"); - } - if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { - error("Course Module ID was incorrect"); - } - - if (!$user = get_record("user", "id", $conversation->userid)) { - error("User not found"); - } - if (!$otheruser = get_record("user", "id", $conversation->recipientid)) { - error("User not found"); - } - - if ($conversations = get_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND - ((userid = $user->id AND recipientid = $otheruser->id) OR (userid = $otheruser->id AND - recipientid = $user->id)) AND closed = 1", "timemodified DESC")) { - if (count($conversations) > 1) { - $timenow = time(); - foreach ($conversations as $otherconversation) { - if ($conversation->id != $otherconversation->id) { - // for this conversation work out which is the other user - if ($otherconversation->userid == $user->id) { - if (!$otheruser = get_record("user", "id", $otherconversation->recipientid)) { - error("Show other conversations: could not get user record"); - } - } - else { - if (!$otheruser = get_record("user", "id", $otherconversation->userid)) { - error("Show other conversations: could not get user record"); - } - } - print_simple_box_start("center"); - echo "\n"; - echo ""; - echo ""; - echo ""; - if ($entries = get_records_select("dialogue_entries", - "conversationid = $otherconversation->id", "id")) { - foreach ($entries as $entry) { - if ($entry->userid == $user->id) { - echo "\n"; - } - else { - echo "\n"; - } - } - } - - echo "
cellheading2\" valign=\"top\">\n"; - // print_user_picture($otheruser->id, $course->id, $otheruser->picture); - echo "".get_string("dialoguewith", "dialogue", - fullname($otheruser))."cellheading2\" valign=\"top\">$otherconversation->subject 
\n"; - echo text_to_html("".get_string("onyouwrote", "dialogue", - userdate($entry->timecreated)).":
".clean_text($entry->text)); - echo "
body\">\n"; - echo text_to_html("".get_string("onwrote", "dialogue", - userdate($entry->timecreated)." ".$otheruser->firstname). - ":
".clean_text($entry->text)); - echo "

\n"; - print_simple_box_end(); - } - } - print_continue("view.php?id=$cm->id&pane=3"); - } - } -} - - -?> +id OR + recipientid = $user->id) AND lastid != $user->id AND closed = 0"); + } else { + return count_records_select("dialogue_conversations", "(userid = $USER->id OR + recipientid = $USER->id) AND lastid != $USER->id AND closed = 0"); + } +} + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_count_closed($dialogue, $user) { + + return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND + (userid = $user->id OR recipientid = $user->id) AND closed = 1"); + } + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_count_open($dialogue, $user) { + + return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND + (userid = $user->id OR recipientid = $user->id) AND closed = 0"); +} + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_count_needing_replies_other($dialogue, $user) { +// count [conversations] needing replies [from] other [person] + return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND + (userid = $user->id OR recipientid = $user->id) AND lastid = $user->id AND closed = 0"); +} + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_count_needing_replies_self($dialogue, $user) { +// count [conversations] needing replies [from] self + + return count_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND + (userid = $user->id OR recipientid = $user->id) AND lastid != $user->id AND closed = 0"); +} + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_get_participants($dialogueid) { +//Returns the users with data in one dialogue +//(users with records in dialogue_conversations, creators and receivers) + + global $CFG; + + //Get conversation's creators + $creators = get_records_sql("SELECT DISTINCT u.* + FROM {$CFG->prefix}user u, + {$CFG->prefix}dialogue_conversations c + WHERE c.dialogueid = '$dialogueid' and + u.id = c.userid"); + + //Get conversation's receivers + $receivers = get_records_sql("SELECT DISTINCT u.* + FROM {$CFG->prefix}user u, + {$CFG->prefix}dialogue_conversations c + WHERE c.dialogueid = '$dialogueid' and + u.id = c.recipientid"); + + //Add receivers to creators + if ($receivers) { + foreach ($receivers as $receiver) { + $creators[$receiver->id] = $receiver; + } + } + + //Return creators array (it contains an array of unique users, creators and receivers) + return ($creators); +} + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_get_available_users($dialogue) { + + if (! $course = get_record("course", "id", $dialogue->course)) { + error("Course is misconfigured"); + } + switch ($dialogue->dialoguetype) { + case 0 : // teacher to student + if (isteacher($course->id)) { + return dialogue_get_available_students($dialogue); + } + else { + return dialogue_get_available_teachers($dialogue); + } + case 1: // student to student + if (isstudent($course->id)) { + return dialogue_get_available_students($dialogue); + } + else { + return; + } + case 2: // everyone + if ($teachers = dialogue_get_available_teachers($dialogue)) { + foreach ($teachers as $userid=>$name) { + $names[$userid] = $name; + } + $names[-1] = "-------------"; + } + if ($students = dialogue_get_available_students($dialogue)) { + foreach ($students as $userid=>$name) { + $names[$userid] = $name; + } + } + if (isset($names)) { + return $names; + } + return; + } +} + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_get_available_students($dialogue) { +global $USER; + + if (! $course = get_record("course", "id", $dialogue->course)) { + error("Course is misconfigured"); + } + if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { + error("Course Module ID was incorrect"); + } + + $groupid = get_current_group($course->id); + // add current group before list of students if it's the teacher + if (isteacher($course->id) and groupmode($course, $cm)) { + // show teacher their current group + if ($groupid) { + if (!$group = get_record("groups", "id", $groupid)) { + error("Dialogue get available students: group not found"); + } + $gnames["g$groupid"] = $group->name; + } else { // all participants + $gnames["g0"] = get_string("allparticipants"); + } + $gnames["spacer"] = "------------"; + } + // get the students on this course (default sort order)... + if ($users = get_course_students($course->id)) { + foreach ($users as $otheruser) { + // ...exclude self and... + if ($USER->id != $otheruser->id) { + // ...if teacher and groups then exclude students not in the current group + if (isteacher($course->id) and groupmode($course, $cm) and $groupid) { + if (!ismember($groupid, $otheruser->id)) { + continue; + } + } + // ...if student and groupmode is SEPARATEGROUPS then exclude students not in student's group + if (isstudent($course->id) and (groupmode($course, $cm) == SEPARATEGROUPS)) { + if (!ismember($groupid, $otheruser->id)) { + continue; + } + } + // ... and any already in any open conversations unless multiple conversations allowed + if ($dialogue->multipleconversations or count_records_select("dialogue_conversations", + "dialogueid = $dialogue->id AND + ((userid = $USER->id AND recipientid = $otheruser->id) OR + (userid = $otheruser->id AND recipientid = $USER->id)) AND closed = 0") == 0) { + $names[$otheruser->id] = fullname($otheruser); + } + } + } + } + if (isset($gnames)) { + $list = $gnames; + } + if (isset($names)) { + natcasesort($names); + if (isset($list)) { + $list += $names; + } else { + $list = $names; + } + } + if (isset($list)) { + return $list; + } else { + return; + } +} + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_get_available_teachers($dialogue) { +global $USER; + + if (! $course = get_record("course", "id", $dialogue->course)) { + error("Course is misconfigured"); + } + if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { + error("Course Module ID was incorrect"); + } + + $groupid = get_current_group($course->id); + // get the teachers on this course (default sort order)... + if ($users = get_course_teachers($course->id)) { + // $names[0] = "-----------------------"; + foreach ($users as $otheruser) { + // ...exclude self and ... + if ($USER->id != $otheruser->id) { + // ...if groupmode is SEPARATEGROUPS then exclude teachers not in student's group + if ($groupid and (groupmode($course, $cm) == SEPARATEGROUPS)) { + if (!ismember($groupid, $otheruser->id)) { + continue; + } + } + // ...any already in open conversations unless multiple conversations allowed + if ($dialogue->multipleconversations or count_records_select("dialogue_conversations", + "dialogueid = $dialogue->id AND ((userid = $USER->id AND + recipientid = $otheruser->id) OR (userid = $otheruser->id AND + recipientid = $USER->id)) AND closed = 0") == 0) { + $names[$otheruser->id] = fullname($otheruser); + } + } + } + } + if (isset($names)) { + natcasesort($names); + return $names; + } + return; +} + + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_get_users_done($dialogue) { + global $CFG; + + // make sure it works on the site course + $select = "s.course = '$dialogue->course' AND"; + if ($courseid == SITEID) { + $select = ''; + } + if (!$students = get_records_sql("SELECT u.* + FROM {$CFG->prefix}user u, + {$CFG->prefix}user_students s, + {$CFG->prefix}dialogue_entries j + WHERE ($select s.userid = u.id) + AND u.id = j.userid + AND j.dialogue = '$dialogue->id' + ORDER BY j.modified DESC")) { + $students = array(); + } + if (!$teachers = get_records_sql("SELECT u.* + FROM {$CFG->prefix}user u, + {$CFG->prefix}user_teachers s, + {$CFG->prefix}dialogue_entries j + WHERE (s.course = '$dialogue->course' AND s.userid = u.id) + AND u.id = j.userid + AND j.dialogue = '$dialogue->id' + ORDER BY j.modified DESC")) { + $teachers = array(); + } + return $teachers + $students; + +// The following original version is very inefficient on large sites +// return get_records_sql("SELECT u.* +// FROM {$CFG->prefix}user u, +// {$CFG->prefix}user_students s, +// {$CFG->prefix}user_teachers t, +// {$CFG->prefix}dialogue_entries j +// WHERE ((s.course = '$dialogue->course' AND s.userid = u.id) +// OR (t.course = '$dialogue->course' AND t.userid = u.id)) +// AND u.id = j.userid +// AND j.dialogue = '$dialogue->id' +// ORDER BY j.modified DESC"); +} + + +// OTHER dialogue FUNCTIONS /////////////////////////////////////////////////////////////////// + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_list_conversations_closed($dialogue) { +// list the closed for the current user + global $USER; + + if (! $course = get_record("course", "id", $dialogue->course)) { + error("Course is misconfigured"); + } + if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { + error("Course Module ID was incorrect"); + } + + if ($conversations = dialogue_get_conversations($dialogue, $USER, "closed = 1")) { + // reorder the conversations by (other) name + foreach ($conversations as $conversation) { + if ($USER->id != $conversation->userid) { + if (!$with = get_record("user", "id", $conversation->userid)) { + error("User's record not found"); + } + } + else { + if (!$with = get_record("user", "id", $conversation->recipientid)) { + error("User's record not found"); + } + } + $names[$conversation->id] = fullname($with); + } + natcasesort($names); + + print_simple_box_start("center"); + $table->head = array (get_string("dialoguewith", "dialogue"), get_string("subject", "dialogue"), + get_string("numberofentries", "dialogue"), get_string("lastentry", "dialogue"), + get_string("status", "dialogue")); + $table->width = "100%"; + $table->align = array ("left", "left", "center", "left", "left"); + $table->size = array ("*", "*", "*", "*", "*"); + $table->cellpadding = 2; + $table->cellspacing = 0; + + foreach ($names as $cid=>$name) { + if (!$conversation = get_record("dialogue_conversations", "id", $cid)) { + error("Closed conversations: could not find conversation record"); + } + $total = dialogue_count_entries($dialogue, $conversation); + $byuser = dialogue_count_entries($dialogue, $conversation, $USER); + if ($conversation->closed) { + $status = get_string("closed", "dialogue"); + } else { + $status = get_string("open", "dialogue"); + } + $table->data[] = array("id&action=showdialogues&cid=$conversation->id\">". + "$name", clean_text($conversation->subject), $byuser." ".get_string("of", "dialogue")." ".$total, + userdate($conversation->timemodified), $status); + } + print_table($table); + print_simple_box_end(); + } +} + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_list_conversations_other($dialogue) { +// list the conversations of the current user awaiting response from the other person + global $THEME, $USER; + + if (!$course = get_record("course", "id", $dialogue->course)) { + error("Course is misconfigured"); + } + if (!$cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { + error("Course Module ID was incorrect"); + } + + $timenow = time(); + if ($conversations = dialogue_get_conversations($dialogue, $USER, "lastid = $USER->id AND closed = 0")) { + // reorder the conversations by (other) name + foreach ($conversations as $conversation) { + if ($USER->id != $conversation->userid) { + if (!$with = get_record("user", "id", $conversation->userid)) { + error("User's record not found"); + } + } + else { + if (!$with = get_record("user", "id", $conversation->recipientid)) { + error("User's record not found"); + } + } + $names[$conversation->id] = fullname($with); + } + natcasesort($names); + + print_simple_box_start("center"); + $table->head = array (get_string("dialoguewith", "dialogue"), get_string("subject", "dialogue"), + get_string("numberofentries", "dialogue"), get_string("lastentry", "dialogue"), + get_string("status", "dialogue")); + $table->width = "100%"; + $table->align = array ("left", "left", "center", "left", "left"); + $table->size = array ("*", "*", "*", "*", "*"); + $table->cellpadding = 2; + $table->cellspacing = 0; + + foreach ($names as $cid=>$name) { + if (!$conversation = get_record("dialogue_conversations", "id", $cid)) { + error("Closed conversations: could not find conversation record"); + } + $total = dialogue_count_entries($dialogue, $conversation); + $byuser = dialogue_count_entries($dialogue, $conversation, $USER); + if ($conversation->seenon) { + $status = get_string("seen", "dialogue", format_time($timenow - $conversation->seenon)); + } else { + $status = get_string("notyetseen", "dialogue"); + } + $table->data[] = array("id&action=printdialogue&cid=$conversation->id\">". + "$name", clean_text($conversation->subject), $byuser." ".get_string("of", "dialogue")." ".$total, + userdate($conversation->timemodified), $status); + } + print_table($table); + print_simple_box_end(); + } +} + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_list_conversations_self($dialogue) { +// list open conversations of the current user awaiting their reply + global $THEME, $USER; + + if (! $course = get_record("course", "id", $dialogue->course)) { + error("Course is misconfigured"); + } + if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { + error("Course Module ID was incorrect"); + } + + // set up some general variables + $usehtmleditor = can_use_html_editor(); + + $timenow = time(); + $showbutton = false; + + echo "
\n"; + echo "\n"; + echo "id\" />\n"; + echo "\n"; + + // list the conversations requiring a resonse from this user in full + if ($conversations = dialogue_get_conversations($dialogue, $USER, "lastid != $USER->id AND closed = 0")) { + $showbutton = true; + print_simple_box_start("center"); + foreach ($conversations as $conversation) { + // set seenon if required + if (!$conversation->seenon) { + if (!set_field("dialogue_conversations", "seenon", $timenow, "id", $conversation->id)) { + error("List conversations self: could not set seenon"); + } + } + echo "\n"; + echo ""; + echo ""; + + if ($entries = get_records_select("dialogue_entries", "conversationid = $conversation->id", + "id")) { + foreach ($entries as $entry) { + if ($entry->userid == $USER->id) { + echo "\n"; + } + else { + echo "\n"; + } + } + } + + echo "\n"; + echo ""; + echo "
cellheading2\" valign=\"top\">\n"; + if ($conversation->userid == $USER->id) { + if (!$otheruser = get_record("user", "id", $conversation->recipientid)) { + error("User not found"); + } + } + else { + if (!$otheruser = get_record("user", "id", $conversation->userid)) { + error("User not found"); + } + } + // print_user_picture($user->id, $course->id, $user->picture); + echo "".get_string("dialoguewith", "dialogue", fullname($otheruser)). + "cellheading2\">".clean_text($conversation->subject)." 
\n"; + echo "
\n"; + if (!$conversation->subject) { + // conversation does not have a subject, show add subject link + echo "id&cid=$conversation->id&pane=2\">". + get_string("addsubject", "dialogue")."\n"; + helpbutton("addsubject", get_string("addsubject", "dialogue"), "dialogue"); + echo "  | "; + } + if (dialogue_count_entries($dialogue, $conversation)) { + echo "id&cid=$conversation->id&pane=1\">". + get_string("close", "dialogue")."\n"; + helpbutton("closedialogue", get_string("close", "dialogue"), "dialogue"); + } + else { + echo " "; + } + echo "
\n"; + echo text_to_html("".get_string("onyouwrote", "dialogue", + userdate($entry->timecreated)).":
".clean_text($entry->text)); + echo "
body\">\n"; + echo text_to_html("".get_string("onwrote", "dialogue", + userdate($entry->timecreated)." ".$otheruser->firstname). + ":
".clean_text($entry->text)); + echo "
\n"; + if ($entries) { + echo "".get_string("typereply", "dialogue")."\n"; + } + else { + echo "".get_string("typefirstentry", "dialogue")."\n"; + } + echo "
\n"; + helpbutton("writing", get_string("helpwriting"), "moodle", true, true); + echo "
"; + echo "
\n"; + // use a cumbersome name on the textarea is just historical :-) + print_textarea($usehtmleditor, 20, 75, 630, 300, "reply$conversation->id"); + echo "

\n"; + } + print_simple_box_end(); + use_html_editor(); + if ($showbutton) { + echo "
\n"; + echo "

\n"; + } + echo "
\n"; + } +} + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_print_conversation($dialogue, $conversation) { +// print a conversation and allow a new entry + global $THEME, $USER; + + if (! $course = get_record("course", "id", $dialogue->course)) { + error("Course is misconfigured"); + } + if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { + error("Course Module ID was incorrect"); + } + + $timenow = time(); + $showbutton = false; + + echo "
\n"; + echo "\n"; + echo "id\" />\n"; + echo "\n"; + + $showbutton = true; + print_simple_box_start("center", "", $THEME->cellcontent2); + echo "\n"; + echo ""; + echo "\n"; + + if ($entries = get_records_select("dialogue_entries", "conversationid = $conversation->id", "id")) { + foreach ($entries as $entry) { + if ($entry->userid == $USER->id) { + echo "\n"; + } + echo "\n"; + echo ""; + echo "
cellheading2\" valign=\"top\">\n"; + if ($conversation->userid == $USER->id) { + if (!$otheruser = get_record("user", "id", $conversation->recipientid)) { + error("User not found"); + } + } + else { + if (!$otheruser = get_record("user", "id", $conversation->userid)) { + error("User not found"); + } + } + // print_user_picture($user->id, $course->id, $user->picture); + echo "".get_string("dialoguewith", "dialogue", fullname($otheruser)). + "cellheading2\">".clean_text($conversation->subject)." 
\n"; + echo "
\n"; + if (!$conversation->subject) { + // conversation does not have a subject, show add subject link + echo "id&cid=$conversation->id&pane=2\">". + get_string("addsubject", "dialogue")."\n"; + helpbutton("addsubject", get_string("addsubject", "dialogue"), "dialogue"); + echo "  | "; + } + echo "id&cid=$conversation->id&pane=2\">". + get_string("close", "dialogue")."\n"; + helpbutton("closedialogue", get_string("close", "dialogue"), "dialogue"); + echo "
\n"; + echo text_to_html("".get_string("onyouwrote", "dialogue", + userdate($entry->timecreated)).":
".clean_text($entry->text)); + } + else { + echo "
body\">\n"; + echo text_to_html("".get_string("onwrote", "dialogue", + userdate($entry->timecreated)." ".$otheruser->firstname).":
". + clean_text($entry->text)); + } + } + echo "
". + get_string("typefollowup", "dialogue")."
\n"; + helpbutton("writing", get_string("helpwriting"), "moodle", true, true); + echo "
"; + echo "
\n"; + // use a cumbersome name on the textarea for historical reasons :-) + $usehtmleditor = can_use_html_editor(); + print_textarea($usehtmleditor, 20, 75, 630, 300, "reply$conversation->id"); + use_html_editor(); + echo "

\n"; + print_simple_box_end(); + if ($showbutton) { + echo "
\n"; + echo "
\n"; + } + echo "
\n"; +} + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_print_tabbed_heading($tabs) { +// Prints a tabbed heading where one of the tabs highlighted. +// $tabs is an object with several properties. +// $tabs->names is an array of tab names +// $tabs->urls is an array of links +// $tabs->align is an array of column alignments (defaults to "center") +// $tabs->size is an array of column sizes +// $tabs->wrap is an array of "nowrap"s or nothing +// $tabs->highlight is an index (zero based) of "active" heading . +// $tabs->width is an percentage of the page (defualts to 80%) +// $tabs->cellpadding padding on each cell (defaults to 5) + + global $CFG, $THEME; + + if (isset($tabs->names)) { + foreach ($tabs->names as $key => $name) { + if (!empty($tabs->urls[$key])) { + $url =$tabs->urls[$key]; + if ($tabs->highlight == $key) { + $tabcontents[$key] = "$name"; + } else { + $tabcontents[$key] = "$name"; + } + } else { + $tabcontents[$key] = "$name"; + } + } + } + + if (empty($tabs->width)) { + $tabs->width = "80%"; + } + + if (empty($tabs->cellpadding)) { + $tabs->cellpadding = "5"; + } + + // print_simple_box_start("center", "$table->width", "#ffffff", 0); + echo "width\" border=\"0\" valign=\"top\" align=\"center\" "; + echo " cellpadding=\"$tabs->cellpadding\" cellspacing=\"0\" class=\"generaltable\">\n"; + + if (!empty($tabs->names)) { + echo ""; + echo "\n"; + foreach ($tabcontents as $key => $tab) { + if (isset($align[$key])) { + $alignment = "align=\"$align[$key]\""; + } else { + $alignment = "align=\"center\""; + } + if (isset($size[$key])) { + $width = "width=\"$size[$key]\""; + } else { + $width = ""; + } + if (isset($wrap[$key])) { + $wrapping = "no wrap"; + } else { + $wrapping = ""; + } + if ($key == $tabs->highlight) { + echo "\n"; + } else { + echo "\n"; + } + echo "\n"; + } + echo "\n"; + } else { + echo "\n"; + } + // bottom stripe + $ncells = count($tabs->names)*2 +1; + $height = 2; + echo "\n"; + echo "
". + "wwwroot/pix/spacer.gif\" alt=\"\" />cellheading2\">$tabcellheading\">$tab". + "wwwroot/pix/spacer.gif\" alt=\"\" />
No names specified
cellheading2\">". + "wwwroot/pix/spacer.gif\" alt=\"\" />
\n"; + // print_simple_box_end(); + + return true; +} + + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_show_conversation($dialogue, $conversation) { + global $THEME, $USER; + + if (! $course = get_record("course", "id", $dialogue->course)) { + error("Course is misconfigured"); + } + if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { + error("Course Module ID was incorrect"); + } + + $timenow = time(); + print_simple_box_start("center"); + echo "\n"; + + echo ""; + echo ""; + echo ""; + + if ($entries = get_records_select("dialogue_entries", "conversationid = $conversation->id", "id")) { + foreach ($entries as $entry) { + if ($entry->userid == $USER->id) { + echo "\n"; + } + else { + echo "\n"; + } + } + } + echo "
cellheading2\" valign=\"top\">\n"; + if ($conversation->userid == $USER->id) { + if (!$otheruser = get_record("user", "id", $conversation->recipientid)) { + error("User not found"); + } + } + else { + if (!$otheruser = get_record("user", "id", $conversation->userid)) { + error("User not found"); + } + } + // print_user_picture($user->id, $course->id, $user->picture); + echo "".get_string("dialoguewith", "dialogue", fullname($otheruser)). + "cellheading2\" valign=\"top\">".clean_text($conversation->subject)." 
\n"; + echo text_to_html("".get_string("onyouwrote", "dialogue", + userdate($entry->timecreated)). + ":
".clean_text($entry->text)); + echo "
body\">\n"; + echo text_to_html("".get_string("onwrote", "dialogue", + userdate($entry->timecreated)." ".$otheruser->firstname).":
".clean_text($entry->text)); + echo "

\n"; + print_simple_box_end(); + print_continue("view.php?id=$cm->id&pane=3"); +} + + +////////////////////////////////////////////////////////////////////////////////////// +function dialogue_show_other_conversations($dialogue, $conversation) { +// prints the other CLOSED conversations for this pair of users + global $THEME; + + if (! $course = get_record("course", "id", $dialogue->course)) { + error("Course is misconfigured"); + } + if (! $cm = get_coursemodule_from_instance("dialogue", $dialogue->id, $course->id)) { + error("Course Module ID was incorrect"); + } + + if (!$user = get_record("user", "id", $conversation->userid)) { + error("User not found"); + } + if (!$otheruser = get_record("user", "id", $conversation->recipientid)) { + error("User not found"); + } + + if ($conversations = get_records_select("dialogue_conversations", "dialogueid = $dialogue->id AND + ((userid = $user->id AND recipientid = $otheruser->id) OR (userid = $otheruser->id AND + recipientid = $user->id)) AND closed = 1", "timemodified DESC")) { + if (count($conversations) > 1) { + $timenow = time(); + foreach ($conversations as $otherconversation) { + if ($conversation->id != $otherconversation->id) { + // for this conversation work out which is the other user + if ($otherconversation->userid == $user->id) { + if (!$otheruser = get_record("user", "id", $otherconversation->recipientid)) { + error("Show other conversations: could not get user record"); + } + } + else { + if (!$otheruser = get_record("user", "id", $otherconversation->userid)) { + error("Show other conversations: could not get user record"); + } + } + print_simple_box_start("center"); + echo "\n"; + echo ""; + echo ""; + echo ""; + if ($entries = get_records_select("dialogue_entries", + "conversationid = $otherconversation->id", "id")) { + foreach ($entries as $entry) { + if ($entry->userid == $user->id) { + echo "\n"; + } + else { + echo "\n"; + } + } + } + + echo "
cellheading2\" valign=\"top\">\n"; + // print_user_picture($otheruser->id, $course->id, $otheruser->picture); + echo "".get_string("dialoguewith", "dialogue", + fullname($otheruser))."cellheading2\" valign=\"top\">$otherconversation->subject 
\n"; + echo text_to_html("".get_string("onyouwrote", "dialogue", + userdate($entry->timecreated)).":
".clean_text($entry->text)); + echo "
body\">\n"; + echo text_to_html("".get_string("onwrote", "dialogue", + userdate($entry->timecreated)." ".$otheruser->firstname). + ":
".clean_text($entry->text)); + echo "

\n"; + print_simple_box_end(); + } + } + print_continue("view.php?id=$cm->id&pane=3"); + } + } +} + + +?>