Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/group/index.php
Go to the documentation of this file.
00001 <?php
00011 require_once('../config.php');
00012 require_once('lib.php');
00013 
00014 $courseid = required_param('id', PARAM_INT);
00015 $groupid  = optional_param('group', false, PARAM_INT);
00016 $userid   = optional_param('user', false, PARAM_INT);
00017 $action   = groups_param_action();
00018 // Support either single group= parameter, or array groups[]
00019 if ($groupid) {
00020     $groupids = array($groupid);
00021 } else {
00022     $groupids = optional_param_array('groups', array(), PARAM_INT);
00023 }
00024 $singlegroup = (count($groupids) == 1);
00025 
00026 $returnurl = $CFG->wwwroot.'/group/index.php?id='.$courseid;
00027 
00028 // Get the course information so we can print the header and
00029 // check the course id is valid
00030 
00031 $course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
00032 
00033 $url = new moodle_url('/group/index.php', array('id'=>$courseid));
00034 if ($userid) {
00035     $url->param('user', $userid);
00036 }
00037 if ($groupid) {
00038     $url->param('group', $groupid);
00039 }
00040 $PAGE->set_url($url);
00041 
00042 // Make sure that the user has permissions to manage groups.
00043 require_login($course);
00044 
00045 $PAGE->requires->yui2_lib('connection');
00046 $PAGE->requires->js('/group/clientlib.js');
00047 
00048 $context = get_context_instance(CONTEXT_COURSE, $course->id);
00049 if (!has_capability('moodle/course:managegroups', $context)) {
00050     redirect('/course/view.php', array('id'=>$course->id)); // Not allowed to manage all groups
00051 }
00052 
00053 // Check for multiple/no group errors
00054 if (!$singlegroup) {
00055     switch($action) {
00056         case 'ajax_getmembersingroup':
00057         case 'showgroupsettingsform':
00058         case 'showaddmembersform':
00059         case 'updatemembers':
00060             print_error('errorselectone', 'group', $returnurl);
00061     }
00062 }
00063 
00064 switch ($action) {
00065     case false: //OK, display form.
00066         break;
00067 
00068     case 'ajax_getmembersingroup':
00069         $roles = array();
00070         if ($groupmemberroles = groups_get_members_by_role($groupids[0], $courseid, 'u.id,u.firstname,u.lastname')) {
00071             foreach($groupmemberroles as $roleid=>$roledata) {
00072                 $shortroledata = new stdClass();
00073                 $shortroledata->name = $roledata->name;
00074                 $shortroledata->users = array();
00075                 foreach($roledata->users as $member) {
00076                     $shortmember = new stdClass();
00077                     $shortmember->id = $member->id;
00078                     $shortmember->name = fullname($member, true);
00079                     $shortroledata->users[] = $shortmember;
00080                 }
00081                 $roles[] = $shortroledata;
00082             }
00083         }
00084         echo json_encode($roles);
00085         die;  // Client side JavaScript takes it from here.
00086 
00087     case 'deletegroup':
00088         if (count($groupids) == 0) {
00089             print_error('errorselectsome','group',$returnurl);
00090         }
00091         $groupidlist = implode(',', $groupids);
00092         redirect(new moodle_url('/group/delete.php', array('courseid'=>$courseid, 'groups'=>$groupidlist)));
00093         break;
00094 
00095     case 'showcreateorphangroupform':
00096         redirect(new moodle_url('/group/group.php', array('courseid'=>$courseid)));
00097         break;
00098 
00099     case 'showautocreategroupsform':
00100         redirect(new moodle_url('/group/autogroup.php', array('courseid'=>$courseid)));
00101         break;
00102 
00103     case 'showimportgroups':
00104         redirect(new moodle_url('/group/import.php', array('id'=>$courseid)));
00105         break;
00106 
00107     case 'showgroupsettingsform':
00108         redirect(new moodle_url('/group/group.php', array('courseid'=>$courseid, 'id'=>$groupids[0])));
00109         break;
00110 
00111     case 'updategroups': //Currently reloading.
00112         break;
00113 
00114     case 'removemembers':
00115         break;
00116 
00117     case 'showaddmembersform':
00118         redirect(new moodle_url('/group/members.php', array('group'=>$groupids[0])));
00119         break;
00120 
00121     case 'updatemembers': //Currently reloading.
00122         break;
00123 
00124     default: //ERROR.
00125         print_error('unknowaction', '', $returnurl);
00126         break;
00127 }
00128 
00129 // Print the page and form
00130 $strgroups = get_string('groups');
00131 $strparticipants = get_string('participants');
00132 
00134 $PAGE->set_title($strgroups);
00135 $PAGE->set_heading($course->fullname);
00136 $PAGE->set_pagelayout('standard');
00137 echo $OUTPUT->header();
00138 
00139 // Add tabs
00140 $currenttab = 'groups';
00141 require('tabs.php');
00142 
00143 $disabled = 'disabled="disabled"';
00144 if (ajaxenabled()) {
00145     // Some buttons are enabled if single group selected
00146     $showaddmembersform_disabled = $singlegroup ? '' : $disabled;
00147     $showeditgroupsettingsform_disabled = $singlegroup ? '' : $disabled;
00148     $deletegroup_disabled = count($groupids)>0 ? '' : $disabled;
00149 } else {
00150     // Do not disable buttons. The buttons work based on the selected group,
00151     // which you can change without reloading the page, so it is not appropriate
00152     // to disable them if no group is selected.
00153     $showaddmembersform_disabled = '';
00154     $showeditgroupsettingsform_disabled = '';
00155     $deletegroup_disabled = '';
00156 }
00157 
00158 echo $OUTPUT->heading(format_string($course->shortname, true, array('context' => $context)) .' '.$strgroups, 3);
00159 echo '<form id="groupeditform" action="index.php" method="post">'."\n";
00160 echo '<div>'."\n";
00161 echo '<input type="hidden" name="id" value="' . $courseid . '" />'."\n";
00162 
00163 echo '<table cellpadding="6" class="generaltable generalbox groupmanagementtable boxaligncenter" summary="">'."\n";
00164 echo '<tr>'."\n";
00165 
00166 
00167 echo "<td>\n";
00168 echo '<p><label for="groups"><span id="groupslabel">'.get_string('groups').':</span><span id="thegrouping">&nbsp;</span></label></p>'."\n";
00169 
00170 if (ajaxenabled()) { // TODO: move this to JS init!
00171     $onchange = 'M.core_group.membersCombo.refreshMembers();';
00172 } else {
00173     $onchange = '';
00174 }
00175 
00176 echo '<select name="groups[]" multiple="multiple" id="groups" size="15" class="select" onchange="'.$onchange.'"'."\n";
00177 echo ' onclick="window.status=this.selectedIndex==-1 ? \'\' : this.options[this.selectedIndex].title;" onmouseout="window.status=\'\';">'."\n";
00178 
00179 $groups = groups_get_all_groups($courseid);
00180 $selectedname = '&nbsp;';
00181 
00182 if ($groups) {
00183     // Print out the HTML
00184     foreach ($groups as $group) {
00185         $select = '';
00186         $usercount = $DB->count_records('groups_members', array('groupid'=>$group->id));
00187         $groupname = format_string($group->name).' ('.$usercount.')';
00188         if (in_array($group->id,$groupids)) {
00189             $select = ' selected="selected"';
00190             if ($singlegroup) {
00191                 // Only keep selected name if there is one group selected
00192                 $selectedname = $groupname;
00193             }
00194         }
00195 
00196         echo "<option value=\"{$group->id}\"$select title=\"$groupname\">$groupname</option>\n";
00197     }
00198 } else {
00199     // Print an empty option to avoid the XHTML error of having an empty select element
00200     echo '<option>&nbsp;</option>';
00201 }
00202 
00203 echo '</select>'."\n";
00204 echo '<p><input type="submit" name="act_updatemembers" id="updatemembers" value="'
00205         . get_string('showmembersforgroup', 'group') . '" /></p>'."\n";
00206 echo '<p><input type="submit" '. $showeditgroupsettingsform_disabled . ' name="act_showgroupsettingsform" id="showeditgroupsettingsform" value="'
00207         . get_string('editgroupsettings', 'group') . '" /></p>'."\n";
00208 echo '<p><input type="submit" '. $deletegroup_disabled . ' name="act_deletegroup" onclick="onDeleteGroup()" id="deletegroup" value="'
00209         . get_string('deleteselectedgroup', 'group') . '" /></p>'."\n";
00210 
00211 echo '<p><input type="submit" name="act_showcreateorphangroupform" id="showcreateorphangroupform" value="'
00212         . get_string('creategroup', 'group') . '" /></p>'."\n";
00213 
00214 echo '<p><input type="submit" name="act_showautocreategroupsform" id="showautocreategroupsform" value="'
00215         . get_string('autocreategroups', 'group') . '" /></p>'."\n";
00216 
00217 echo '<p><input type="submit" name="act_showimportgroups" id="showimportgroups" value="'
00218         . get_string('importgroups', 'core_group') . '" /></p>'."\n";
00219 
00220 echo '</td>'."\n";
00221 echo '<td>'."\n";
00222 
00223 echo '<p><label for="members"><span id="memberslabel">'.
00224     get_string('membersofselectedgroup', 'group').
00225     ' </span><span id="thegroup">'.$selectedname.'</span></label></p>'."\n";
00226 //NOTE: the SELECT was, multiple="multiple" name="user[]" - not used and breaks onclick.
00227 echo '<select name="user" id="members" size="15" class="select"'."\n";
00228 echo ' onclick="window.status=this.options[this.selectedIndex].title;" onmouseout="window.status=\'\';">'."\n";
00229 
00230 $member_names = array();
00231 
00232 $atleastonemember = false;
00233 if ($singlegroup) {
00234     if ($groupmemberroles = groups_get_members_by_role($groupids[0],$courseid,'u.id,u.firstname,u.lastname')) {
00235         foreach($groupmemberroles as $roleid=>$roledata) {
00236             echo '<optgroup label="'.s($roledata->name).'">';
00237             foreach($roledata->users as $member) {
00238                 echo '<option value="'.$member->id.'">'.fullname($member, true).'</option>';
00239                 $atleastonemember = true;
00240             }
00241             echo '</optgroup>';
00242         }
00243     }
00244 }
00245 
00246 if (!$atleastonemember) {
00247     // Print an empty option to avoid the XHTML error of having an empty select element
00248     echo '<option>&nbsp;</option>';
00249 }
00250 
00251 echo '</select>'."\n";
00252 
00253 echo '<p><input type="submit" ' . $showaddmembersform_disabled . ' name="act_showaddmembersform" '
00254         . 'id="showaddmembersform" value="' . get_string('adduserstogroup', 'group'). '" /></p>'."\n";
00255 echo '</td>'."\n";
00256 echo '</tr>'."\n";
00257 echo '</table>'."\n";
00258 
00259 //<input type="hidden" name="rand" value="om" />
00260 echo '</div>'."\n";
00261 echo '</form>'."\n";
00262 
00263 if (ajaxenabled()) {
00264     $PAGE->requires->js_init_call('M.core_group.init_index', array($CFG->wwwroot, $courseid));
00265 }
00266 
00267 echo $OUTPUT->footer();
00268 
00276 function groups_param_action($prefix = 'act_') {
00277     $action = false;
00278 //($_SERVER['QUERY_STRING'] && preg_match("/$prefix(.+?)=(.+)/", $_SERVER['QUERY_STRING'], $matches)) { //b_(.*?)[&;]{0,1}/
00279 
00280     if ($_POST) {
00281         $form_vars = $_POST;
00282     }
00283     elseif ($_GET) {
00284         $form_vars = $_GET;
00285     }
00286     if ($form_vars) {
00287         foreach ($form_vars as $key => $value) {
00288             if (preg_match("/$prefix(.+)/", $key, $matches)) {
00289                 $action = $matches[1];
00290                 break;
00291             }
00292         }
00293     }
00294     if ($action && !preg_match('/^\w+$/', $action)) {
00295         $action = false;
00296         print_error('unknowaction');
00297     }
00299     return $action;
00300 }
 All Data Structures Namespaces Files Functions Variables Enumerations