Exemplo n.º 1
0
                 $attempt = trim($fields[3]);
             } else {
                 $attempt = 1;
             }
             if (isset($module_list[$module])) {
                 $require_insert = true;
                 if (isset($students[$sid]['modules'][$module])) {
                     foreach ($students[$sid]['modules'][$module] as $individual_attempt) {
                         if ($individual_attempt == $attempt) {
                             $require_insert = false;
                         }
                     }
                 }
                 if ($require_insert) {
                     if (isset($students[$sid]['dbID'])) {
                         $success = UserUtils::add_student_to_module($students[$sid]['dbID'], $module_list[$module], $attempt, $session, $mysqli);
                         if ($success) {
                             $modulesAdded++;
                         }
                     } else {
                         $missing_users[$sid]['module'][] = $module;
                     }
                 }
             } else {
                 $unknow_ModuleID[] = $module;
             }
         }
     }
 }
 unlink($configObject->get('cfg_tmpdir') . $userObject->get_user_ID() . "_cohort_update.csv");
 echo "<table>\n";
Exemplo n.º 2
0
 /**
  * Enrole the student on a module.
  *
  * @param $idMod moduleID of module
  * @param $attempt
  * @param $session session of module
  * @param int $auto_update if system add
  *
  * @return bool return true if successful.
  */
 public function add_student_to_module($idMod, $attempt, $session, $auto_update = 0)
 {
     // need to check its a self reg module
     if (module_utils::get_full_details_by_ID($idMod, $this->db) === false) {
         return false;
     }
     if (UserUtils::is_user_on_module($this, $idMod, $session, $this->db)) {
         //don't add a user to a module multiple times
         return true;
     }
     $return = UserUtils::add_student_to_module($this->get_user_ID(), $idMod, $attempt, $session, $auto_update);
     $this->load_student_modules();
     return $return;
 }
Exemplo n.º 3
0
        } else {
            echo "<div class=\"r1\" id=\"divmod" . $id . "_" . $loop . "\"><input type=\"checkbox\" onclick=\"toggle('divmod" . $id . "_" . $loop . "')\" name=\"mod" . $id . "_" . $loop . "\" id=\"mod" . $id . "_" . $loop . "\" value=\"" . $idMod . "\" />&nbsp;<label for=\"mod" . $id . "_" . $loop . "\">{$moduleid}:&nbsp;{$fullname}</label></div>\n";
        }
        $loop++;
        $old_letter = strtoupper(substr($moduleid, 0, 1));
    }
    echo "</div>\n</div>\n";
}
if (isset($_POST['submit'])) {
    for ($attempt = 1; $attempt <= 3; $attempt++) {
        // Clear the student of all modules.
        UserUtils::clear_student_modules_by_userID($_POST['userID'], $_POST['session'], $attempt, $mysqli);
        // Insert a record for each module.
        for ($i = 0; $i <= $_POST['mod_count']; $i++) {
            if (isset($_POST['mod' . $attempt . '_' . $i]) and $_POST['mod' . $attempt . '_' . $i] != '') {
                UserUtils::add_student_to_module($_POST['userID'], $_POST['mod' . $attempt . '_' . $i], $attempt, $_POST['session'], $mysqli, 0);
            }
        }
    }
    ?>
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta http-equiv="content-type" content="text/html;charset=<?php 
    echo $configObject->get('cfg_page_charset');
    ?>
" />

  <title>Rog&#333;: <?php 
    echo $_POST['session'] . ' ' . $string['modules'];
Exemplo n.º 4
0
 function update_module_enrolement($module, $idMod, $sms_api, $mysqli = 'NOTSET', $session = 'NOTSET', $demomode = false)
 {
     // run module enrolement for select code
     if ($mysqli == 'NOTSET') {
         global $mysqli;
     }
     if ($session == 'NOTSET') {
         $session = date_utils::get_current_academic_year();
     }
     $session_parts = explode('/', $session);
     $enrolements = 0;
     $deletions = 0;
     $enrolement_details = '';
     $deletion_details = '';
     // UoN code to strip off prefix codes.
     //------------------------------------
     $replaced_module = str_replace('_UNMC', '', $module);
     $replaced_module = str_replace('_UNNC', '', $replaced_module);
     //------------------------------------
     // Get the currently enrolled students in Rogo for the module.
     $current_users = array();
     $student_data = $mysqli->prepare("SELECT modules_student.id, users.id, username, grade, title, surname, first_names, initials, roles, yearofstudy, auto_update, sid.student_id FROM (modules_student, users) LEFT JOIN sid ON users.id = sid.userID WHERE modules_student.userID = users.id AND calendar_year = ? AND idMod = ?");
     $student_data->bind_param('si', $session, $idMod);
     $student_data->execute();
     $student_data->store_result();
     $student_data->bind_result($sm_id, $uid, $username, $grade, $title, $surname, $first_names, $initials, $roles, $year, $auto_update, $student_id);
     while ($student_data->fetch()) {
         $current_users[$username]['delete'] = $auto_update;
         // Set users to be deleted if added via SATURN, set otherwise lower down after checking with SMS
         $current_users[$username]['smID'] = $sm_id;
         $current_users[$username]['userID'] = $uid;
         $current_users[$username]['grade'] = $grade;
         $current_users[$username]['title'] = $title;
         $current_users[$username]['surname'] = $surname;
         $current_users[$username]['first_names'] = $first_names;
         $current_users[$username]['initials'] = $initials;
         $current_users[$username]['roles'] = $roles;
         $current_users[$username]['year'] = $year;
         $current_users[$username]['auto_update'] = $auto_update;
         $current_users[$username]['student_id'] = $student_id;
     }
     $student_data->close();
     $c_u = $current_users;
     // Look up SMS
     $returned_data = @file_get_contents($sms_api . "&code={$replaced_module}&year=" . $session_parts[0]);
     $xml = false;
     if ($returned_data !== false) {
         $xml = new SimpleXMLElement($returned_data);
     }
     if (is_object($xml) and !isset($xml->ErrorMessage) and !isset($xml->Module->ModuleError)) {
         foreach ($xml->Module->Membership->Student as $sms) {
             $sms->Title = trim($sms->Title);
             $sms->Surname = trim($sms->Surname);
             $sms->Forename = trim($sms->Forename);
             $sms->CourseCode = trim($sms->CourseCode);
             $sms->Username = trim($sms->Username);
             $sms->Email = trim($sms->Email);
             $sms->Gender = trim($sms->Gender);
             $sms->YearofStudy = trim($sms->YearofStudy);
             $sms->StudentID = trim($sms->StudentID);
             $lookup_username = trim($sms->Username);
             // Make sure we have a proper username - it can sometimes be blank in SATURN data
             if ($sms->Email != '') {
                 // Try to extract from email address
                 $un_parts = explode('@', $sms->Email);
                 $lookup_username = $un_parts[0];
             }
             if ($lookup_username != '') {
                 if (isset($current_users[$lookup_username]['delete'])) {
                     $current_users[$lookup_username]['delete'] = 0;
                     // Mark as being legitimate
                 } else {
                     // Student missing from Rogo module
                     $student_data = $mysqli->prepare("SELECT id, yearofstudy, initials, grade, title, surname, first_names, roles, email, COALESCE(sid.student_id,'SID_ERROR') FROM users LEFT JOIN sid ON users.id = sid.userID WHERE username = ? LIMIT 1");
                     // Do they have a Rogo user record?
                     $student_data->bind_param('s', $lookup_username);
                     $student_data->execute();
                     $student_data->store_result();
                     $student_data->bind_result($tmp_userID, $tmp_yearofstudy, $tmp_initials, $tmp_grade, $tmp_title, $tmp_surname, $tmp_first_names, $tmp_roles, $tmp_email, $tmp_student_id);
                     $student_data->fetch();
                     if ($student_data->num_rows == 0) {
                         // Going to have to create a whole new account for the user
                         $names = explode(' ', $sms->Forename);
                         $initials = '';
                         foreach ($names as $tmp_name) {
                             $initials .= $tmp_name[0];
                         }
                         if (!$demomode) {
                             $tmp_userID = UserUtils::create_user($lookup_username, '', $sms->Title, $sms->Forename, $sms->Surname, $sms->Email, $sms->CourseCode, $sms->Gender, $sms->YearofStudy, 'Student', $sms->StudentID, $mysqli);
                             if ($tmp_userID == false) {
                                 echo 'ERROR: unable to establish surname for ' . $lookup_username . '<br />';
                                 continue;
                             }
                         }
                         $current_users[$lookup_username]['userID'] = $tmp_userID;
                         $current_users[$lookup_username]['grade'] = $sms->CourseCode;
                         $current_users[$lookup_username]['title'] = $sms->Title;
                         $current_users[$lookup_username]['surname'] = $sms->Surname;
                         $current_users[$lookup_username]['first_names'] = $tmp_first_names;
                         $current_users[$lookup_username]['initials'] = $initials;
                         $current_users[$lookup_username]['roles'] = 'Student';
                         $current_users[$lookup_username]['email'] = $sms->Email;
                         $current_users[$lookup_username]['year'] = $sms->YearofStudy;
                         $current_users[$lookup_username]['student_id'] = $sms->StudentID;
                         $current_users[$lookup_username]['delete'] = 0;
                     } else {
                         $current_users[$lookup_username]['userID'] = $tmp_userID;
                         $current_users[$lookup_username]['grade'] = $tmp_grade;
                         $current_users[$lookup_username]['title'] = $tmp_title;
                         $current_users[$lookup_username]['surname'] = $tmp_surname;
                         $current_users[$lookup_username]['first_names'] = $tmp_first_names;
                         $current_users[$lookup_username]['initials'] = $tmp_initials;
                         $current_users[$lookup_username]['roles'] = $tmp_roles;
                         $current_users[$lookup_username]['email'] = $tmp_email;
                         $current_users[$lookup_username]['year'] = $tmp_yearofstudy;
                         $current_users[$lookup_username]['student_id'] = $tmp_student_id;
                         $current_users[$lookup_username]['delete'] = 0;
                     }
                     // Add student onto the module
                     $auto_update = 1;
                     //set auto_update to student module association
                     if (!$demomode) {
                         $success = UserUtils::add_student_to_module($tmp_userID, $idMod, 1, $session, $mysqli, $auto_update);
                     }
                     if ($success) {
                         $enrolements++;
                         if ($enrolement_details == '') {
                             $enrolement_details = $lookup_username;
                         } else {
                             $enrolement_details .= ',' . $lookup_username;
                         }
                     }
                     $student_data->close();
                 }
                 // Check to see if any details of the user account need updating.
                 if (strtoupper(substr($sms->ReasonForLeaving, 0, 3)) == 'W/D') {
                     $new_roles = 'left';
                 } elseif (stripos($sms->ReasonForLeaving, 'not permitted to progress') !== false) {
                     $new_roles = 'left';
                 } elseif ($sms->ReasonForLeaving == 'Successfully completed course') {
                     $new_roles = 'graduate';
                 } else {
                     $new_roles = $current_users[$lookup_username]['roles'];
                     // Keep the roles same as they were.
                     if ($new_roles != 'left' and $new_roles != 'graduate' and strpos($new_roles, 'Student') === false) {
                         $new_roles .= ',Student';
                         // Add in 'student' role if missing.
                     }
                 }
                 $names = explode(' ', $sms->Forename);
                 $tmp_initials = '';
                 foreach ($names as $tmp_name) {
                     if (isset($tmp_name[0])) {
                         $tmp_initials .= $tmp_name[0];
                     }
                 }
                 if ($current_users[$lookup_username]['year'] != $sms->YearofStudy or $tmp_initials != $current_users[$lookup_username]['initials'] or $current_users[$lookup_username]['grade'] != $sms->CourseCode or $current_users[$lookup_username]['title'] != $sms->Title or $current_users[$lookup_username]['surname'] != $sms->Surname or $current_users[$lookup_username]['first_names'] != $sms->Forename or $current_users[$lookup_username]['roles'] != $new_roles or isset($current_users[$lookup_username]['email']) and $current_users[$lookup_username]['email'] != $sms->Email) {
                     $result = $mysqli->prepare("UPDATE users SET yearofstudy = ?, roles = ?, grade = ?, title = ?, surname = ?, first_names = ?, initials = ?, email = ? WHERE username = ?");
                     $result->bind_param('issssssss', $sms->YearofStudy, $new_roles, $sms->CourseCode, $sms->Title, $sms->Surname, $sms->Forename, $tmp_initials, $sms->Email, $lookup_username);
                     if (!$demomode) {
                         $result->execute();
                     }
                     $result->close();
                 }
                 // Check if SID needs updating - rare but could happen
                 if ($current_users[$lookup_username]['student_id'] != $sms->StudentID) {
                     if ($current_users[$lookup_username]['student_id'] == 'SID_ERROR') {
                         $result = $mysqli->prepare("INSERT INTO sid VALUES (?, ?)");
                         $result->bind_param('si', $sms->StudentID, $current_users[$lookup_username]['userID']);
                         $result->execute();
                         $result->close();
                     } else {
                         $result = $mysqli->prepare("UPDATE sid SET student_id = ? WHERE userID = ?");
                         $result->bind_param('si', $sms->StudentID, $current_users[$lookup_username]['userID']);
                         $result->execute();
                         $result->close();
                     }
                 }
             } else {
                 echo 'ERROR: unable to establish username for ' . $sms->Title . ' ' . $sms->Surname . ', ' . $sms->Forename . ' (' . $sms->StudentID . ')<br />';
             }
         }
         // Check for any extra students in Rogo but not in SATURN for module
         foreach ($current_users as $username => $individual_user) {
             if ($individual_user['delete'] == 1 and $individual_user['auto_update'] == 1) {
                 $result = $mysqli->prepare("DELETE FROM modules_student WHERE id = ?");
                 // Delete using primary key of 'modules_student'
                 $result->bind_param('i', $individual_user['smID']);
                 if (!$demomode) {
                     $result->execute();
                 }
                 $result->close();
                 $deletions++;
                 if ($deletion_details == '') {
                     $deletion_details = $username;
                 } else {
                     $deletion_details .= ',' . $username;
                 }
             }
         }
     }
     $import_type = '';
     if ($enrolements > 0 or $deletions > 0) {
         if ($sms_api == 'http://saturn-exports.nottingham.ac.uk/touchstone.ashx?campus=malaysia') {
             $import_type = 'SATURN Malaysia';
         } elseif ($sms_api == 'http://saturn-exports.nottingham.ac.uk/touchstone.ashx?campus=china') {
             $import_type = 'SATURN China';
         } else {
             $import_type = 'SATURN UK';
         }
         $result = $mysqli->prepare("INSERT INTO sms_imports VALUES (NULL, NOW(), ?, ?, ?, ?, ?, ?, ?)");
         $result->bind_param('sisisss', $idMod, $enrolements, $enrolement_details, $deletions, $deletion_details, $import_type, $session);
         $result->execute();
         $result->close();
     }
     $this->set_enrolement_no($enrolements, $module);
     $this->set_deletion_no($deletions, $module);
     $expdata = array();
     if ($demomode) {
         // Write out to temp
         $dir = sys_get_temp_dir();
         $expdata['status'] = $this->errorinfo;
         $expdata['students'] = $c_u;
         $expdata['moduledata'] = $xml;
         $expdata['studentsa'] = $current_users;
         file_put_contents($dir . '/' . 'uon-' . $module . '.txt', var_export($expdata, true));
         file_put_contents($dir . '/' . 'sum-uon-' . $module . '.txt', "{$enrolements}, {$deletions}\r\n{$import_type}\r\n{$enrolement_details}\r\n{$deletion_details}\r\n");
     }
 }
Exemplo n.º 5
0
}
$session = date_utils::get_current_academic_year();
$modID = module_utils::get_idMod($module, $mysqli);
// Translate module code into ID
$mod_details = module_utils::get_full_details_by_ID($modID, $mysqli);
if ($mod_details === false) {
    $msg = sprintf($string['nomodule'], $module);
    display_error('Module ID error', $msg, false, true);
}
if ($mod_details['active'] == 1 and $mod_details['selfenroll'] == 1 and isset($_POST['submit'])) {
    if (!$userObject->has_role('Student')) {
        // Add role of 'Student' if current user doesn't have it.
        UserUtils::add_role('Student', $userObject->get_user_ID(), $mysqli);
    }
    // Insert new module enrollment
    UserUtils::add_student_to_module($userObject->get_user_ID(), $modID, 1, $_POST['session'], $mysqli);
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta http-equiv="content-type" content="text/html;charset=<?php 
echo $configObject->get('cfg_page_charset');
?>
" />
  
  <title><?php 
echo $string['moduleselfenrolment'] . ' ' . $configObject->get('cfg_install_type');
?>
</title>