[ Index ]

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

title

Body

[close]

/admin/mnet/ -> enr_course_enrol.php (source)

   1  <?PHP  // $Id: enr_course_enrol.php,v 1.8.4.2 2008/04/02 06:09:58 dongsheng Exp $
   2         // enrol_config.php - allows admin to edit all enrollment variables
   3         //                    Yes, enrol is correct English spelling.
   4  
   5      require_once(dirname(__FILE__) . "/../../config.php");
   6      require_once($CFG->libdir.'/adminlib.php');
   7      include_once($CFG->dirroot.'/mnet/xmlrpc/client.php');
   8  
   9      if (!confirm_sesskey()) {
  10          print_error('confirmsesskeybad', 'error');
  11      }
  12  
  13      admin_externalpage_setup('mnetenrol');
  14      $CFG->pagepath = 'admin/mnet';
  15  
  16      require_once("$CFG->dirroot/enrol/enrol.class.php");   /// Open the factory class
  17      $enrolment = enrolment_factory::factory('mnet');
  18  
  19      $mnethostid = required_param('host', PARAM_INT);
  20      $courseid = required_param('courseid', PARAM_INT);
  21  
  22      $mnet_peer = new mnet_peer();
  23      if (!$mnet_peer->set_id($mnethostid)) {
  24          print_error('hostcoursenotfound','mnet');
  25      }
  26  
  27      $course = get_record('mnet_enrol_course', 'id', $courseid, 'hostid', $mnet_peer->id);
  28  
  29      if (empty($course)) {
  30          print_error('hostcoursenotfound','mnet');
  31      }
  32  
  33      define("MAX_USERS_PER_PAGE", 5000);
  34  
  35      $add            = optional_param('add', 0, PARAM_BOOL);
  36      $remove         = optional_param('remove', 0, PARAM_BOOL);
  37      $showall        = optional_param('showall', 0, PARAM_BOOL);
  38      $searchtext     = optional_param('searchtext', '', PARAM_RAW); // search string
  39      $previoussearch = optional_param('previoussearch', 0, PARAM_BOOL);
  40      $userid         = optional_param('userid', 0, PARAM_INT); // needed for user tabs
  41  
  42      $errors = array();
  43  
  44      $previoussearch = ($searchtext != '') or ($previoussearch) ? 1:0;
  45  
  46      $baseurl = "remote_enrolment.php?courseid={$course->id}&amp;host={$mnet_peer->id}";
  47      if (!empty($userid)) {
  48          $baseurl .= '&amp;userid='.$userid;
  49      }
  50  
  51  /// Process incoming role assignment
  52  
  53      if ($frm = data_submitted()) {
  54          if ($add and !empty($frm->addselect) and confirm_sesskey()) {
  55              $timemodified = time();
  56  
  57              foreach ($frm->addselect as $adduser) {
  58                  if (!$adduser = clean_param($adduser, PARAM_INT)) {
  59                      continue;
  60                  }
  61                  if (! $enrolment->req_enrol_user($adduser, $course->id)) {
  62                      $errors[] = "Could not add user with id $adduser to course {$course->id}!";
  63                  }
  64              }
  65          } else if ($remove and !empty($frm->removeselect) and confirm_sesskey()) {
  66              foreach ($frm->removeselect as $removeuser) {
  67                  $removeuser = clean_param($removeuser, PARAM_INT);
  68                  if (! $enrolment->req_unenrol_user($removeuser, $course->id)) {
  69                      $errors[] = "Could not remove user with id $removeuser from course {$course->id}!";
  70                  }
  71              }
  72          } else if ($showall) {
  73              $searchtext = '';
  74              $previoussearch = 0;
  75          }
  76      }
  77  
  78  /// Prepare data for users / enrolled users panes
  79  
  80  
  81  /// Create a new request object
  82      $mnet_request = new mnet_xmlrpc_client();
  83  
  84  /// Pass it the path to the method that we want to execute
  85      $mnet_request->set_method('enrol/mnet/enrol.php/course_enrolments');
  86      $mnet_request->add_param($course->remoteid, 'int');
  87      $mnet_request->send($mnet_peer);
  88      $all_enrolled_users = $mnet_request->response;
  89  
  90      unset($mnet_request);
  91      
  92      $select = '';
  93      $all_enrolled_usernames = '';
  94      $timemodified = array();
  95  /// List all the users (homed on this server) who are enrolled on the course
  96  /// This will include mnet-enrolled users, and those who have enrolled 
  97  /// themselves, etc.
  98      if (is_array($all_enrolled_users) && count($all_enrolled_users)) {
  99          foreach($all_enrolled_users as $username => $data) {
 100              $all_enrolled_usernames .= "'$username', ";
 101          }
 102          $select = ' u.username IN (' .substr($all_enrolled_usernames, 0, -2) .') AND ';
 103      } else {
 104          $all_enrolled_users = array();
 105      }
 106  
 107  /// Synch our mnet_enrol_assignments with remote server
 108      $sql = "
 109              SELECT
 110                  u.id,
 111                  u.firstname,
 112                  u.lastname,
 113                  u.username,
 114                  u.email,
 115                  a.enroltype,
 116                  a.id as enrolid,
 117                  COALESCE(a.hostid, 0) as wehaverecord,
 118                  a.courseid
 119              FROM
 120                  {$CFG->prefix}user u
 121              LEFT JOIN
 122                  {$CFG->prefix}mnet_enrol_assignments a
 123              ON
 124                  a.userid = u.id AND a.courseid={$courseid}
 125              WHERE
 126                  $select 
 127                  u.deleted = 0 AND
 128                  u.confirmed = 1 AND
 129                  u.mnethostid = {$CFG->mnet_localhost_id}
 130              ORDER BY
 131                  u.firstname ASC,
 132                  u.lastname ASC";
 133  
 134      if (!$enrolledusers = get_records_sql($sql)) {
 135          $enrolledusers = array();
 136      }
 137  
 138      foreach($enrolledusers as $user) {
 139  
 140          $dataobj = new stdClass();
 141          $dataobj->userid    = $user->id;
 142          $dataobj->hostid    = $mnet_peer->id;
 143          $dataobj->courseid  = $courseid;
 144          $dataobj->rolename  = $all_enrolled_users[$user->username]['name'];
 145          $dataobj->enroltype = $all_enrolled_users[$user->username]['enrol'];
 146  
 147          if ($user->wehaverecord == 0) {
 148              $dataobj->enroltime = $all_enrolled_users[$user->username]['timemodified'];
 149              $dataobj->id = insert_record('mnet_enrol_assignments', $dataobj);
 150          } elseif (array_key_exists($user->username, $all_enrolled_users)) {
 151              $dataobj->id    = $user->enrolid;
 152              update_record('mnet_enrol_assignments', $dataobj);
 153          } elseif (is_array($all_enrolled_users) && count($all_enrolled_users)) {
 154              delete_record('mnet_enrol_assignments', 'id', $user->enrolid);
 155          }
 156      }
 157      unset($enrolledusers);
 158  
 159      // Read about our remote enrolments in 2 sets
 160      // first, get the remote enrolments done via enrol/mnet      $mnetenrolledusers
 161      // second, get the remote enrolments done with other plugins $remtenrolledusers
 162      // NOTE: both arrays are keyed on the userid! 
 163      $sql = "
 164              SELECT
 165                  u.id,
 166                  u.firstname,
 167                  u.lastname,
 168                  a.rolename,
 169                  a.enroltype,
 170                  a.courseid
 171              FROM
 172                  {$CFG->prefix}user u,
 173                  {$CFG->prefix}mnet_enrol_assignments a
 174              WHERE
 175                  a.userid = u.id AND 
 176                  a.courseid={$courseid} AND
 177                  a.enroltype = 'mnet'   AND
 178                  u.deleted = 0 AND
 179                  u.confirmed = 1 AND
 180                  u.mnethostid = {$CFG->mnet_localhost_id}
 181              ORDER BY
 182                  u.firstname ASC,
 183                  u.lastname ASC";
 184  
 185      if (!$mnetenrolledusers = get_records_sql($sql)) {
 186          $mnetenrolledusers = array();
 187      }
 188      $sql = "
 189              SELECT
 190                  u.id,
 191                  u.firstname,
 192                  u.lastname,
 193                  a.rolename,
 194                  a.enroltype,
 195                  a.courseid
 196              FROM
 197                  {$CFG->prefix}user u,
 198                  {$CFG->prefix}mnet_enrol_assignments a
 199              WHERE
 200                  a.userid = u.id AND 
 201                  a.courseid={$courseid} AND
 202                  a.enroltype != 'mnet'  AND
 203                  u.deleted = 0 AND
 204                  u.confirmed = 1 AND
 205                  u.mnethostid = {$CFG->mnet_localhost_id}
 206              ORDER BY
 207                  u.firstname ASC,
 208                  u.lastname ASC";
 209  
 210      if (!$remtenrolledusers = get_records_sql($sql)) {
 211          $remtenrolledusers = array();
 212      }
 213  
 214      $select = '';
 215      $exclude = array_merge(array_keys($mnetenrolledusers), array_keys($remtenrolledusers));
 216      $exclude[] = 0;
 217      $select = 'AND u.username!=\'guest\' AND u.id NOT IN ('. join(',',$exclude) .') ';
 218      unset($exclude);
 219  
 220      $searchtext = trim($searchtext);
 221  
 222      if ($searchtext !== '') {   // Search for a subset of remaining users
 223          $LIKE      = sql_ilike();
 224          $FULLNAME  = sql_fullname();
 225  
 226          $select  .= " AND ($FULLNAME $LIKE '%$searchtext%' OR email $LIKE '%$searchtext%') ";
 227      }
 228  
 229      $sql = ('SELECT id, firstname, lastname, email 
 230              FROM '.$CFG->prefix.'user u
 231              WHERE deleted = 0 AND confirmed = 1 
 232                    AND mnethostid = '.$CFG->mnet_localhost_id.' '
 233              .$select
 234              .'ORDER BY lastname ASC, firstname ASC');
 235  
 236      $availableusers = get_recordset_sql($sql, 0, MAX_USERS_PER_PAGE);
 237  
 238  
 239  
 240  /// Print the page
 241  
 242  /// get language strings
 243  $str = get_strings(array('enrolmentplugins', 'configuration', 'users', 'administration'));
 244  /// Get some language strings
 245  
 246  $strpotentialusers = get_string('potentialusers', 'role');
 247  $strexistingusers = get_string('existingusers', 'role');
 248  $straction = get_string('assignroles', 'role');
 249  $strroletoassign = get_string('roletoassign', 'role');
 250  $strcurrentcontext = get_string('currentcontext', 'role');
 251  $strsearch = get_string('search');
 252  $strshowall = get_string('showall');
 253  $strparticipants = get_string('participants');
 254  $strsearchresults = get_string('searchresults');
 255  
 256  admin_externalpage_print_header();
 257  
 258  print_box('<strong>' . s($mnet_peer->name) . ' : ' 
 259            . format_string($course->shortname) .' '. format_string($course->fullname) 
 260            . '</strong><br />'
 261            . get_string("enrolcourseenrol_desc", "mnet"));
 262  
 263  echo "<hr />";
 264  
 265  include(dirname(__FILE__).'/enr_course_enrol.html');
 266  
 267  if (!empty($errors)) {
 268      $msg = '<p>';
 269      foreach ($errors as $e) {
 270          $msg .= $e.'<br />';
 271      }
 272      $msg .= '</p>';
 273      notify($msg);
 274  }
 275  
 276  
 277  admin_externalpage_print_footer();
 278  
 279  ?>


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