[ Index ] |
|
Code source de Claroline 188 |
1 <?php // $Id: group_edit.php,v 1.54 2007/02/08 11:36:59 mathieu Exp $ 2 /** 3 * CLAROLINE 4 * 5 * This script edit userlist of a group and group propreties 6 * 7 * @version 1.8 $Revision: 1.54 $ 8 * 9 * @copyright 2001-2006 Universite catholique de Louvain (UCL) 10 * 11 * @license http://www.gnu.org/copyleft/gpl.html (GPL) GENERAL PUBLIC LICENSE 12 * 13 * @see http://www.claroline.net/wiki/index.php/CLGRP 14 * 15 * @package CLGRP 16 * 17 * @author Claro Team <cvs@claroline.net> 18 * 19 */ 20 21 $tlabelReq = 'CLGRP'; 22 require '../inc/claro_init_global.inc.php'; 23 require_once get_path('incRepositorySys') . '/lib/form.lib.php'; 24 require_once get_path('incRepositorySys') . '/lib/group.lib.inc.php'; 25 26 if ( ! claro_is_in_a_course() || ! claro_is_course_allowed() ) claro_disp_auth_form(true); 27 28 $is_allowedToManage = claro_is_allowed_to_edit(); 29 30 if ( ! $is_allowedToManage ) 31 { 32 claro_die(get_lang("Not allowed")); 33 } 34 35 $nameTools = get_lang("Edit this group"); 36 37 $htmlHeadXtra[]=' 38 <script type="text/javascript" language="JavaScript"> 39 <!-- Begin javascript menu swapper 40 function move( inBox, outBox ) 41 { 42 var arrInBox = new Array(); 43 var arrOutBox = new Array(); 44 45 for ( var i=0; i<outBox.options.length; i++ ) 46 { 47 arrOutBox[i] = outBox.options[i]; 48 } 49 50 var outLength = arrOutBox.length; 51 var inLength = 0; 52 53 for ( var i=0; i<inBox.options.length; i++ ) 54 { 55 var opt = inBox.options[i]; 56 if ( opt.selected ) 57 { 58 arrOutBox[outLength] = opt; 59 outLength++; 60 } 61 else 62 { 63 arrInBox[inLength] = opt; 64 inLength++; 65 } 66 } 67 68 inBox.length = 0; 69 outBox.length = 0; 70 71 for ( var i = 0; i < arrOutBox.length; i++ ) 72 { 73 outBox.options[i] = arrOutBox[i]; 74 } 75 76 for ( var i = 0; i < arrInBox.length; i++ ) 77 { 78 inBox.options[i] = arrInBox[i]; 79 } 80 } 81 // End --> 82 </script> 83 84 <script type="text/javascript" language="JavaScript"> 85 86 function selectAll(cbList,bSelect) { 87 for (var i=0; i<cbList.length; i++) 88 cbList[i].selected = cbList[i].checked = bSelect 89 } 90 91 function reverseAll(cbList) { 92 for (var i=0; i<cbList.length; i++) { 93 cbList[i].checked = !(cbList[i].checked) 94 cbList[i].selected = !(cbList[i].selected) 95 } 96 } 97 </script> 98 '; 99 100 101 $tbl_cdb_names = claro_sql_get_course_tbl(); 102 $tbl_mdb_names = claro_sql_get_main_tbl(); 103 $tbl_rel_user_course = $tbl_mdb_names['rel_course_user' ]; 104 $tbl_user = $tbl_mdb_names['user' ]; 105 106 $tbl_bb_forum = $tbl_cdb_names['bb_forums']; 107 $tbl_group_rel_team_user = $tbl_cdb_names['group_rel_team_user']; 108 $tbl_group_team = $tbl_cdb_names['group_team']; 109 110 $currentCourseId = claro_get_current_course_id(); 111 $_groupProperties = claro_get_current_group_properties_data(); 112 $myStudentGroup = claro_get_current_group_data(); 113 $nbMaxGroupPerUser = $_groupProperties ['nbGroupPerUser']; 114 115 if ( isset($_REQUEST['name']) ) $name = trim($_REQUEST['name']); 116 else $name = ''; 117 118 if ( isset($_REQUEST['description']) ) $description = trim($_REQUEST['description']); 119 else $description = ''; 120 if ( isset($_REQUEST['maxMember']) && ctype_digit($_REQUEST['maxMember']) && (trim($_REQUEST['maxMember']) != '') ) $maxMember = (int) $_REQUEST['maxMember']; 121 else $maxMember = NULL; 122 123 if ( isset($_REQUEST['tutor']) ) $tutor = (int) $_REQUEST['tutor']; 124 else $tutor = 0; 125 126 if ( isset($_REQUEST['ingroup']) ) $ingroup = $_REQUEST['ingroup']; 127 else $ingroup = array(); 128 129 130 ################### IF MODIFY ####################################### 131 132 // Once modifications have been done, the user validates and arrives here 133 if ( isset($_REQUEST['modify']) && $is_allowedToManage ) 134 { 135 $sql = "UPDATE`" . $tbl_group_team . "` 136 SET `name` = '" . addslashes($name) . "', 137 `description` = '" . addslashes($description) . "', 138 `maxStudent` = " . (is_null($maxMember) ? 'NULL' : "'" . (int) $maxMember . "'") .", 139 `tutor` = '" . (int) $tutor ."' 140 WHERE `id` = '" . (int) claro_get_current_group_id() . "'"; 141 142 143 // Update main group settings 144 $updateStudentGroup = claro_sql_query($sql); 145 146 // UPDATE FORUM NAME 147 $sql = 'UPDATE `' . $tbl_bb_forum . '` 148 SET `forum_name` ="' . addslashes($name).'" 149 WHERE `forum_id` ="' . $myStudentGroup['forumId'] . '"'; 150 151 claro_sql_query($sql); 152 153 // Count number of members 154 $numberMembers = count($ingroup); 155 156 // every letter introduced in field drives to 0 157 settype($maxMember, 'integer'); 158 159 // Insert new list of members 160 if ( $maxMember < $numberMembers AND $maxMember != '0' ) 161 { 162 // Too much members compared to max members allowed 163 $messageGroupEdited = get_lang('Number proposed exceeds max. that you allowed (you can modify it below). Group composition has not been modified'); 164 } 165 else 166 { 167 // Delete all members of this group 168 $sql = 'DELETE FROM `' . $tbl_group_rel_team_user . '` WHERE `team` = "' . (int)claro_get_current_group_id() . '"'; 169 170 $delGroupUsers = claro_sql_query($sql); 171 $numberMembers--; 172 173 for ($i = 0; $i <= $numberMembers; $i++) 174 { 175 $sql = "INSERT INTO `" . $tbl_group_rel_team_user . "` 176 SET user = " . (int) $ingroup[$i] . ", 177 team = " . (int) claro_get_current_group_id() ; 178 179 $registerUserGroup = claro_sql_query($sql); 180 } 181 182 $messageGroupEdited = get_lang("Group settings modified"); 183 184 } // else 185 186 $gidReset = TRUE; 187 $gidReq = claro_get_current_group_id(); 188 189 include get_path('incRepositorySys') . '/claro_init_local.inc.php'; 190 191 $myStudentGroup = claro_get_current_group_data(); 192 193 } // end if $modify 194 // SELECT TUTORS 195 196 $tutorList = get_course_tutor_list($currentCourseId); 197 198 // AND student_group.id='claro_get_current_group_id()' // This statement is DEACTIVATED 199 200 $tutor_list=array(); 201 $tutor_list[get_lang("(none)")] = 0; 202 foreach ($tutorList as $myTutor) 203 { 204 $tutor_list[htmlspecialchars($myTutor['name'] . ' ' . $myTutor['firstname'])]= $myTutor['userId']; 205 } 206 207 $usersInGroupList = get_group_member_list(); 208 209 // Student registered to the course but inserted in no group 210 $limitNumOfGroups = (is_null($nbMaxGroupPerUser) || $nbMaxGroupPerUser == 0 ? "" : " AND nbg < " . (int) $nbMaxGroupPerUser); 211 212 // Initialise userNotInGroupList to empty array 213 $userNotInGroupList = array(); 214 215 $sql = "SELECT `u`.`user_id` AS `user_id`, 216 `u`.`nom` AS `lastName`, 217 `u`.`prenom` AS `firstName`, 218 `cu`.`role` AS `role`, 219 COUNT(`ug`.`id`) AS `nbg`, 220 COUNT(`ugbloc`.`id`) AS `BLOCK` 221 222 FROM (`" . $tbl_user . "` AS u 223 , `" . $tbl_rel_user_course . "` AS cu ) 224 225 LEFT JOIN `" . $tbl_group_rel_team_user . "` AS ug 226 ON `u`.`user_id`=`ug`.`user` 227 228 LEFT JOIN `" . $tbl_group_rel_team_user . "` AS `ugbloc` 229 ON `u`.`user_id`=`ugbloc`.`user` AND `ugbloc`.`team` = " . (int) claro_get_current_group_id() . " 230 231 WHERE `cu`.`code_cours` = '" . $currentCourseId . "' 232 AND `cu`.`user_id` = `u`.`user_id` 233 AND ( `cu`.`isCourseManager` = 0 ) 234 AND `cu`.`tutor` = 0 235 AND ( `ug`.`team` <> " . (int) claro_get_current_group_id() . " OR `ug`.`team` IS NULL ) 236 237 GROUP BY `u`.`user_id` 238 HAVING `BLOCK` = 0 239 " . $limitNumOfGroups . " 240 ORDER BY 241 #`nbg`, #disabled because different of right box 242 UPPER(`u`.`nom`), UPPER(`u`.`prenom`), `u`.`user_id`"; 243 244 $result = claro_sql_query_fetch_all($sql); 245 246 247 foreach ($result AS $myNotMember ) 248 { 249 $label = htmlspecialchars( ucwords( strtolower( $myNotMember['lastName'])) . ' ' . ucwords(strtolower($myNotMember['firstName'] )) . ($myNotMember['role']!=''?' (' . $myNotMember['role'] . ')':'') ) 250 . ( $nbMaxGroupPerUser > 1 ?' (' . $myNotMember['nbg'] . ')' : '' ) 251 ; 252 $userNotInGroupList[$myNotMember['user_id']] = $label; 253 } 254 $thisGroupMaxMember = ( is_null($myStudentGroup['maxMember']) ? '-' : $myStudentGroup['maxMember']); 255 256 include get_path('incRepositorySys') . '/claro_init_header.inc.php'; 257 258 echo claro_html_tool_title(array('supraTitle' => get_lang("Groups"), 'mainTitle' => $nameTools)); 259 260 if ( isset($messageGroupEdited) ) echo claro_html_message_box($messageGroupEdited); 261 262 echo '<form name="groupedit" method="POST" action="' . $_SERVER['PHP_SELF'] . '?edit=yes&gidReq=' . claro_get_current_group_id() . '">' . "\n" 263 . claro_form_relay_context() 264 . '<table border="0" cellspacing="3" cellpadding="5">' . "\n" 265 . '<tr valign="top">' . "\n" 266 . '<td align="right">' . "\n" 267 . '<label for="name" >' . get_lang("Group name") . '</label> : ' . "\n" 268 . '</td>' . "\n" 269 . '<td colspan="2">' . "\n" 270 . '<input type="text" name="name" id="name" size="40" value="' . htmlspecialchars($myStudentGroup['name']) . '">' . "\n" 271 . '</td>' . "\n" 272 . '<td>' . "\n" 273 . '<a href="group_space.php?gidReq=' . claro_get_current_group_id() . '">' . "\n" 274 . '<img src="' . get_path('imgRepositoryWeb') . 'group.gif" />' . "\n" 275 . ' ' . get_lang("Area for this group") . '</a>' . "\n" 276 . '</td>' . "\n" 277 . '</tr>' . "\n" 278 . '<tr valign="top">' . "\n" 279 . '<td align="right">' . "\n" 280 . '<label for="description">' . "\n" 281 . get_lang("Description") . ' ' . get_lang("(optional)") . "\n" 282 . '</label> :' . "\n" 283 . '<td colspan="3">' . "\n" 284 . '<textarea name="description" id="description" rows="4 "cols="70" wrap="virtual">' . "\n" 285 . htmlspecialchars($myStudentGroup['description']) . "\n" 286 . '</textarea>' . "\n" 287 . '</td>' . "\n" 288 . '</tr>' . "\n" 289 . '' . "\n" 290 . '<tr valign="top">' . "\n" 291 . '<td align="right">' . "\n" 292 . '<label for="tutor">' . "\n" 293 . get_lang("Group Tutor") . '</label> : ' . "\n" 294 . '</td>' . "\n" 295 . '<td colspan="2">' . "\n" 296 . claro_html_form_select('tutor',$tutor_list,$myStudentGroup['tutorId'],array('id'=>'tutor')) . "\n" 297 . ' ' 298 . '<small>' 299 . '<a href="../user/user.php?gidReset=true">' 300 . get_lang("User list") 301 . '</a>' 302 . '</small>' 303 . '<td>' 304 . '<label for="maxMember">' . get_lang("Max.") . '</label> ' 305 306 . '<input type="text" name="maxMember" id="maxMember" size="2" value="' . htmlspecialchars($thisGroupMaxMember) . '" / >' . "\n" 307 308 . get_lang("seats (optional)") 309 . '</td>' 310 . '</tr>' 311 ################### STUDENTS IN AND OUT GROUPS ####################### 312 . '<tr valign="top">' 313 . '<td align="right">' 314 . '<label for="inGroup">' . get_lang("Group members") . '</label>' 315 . ' : ' 316 . '</td>' . "\n" 317 . '<td>' 318 . claro_html_form_select('ingroup[]',$usersInGroupList,'',array('id'=>'ingroup', 'size'=>'8', 'multiple'=>'multiple'),true) 319 . '<br />' . "\n" 320 . '<br />' . "\n" 321 . '<input type=submit value="' . get_lang("Ok") . '" name="modify" onClick="selectAll(this.form.elements[\'ingroup\'],true)" />' . "\n" 322 . '</td>' . "\n" 323 . '<td>' . "\n" 324 . '<!-- ' . "\n" 325 . 'WATCH OUT ! form elements are called by numbers "form.element[3]"...' . "\n" 326 . 'because select name contains "[]" causing a javascript element name problem' . "\n" 327 . ' -->' . "\n" 328 . '<br />' . "\n" 329 . '<br />' . "\n" 330 . '<input type="button" onClick="move(this.form.elements[\'ingroup\'],this.form.elements[\'nogroup\'])" value=" >> " />' . "\n" 331 . '<br />' . "\n" 332 . '<input type="button" onClick="move(this.form.elements[\'nogroup\'],this.form.elements[\'ingroup\'])" value=" << " / >' . "\n" 333 . '</td>' . "\n" 334 . '<td>' . "\n" 335 . claro_html_form_select('nogroup[]',$userNotInGroupList,'',array('id'=>'nogroup', 'size'=>'8', 'multiple'=>'multiple'), true) . "\n" 336 . '<br />' . "\n" 337 ; 338 339 if ( get_conf('multiGroupAllowed') ) echo get_lang("Users not in this group"); 340 else echo get_lang("Unassigned students"); 341 342 echo '</td>' 343 . '</tr>' 344 . '<tr valign="top">' 345 . '<td colspan="4"> </td>' 346 . '</tr>' 347 . '</table>' 348 . '</form>' 349 ; 350 351 include get_path('incRepositorySys') . '/claro_init_footer.inc.php'; 352 353 354 /** 355 * return a list of user and groups of these users 356 * 357 * @param unknown_type $context 358 * @return unknown 359 */ 360 function get_group_member_list($context=array()) 361 { 362 $currentCourseId = array_key_exists(CLARO_CONTEXT_COURSE, $context) ? $context['CLARO_CONTEXT_COURSE'] : claro_get_current_course_id(); 363 $currentGroupId = array_key_exists(CLARO_CONTEXT_GROUP, $context) ? $context['CLARO_CONTEXT_GROUP'] : claro_get_current_group_id(); 364 365 $tblc = claro_sql_get_course_tbl(); 366 $tblm = claro_sql_get_main_tbl(); 367 368 $sql = "SELECT `ug`.`id` AS id, 369 `u`.`user_id` AS user_id, 370 `u`.`nom` AS name, 371 `u`.`prenom` AS firstname, 372 `u`.`email` AS email, 373 `u`.`officialEmail` AS officialEmail, 374 `cu`.`role` AS `role` 375 FROM (`" . $tblm['user'] . "` AS u 376 , `" . $tblm['rel_course_user'] . "` AS cu 377 , `" . $tblc['group_rel_team_user'] . "` AS ug) 378 WHERE `cu`.`code_cours` = '" . $currentCourseId . "' 379 AND `cu`.`user_id` = `u`.`user_id` 380 AND `ug`.`team` = " . (int) $currentGroupId . " 381 AND `ug`.`user` = `u`.`user_id` 382 ORDER BY UPPER(`u`.`nom`), UPPER(`u`.`prenom`), `u`.`user_id`"; 383 384 $resultMember = claro_sql_query_fetch_all($sql); 385 $usersInGroupList=array(); 386 foreach ($resultMember as $thisMember ) 387 { 388 $label = htmlspecialchars(ucwords(strtolower($thisMember['name'])) 389 . ' ' . ucwords(strtolower($thisMember['firstname'])) 390 . ($thisMember['role']!=''?' (' . $thisMember['role'] . ')':'')); 391 $usersInGroupList[$thisMember['user_id']] = $label; 392 } 393 return $usersInGroupList; 394 } 395 396 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Thu Nov 29 14:38:42 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |