Rename marketplace plugin to meetletacbfree (mdl_modules.name limit + CI table prefixes)

This commit is contained in:
2026-09-01 23:24:11 +03:30
parent 555cd725f7
commit d987994ded
77 changed files with 1497 additions and 1322 deletions
+95 -95
View File
@@ -17,16 +17,16 @@
/**
* Library functions for MeetLet Adobe Connect Bridge.
*
* @package mod_meetletacbmarketplace
* @package mod_meetletacbfree
* @copyright 2026 MeetLet
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
use mod_meetletacbmarketplace\api\service;
use mod_meetletacbmarketplace\local\config;
use mod_meetletacbmarketplace\local\roles;
use mod_meetletacbfree\api\service;
use mod_meetletacbfree\local\config;
use mod_meetletacbfree\local\roles;
/**
* Feature support.
@@ -34,7 +34,7 @@ use mod_meetletacbmarketplace\local\roles;
* @param string $feature
* @return mixed
*/
function meetletacbmarketplace_supports($feature) {
function meetletacbfree_supports($feature) {
switch ($feature) {
case FEATURE_GROUPS:
return true;
@@ -64,7 +64,7 @@ function meetletacbmarketplace_supports($feature) {
*
* @return bool
*/
function meetletacbmarketplace_is_branded(): bool {
function meetletacbfree_is_branded(): bool {
return true;
}
@@ -76,12 +76,12 @@ function meetletacbmarketplace_is_branded(): bool {
* @param \stdClass $course
* @return array
*/
function mod_meetletacbmarketplace_get_course_content_items(
function mod_meetletacbfree_get_course_content_items(
\core_course\local\entity\content_item $contentitem,
\stdClass $user,
\stdClass $course
): array {
if (!\mod_meetletacbmarketplace\registration\manager::is_registered()) {
if (!\mod_meetletacbfree\registration\manager::is_registered()) {
return [];
}
return [$contentitem];
@@ -91,13 +91,13 @@ function mod_meetletacbmarketplace_get_course_content_items(
* Add instance.
*
* @param stdClass $data
* @param mod_meetletacbmarketplace_mod_form|null $mform
* @param mod_meetletacbfree_mod_form|null $mform
* @return int
*/
function meetletacbmarketplace_add_instance($data, $mform = null) {
function meetletacbfree_add_instance($data, $mform = null) {
global $DB, $USER;
\mod_meetletacbmarketplace\registration\manager::require_registered();
\mod_meetletacbfree\registration\manager::require_registered();
$data->timecreated = time();
$data->timemodified = $data->timecreated;
@@ -112,40 +112,40 @@ function meetletacbmarketplace_add_instance($data, $mform = null) {
} else if (empty($data->participants)) {
$data->participants = json_encode(roles::get_participant_list_default($coursecontext, $USER->id));
}
$togglefields = meetletacbmarketplace_activity_override_fields();
$data->settingoverrides = config::setting_overrides_json(meetletacbmarketplace_collect_setting_override_states($data, $togglefields));
$data->autooffline = meetletacbmarketplace_legacy_setting_value($data, 'autooffline');
$togglefields = meetletacbfree_activity_override_fields();
$data->settingoverrides = config::setting_overrides_json(meetletacbfree_collect_setting_override_states($data, $togglefields));
$data->autooffline = meetletacbfree_legacy_setting_value($data, 'autooffline');
$data->meetingpublic = empty($data->meetingpublic) ? 0 : 1;
$data->showzip = meetletacbmarketplace_legacy_setting_value($data, 'showzip');
$data->showzip = meetletacbfree_legacy_setting_value($data, 'showzip');
$data->showofflineplayer = empty($data->showofflineplayer) ? 0 : 1;
$data->showrecordingstab = meetletacbmarketplace_legacy_setting_value($data, 'showrecordingstab');
$data->showcontenttab = meetletacbmarketplace_legacy_setting_value($data, 'showcontenttab');
$data->showmp4 = meetletacbmarketplace_legacy_setting_value($data, 'showmp4');
$data->showmakeoffline = meetletacbmarketplace_legacy_setting_value($data, 'showmakeoffline');
$data->showrecordingstab = meetletacbfree_legacy_setting_value($data, 'showrecordingstab');
$data->showcontenttab = meetletacbfree_legacy_setting_value($data, 'showcontenttab');
$data->showmp4 = meetletacbfree_legacy_setting_value($data, 'showmp4');
$data->showmakeoffline = meetletacbfree_legacy_setting_value($data, 'showmakeoffline');
$data->linkmode = empty($data->linkmode) ? 0 : 1;
$data->existingscoid = (int)($data->existingscoid ?? 0);
$data->waitforhost = meetletacbmarketplace_legacy_setting_value($data, 'waitforhost');
$data->waitforhost = meetletacbfree_legacy_setting_value($data, 'waitforhost');
$data->meetinglang = clean_param($data->meetinglang ?? '', PARAM_ALPHANUMEXT);
if ($data->linkmode) {
$data->templatescoid = 0;
$data->meeturl = '';
}
$data->meeturl = meetletacbmarketplace_clean_meet_url($data->meeturl ?? '');
$data->meeturl = meetletacbfree_clean_meet_url($data->meeturl ?? '');
if (empty($data->featureaccess_override)) {
$data->featureaccess = '';
} else {
$matrix = optional_param_array('featureaccess_matrix', [], PARAM_RAW);
$data->featureaccess = \mod_meetletacbmarketplace\local\featureaccess::matrix_from_post($matrix);
$data->featureaccess = \mod_meetletacbfree\local\featureaccess::matrix_from_post($matrix);
}
unset($data->featureaccess_override, $data->featureaccess_matrix);
meetletacbmarketplace_clear_override_form_fields($data, $togglefields);
meetletacbfree_clear_override_form_fields($data, $togglefields);
$id = $DB->insert_record('meetletacbmarketplace', $data);
$id = $DB->insert_record('meetletacbfree', $data);
$data->id = $id;
meetletacbmarketplace_create_remote_meetings($data);
meetletacbmarketplace_grade_item_update($data);
meetletacbmarketplace_update_calendar($data);
meetletacbfree_create_remote_meetings($data);
meetletacbfree_grade_item_update($data);
meetletacbfree_update_calendar($data);
return $id;
}
@@ -154,13 +154,13 @@ function meetletacbmarketplace_add_instance($data, $mform = null) {
* Update instance.
*
* @param stdClass $data
* @param mod_meetletacbmarketplace_mod_form|null $mform
* @param mod_meetletacbfree_mod_form|null $mform
* @return bool
*/
function meetletacbmarketplace_update_instance($data, $mform = null) {
function meetletacbfree_update_instance($data, $mform = null) {
global $DB, $USER;
\mod_meetletacbmarketplace\registration\manager::require_registered();
\mod_meetletacbfree\registration\manager::require_registered();
$data->timemodified = time();
$data->id = $data->instance;
@@ -174,17 +174,17 @@ function meetletacbmarketplace_update_instance($data, $mform = null) {
} else if (empty($data->participants)) {
$data->participants = json_encode(roles::get_participant_list_default($coursecontext, $USER->id ?? 0));
}
$togglefields = meetletacbmarketplace_activity_override_fields();
$data->settingoverrides = config::setting_overrides_json(meetletacbmarketplace_collect_setting_override_states($data, $togglefields));
$data->autooffline = meetletacbmarketplace_legacy_setting_value($data, 'autooffline');
$togglefields = meetletacbfree_activity_override_fields();
$data->settingoverrides = config::setting_overrides_json(meetletacbfree_collect_setting_override_states($data, $togglefields));
$data->autooffline = meetletacbfree_legacy_setting_value($data, 'autooffline');
$data->meetingpublic = empty($data->meetingpublic) ? 0 : 1;
$data->showzip = meetletacbmarketplace_legacy_setting_value($data, 'showzip');
$data->showzip = meetletacbfree_legacy_setting_value($data, 'showzip');
$data->showofflineplayer = empty($data->showofflineplayer) ? 0 : 1;
$data->showrecordingstab = meetletacbmarketplace_legacy_setting_value($data, 'showrecordingstab');
$data->showcontenttab = meetletacbmarketplace_legacy_setting_value($data, 'showcontenttab');
$data->showmp4 = meetletacbmarketplace_legacy_setting_value($data, 'showmp4');
$data->showmakeoffline = meetletacbmarketplace_legacy_setting_value($data, 'showmakeoffline');
$data->waitforhost = meetletacbmarketplace_legacy_setting_value($data, 'waitforhost');
$data->showrecordingstab = meetletacbfree_legacy_setting_value($data, 'showrecordingstab');
$data->showcontenttab = meetletacbfree_legacy_setting_value($data, 'showcontenttab');
$data->showmp4 = meetletacbfree_legacy_setting_value($data, 'showmp4');
$data->showmakeoffline = meetletacbfree_legacy_setting_value($data, 'showmakeoffline');
$data->waitforhost = meetletacbfree_legacy_setting_value($data, 'waitforhost');
$data->meetinglang = clean_param($data->meetinglang ?? '', PARAM_ALPHANUMEXT);
// linkmode / existingscoid are immutable after create.
unset($data->linkmode, $data->existingscoid);
@@ -192,17 +192,17 @@ function meetletacbmarketplace_update_instance($data, $mform = null) {
$data->featureaccess = '';
} else {
$matrix = optional_param_array('featureaccess_matrix', [], PARAM_RAW);
$data->featureaccess = \mod_meetletacbmarketplace\local\featureaccess::matrix_from_post($matrix);
$data->featureaccess = \mod_meetletacbfree\local\featureaccess::matrix_from_post($matrix);
}
unset($data->featureaccess_override, $data->featureaccess_matrix);
meetletacbmarketplace_clear_override_form_fields($data, $togglefields);
meetletacbfree_clear_override_form_fields($data, $togglefields);
$DB->update_record('meetletacbmarketplace', $data);
$DB->update_record('meetletacbfree', $data);
if (config::is_configured()) {
$service = new service();
$service->login_admin();
$maps = $DB->get_records('meetlet_marketplace_meetings', ['instanceid' => $data->id]);
$maps = $DB->get_records('meetletacbfree_meetings', ['instanceid' => $data->id]);
foreach ($maps as $map) {
$payload = clone $data;
if (!empty($map->groupid)) {
@@ -218,8 +218,8 @@ function meetletacbmarketplace_update_instance($data, $mform = null) {
$service->logout();
}
meetletacbmarketplace_grade_item_update($data);
meetletacbmarketplace_update_calendar($data);
meetletacbfree_grade_item_update($data);
meetletacbfree_update_calendar($data);
return true;
}
@@ -229,12 +229,12 @@ function meetletacbmarketplace_update_instance($data, $mform = null) {
* @param int $id
* @return bool
*/
function meetletacbmarketplace_delete_instance($id) {
function meetletacbfree_delete_instance($id) {
global $DB;
\mod_meetletacbmarketplace\registration\manager::require_registered();
\mod_meetletacbfree\registration\manager::require_registered();
if (!$record = $DB->get_record('meetletacbmarketplace', ['id' => $id])) {
if (!$record = $DB->get_record('meetletacbfree', ['id' => $id])) {
return false;
}
@@ -242,7 +242,7 @@ function meetletacbmarketplace_delete_instance($id) {
try {
$service = new service();
$service->login_admin();
$maps = $DB->get_records('meetlet_marketplace_meetings', ['instanceid' => $id]);
$maps = $DB->get_records('meetletacbfree_meetings', ['instanceid' => $id]);
$deleteremote = empty($record->linkmode);
foreach ($maps as $map) {
if ($deleteremote) {
@@ -255,11 +255,11 @@ function meetletacbmarketplace_delete_instance($id) {
}
}
$DB->delete_records('meetlet_marketplace_recordings', ['instanceid' => $id]);
$DB->delete_records('meetlet_marketplace_meetings', ['instanceid' => $id]);
$DB->delete_records('meetletacbmarketplace', ['id' => $id]);
$DB->delete_records('meetletacbfree_recordings', ['instanceid' => $id]);
$DB->delete_records('meetletacbfree_meetings', ['instanceid' => $id]);
$DB->delete_records('meetletacbfree', ['id' => $id]);
meetletacbmarketplace_grade_item_delete($record);
meetletacbfree_grade_item_delete($record);
return true;
}
@@ -268,7 +268,7 @@ function meetletacbmarketplace_delete_instance($id) {
*
* @param stdClass $data
*/
function meetletacbmarketplace_create_remote_meetings(stdClass $data): void {
function meetletacbfree_create_remote_meetings(stdClass $data): void {
global $DB, $COURSE, $USER;
if (!config::is_configured()) {
@@ -290,7 +290,7 @@ function meetletacbmarketplace_create_remote_meetings(stdClass $data): void {
$info = $service->meeting_info($scoid);
if (!$info) {
$service->logout();
throw new moodle_exception('errorexistingsco', 'meetletacbmarketplace');
throw new moodle_exception('errorexistingsco', 'meetletacbfree');
}
$service->set_meeting_public($scoid, !empty($data->meetingpublic));
// Push Moodle form values (name/times/options) onto the existing Adobe meeting.
@@ -301,12 +301,12 @@ function meetletacbmarketplace_create_remote_meetings(stdClass $data): void {
'groupid' => 0,
'urlpath' => $info->url ?? '',
];
$DB->insert_record('meetlet_marketplace_meetings', $map);
$DB->insert_record('meetletacbfree_meetings', $map);
$provisionscoids[] = $scoid;
if (!empty($info->url)) {
$DB->set_field('meetletacbmarketplace', 'meeturl', trim($info->url, '/'), ['id' => $data->id]);
$DB->set_field('meetletacbfree', 'meeturl', trim($info->url, '/'), ['id' => $data->id]);
}
meetletacbmarketplace_provision_creator_on_meetings($service, $data, $provisionscoids, $creatorrole);
meetletacbfree_provision_creator_on_meetings($service, $data, $provisionscoids, $creatorrole);
$service->logout();
return;
}
@@ -314,7 +314,7 @@ function meetletacbmarketplace_create_remote_meetings(stdClass $data): void {
$folder = $service->get_folder_scoid('meetings');
if (!$folder) {
$service->logout();
throw new moodle_exception('errornofolder', 'meetletacbmarketplace');
throw new moodle_exception('errornofolder', 'meetletacbfree');
}
// During add_instance, course_modules.instance is not linked yet — use form data.
@@ -326,7 +326,7 @@ function meetletacbmarketplace_create_remote_meetings(stdClass $data): void {
$payload = clone $data;
$payload->name = $data->name . '_' . $group->name;
if (!empty($data->meeturl)) {
$payload->meeturl = meetletacbmarketplace_clean_meet_url($data->meeturl . '_' . $group->name);
$payload->meeturl = meetletacbfree_clean_meet_url($data->meeturl . '_' . $group->name);
}
$scoid = $service->create_meeting($payload, $folder);
$service->set_meeting_public($scoid, !empty($data->meetingpublic));
@@ -337,7 +337,7 @@ function meetletacbmarketplace_create_remote_meetings(stdClass $data): void {
'groupid' => $group->id,
'urlpath' => $info->url ?? '',
];
$DB->insert_record('meetlet_marketplace_meetings', $map);
$DB->insert_record('meetletacbfree_meetings', $map);
$provisionscoids[] = $scoid;
}
} else {
@@ -350,14 +350,14 @@ function meetletacbmarketplace_create_remote_meetings(stdClass $data): void {
'groupid' => 0,
'urlpath' => $info->url ?? '',
];
$DB->insert_record('meetlet_marketplace_meetings', $map);
$DB->insert_record('meetletacbfree_meetings', $map);
$provisionscoids[] = $scoid;
if (empty($data->meeturl) && !empty($info->url)) {
$DB->set_field('meetletacbmarketplace', 'meeturl', trim($info->url, '/'), ['id' => $data->id]);
$DB->set_field('meetletacbfree', 'meeturl', trim($info->url, '/'), ['id' => $data->id]);
}
}
meetletacbmarketplace_provision_creator_on_meetings($service, $data, $provisionscoids, $creatorrole);
meetletacbfree_provision_creator_on_meetings($service, $data, $provisionscoids, $creatorrole);
$service->logout();
}
@@ -366,7 +366,7 @@ function meetletacbmarketplace_create_remote_meetings(stdClass $data): void {
*
* @param int[] $scoids
*/
function meetletacbmarketplace_provision_creator_on_meetings(service $service, stdClass $data, array $scoids, string $permission): void {
function meetletacbfree_provision_creator_on_meetings(service $service, stdClass $data, array $scoids, string $permission): void {
global $USER;
if (empty($scoids) || empty($USER->id)) {
return;
@@ -385,7 +385,7 @@ function meetletacbmarketplace_provision_creator_on_meetings(service $service, s
/**
* Clean custom meeting URL path.
*/
function meetletacbmarketplace_clean_meet_url(string $url): string {
function meetletacbfree_clean_meet_url(string $url): string {
$url = trim($url);
$url = trim($url, '/');
$url = preg_replace('/[^a-zA-Z0-9\-]/', '', $url);
@@ -395,7 +395,7 @@ function meetletacbmarketplace_clean_meet_url(string $url): string {
/**
* Grade item update.
*/
function meetletacbmarketplace_grade_item_update($meetlet, $grades = null) {
function meetletacbfree_grade_item_update($meetlet, $grades = null) {
global $CFG;
require_once($CFG->libdir . '/gradelib.php');
@@ -420,27 +420,27 @@ function meetletacbmarketplace_grade_item_update($meetlet, $grades = null) {
$grades = null;
}
return grade_update('mod/meetletacbmarketplace', $meetlet->course, 'mod', 'meetletacbmarketplace', $meetlet->id, 0, $grades, $params);
return grade_update('mod/meetletacbfree', $meetlet->course, 'mod', 'meetletacbfree', $meetlet->id, 0, $grades, $params);
}
/**
* Delete grade item.
*/
function meetletacbmarketplace_grade_item_delete($meetlet) {
function meetletacbfree_grade_item_delete($meetlet) {
global $CFG;
require_once($CFG->libdir . '/gradelib.php');
return grade_update('mod/meetletacbmarketplace', $meetlet->course, 'mod', 'meetletacbmarketplace', $meetlet->id, 0, null, ['deleted' => 1]);
return grade_update('mod/meetletacbfree', $meetlet->course, 'mod', 'meetletacbfree', $meetlet->id, 0, null, ['deleted' => 1]);
}
/**
* Update calendar event.
*/
function meetletacbmarketplace_update_calendar($meetlet): void {
function meetletacbfree_update_calendar($meetlet): void {
global $DB, $CFG;
require_once($CFG->dirroot . '/calendar/lib.php');
$event = $DB->get_record('event', [
'modulename' => 'meetletacbmarketplace',
'modulename' => 'meetletacbfree',
'instance' => $meetlet->id,
]);
if (!$event) {
@@ -461,12 +461,12 @@ function meetletacbmarketplace_update_calendar($meetlet): void {
$eventdata = new stdClass();
$eventdata->name = $meetlet->name;
$eventdata->description = format_module_intro('meetletacbmarketplace', $meetlet, $meetlet->coursemodule ?? 0, false);
$eventdata->description = format_module_intro('meetletacbfree', $meetlet, $meetlet->coursemodule ?? 0, false);
$eventdata->format = FORMAT_HTML;
$eventdata->courseid = $meetlet->course;
$eventdata->groupid = 0;
$eventdata->userid = 0;
$eventdata->modulename = 'meetletacbmarketplace';
$eventdata->modulename = 'meetletacbfree';
$eventdata->instance = $meetlet->id;
$eventdata->eventtype = 'course';
$eventdata->timestart = $meetlet->starttime;
@@ -484,22 +484,22 @@ function meetletacbmarketplace_update_calendar($meetlet): void {
/**
* Extend settings navigation (optional).
*/
function meetletacbmarketplace_extend_settings_navigation(settings_navigation $settingsnav, navigation_node $meetletnode) {
function meetletacbfree_extend_settings_navigation(settings_navigation $settingsnav, navigation_node $meetletnode) {
// Intentionally minimal ? roles are configured in activity settings.
}
/**
* Course module info for course page.
*/
function meetletacbmarketplace_get_coursemodule_info($coursemodule) {
function meetletacbfree_get_coursemodule_info($coursemodule) {
global $DB;
if (!$record = $DB->get_record('meetletacbmarketplace', ['id' => $coursemodule->instance], 'id, name, intro, introformat, starttime, endtime')) {
if (!$record = $DB->get_record('meetletacbfree', ['id' => $coursemodule->instance], 'id, name, intro, introformat, starttime, endtime')) {
return false;
}
$info = new cached_cm_info();
$info->name = $record->name;
if ($coursemodule->showdescription) {
$info->content = format_module_intro('meetletacbmarketplace', $record, $coursemodule->id, false);
$info->content = format_module_intro('meetletacbfree', $record, $coursemodule->id, false);
}
// Branded monologo: skip Moodle purpose colour filter (orange on course page).
$info->customdata['filtericon'] = false;
@@ -509,8 +509,8 @@ function meetletacbmarketplace_get_coursemodule_info($coursemodule) {
/**
* Apply plugin cron interval to the Moodle scheduled task row.
*/
function meetletacbmarketplace_update_cron_interval() {
\mod_meetletacbmarketplace\local\config::apply_cron_interval();
function meetletacbfree_update_cron_interval() {
\mod_meetletacbfree\local\config::apply_cron_interval();
}
/**
@@ -518,7 +518,7 @@ function meetletacbmarketplace_update_cron_interval() {
*
* @return string[]
*/
function meetletacbmarketplace_activity_override_fields(): array {
function meetletacbfree_activity_override_fields(): array {
return ['waitforhost', 'autooffline', 'showzip', 'showrecordingstab', 'showcontenttab', 'showmp4', 'showmakeoffline'];
}
@@ -529,11 +529,11 @@ function meetletacbmarketplace_activity_override_fields(): array {
* @param string[] $fields
* @return array<string,int>
*/
function meetletacbmarketplace_collect_setting_override_states(stdClass $data, array $fields): array {
function meetletacbfree_collect_setting_override_states(stdClass $data, array $fields): array {
$states = [];
foreach ($fields as $field) {
$statefield = $field . '_state';
$states[$field] = $data->{$statefield} ?? \mod_meetletacbmarketplace\local\config::OVERRIDE_INHERIT;
$states[$field] = $data->{$statefield} ?? \mod_meetletacbfree\local\config::OVERRIDE_INHERIT;
}
return $states;
}
@@ -541,30 +541,30 @@ function meetletacbmarketplace_collect_setting_override_states(stdClass $data, a
/**
* Keep legacy columns in sync for older code, reports and backups.
*/
function meetletacbmarketplace_legacy_setting_value(stdClass $data, string $field): int {
function meetletacbfree_legacy_setting_value(stdClass $data, string $field): int {
$statefield = $field . '_state';
$state = \mod_meetletacbmarketplace\local\config::normalize_override_state($data->{$statefield} ?? null);
if ($state === \mod_meetletacbmarketplace\local\config::OVERRIDE_ON) {
$state = \mod_meetletacbfree\local\config::normalize_override_state($data->{$statefield} ?? null);
if ($state === \mod_meetletacbfree\local\config::OVERRIDE_ON) {
return 1;
}
if ($state === \mod_meetletacbmarketplace\local\config::OVERRIDE_OFF) {
if ($state === \mod_meetletacbfree\local\config::OVERRIDE_OFF) {
return 0;
}
switch ($field) {
case 'waitforhost':
return \mod_meetletacbmarketplace\local\config::default_wait_for_host() ? 1 : 0;
return \mod_meetletacbfree\local\config::default_wait_for_host() ? 1 : 0;
case 'autooffline':
return \mod_meetletacbmarketplace\local\config::auto_offline_default() ? 1 : 0;
return \mod_meetletacbfree\local\config::auto_offline_default() ? 1 : 0;
case 'showzip':
return \mod_meetletacbmarketplace\local\config::feature_enabled('zip') ? 1 : 0;
return \mod_meetletacbfree\local\config::feature_enabled('zip') ? 1 : 0;
case 'showrecordingstab':
return \mod_meetletacbmarketplace\local\config::feature_enabled('recordingstab') ? 1 : 0;
return \mod_meetletacbfree\local\config::feature_enabled('recordingstab') ? 1 : 0;
case 'showcontenttab':
return \mod_meetletacbmarketplace\local\config::feature_enabled('contenttab') ? 1 : 0;
return \mod_meetletacbfree\local\config::feature_enabled('contenttab') ? 1 : 0;
case 'showmp4':
return \mod_meetletacbmarketplace\local\config::feature_enabled('mp4') ? 1 : 0;
return \mod_meetletacbfree\local\config::feature_enabled('mp4') ? 1 : 0;
case 'showmakeoffline':
return \mod_meetletacbmarketplace\local\config::feature_enabled('makeoffline') ? 1 : 0;
return \mod_meetletacbfree\local\config::feature_enabled('makeoffline') ? 1 : 0;
default:
return empty($data->{$field}) ? 0 : 1;
}
@@ -576,7 +576,7 @@ function meetletacbmarketplace_legacy_setting_value(stdClass $data, string $fiel
* @param stdClass $data
* @param string[] $fields
*/
function meetletacbmarketplace_clear_override_form_fields(stdClass $data, array $fields): void {
function meetletacbfree_clear_override_form_fields(stdClass $data, array $fields): void {
foreach ($fields as $field) {
$statefield = $field . '_state';
unset($data->{$statefield});