Cannot remotely enroll a course for a student

Re: Cannot remotely enroll a course for a student

by Norie chiba -
Number of replies: 0

I checked why these Notice appears in the codes.
First, please put all debugging messages on and I assume that you have done all setup for Peer to peer Network from 1 to 3 on http://docs.moodle.org/en/Moodle_Network.

my situation is that I would like to enrol some of courses which remote moodle offers to a local user.

go to Admin>Networking>Enrolments

click a link for a remote Moodle host name

I have the following Notice

Notice: Undefined property: stdClass::$defaultrolename in /var/www/moodle_norie/enrol/mnet/enrol.php on line 480

in enrol.php file

they get course object,

(line 444) $courses = $mnetrequest->response;


when I print_object($courses), no attribute called defaultrolename

so I change the code

from

$dbcourse->defaultrolename = addslashes($dbcourse->defaultrolename);

to

$dbcourse->name = addslashes($dbcourse->name);


after that this Notice message disappear.


then another notice

Notice: Undefined index: xtfa211 in /var/www/moodle_norie/admin/mnet/enr_course_enrol.php on line 144

Notice: Undefined index: xtfa211 in /var/www/moodle_norie/admin/mnet/enr_course_enrol.php on line 145

Notice: Undefined index: xtfa211 in /var/www/moodle_norie/admin/mnet/enr_course_enrol.php on line 148

Column 'rolename' cannot be null

INSERT INTO mdl_mnet_enrol_assignments ( USERID, HOSTID, COURSEID, ROLENAME, ENROLTIME, ENROLTYPE ) VALUES ( 15231, 4, 8, null, null, null )
  • line 1554 of lib/dmllib.php: call to debugging()
  • line 149 of admin/mnet/enr_course_enrol.php: call to insert_record()


I check enr_course_enrol.php and found

when we enroll a user for a remote course for the first time,

(line 88)

$all_enrolled_users = $mnet_request->response;


$all_enrolled_users is return to 0


for $sql query (line 111) which return most of users from local mdl_user table,

but I have not selected the local users to enrol.


then the code adds the users to mdl_mnet_enrol_assignments table such that

INSERT INTO mdl_mnet_enrol_assignments ( USERID, HOSTID, COURSEID, ROLENAME, ENROLTIME, ENROLTYPE ) VALUES ( 15231, 4, 8, null, null, null )


and as ROLENAME is not set, it is complaining.


I change the codes as follows:


from line(142)


/***old one****/

foreach($enrolledusers as $user) {


$dataobj = new stdClass();
$dataobj->userid = $user->id;
$dataobj->hostid = $mnet_peer->id;
$dataobj->courseid = $courseid;
$dataobj->rolename = $all_enrolled_users[$user->username]['name'];
$dataobj->enroltype = $all_enrolled_users[$user->username]['enrol'];

if ( $user->wehaverecord == 0) {
$dataobj->enroltime = $all_enrolled_users[$user->username]['timemodified'];
$dataobj->id = insert_record('mnet_enrol_assignments', $dataobj);
} elseif (array_key_exists($user->username, $all_enrolled_users)) {
$dataobj->id = $user->enrolid;
update_record('mnet_enrol_assignments', $dataobj);
} elseif (is_array($all_enrolled_users) && count($all_enrolled_users)) {
delete_record('mnet_enrol_assignments', 'id', $user->enrolid);
}
}


/***new one****/

foreach($enrolledusers as $user) {

$dataobj = new stdClass();
$dataobj->userid = $user->id;
$dataobj->hostid = $mnet_peer->id;
$dataobj->courseid = $courseid;
if (count($all_enrolled_users)) {
$dataobj->rolename = $all_enrolled_users[$user->username]['name'];
$dataobj->enroltype = $all_enrolled_users[$user->username]['enrol'];
}

if ( count($all_enrolled_users) && $user->wehaverecord == 0 ) {
$dataobj->enroltime = $all_enrolled_users[$user->username]['timemodified'];
$dataobj->id = insert_record('mnet_enrol_assignments', $dataobj);
} elseif (array_key_exists($user->username, $all_enrolled_users)) {
$dataobj->id = $user->enrolid;
update_record('mnet_enrol_assignments', $dataobj);
} elseif (is_array($all_enrolled_users) && count($all_enrolled_users)) {
delete_record('mnet_enrol_assignments', 'id', $user->enrolid);
}
}

after that these Notice messages disappear.


I ckeck the higer version of these codes, but they are the same with my defalut codes.

Please help or advise me whether my modifications are OK or not.


thanks for your help


Norie