diff /root/moodle/enrol/database/config.html /var/www/html/enrol/database/config.html
84a85,87
> // MOD - changing layout to make it clearer that fields are being mapped on to one another
> ?>
87c90
<
---
>
91,106c94,131
<
enrol_localcoursefield:
<
<
<
<
<
<
<
<
<
<
enrol_localuserfield:
<
<
<
<
<
---
>
>
>
>
>
>
>
>
>
>
>
>
>
►
>
>
>
>
>
>
>
►
>
>
>
>
>
>
>
►
>
>
>
>
>
>
>
►
>
>
>
>
109,149d133
<
<
<
enrol_db_localrolefield:
<
<
<
<
<
<
<
<
<
<
enrol_remotecoursefield:
<
<
<
<
<
<
<
<
<
<
enrol_remoteuserfield:
<
<
<
<
<
<
<
<
<
<
enrol_db_remoterolefield:
<
<
<
<
<
<
<
<
189a174,208
> //MOD -- Adding new field for new option to automatically hide newly created courses
> ?>
>
> // End MOD
> ?>
>
> //MOD -- Adding new field for autopopulation of category
> ?>
>
>
enrol_db_remotecategoryfield:
>
>
>
>
>
>
>
> // End MOD
> ?>
>
Common subdirectories: /root/moodle/enrol/database/CVS and /var/www/html/enrol/database/CVS
diff /root/moodle/enrol/database/enrol.php /var/www/html/enrol/database/enrol.php
64c64,77
< if ($rs = $enroldb->Execute("SELECT {$CFG->enrol_remotecoursefield} as enrolremotecoursefield
---
> // MOD -- Added the following if statements in order to automatically populate the full course name and category being stored in the remote table
> if(!empty($CFG->enrol_remotecoursename)) {
> $sql = ", {$CFG->enrol_remotecoursename} AS enrolremotecoursename";
> } else {
> $sql = '';
> }
>
> if(!empty($CFG->enrol_db_remotecategoryfield)) {
> $sql .= ", {$CFG->enrol_db_remotecategoryfield} AS enrolremotecategoryfield";
> }
>
> // MOD -- Changed the following SQL to use the if SQL generated above
>
> if ($rs = $enroldb->Execute("SELECT {$CFG->enrol_remotecoursefield} as enrolremotecoursefield {$sql}
68a82,88
> /*if ($rs = $enroldb->Execute("SELECT {$CFG->enrol_remotecoursefield} as enrolremotecoursefield
> FROM {$CFG->enrol_dbtable}
> WHERE {$CFG->enrol_remoteuserfield} = " . $useridfield .
> (isset($remote_role_name, $remote_role_value) ? ' AND '.$remote_role_name.' = '.$remote_role_value : ''))) {*/
>
> // End MOD
>
84a105,106
> // MOD -- Changes to the $courselist array(). Each element will store an array -- the course ID AND (if present) the full course name and category
> // (so that the full course name can be automatically populated). So, $courselist will now be a 2d array
87a110,131
>
> $courselistarray = array(
> 'id'=>$fields_obj->enrolremotecoursefield,
> 'category'=>NULL,
> 'fullcoursename'=>$fields_obj->enrolremotecoursefield
> );
>
> if(isset($fields_obj->enrolremotecoursename) && !empty($fields_obj->enrolremotecoursename)) {
> $courselistarray['fullcoursename'] = $fields_obj->enrolremotecoursename;
> }
>
> if(isset($fields_obj->enrolremotecategoryfield) && !empty($fields_obj->enrolremotecategoryfield)) {
> $courselistarray['category'] = $fields_obj->enrolremotecategoryfield;
> }
>
> $courselist[] = $courselistarray;
> //$count++;
> }
>
> /*$courselist = array();
> while ($fields_obj = rs_fetch_next_record($rs)) { // Make a nice little array of courses to process
> $fields_obj = (object)array_change_key_case((array)$fields_obj , CASE_LOWER);
91c135
< rs_close($rs);
---
> */
93c137,139
< //error_log('[ENROL_DB] Found '.count($existing).' existing roles and '.$count.' in external database');
---
> // End MOD
>
> rs_close($rs);
95,96c141,150
< foreach ($courselist as $coursefield) { /// Check the list of courses against existing
< $course = get_record('course', $CFG->enrol_localcoursefield, $coursefield);
---
> //error_log('[ENROL_DB] Found '.count($existing).' existing roles and '.$count.' in external database');
>
> // MOD -- $coursefield was changed to $coursefields to more accurately represent what is being stored in the following foreach line.
> foreach ($courselist as $coursefields) { /// Check the list of courses against existing
> //foreach ($courselist as $coursefield) { /// Check the list of courses against existing
> // End MOD
>
> // MOD -- The following block was changed because $coursefield(s) no longer just stores the course id, but an array with the course id, course name, and course category
> // Also changed to store whether the course should be hidden or not
> $course = get_record('course', $CFG->enrol_localcoursefield, $coursefields['id']);
100c154
< error_log( "Course $coursefield does not exist, skipping") ;
---
> error_log( "Course {$coursefields['id']}/{$coursefields['fullcoursename']} does not exist, skipping") ;
107,109c161,165
< $course->{$CFG->enrol_localcoursefield} = $coursefield;
< $course->fullname = $coursefield;
< $course->shortname = $coursefield;
---
> $course->{$CFG->enrol_localcoursefield} = $coursefields['id'];
> $course->fullname = $coursefields['fullcoursename'];
> $course->shortname = $coursefields['id'];
> $course->category = $coursefields['category'];
> $course->visible = ($CFG->enrol_db_hide) ? 0 : 1;
112c168
< error_log( "Creating course $coursefield failed");
---
> error_log( "Creating course {$coursefields['id']}/{$coursefields['fullcoursename']} failed");
116a173,194
> /*$course = get_record('course', $CFG->enrol_localcoursefield, $coursefield);
> if (!is_object($course)) {
> if (empty($CFG->enrol_db_autocreate)) { // autocreation not allowed
> if (debugging('',DEBUG_ALL)) {
> error_log( "Course $coursefield does not exist, skipping") ;
> }
> continue; // next foreach course
> }
> // ok, now then let's create it!
> // prepare any course properties we actually have
> $course = new StdClass;
> $course->{$CFG->enrol_localcoursefield} = $coursefield;
> $course->fullname = $coursefield;
> $course->shortname = $coursefield;
> if (!($newcourseid = $this->create_course($course, true)
> and $course = get_record( 'course', 'id', $newcourseid))) {
> error_log( "Creating course $coursefield failed");
> continue; // nothing left to do...
> }
> }*/
> // End MOD
>
209,212c287,303
< $sql = "SELECT DISTINCT {$CFG->enrol_remotecoursefield} " .
< " FROM {$CFG->enrol_dbtable} " .
< " WHERE {$CFG->enrol_remoteuserfield} IS NOT NULL" .
< (isset($remote_role_name, $remote_role_value) ? ' AND '.$remote_role_name.' = '.$remote_role_value : '');
---
> // MOD -- Also select the course name and category
> //$sql = "SELECT DISTINCT {$CFG->enrol_remotecoursefield} " .
>
> $sql = "SELECT DISTINCT {$CFG->enrol_remotecoursefield}";
> if(!empty($CFG->enrol_remotecoursename)) {
> $sql .= ", {$CFG->enrol_remotecoursename} ";
> }
>
> if(!empty($CFG->enrol_db_remotecategoryfield)) {
> $sql .= ", {$CFG->enrol_db_remotecategoryfield} ";
> }
>
> $sql .= " FROM {$CFG->enrol_dbtable} " .
> " WHERE {$CFG->enrol_remoteuserfield} IS NOT NULL" .
> (isset($remote_role_name, $remote_role_value) ? ' AND '.$remote_role_name.' = '.$remote_role_value : '');
>
> // End MOD
227a319,332
> // MOD -- Also store the course name and category
> if(!empty($extcourse_obj->{strtolower($CFG->enrol_remotecoursename)})) {
> $extcoursename = $extcourse_obj->{strtolower($CFG->enrol_remotecoursename)};
> } else {
> $extcoursename = $extcourse;
> }
>
> if(!empty($extcourse_obj->{strtolower($CFG->enrol_db_remotecategoryfield)})) {
> $extcoursecategory = $extcourse_obj->{strtolower($CFG->enrol_db_remotecategoryfield)};
> } else {
> $extcoursecategory = NULL;
> }
> // End MOD
>
248a354,361
> // MOD -- Store the course's full name as the course name, rather than the idnumber
> // Also store whether the course should be hidden or not
> //$course->fullname = $extcourse;
> $course->fullname = $extcoursename;
> $course->shortname = $extcourse;
> $course->category = $extcoursecategory;
> $course->visible = ($CFG->enrol_db_hide) ? 0 : 1;
> // End MOD
432,433c545,556
< 'enrol_localcoursefield', 'enrol_localuserfield',
< 'enrol_remotecoursefield', 'enrol_remoteuserfield',
---
> // MOD -- Changed the following to lines to make use of the new full course name autopopulation feature
> //'enrol_localcoursefield', 'enrol_localuserfield',
> //'enrol_remotecoursefield', 'enrol_remoteuserfield',
> 'enrol_localcoursefield', 'enrol_localuserfield', 'enrol_localcoursename',
> 'enrol_remotecoursefield', 'enrol_remoteuserfield', 'enrol_remotecoursename',
> // End MOD
> // MOD -- Added element for category autopopulation feature
> 'enrol_db_remotecategoryfield',
> // End MOD
> // MOD -- Added element for option to hide autocreated courses
> 'enrol_db_hide',
> // End MOD
482c605
< $config->enrol_localcoursefield = '';
---
> $config->enrol_localcoursefield = 'idnumber'; //MOD -- Changed from empty string
485a609,615
> // MOD -- Added localcoursename
> if (!isset($config->enrol_localcoursename)) {
> $config->enrol_localcoursename = 'fullname'; //MOD -- Changed from empty string
> }
> set_config('enrol_localcoursename', $config->enrol_localcoursename);
> // End MOD
>
487c617
< $config->enrol_localuserfield = '';
---
> $config->enrol_localuserfield = 'username'; //MOD -- Changed from empty string
495a626,632
> // MOD -- Added remotecoursename
> if (!isset($config->enrol_remotecoursename)) {
> $config->enrol_remotecoursename = '';
> }
> set_config('enrol_remotecoursename', $config->enrol_remotecoursename);
> // End MOD
>
505a643,649
> // MOD -- Added hide option
> if (!isset($config->enrol_db_hide)) {
> $config->enrol_db_hide = '';
> }
> set_config('enrol_db_hide', $config->enrol_db_hide);
> // End MOD
>
510a655,661
> // MOD -- Added remotecategoryfield
> if (!isset($config->enrol_db_remotecategoryfield)) {
> $config->enrol_db_remotecategoryfield = '';
> }
> set_config('enrol_db_remotecategoryfield', $config->enrol_db_remotecategoryfield);
> // End MOD
>
522c673
< $config->enrol_db_localrolefield = '';
---
> $config->enrol_db_localrolefield = 'shortname'; //MOD -- Changed from empty string
584,585c735,767
< $course->category = 1; // the misc 'catch-all' category
< if (!empty($CFG->enrol_db_category)){ //category = 0 or undef will break moodle
---
> // MOD -- Commented out the following line
> //$course->category = 1; // the misc 'catch-all' category
>
> // MOD -- Adding processing to autopopulate category from remote category field
> if(!empty($course->category)) {
> // Check if the category exists
> if(is_string($course->category)) {
> $category = get_record('course_categories', 'name', $course->category);
>
> } else if(is_int($course->category)) {
> $category = get_record('course_categories', 'id', $course->category);
>
> } else {
> $category = NULL;
> }
>
> if(is_object($category) && isset($category->id)) {
> $course->category = intval($category->id);
> } else {
> $course->category = NULL;
> }
> }
>
> if (empty($course->category) && !empty($CFG->enrol_db_category)){ //category = 0 or undef will break moodle
> $course->category = $CFG->enrol_db_category;
> }
>
> if(empty($course->category)) {
> $course->category = 1; // the misc 'catch-all' category
> }
>
> /*
> if (!empty($CFG->enrol_db_category)){ //category = 0 or undef will break moodle
587a770,772
> */
>
> // End MOD
598c783,791
< $course->visible = 1;
---
>
> // MOD -- Added ability to specify whether automatically created courses should be hidden
> if(!isset($course->visible) || $course->visible) {
> $course->visible = 1;
> } else {
> $course->visible = 0;
> }
> //$course->visible = 1;
> // End MOD