Update #86c46bd0u - Add support for predefined IP addresses/ranges

This commit is contained in:
Vincent Cornelis
2025-08-04 17:38:30 +02:00
parent 26669e73f1
commit fe3a5b2302
16 changed files with 1435 additions and 52 deletions

View File

@@ -44,7 +44,42 @@ class frontend extends \core_availability\frontend {
return [
'js:ipaddress',
'error_ipaddress',
'predefined_ranges',
'custom_ipaddress',
'use_predefined',
];
}
/**
* Get additional parameters for the JavaScript module.
*
* Note: Cannot add type declaration for $course parameter as the parent
* core_availability\frontend::get_javascript_init_params() method doesn't
* have it, and PHP requires compatibility with parent method signatures.
*
* @param \stdClass $course Course object
* @param \cm_info|null $cm Course module
* @param \section_info|null $section Section
*
* @return array
*/
protected function get_javascript_init_params($course, ?\cm_info $cm = null, ?\section_info $section = null): array {
global $DB;
// Get enabled predefined IP ranges.
$ranges = $DB->get_records('availability_ipaddress_pre', ['enabled' => 1], 'name', 'id, name, ipaddresses');
// Format for JavaScript.
$rangedata = [];
foreach ($ranges as $range) {
$rangedata[] = [
'id' => $range->id,
'name' => format_string($range->name),
'ipaddresses' => $range->ipaddresses,
];
}
return [$rangedata];
}
}