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
+67 -67
View File
@@ -4,20 +4,20 @@ defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot . '/course/moodleform_mod.php');
use mod_meetletacbmarketplace\api\service;
use mod_meetletacbmarketplace\local\config;
use mod_meetletacbmarketplace\local\featureaccess;
use mod_meetletacbmarketplace\local\roles;
use mod_meetletacbmarketplace\registration\manager as registration_manager;
use mod_meetletacbfree\api\service;
use mod_meetletacbfree\local\config;
use mod_meetletacbfree\local\featureaccess;
use mod_meetletacbfree\local\roles;
use mod_meetletacbfree\registration\manager as registration_manager;
/**
* MeetLet mod form.
*
* @package mod_meetletacbmarketplace
* @package mod_meetletacbfree
* @copyright 2026 MeetLet
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class mod_meetletacbmarketplace_mod_form extends moodleform_mod {
class mod_meetletacbfree_mod_form extends moodleform_mod {
public function definition() {
global $OUTPUT, $PAGE, $USER;
@@ -34,35 +34,35 @@ class mod_meetletacbmarketplace_mod_form extends moodleform_mod {
return;
}
$PAGE->requires->js(new moodle_url('/mod/meetletacbmarketplace/javascript/modform.js'));
$PAGE->requires->js(new moodle_url('/mod/meetletacbmarketplace/javascript/featureaccess_matrix.js'));
$PAGE->requires->js(new moodle_url('/mod/meetletacbmarketplace/javascript/settings_toggles.js'));
$PAGE->requires->css(new moodle_url('/mod/meetletacbmarketplace/styles.css', ['v' => '2026081913']));
$PAGE->requires->js(new moodle_url('/mod/meetletacbfree/javascript/modform.js'));
$PAGE->requires->js(new moodle_url('/mod/meetletacbfree/javascript/featureaccess_matrix.js'));
$PAGE->requires->js(new moodle_url('/mod/meetletacbfree/javascript/settings_toggles.js'));
$PAGE->requires->css(new moodle_url('/mod/meetletacbfree/styles.css', ['v' => '2026081913']));
$mform->addElement('header', 'general', get_string('general', 'form'));
$mform->addElement('text', 'name', get_string('meetingname', 'meetletacbmarketplace'), ['size' => '64']);
$mform->addElement('text', 'name', get_string('meetingname', 'meetletacbfree'), ['size' => '64']);
$mform->setType('name', PARAM_TEXT);
$mform->addRule('name', null, 'required', null, 'client');
$mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
$this->standard_intro_elements(get_string('meetingintro', 'meetletacbmarketplace'));
$this->standard_intro_elements(get_string('meetingintro', 'meetletacbfree'));
$mform->addElement('header', 'meetletroom', get_string('roomsettings', 'meetletacbmarketplace'));
$mform->addElement('header', 'meetletroom', get_string('roomsettings', 'meetletacbfree'));
// Create-new is default; existing meetings are loaded lazily via Ajax.
$linkmodes = [
0 => get_string('linkmode_create', 'meetletacbmarketplace'),
1 => get_string('linkmode_existing', 'meetletacbmarketplace'),
0 => get_string('linkmode_create', 'meetletacbfree'),
1 => get_string('linkmode_existing', 'meetletacbfree'),
];
$mform->addElement('select', 'linkmode', get_string('linkmode', 'meetletacbmarketplace'), $linkmodes);
$mform->addElement('select', 'linkmode', get_string('linkmode', 'meetletacbfree'), $linkmodes);
$mform->setDefault('linkmode', 0);
$mform->addHelpButton('linkmode', 'linkmode', 'meetletacbmarketplace');
$mform->addHelpButton('linkmode', 'linkmode', 'meetletacbfree');
if (!$isnew) {
$mform->hardFreeze('linkmode');
}
$meetingsmeta = [];
$selectedsco = (int)($current->existingscoid ?? 0);
$selectedlabel = get_string('chooseservermeeting', 'meetletacbmarketplace');
$selectedlabel = get_string('chooseservermeeting', 'meetletacbfree');
$readonly = !$isnew;
// On edit of a linked activity, keep the selected meeting visible without listing all.
if (!$isnew && !empty($current->linkmode) && $selectedsco && config::is_configured()) {
@@ -128,7 +128,7 @@ class mod_meetletacbmarketplace_mod_form extends moodleform_mod {
'type' => 'search',
'class' => 'meetlet-combobox__search',
'data-meeting-search' => '1',
'placeholder' => get_string('searchservermeetings', 'meetletacbmarketplace'),
'placeholder' => get_string('searchservermeetings', 'meetletacbfree'),
'autocomplete' => 'off',
]) .
html_writer::tag('ul', $listhtml, [
@@ -144,45 +144,45 @@ class mod_meetletacbmarketplace_mod_form extends moodleform_mod {
'data-meeting-picker' => '1',
'data-courseid' => (int)$this->_course->id,
'data-readonly' => $readonly ? '1' : '0',
'data-str-loading' => get_string('loadingmeetings', 'meetletacbmarketplace'),
'data-str-empty' => get_string('nomeetingsfound', 'meetletacbmarketplace'),
'data-str-choose' => get_string('chooseservermeeting', 'meetletacbmarketplace'),
'data-str-loading' => get_string('loadingmeetings', 'meetletacbfree'),
'data-str-empty' => get_string('nomeetingsfound', 'meetletacbfree'),
'data-str-choose' => get_string('chooseservermeeting', 'meetletacbfree'),
]
);
$mform->addElement('static', 'existingscoid_ui', get_string('existingscoid', 'meetletacbmarketplace'), $picker);
$mform->addElement('static', 'existingscoid_ui', get_string('existingscoid', 'meetletacbfree'), $picker);
$mform->hideIf('existingscoid_ui', 'linkmode', 'neq', 1);
$mform->addElement('html', html_writer::div('', 'd-none', [
'data-meetings-meta' => json_encode($meetingsmeta, JSON_UNESCAPED_UNICODE),
]));
$mform->addElement('text', 'meeturl', get_string('meeturl', 'meetletacbmarketplace'), ['size' => 40]);
$mform->addElement('text', 'meeturl', get_string('meeturl', 'meetletacbfree'), ['size' => 40]);
$mform->setType('meeturl', PARAM_PATH);
$mform->addHelpButton('meeturl', 'meeturl', 'meetletacbmarketplace');
$mform->addHelpButton('meeturl', 'meeturl', 'meetletacbfree');
$mform->hideIf('meeturl', 'linkmode', 'eq', 1);
$mform->addElement('select', 'meetingpublic', get_string('meetingtype', 'meetletacbmarketplace'), [
0 => get_string('private', 'meetletacbmarketplace'),
1 => get_string('public', 'meetletacbmarketplace'),
$mform->addElement('select', 'meetingpublic', get_string('meetingtype', 'meetletacbfree'), [
0 => get_string('private', 'meetletacbfree'),
1 => get_string('public', 'meetletacbfree'),
]);
$mform->setDefault('meetingpublic', 0);
$langs = config::meeting_lang_options();
$mform->addElement('select', 'meetinglang', get_string('meetinglang', 'meetletacbmarketplace'), $langs);
$mform->addElement('select', 'meetinglang', get_string('meetinglang', 'meetletacbfree'), $langs);
$mform->setType('meetinglang', PARAM_ALPHANUMEXT);
$mform->addHelpButton('meetinglang', 'meetinglang', 'meetletacbmarketplace');
$mform->addHelpButton('meetinglang', 'meetinglang', 'meetletacbfree');
$mform->setDefault('meetinglang', config::default_meeting_lang());
$waitstate = $this->resolve_toggle_state($current, 'waitforhost', $isnew);
$mform->addElement('static', 'waitforhost_state_ui', get_string('waitforhost', 'meetletacbmarketplace'),
$mform->addElement('static', 'waitforhost_state_ui', get_string('waitforhost', 'meetletacbfree'),
$this->render_override_chip_group(
'waitforhost_state',
$waitstate,
get_string('waitforhost_help', 'meetletacbmarketplace'),
get_string('waitforhost_help', 'meetletacbfree'),
[
config::OVERRIDE_INHERIT => get_string(
config::default_wait_for_host() ? 'settingstate_inherit_on' : 'settingstate_inherit_off',
'meetletacbmarketplace'
'meetletacbfree'
),
]
)
@@ -190,7 +190,7 @@ class mod_meetletacbmarketplace_mod_form extends moodleform_mod {
$mform->addElement('hidden', 'waitforhost', $waitstate === config::OVERRIDE_ON ? 1 : 0);
$mform->setType('waitforhost', PARAM_INT);
$templates = [0 => get_string('defaulttemplate', 'meetletacbmarketplace')];
$templates = [0 => get_string('defaulttemplate', 'meetletacbfree')];
if (config::is_configured()) {
try {
$service = new service();
@@ -201,33 +201,33 @@ class mod_meetletacbmarketplace_mod_form extends moodleform_mod {
// Ignore.
}
}
$mform->addElement('select', 'templatescoid', get_string('meettemplates', 'meetletacbmarketplace'), $templates);
$mform->addElement('select', 'templatescoid', get_string('meettemplates', 'meetletacbfree'), $templates);
$mform->setType('templatescoid', PARAM_INT);
$mform->hideIf('templatescoid', 'linkmode', 'eq', 1);
$mform->addElement('date_time_selector', 'starttime', get_string('starttime', 'meetletacbmarketplace'));
$mform->addElement('date_time_selector', 'starttime', get_string('starttime', 'meetletacbfree'));
$mform->addRule('starttime', null, 'required', null, 'client');
$mform->addElement('advcheckbox', 'endtimeenable', get_string('endtimeenable', 'meetletacbmarketplace'));
$mform->addElement('date_time_selector', 'endtime', get_string('endtime', 'meetletacbmarketplace'));
$mform->addElement('advcheckbox', 'endtimeenable', get_string('endtimeenable', 'meetletacbfree'));
$mform->addElement('date_time_selector', 'endtime', get_string('endtime', 'meetletacbfree'));
$mform->disabledIf('endtime', 'endtimeenable');
$mform->setDefault('endtime', time() + 2 * HOURSECS);
// BBB-style participant mapping.
$participantlist = roles::get_participant_list($current, $context);
$participantselection = roles::get_participant_selection_data();
$mform->addElement('header', 'permissions', get_string('rolemapping', 'meetletacbmarketplace'));
$mform->addElement('header', 'permissions', get_string('rolemapping', 'meetletacbfree'));
$mform->setExpanded('permissions');
$mform->addElement('static', 'rolemappingdesc', '', get_string('rolemapping_desc', 'meetletacbmarketplace'));
$mform->addElement('static', 'rolemappingdesc', '', get_string('rolemapping_desc', 'meetletacbfree'));
$participantsmode = $this->resolve_participants_mode($current, $isnew);
$mform->addElement('static', 'participantsmode_ui', get_string('rolemapping_mode', 'meetletacbmarketplace'),
$mform->addElement('static', 'participantsmode_ui', get_string('rolemapping_mode', 'meetletacbfree'),
$this->render_override_chip_group(
'participantsmode_state',
$participantsmode,
get_string('rolemapping_mode_help', 'meetletacbmarketplace'),
get_string('rolemapping_mode_help', 'meetletacbfree'),
[],
[
roles::MODE_INHERIT => get_string('settingstate_inherit', 'meetletacbmarketplace'),
roles::MODE_OVERRIDE => get_string('rolemapping_mode_override_short', 'meetletacbmarketplace'),
roles::MODE_INHERIT => get_string('settingstate_inherit', 'meetletacbfree'),
roles::MODE_OVERRIDE => get_string('rolemapping_mode_override_short', 'meetletacbfree'),
]
)
);
@@ -245,26 +245,26 @@ class mod_meetletacbmarketplace_mod_form extends moodleform_mod {
$participantselection['options'],
$participantselection['selected']);
$action = new single_button(new moodle_url(qualified_me()),
get_string('participant_add', 'meetletacbmarketplace'),
get_string('participant_add', 'meetletacbfree'),
'post',
single_button::BUTTON_SECONDARY,
['name' => 'meetlet_participant_selection_add']
);
$html = $OUTPUT->render_from_template('mod_meetletacbmarketplace/participant_form', [
$html = $OUTPUT->render_from_template('mod_meetletacbfree/participant_form', [
'selectionType' => $selectiontype->export_for_template($OUTPUT),
'selectionParticipant' => $selectionparticipants->export_for_template($OUTPUT),
'action' => $action->export_for_template($OUTPUT),
]);
$mform->addElement('static', 'static_participant_list', get_string('participant_list', 'meetletacbmarketplace'), $html);
$mform->addElement('static', 'static_participant_list', get_string('participant_list', 'meetletacbfree'), $html);
$mform->addElement('html', html_writer::div('', 'd-none', [
'data-participant-data' => json_encode(roles::get_participant_data($context, $current ?: (object)['id' => 0])),
]));
if (featureaccess::activity_override_enabled()) {
$mform->addElement('header', 'meetletaccess', get_string('featureaccess_activity', 'meetletacbmarketplace'));
$mform->addElement('advcheckbox', 'featureaccess_override', get_string('featureaccess_override', 'meetletacbmarketplace'),
get_string('featureaccess_override_help', 'meetletacbmarketplace'));
$mform->addElement('header', 'meetletaccess', get_string('featureaccess_activity', 'meetletacbfree'));
$mform->addElement('advcheckbox', 'featureaccess_override', get_string('featureaccess_override', 'meetletacbfree'),
get_string('featureaccess_override_help', 'meetletacbfree'));
$hascustom = $current && !empty($current->featureaccess);
$mform->setDefault('featureaccess_override', $hascustom ? 1 : 0);
$matrix = featureaccess::matrix_for_activity($current);
@@ -274,17 +274,17 @@ class mod_meetletacbmarketplace_mod_form extends moodleform_mod {
}
if (config::offline_render_active()) {
$mform->addElement('header', 'meetletoffline', get_string('offlinesettings', 'meetletacbmarketplace'));
$mform->addElement('header', 'meetletoffline', get_string('offlinesettings', 'meetletacbfree'));
$autostate = $this->resolve_toggle_state($current, 'autooffline', $isnew);
$mform->addElement('static', 'autooffline_state_ui', get_string('autooffline', 'meetletacbmarketplace'),
$mform->addElement('static', 'autooffline_state_ui', get_string('autooffline', 'meetletacbfree'),
$this->render_override_chip_group(
'autooffline_state',
$autostate,
get_string('autooffline_help', 'meetletacbmarketplace'),
get_string('autooffline_help', 'meetletacbfree'),
[
config::OVERRIDE_INHERIT => get_string(
config::auto_offline_default() ? 'settingstate_inherit_on' : 'settingstate_inherit_off',
'meetletacbmarketplace'
'meetletacbfree'
),
]
)
@@ -293,7 +293,7 @@ class mod_meetletacbmarketplace_mod_form extends moodleform_mod {
$mform->setType('autooffline', PARAM_INT);
}
$mform->addElement('header', 'meetletfeatures', get_string('activityfeatures', 'meetletacbmarketplace'));
$mform->addElement('header', 'meetletfeatures', get_string('activityfeatures', 'meetletacbfree'));
$featurefields = [
'zip' => 'showzip',
'recordingstab' => 'showrecordingstab',
@@ -310,25 +310,25 @@ class mod_meetletacbmarketplace_mod_form extends moodleform_mod {
}
$state = $this->resolve_toggle_state($current, $field, $isnew);
$inheritkey = config::feature_enabled($feature) ? 'settingstate_inherit_on' : 'settingstate_inherit_off';
$help = ($field === 'showzip') ? get_string('showzip_help', 'meetletacbmarketplace') : '';
$mform->addElement('static', $field . '_state_ui', get_string($field, 'meetletacbmarketplace'),
$help = ($field === 'showzip') ? get_string('showzip_help', 'meetletacbfree') : '';
$mform->addElement('static', $field . '_state_ui', get_string($field, 'meetletacbfree'),
$this->render_override_chip_group(
$field . '_state',
$state,
$help,
[config::OVERRIDE_INHERIT => get_string($inheritkey, 'meetletacbmarketplace')]
[config::OVERRIDE_INHERIT => get_string($inheritkey, 'meetletacbfree')]
)
);
$mform->addElement('hidden', $field, $state === config::OVERRIDE_ON ? 1 : 0);
$mform->setType($field, PARAM_INT);
if ($field === 'showzip') {
$mform->removeElement($field . '_state_ui');
$mform->addElement('static', $field . '_state_ui', get_string($field, 'meetletacbmarketplace'),
$mform->addElement('static', $field . '_state_ui', get_string($field, 'meetletacbfree'),
$this->render_override_chip_group(
$field . '_state',
$state,
get_string('showzip_help', 'meetletacbmarketplace'),
[config::OVERRIDE_INHERIT => get_string($inheritkey, 'meetletacbmarketplace')]
get_string('showzip_help', 'meetletacbfree'),
[config::OVERRIDE_INHERIT => get_string($inheritkey, 'meetletacbfree')]
)
);
}
@@ -349,7 +349,7 @@ class mod_meetletacbmarketplace_mod_form extends moodleform_mod {
public function data_preprocessing(&$defaultvalues) {
parent::data_preprocessing($defaultvalues);
$defaultvalues['endtimeenable'] = !empty($defaultvalues['endtime']) ? 1 : 0;
foreach (\meetletacbmarketplace_activity_override_fields() as $field) {
foreach (\meetletacbfree_activity_override_fields() as $field) {
$defaultvalues[$field . '_state'] = $this->resolve_toggle_state((object)$defaultvalues, $field, false);
}
$defaultvalues['participantsmode'] = $this->resolve_participants_mode((object)$defaultvalues, false);
@@ -367,18 +367,18 @@ class mod_meetletacbmarketplace_mod_form extends moodleform_mod {
public function validation($data, $files) {
$errors = parent::validation($data, $files);
if (!registration_manager::is_registered()) {
$errors['registrationlock'] = get_string('registration_required', 'meetletacbmarketplace');
$errors['registrationlock'] = get_string('registration_required', 'meetletacbfree');
return $errors;
}
if (!empty($data['endtimeenable']) && (int)$data['endtime'] <= (int)$data['starttime']) {
$errors['endtime'] = get_string('greaterstarttime', 'meetletacbmarketplace');
$errors['endtime'] = get_string('greaterstarttime', 'meetletacbfree');
}
if (!empty($data['meeturl']) && empty($data['linkmode'])
&& !preg_match('/^[a-zA-Z][a-zA-Z0-9\-]*$/', $data['meeturl'])) {
$errors['meeturl'] = get_string('invalidurl', 'meetletacbmarketplace');
$errors['meeturl'] = get_string('invalidurl', 'meetletacbfree');
}
if (!empty($data['linkmode']) && empty($data['existingscoid'])) {
$errors['existingscoid_ui'] = get_string('errorexistingsco', 'meetletacbmarketplace');
$errors['existingscoid_ui'] = get_string('errorexistingsco', 'meetletacbfree');
}
return $errors;
}