';
+ ///2 ways to do this, 1. we can changed the setup_and_print_groups functions
+ ///in moodlelib, taking in 1 more parameter, and tell the function when to
+ ///allow student menus, 2, we can just use this code to explicitly print this
+ ///menu for students in forums.
+
+ //now we need a menu for separategroups as well!
if ($groupmode == VISIBLEGROUPS or ($groupmode and isteacheredit($course->id))) {
+ //the following query really needs to change
if ($groups = get_records_menu("groups", "courseid", $course->id, "name ASC", "id,name")) {
echo '| ';
print_group_menu($groups, $groupmode, $currentgroup, "view.php?id=$cm->id");
@@ -111,6 +119,23 @@
}
}
+ //only print menus the student is in any course
+ else if ($groupmode == SEPARATEGROUPS){
+ $validgroups = array();
+ //get all the groups this guy is in in this course
+
+ if ($p = user_group($course->id,$USER->id)){
+ //extract the name and id for the group
+ foreach ($p as $index => $object){
+ $validgroups[$object->id] = $object->name;
+ }
+ //print_r($validgroups);
+ echo ' | ';
+ //print them in the menu
+ print_group_menu($validgroups, $groupmode, $currentgroup, "view.php?id=$cm->id",0);
+ echo ' | ';
+ }
+ }
if (!empty($USER->id)) {
echo '';
@@ -248,6 +273,8 @@
} else {
forum_print_latest_discussions($course, $forum, $CFG->forum_manydiscussions, 'header', '', $currentgroup, $groupmode, $page);
}
+
+
break;
}
diff --git a/mod/wiki/lib.php b/mod/wiki/lib.php
index 6d65174c724..d2ebfcf6864 100644
--- a/mod/wiki/lib.php
+++ b/mod/wiki/lib.php
@@ -357,12 +357,9 @@ function wiki_get_default_entry(&$wiki, &$course, $userid=0, $groupid=0) {
/// Optionally, will return wiki entry for $userid student wiki, or
/// $groupid group or teacher wiki.
/// Creates one if it needs to and it can.
-
global $USER;
-
/// If the wiki entry doesn't exist, can this user create it?
if (($wiki_entry = wiki_get_entry($wiki, $course, $userid, $groupid)) === false) {
-
if (wiki_can_add_entry($wiki, $USER, $course, $userid, $groupid)) {
wiki_add_entry($wiki, $course, $userid, $groupid);
if (($wiki_entry = wiki_get_entry($wiki, $course, $userid, $groupid)) === false) {
@@ -370,6 +367,7 @@ function wiki_get_default_entry(&$wiki, &$course, $userid=0, $groupid=0) {
}
}
}
+ //print_object($wiki_entry);
return $wiki_entry;
}
@@ -400,15 +398,18 @@ function wiki_get_entry(&$wiki, &$course, $userid=0, $groupid=0) {
case 'group':
/// If there is a groupmode, get the user's group id.
$groupmode = groupmode($course, $wiki);
-
+ //echo "groupid is in wiki_get_entry ".$groupid." ";
/// If a specific group was requested, return it, if allowed.
if ($groupid and wiki_user_can_access_group_wiki($wiki, $groupid, $course)) {
$wentry = wiki_get_group_entry($wiki, $groupid);
}
else if ($groupmode) {
+ $mygroupids = mygroupid($course->id);
/// If there is no entry for this user, check if this user is a teacher.
- if (!$wentry = wiki_get_group_entry($wiki, mygroupid($course->id))) {
-/* if (isteacher($course->id, $USER->id)) {
+ //this is broken for multiple groups /*mygroupid($course->id)*/
+ //while ($groupindex < size(mygroupids) AND !$wentry = wiki_get_group_entry($))
+ if (!$wentry = wiki_get_group_entry($wiki, $mygroupids[0])){//always default to first group it returns, can change later!
+ /* if (isteacher($course->id, $USER->id)) {
/// If this user is a teacher, return the first entry.
if ($wentries = wiki_get_entries($wiki)) {
$wentry = current($wentries);
@@ -425,7 +426,8 @@ function wiki_get_entry(&$wiki, &$course, $userid=0, $groupid=0) {
case 'teacher':
/// If there is a groupmode, get the user's group id.
if (groupmode($course, $wiki)) {
- $groupid = $groupid ? $groupid : mygroupid($course->id);
+ $mygroupids = mygroupid($course->id);//same here, default to the first one
+ $groupid = $groupid ? $groupid : $mygroupids[0]/*mygroupid($course->id)*/;
}
/// If a specific group was requested, return it, if allowed.
@@ -501,6 +503,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) {
}
}
else if ($groupmode == SEPARATEGROUPS) {
+
if ($students = get_group_students($mygroupid)) {
$defpagename = empty($wiki->pagename) ? get_string('wikidefaultpagename', 'wiki') : $wiki->pagename;
foreach ($students as $student) {
@@ -566,6 +569,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) {
}
if ($viewall !== false) {
+
$sql = 'SELECT w.id, w.userid, w.pagename, u.firstname, u.lastname '
.' FROM '.$CFG->prefix.'wiki_entries w, '.$CFG->prefix.'user u '
.' WHERE w.wikiid = '.$wiki->id.' AND u.id = w.userid '
@@ -588,6 +592,8 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) {
case 'group':
/// If the user is an editing teacher, or a non-editing teacher not assigned to a group, show all group
/// wikis, regardless of creation.
+
+ /// If user is a member of multiple groups, need to show current group etc?
/// Get all the existing entries for this wiki.
$wiki_entries = wiki_get_entries($wiki, 'group');
@@ -610,6 +616,26 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) {
}
}
}
+ //if a studnet with multiple groups in SPG
+ else if ($groupmode == SEPARATEGROUPS){
+ if ($groups = get_groups($course->id, $user->id)){
+
+ $defpagename = empty($wiki->pagename) ? get_string('wikidefaultpagename', 'wiki') : $wiki->pagename;
+ foreach ($groups as $group) {
+ /// If this group already has an entry, use its pagename.
+ if (isset($wiki_entries[$group->id])) {
+ $pagename = $wiki_entries[$group->id]->pagename;
+ }
+ else {
+ $pagename = $defpagename;
+ }
+ $key = 'view.php?id='.$id.($group->id?"&groupid=".$group->id:"").'&page='.$pagename;
+ $wikis[$key] = $group->name.':'.$pagename;
+ }
+
+ }
+
+ }
/// A user can see other group wikis if there are visible groups.
else if ($groupmode == VISIBLEGROUPS) {
$sql = 'SELECT w.id, w.groupid, w.pagename, g.name as gname '
@@ -686,9 +712,11 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) {
.' ORDER BY w.groupid';
$wiki_entries = get_records_sql($sql);
$wiki_entries=is_array($wiki_entries)?$wiki_entries:array();
+
+
foreach ($wiki_entries as $wiki_entry) {
- if (($viewall === true) or $viewall == $wiki_entry->groupid) {
- $key = 'view.php??id='.$id.($wiki_entry->groupid?"&groupid=".$wiki_entry->groupid:"").'&page='.$wiki_entry->pagename;
+ if (($viewall === true) or @in_array($wiki_entry->groupid, $viewall)/*$viewall == $wiki_entry->groupid*/) {
+ $key = 'view.php?id='.$id.($wiki_entry->groupid?"&groupid=".$wiki_entry->groupid:"").'&page='.$wiki_entry->pagename;
$wikis[$key] = $wiki_entry->gname.':'.$wiki_entry->pagename;
if ($currentid == $wiki_entry->id) {
$wikis['selected'] = $key;
@@ -728,9 +756,12 @@ function wiki_add_entry(&$wiki, &$course, $userid=0, $groupid=0) {
/// Get the groupmode. It's been added to the wiki object.
$groupmode = groupmode($course, $wiki);
+ ///give the first groupid by default and try
+ $mygroups = mygroupid($course->id);
+
/// If there is a groupmode, get the group id.
if ($groupmode) {
- $groupid = $groupid ? $groupid : mygroupid($course->id);
+ $groupid = $groupid ? $groupid : $mygroups[0]/*mygroupid($course->id)*/;
}
/// If mode is 'nogroups', then groupid is zero.
else {
@@ -748,7 +779,8 @@ function wiki_add_entry(&$wiki, &$course, $userid=0, $groupid=0) {
/// If there is a groupmode, get the user's group id.
if ($groupmode and $groupid == 0) {
- $groupid = mygroupid($course->id);
+ $mygroupid = mygroupid($course->id);
+ $groupid = $mygroupid[0]/*mygroupid($course->id)*/;
}
$wiki_entry->wikiid = $wiki->id;
@@ -799,10 +831,12 @@ function wiki_can_add_entry(&$wiki, &$user, &$course, $userid=0, $groupid=0) {
return ($mygroupid != 0);
}
/// If requesting a group, must be an editing teacher, a non-editing teacher with no assigned group,
- /// or a non-editing teacher requesting their group.
+ /// or a non-editing teacher requesting their group. or a student in group, but wiki is empty.
else {
return (isteacheredit($course->id) or
- (isteacher($course->id) and ($mygroupid == 0 or $mygroupid == $groupid)));
+ (isteacher($course->id) and ($mygroupid == 0 or @in_array($groupid, $mygroupid))) or
+ (isstudent($course->id, $user->id) and @in_array($groupid, $mygroupid))
+ );
}
break;
@@ -819,7 +853,7 @@ function wiki_can_add_entry(&$wiki, &$user, &$course, $userid=0, $groupid=0) {
/// in their group. Non-editing teachers with no assigned group and editing teachers can create any wiki.
else {
return (isteacheredit($course->id) or
- (isteacher($course->id) and ($mygroupid == 0 or $mygroupid == $groupid)));
+ (isteacher($course->id) and ($mygroupid == 0 or @in_array($groupid, $mygroupid))));
}
break;
}
@@ -875,7 +909,6 @@ function wiki_can_edit_entry(&$wiki_entry, &$wiki, &$user, &$course) {
break;
}
}
-
return $can_edit;
}
@@ -925,7 +958,7 @@ function wiki_user_can_access_group_wiki(&$wiki, $groupid, &$course) {
/// - they are an editing teacher or administrator,
/// - they are a non-editing teacher not assigned to a specific group.
if (($groupmode == NOGROUPS) or ($groupmode == VISIBLEGROUPS) or
- (($groupmode == SEPARATEGROUPS) and ($usersgroup == $groupid)) or
+ (($groupmode == SEPARATEGROUPS) and @in_array($groupid, $usersgroup)/*($usersgroup == $groupid)*/) or
(isteacheredit($course->id, $USER->id)) or
(isteacher($course->id, $USER->id) and !$usersgroup)) {
$can_access = true;
@@ -948,7 +981,7 @@ function wiki_user_can_access_teacher_wiki(&$wiki, $groupid, &$course) {
/// - group mode is SEPARATEGROUPS, and they are a member of the requested group,
/// - they are a teacher or administrator,
if (($groupmode == NOGROUPS) or ($groupmode == VISIBLEGROUPS) or
- (($groupmode == SEPARATEGROUPS) and (mygroupid($course->id) == $groupid)) or
+ (($groupmode == SEPARATEGROUPS) and (@in_array($groupid, mygroupid($course->id))/*mygroupid($course->id) == $groupid*/)) or
(isteacher($course->id, $USER->id))){
$can_access = true;
}
diff --git a/mod/wiki/view.php b/mod/wiki/view.php
index 673d74571d8..fb3a760eeed 100644
--- a/mod/wiki/view.php
+++ b/mod/wiki/view.php
@@ -19,8 +19,6 @@
/// Only want to add edit log entries if we have made some changes ie submitted a form
$editsave = optional_param('thankyou');
-
-
if ($id) {
if (! $cm = get_record("course_modules", "id", $id)) {
@@ -37,6 +35,7 @@
} else {
if (! $wiki = get_record("wiki", "id", $wid)) {
+echo "here?";
error("Course module is incorrect");
}
if (! $course = get_record("course", "id", $wiki->course)) {
@@ -62,9 +61,8 @@
/// Globally disable CamelCase, if the option is selected for this wiki.
$moodle_disable_camel_case = ($wiki->disablecamelcase == 1);
-
+
if (($wiki_entry = wiki_get_default_entry($wiki, $course, $userid, $groupid))) {
-
/// ################# EWIKI Part ###########################
/// The wiki_entry->pagename is set to the specified value of the wiki,
/// or the default value in the 'lang' file if the specified value was empty.
@@ -215,6 +213,7 @@
else {
$content = '';
$content2 = ''.get_string('nowikicreated', 'wiki').' ';
+
}
# Group wiki, ...: No page and no ewiki_title
@@ -250,10 +249,11 @@
/// Print Page
echo '
';
-
/// The top row contains links to other wikis, if applicable.
if ($wiki_list = wiki_get_other_wikis($wiki, $USER, $course, $wiki_entry->id)) {
+ //echo "wiki list ";print_r($wiki_list);
$selected="";
+
if (isset($wiki_list['selected'])) {
$selected = $wiki_list['selected'];
unset($wiki_list['selected']);
diff --git a/user/view.php b/user/view.php
index 7cb087fdbfa..d4241159a09 100644
--- a/user/view.php
+++ b/user/view.php
@@ -55,7 +55,17 @@
if (groupmode($course) == SEPARATEGROUPS and !isteacheredit($course->id)) { // Groups must be kept separate
require_login();
- if (!$currentuser && !isteacheredit($course->id, $user->id) && !ismember(mygroupid($course->id), $user->id)) {
+ ///this is changed because of mygroupid
+ $gtrue = false;
+ if ($mygroups = mygroupid($course->id)){
+ foreach ($mygroups as $group){
+ if (ismember($group, $user->id)){
+ $gtrue = true;
+ }
+ }
+ }
+
+ if (!$currentuser && !isteacheredit($course->id, $user->id) && !$gtrue) {
print_header("$personalprofile: ", "$personalprofile: ",
" id\">$course->shortname ->
id\">$participants",
@@ -108,8 +118,6 @@
$currenttab = 'profile';
include('tabs.php');
-
-
echo " ";
echo "";
echo "| ";
@@ -216,7 +224,12 @@
$courselisting = '';
foreach ($mycourses as $mycourse) {
if ($mycourse->visible and $mycourse->category) {
- $courselisting .= "wwwroot/user/view.php?id=$user->id&course=$mycourse->id\">$mycourse->fullname, ";
+ if ($mycourse->id != $course->id){
+ $courselisting .= "wwwroot/user/view.php?id=$user->id&course=$mycourse->id\">$mycourse->fullname, ";
+ }
+ else {
+ $courselisting .= "$mycourse->fullname, ";
+ }
}
}
print_row(get_string('courses').':', rtrim($courselisting,', '));
@@ -230,11 +243,23 @@
}
print_row(get_string("lastaccess").":", $datestring);
+ $groupstr = '';
+
+ ///printing groups
+ if (isteacher($course->id)){
+ if ($mygroups = user_group($course->id, $user->id)){
+ foreach ($mygroups as $group){
+ $groupstr .= link_to_popup_window('/user/index.php?id='.$course->id.'&group='.$group->id,'popup',$group->name,400,500,'edit group','none',true).", ";
+ }
+ }
+ print_row(get_string("group").":", rtrim($groupstr, ', '));
+ }
+ ///End of printing groups
+
echo " | ";
echo " |