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 > ?> > > enrol_db_hide: > > choose_from_menu($yesno, "enrol_db_hide", $frm->enrol_db_hide, ""); > if (isset($err["enrol_db_hide"])) formerr($err["enrol_db_hide"]); > ?> > > > > > > // 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