function wiki_print_menu_groups_and_students($listgroups, $listgroupsmembers, &$WS) { //this function prints the groupmode menu with the students global $CFG, $COURSE, $USER; if (empty($listgroupsmembers)) { return; } $wikimanager = wiki_manager_get_instance(); $wikipersistor = new wiki_persistor(); //if we are in visible groups with separate students //and the user is not a teacher or admin //then we don't take his group in the menu list $context = get_context_instance(CONTEXT_MODULE, $WS->cm->id); //if((($WS->dfwiki->groupmode == 1) && ($WS->cm->studentmode == 2)) if (isset($WS->cm->groupmode) && $WS->cm->groupmode == 1 && $WS->dfwiki->studentmode > 0 && !has_capability('mod/wiki:editanywiki', $context)) { $usergroupids = $wikipersistor->get_groupid_by_userid_and_courseid($USER->id, $COURSE->id); $userid = array(); foreach ($usergroupids as $usergroup) { $userid[] = $usergroup->groupid; } foreach ($listgroups as $key => $group) { if (!in_array($group->id, $userid)) { unset($listgroups[$key]); } } } if (isset($WS->cm->groupmode) && $WS->cm->groupmode == 1 && $WS->dfwiki->studentmode == 1 && !has_capability('mod/wiki:editanywiki', $context)) { foreach ($listgroupsmembers as $key => $member) { foreach ($usergroupids as $usergroup) { if ($member->groupid == $usergroup->groupid && $member->id != $USER->id) { unset($listgroupsmembers[$key]); } } } } //if((($WS->dfwiki->groupmode == 2) && ($WS->cm->studentmode == 1)) if (isset($WS->cm->groupmode) && $WS->cm->groupmode == 2 && $WS->dfwiki->studentmode == 1 && !has_capability('mod/wiki:editanywiki', $context)) { //the user group $usergroupids = $wikipersistor->get_groupid_by_userid_and_courseid($USER->id, $COURSE->id); $listgroups = $wikimanager->get_course_groups($COURSE->id); //Course students list without the user group //We take the groups, and id, firstname and lastname of the students //$listgroupmembers = $wikimanager->get_course_members($COURSE->id); foreach ($listgroupsmembers as $key => $member) { foreach ($usergroupids as $usergroup) { if ($member->groupid == $usergroup->groupid && $member->id != $USER->id) { unset($listgroupsmembers[$key]); //break; } } } } $cm->id = isset($WS->dfcourse) ? $COURSE->id : $WS->cm->id; $prop = null; $prop->type = "text/javascript"; $info = ' //<![CDATA[ function wiki_select_group(groups, groupstudent){ var i=0; var j=0; var k=0; var numstudents=0 ; var numgroups=0; numgroups = groups.length; for(i=0; i<numgroups; i++){ numstudents = groupstudent[i].length; for(j=0; j<numstudents; j++){ if((document.forms[\'form_sel_group\'].selectstudent.options[k].selected)&&(document.forms[\'form_sel_group\'].selectstudent.options[k].value == groupstudent[i][j])){ document.forms[\'form_sel_group\'].selectgroup.value = groups[i]; } k++; } } } var groups = new Array();'; $ind = 0; foreach ($listgroups as $lgroup) { $info .= "\n groups[{$ind}] = '{$lgroup->id}';"; $ind++; } if (has_capability('mod/wiki:editawiki', get_context_instance(CONTEXT_MODULE, $cm->id))) { $info .= "\n\t\t\tgroups[{$ind}] = '0';"; } else { if (isset($usergroupids)) { foreach ($usergroupids as $usergroup) { $info .= "\n\t\t\t\t groups[{$ind}] = '{$usergroup->groupid}';"; } } } $info .= ' var groupstudent = new Array(); //]]>'; wiki_script($info, $prop); $prop = null; $prop->border = "0"; $prop->class = "boxalignright"; $prop->classtd = "nwikileftnow"; wiki_table_start($prop); $group = get_field('groups_members', 'id', 'groupid', $WS->groupmember->groupid, 'userid', $WS->member->id); if (!empty($group) and isset($listgroupsmembers[$group])) { echo get_string('viewpagestudent', 'wiki') . $listgroupsmembers[$group]->lastname . ', ' . $listgroupsmembers[$group]->firstname; wiki_table_end(); $prop = null; $prop->border = "0"; $prop->class = "boxalignright"; $prop->classtd = "nwikileftnow"; wiki_table_start($prop); } print_string('anotherstudent', 'wiki'); wiki_change_column(); $prop = null; $prop->id = "form_sel_group"; $prop->method = "post"; $prop->action = 'view.php?id=' . $cm->id; wiki_form_start($prop); wiki_div_start(); $i = 0; $opt = null; $opt2 = null; foreach ($listgroups as $lgroup) { $liststudentsingroup[$i] = wiki_students_in_a_group($lgroup->id, $listgroupsmembers); $j = 0; $prop = null; $prop->type = "text/javascript"; $info = "groupstudent[{$i}] = new Array();"; wiki_script($info, $prop); foreach ($liststudentsingroup[$i] as $lstudentsingroup) { $prop = null; $prop->value = $lstudentsingroup->id; $opt .= wiki_option($lstudentsingroup->lastname . ', ' . $lstudentsingroup->firstname, $prop, true); $prop = null; $prop->type = "text/javascript"; $info = "groupstudent[{$i}][{$j}]= '{$lstudentsingroup->id}';"; wiki_script($info, $prop); $j++; } if ($WS->cm->groupmode != 0) { $prop = null; $prop->label = $lgroup->name; $opt2 .= wiki_optgroup($opt, $prop, true); $opt = null; } $i++; } if (has_capability('mod/wiki:editawiki', get_context_instance(CONTEXT_MODULE, $cm->id))) { $prop = null; $prop->value = $USER->id; $opt .= wiki_option($USER->lastname . ', ' . $USER->firstname, $prop, true); $prop = null; $prop->type = "text/javascript"; $info = "groupstudent[{$i}] = new Array(); groupstudent[{$i}][0] = {$USER->id};"; wiki_script($info, $prop); $prop = null; $prop->label = "teacher"; $opt2 .= wiki_optgroup($opt, $prop, true); $opt = null; } else { if (isset($usergroupid)) { $prop = null; $prop->value = $USER->id; $opt .= wiki_option($USER->lastname . ', ' . $USER->firstname, $prop, true); $prop = null; $prop->type = "text/javascript"; $info = "groupstudent[{$i}] = new Array(); groupstudent[{$i}][0] = {$USER->id};"; wiki_script($info, $prop); $prop = null; $prop->label = "user"; $opt2 .= wiki_optgroup($opt, $prop, true); $opt = null; } } $prop = null; $prop->id = "selectstudent"; $prop->name = "dfformselectstudent"; $prop->events = 'onchange="javascript:wiki_select_group(groups, groupstudent)"'; wiki_select($opt2, $prop); $prop = null; $prop->id = "selectgroup"; $prop->name = "dfformselectgroup"; wiki_input_hidden($prop); $prop = null; $prop->type = "text/javascript"; $info = "this.wiki_select_group(groups, groupstudent)"; wiki_script($info, $prop); $prop = null; $prop->value = get_string("continue"); wiki_input_submit($prop); wiki_div_end(); wiki_form_end(); wiki_table_end(); }
/** * This function tests the whole class wiki manager. * By the moment this functionis not implemented but test is prepared */ function test_wiki_persistor() { //First of all test wiki and wiki page are preparated. $wiki = new stdClass(); $wiki_page = new stdClass(); // Create a default wiki. $wiki->course = 0; $wiki->name = 'WikiUnitSimpleTest'; $wiki->intro = 'Simple Test to wiki class'; $wiki->introformat = 1; $wiki->pagename = 'First Page Test'; // Test with past time: Tuesday, 15 May 2007 17:45 $wiki->timemodified = 1171902549; $wiki->editable = 1; $wiki->attach = 0; $wiki->restore = 0; $wiki->editor = 'dfwiki'; $wiki->studentmode = 1; $wiki->teacherdiscussion = 0; $wiki->studentdiscussion = 0; $wiki->evaluation = 'noeval'; $wiki->notetype = 'quant'; $wiki->editanothergroup = 0; $wiki->editanotherstudent = 0; $wiki->votemode = 0; $wiki->listofteachers = 0; $wiki->editorrows = 40; $wiki->editorcols = 60; $wiki->wikicourse = 0; // Create a default wiki_page. $wiki_page->pagename = "SimpleTest Name"; $wiki_page->version = 2; $wiki_page->content = "This is the wiki page content."; $wiki_page->author = "Laura"; $wiki_page->userid = 3; // Test with past time: Wednesday, 30 May 2007 19:42 $wiki_page->created = 1180546919; $wiki_page->lastmodified = 1180546944; $wiki_page->refs = "http://morfeo.upc.es/crom/course/view.php?id=4"; $wiki_page->hits = 1; $wiki_page->editable = 1; $wiki_page->highlight = 1; $wiki_page->dfwiki = 25; $wiki_page->editor = "nwiki"; $wiki_page->groupid = 0; $wiki_page->ownerid = 0; $wiki_page->evaluation = ""; $id = insert_record("wiki", $wiki); $wiki->id = $id; $wiki_object = new wiki(RECORD, $wiki); $id_page = insert_record("wiki_pages", $wiki_page); $wiki_page->id = $id_page; $wiki_page_object = new wiki_page(RECORD, $wiki_page); $wiki_persistor = new wiki_persistor(); $message = 'Whether wikis gets by the id are the same'; $this->assertEqual($wiki_persistor->get_wiki_by_id($id), $wiki_object, $message); $message = 'Whether wiki pages gets by id are the same'; $this->assertEqual($wiki_persistor->get_wiki_page_by_id($id_page), $wiki_page_object, $message); delete_records("wiki", 'id', $id); delete_records("wiki_pages", 'id', $id_page); }