forked from jcharaoui/moodle-cegep
-
Notifications
You must be signed in to change notification settings - Fork 1
/
block_cegep_enrol_form.php
125 lines (97 loc) · 4.66 KB
/
block_cegep_enrol_form.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
require_once($CFG->libdir.'/formslib.php');
class cegep_enrol_form extends moodleform {
function definition() {
global $COURSE, $USER;
$mform =& $this->_form;
if (!$coursegroups = cegep_local_get_coursegroups($COURSE->idnumber, $USER->idnumber)) {
notify(get_string('nocoursegroupsavailable','block_cegep'));
} else {
foreach ($coursegroups as $coursegroup) {
($coursegroup['numberofstudents'] < 1) ? ($disabled = array( 'disabled' => 'disabled' )) : ($disabled = array());
$mform->addElement('checkbox', "coursegroup_$coursegroup[id]", null, "$coursegroup[coursecode] #$coursegroup[group] - " . cegep_local_term_to_string($coursegroup['term']) . " ($coursegroup[numberofstudents] ".get_string('students', 'block_cegep').')', $disabled);
}
$this->add_action_buttons();
}
}
function validation($data, $files) {
$errors = parent::validation($data, $files);
$coursegroup_ids = array();
foreach ($data as $key => $value) {
if (substr($key, 0, 11) == 'coursegroup' && $value == 1) {
$cg = explode('_', $key);
$coursegroup_id = $cg[1];
if (!is_numeric($coursegroup_id)) {
$errors["coursegroup_$coursegroup_id"] = get_string('coursegroupunavailable','block_cegep');
}
// Verify if the coursegroup is available in the system
elseif (!$coursegroup_id = self::validate_coursegroup_exists($coursegroup_id)) {
$errors["coursegroup_$coursegroup_id"] = get_string('coursegroupunavailable','block_cegep');
}
// Verify if the coursegroup is already enrolled into this course
elseif (self::validate_coursegroup_enrolled($coursegroup_id)) {
$errors["coursegroup_$coursegroup_id"] = get_string('coursegroupalreadyenrolled','block_cegep');
}
// Verify if the coursegroup has students registered
elseif (!self::validate_coursegroup_students_registered($coursegroup_id)) {
$errors["coursegroup_$coursegroup_id"] = get_string('coursegrouphasnostudents','block_cegep');
}
array_push($coursegroup_ids, $coursegroup_id);
}
}
if (count($coursegroup_ids) < 1) {
$errors[] = 1;
notify(get_string('nocoursegroupselected','block_cegep'));
}
return $errors;
}
private function validate_term($term) {
global $CFG, $sisdb;
$select = "SELECT * FROM `$CFG->sisdb_name`.`coursegroup` WHERE `term` = '$term' LIMIT 1";
$result = $sisdb->Execute($select);
if (!$result) {
trigger_error($sisdb->ErrorMsg() .' STATEMENT: '. $select, E_USER_ERROR);
return false;
}
elseif ($result->RecordCount() < 1)
return false;
else
return true;
}
private function validate_coursegroup_exists($coursegroup_id) {
global $CFG, $COURSE, $sisdb;
$select = "SELECT * FROM `$CFG->sisdb_name`.`coursegroup` WHERE `id` = '$coursegroup_id';";
$result = $sisdb->Execute($select);
if (!$result) {
trigger_error($sisdb->ErrorMsg() .' STATEMENT: '. $select, E_USER_ERROR);
return false;
} elseif ($result->RecordCount() < 1)
return false;
else
return $result->fields['id'];
}
private function validate_coursegroup_enrolled($coursegroup_id) {
global $CFG, $COURSE, $enroldb;
$select = "SELECT COUNT(`coursegroup_id`) AS num FROM `$CFG->enrol_dbtable` WHERE `$CFG->enrol_remotecoursefield` = '$COURSE->idnumber' AND `coursegroup_id` = '$coursegroup_id' LIMIT 1";
$result = $enroldb->Execute($select);
if (!$result) {
trigger_error($enroldb->ErrorMsg() .' STATEMENT: '. $select, E_USER_ERROR);
return false;
}
else
return $result->fields['num'];
}
private function validate_coursegroup_students_registered($coursegroup_id) {
global $CFG, $COURSE, $sisdb;
$select = "SELECT * FROM `$CFG->sisdb_name`.`student_enrolment` WHERE `coursegroup_id` = $coursegroup_id;";
$result = $sisdb->Execute($select);
if (!$result) {
trigger_error($sisdb->ErrorMsg() .' STATEMENT: '. $select, E_USER_ERROR);
return false;
} elseif ($result->RecordCount() < 1)
return false;
else
return true;
}
}
?>