[ Index ]
 

Code source de Claroline 188

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/claroline/group/ -> group_edit.php (source)

   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&amp;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  .    '&nbsp;' . 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  .    '&nbsp;&nbsp;'
 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">&nbsp;</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  ?>


Généré le : Thu Nov 29 14:38:42 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics