[ Index ]

PHP Cross Reference of Moodle 1.9.3 [Build 15-Oct-2008]

title

Body

[close]

/user/ -> groupextendenrol.php (source)

   1  <?php  // $Id: groupextendenrol.php,v 1.3 2007/08/17 19:09:26 nicolasconnault Exp $
   2  require_once("../config.php");
   3  
   4  $id    = required_param('id', PARAM_INT);              // course id
   5  $users = optional_param('userid', array(), PARAM_INT); // array of user id
   6  
   7  if (! $course = get_record('course', 'id', $id)) {
   8      error("Course ID is incorrect");
   9  }
  10  
  11  $context = get_context_instance(CONTEXT_COURSE, $id);
  12  require_login($course->id);
  13  
  14  // to extend enrolments current user needs to be able to do role assignments
  15  require_capability('moodle/role:assign', $context);
  16  $today = time();
  17  $today = make_timestamp(date('Y', $today), date('m', $today), date('d', $today), 0, 0, 0);
  18  
  19  if ((count($users) > 0) and ($form = data_submitted()) and confirm_sesskey()) {
  20  
  21      foreach ($form->userid as $k => $v) {
  22          // find all roles this student have in this course
  23          if ($students = get_records_sql("SELECT ra.id, ra.roleid, ra.timestart, ra.timeend
  24                                         FROM {$CFG->prefix}role_assignments ra
  25                                         WHERE userid = $v
  26                                         AND contextid = $context->id")) {
  27              // enrol these users again, with time extension
  28              // not that this is not necessarily a student role
  29              foreach ($students as $student) {
  30                  // only extend if the user can make role assignments on this role
  31                  if (user_can_assign($context, $student->roleid)) {
  32                      switch($form->extendperiod) {
  33                          case 0: // No change (currently this option is not available in dropdown list, but it might be ...)
  34                              break;
  35                          case -1: // unlimited
  36                              $student->timeend = 0;
  37                              break;
  38                          default: // extend
  39                              switch($form->extendbase) {
  40                                  case 0: // course start date
  41                                      $student->timeend = $course->startdate + $form->extendperiod;
  42                                      break;
  43                                  case 1: // student enrolment start date
  44                                      // we check for student enrolment date because Moodle versions before 1.9 did not set this for
  45                                      // unlimited enrolment courses, so it might be 0
  46                                      if($student->timestart > 0) {
  47                                          $student->timeend = $student->timestart + $form->extendperiod;
  48                                      }
  49                                      break;
  50                                  case 2: // student enrolment start date
  51                                      // enrolment end equals 0 means Unlimited, so adding some time to that will still yield Unlimited
  52                                      if($student->timeend > 0) {
  53                                          $student->timeend = $student->timeend + $form->extendperiod;
  54                                      }
  55                                      break;
  56                                  case 3: // current date
  57                                      $student->timeend = $today + $form->extendperiod;
  58                                      break;
  59                                  case 4: // course enrolment start date
  60                                      if($course->enrolstartdate > 0) {
  61                                          $student->timeend = $course->enrolstartdate + $form->extendperiod;
  62                                      }
  63                                      break;
  64                                  case 5: // course enrolment end date
  65                                      if($course->enrolenddate > 0) {
  66                                          $student->timeend = $course->enrolenddate + $form->extendperiod;
  67                                      }
  68                                      break;
  69                              }
  70                      }
  71                      role_assign($student->roleid, $v, 0, $context->id, $student->timestart, $student->timeend, 0);
  72                  }
  73              }
  74          }
  75      }
  76  
  77      redirect("$CFG->wwwroot/user/index.php?id=$id", get_string('changessaved'));
  78  }
  79  
  80  /// Print headers
  81  
  82  $navlinks = array();
  83  $navlinks[] = array('name' => get_string('extendenrol'), 'link' => null, 'type' => 'misc');
  84  $navigation = build_navigation($navlinks);
  85  
  86  print_header("$course->shortname: ".get_string('extendenrol'), $course->fullname, $navigation, "", "", true, "&nbsp;", navmenu($course));
  87  
  88  $timeformat = get_string('strftimedate');
  89  $unlimited = get_string('unlimited');
  90  $periodmenu[-1] = $unlimited;
  91  for ($i=1; $i<=365; $i++) {
  92      $seconds = $i * 86400;
  93      $periodmenu[$seconds] = get_string('numdays', '', $i);
  94  }
  95  
  96  $basemenu[0] = get_string('startdate') . ' (' . userdate($course->startdate, $timeformat) . ')';
  97  $basemenu[1] = get_string('enrolmentstart');
  98  $basemenu[2] = get_string('enrolmentend');
  99  if($course->enrollable != 2 || ($course->enrolstartdate == 0 || $course->enrolstartdate <= $today) && ($course->enrolenddate == 0 || $course->enrolenddate > $today)) {
 100      $basemenu[3] = get_string('today') . ' (' . userdate($today, $timeformat) . ')' ;
 101  }
 102  if($course->enrollable == 2) {
 103      if($course->enrolstartdate > 0) {
 104          $basemenu[4] = get_string('courseenrolstartdate') . ' (' . userdate($course->enrolstartdate, $timeformat) . ')';
 105      }
 106      if($course->enrolenddate > 0) {
 107          $basemenu[5] = get_string('courseenrolenddate') . ' (' . userdate($course->enrolenddate, $timeformat) . ')';
 108      }
 109  }
 110  
 111  $title = get_string('groupextendenrol');
 112  print_heading($title . helpbutton('groupextendenrol', $title, 'moodle', true, false, '', true));
 113  echo '<form method="post" action="groupextendenrol.php">';
 114  echo '<input type="hidden" name="id" value="'.$course->id.'" />';
 115  echo '<input type="hidden" name="sesskey" value="'.$USER->sesskey.'" />';
 116  $table->head  = array (get_string('fullname'), get_string('enrolmentstart'), get_string('enrolmentend'));
 117  $table->align = array ('left', 'center', 'center', 'center');
 118  $table->width = "600";
 119  $nochange = get_string('nochange');
 120  $notavailable = get_string('notavailable');
 121  
 122  foreach ($_POST as $k => $v) {
 123      if (preg_match('/^user(\d+)$/',$k,$m)) {
 124  
 125          if (!($user = get_record_sql("SELECT * FROM {$CFG->prefix}user u
 126                                      INNER JOIN {$CFG->prefix}role_assignments ra ON u.id=ra.userid
 127                                      WHERE u.id={$m[1]} AND ra.contextid = $context->id"))) {
 128              continue;
 129          }
 130          if ($user->timestart) {
 131              $timestart = userdate($user->timestart, $timeformat);
 132          } else {
 133              $timestart = $notavailable;
 134          }
 135          if ($user->timeend) {
 136              $timeend = userdate($user->timeend, $timeformat);
 137          } else {
 138              $timeend = $unlimited;
 139          }
 140          $table->data[] = array(
 141          fullname($user, true),
 142          $timestart,
 143          $timeend . '<input type="hidden" name="userid['.$m[1].']" value="'.$m[1].'" />'
 144          );
 145      }
 146  }
 147  print_table($table);
 148  echo '<div style="width:100%;text-align:center;"><strong>';
 149  echo get_string('extendperiod') . ' ';
 150  choose_from_menu($periodmenu, "extendperiod");
 151  echo ' ' . get_string('startingfrom') . ' ';
 152  choose_from_menu($basemenu, "extendbase", "2", "");
 153  echo '</strong><br />';
 154  echo '<input type="submit" value="'.get_string('savechanges').'" />';
 155  echo '</div></form>';
 156  
 157  print_footer($course);
 158  ?>


Generated: Wed Jan 14 11:33:29 2009 Cross-referenced by PHPXref 0.7