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
+114 -114
View File
@@ -17,19 +17,19 @@
/**
* Admin settings for MeetLet Adobe Connect Bridge (tabbed).
*
* @package mod_meetletacbmarketplace
* @package mod_meetletacbfree
* @copyright 2026 MeetLet <info@meetlet.net>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
use mod_meetletacbmarketplace\admin\settingspage_tabs;
use mod_meetletacbmarketplace\local\config;
use mod_meetletacbmarketplace\local\conntest_runner;
use mod_meetletacbmarketplace\local\privacy_policy;
use mod_meetletacbmarketplace\local\server_guide;
use mod_meetletacbmarketplace\registration\manager as registration_manager;
use mod_meetletacbfree\admin\settingspage_tabs;
use mod_meetletacbfree\local\config;
use mod_meetletacbfree\local\conntest_runner;
use mod_meetletacbfree\local\privacy_policy;
use mod_meetletacbfree\local\server_guide;
use mod_meetletacbfree\registration\manager as registration_manager;
// Ensure class is available even if Moodle classmap cache is stale after adding this file.
require_once(__DIR__ . '/classes/local/server_guide.php');
@@ -45,17 +45,17 @@ if ($ADMIN->fulltree) {
$settings->hidden
);
$logo = $OUTPUT->image_url('adobeconnect', 'meetletacbmarketplace');
$stylesurl = new moodle_url('/mod/meetletacbmarketplace/styles.css', ['v' => '2026090146']);
$jsurl = new moodle_url('/mod/meetletacbmarketplace/javascript/settings_conntest.js', ['v' => '2026082135']);
$togglejsurl = new moodle_url('/mod/meetletacbmarketplace/javascript/settings_toggles.js', ['v' => '2026081907']);
$matrixjsurl = new moodle_url('/mod/meetletacbmarketplace/javascript/featureaccess_matrix.js');
$accessresetjsurl = new moodle_url('/mod/meetletacbmarketplace/javascript/settings_access_reset.js', ['v' => '2026090115']);
$resetajaxurl = new moodle_url('/mod/meetletacbmarketplace/ajax/settings_reset.php');
$modalscrolljsurl = new moodle_url('/mod/meetletacbmarketplace/javascript/meetlet_modal_scroll.js', ['v' => '2026082239']);
$registrationjsurl = new moodle_url('/mod/meetletacbmarketplace/javascript/settings_registration.js', ['v' => '2026090144']);
$logo = $OUTPUT->image_url('adobeconnect', 'meetletacbfree');
$stylesurl = new moodle_url('/mod/meetletacbfree/styles.css', ['v' => '2026090146']);
$jsurl = new moodle_url('/mod/meetletacbfree/javascript/settings_conntest.js', ['v' => '2026082135']);
$togglejsurl = new moodle_url('/mod/meetletacbfree/javascript/settings_toggles.js', ['v' => '2026081907']);
$matrixjsurl = new moodle_url('/mod/meetletacbfree/javascript/featureaccess_matrix.js');
$accessresetjsurl = new moodle_url('/mod/meetletacbfree/javascript/settings_access_reset.js', ['v' => '2026090115']);
$resetajaxurl = new moodle_url('/mod/meetletacbfree/ajax/settings_reset.php');
$modalscrolljsurl = new moodle_url('/mod/meetletacbfree/javascript/meetlet_modal_scroll.js', ['v' => '2026082239']);
$registrationjsurl = new moodle_url('/mod/meetletacbfree/javascript/settings_registration.js', ['v' => '2026090144']);
$cronjsurl = null;
$ajaxurl = new moodle_url('/mod/meetletacbmarketplace/ajax/conntest.php');
$ajaxurl = new moodle_url('/mod/meetletacbfree/ajax/conntest.php');
// Load styles.css explicitly on admin tabs (theme concatenate alone is not enough for switch CSS).
$styles = '
@@ -671,13 +671,13 @@ html[dir="rtl"] .path-admin #adminsettings .form-buttons {
]);
}
$versionbadge = $release !== ''
? html_writer::span(get_string('settingsversion', 'meetletacbmarketplace', $release), 'meetlet-settings-version')
? html_writer::span(get_string('settingsversion', 'meetletacbfree', $release), 'meetlet-settings-version')
: '';
$hero = $styles . html_writer::div(
html_writer::img($logo, 'Adobe Connect', ['alt' => 'Adobe Connect']) .
html_writer::div(
html_writer::tag('h3', get_string('pluginname', 'meetletacbmarketplace')) .
html_writer::tag('p', get_string('settingsintro', 'meetletacbmarketplace')),
html_writer::tag('h3', get_string('pluginname', 'meetletacbfree')) .
html_writer::tag('p', get_string('settingsintro', 'meetletacbfree')),
'meetlet-settings-copy'
) .
$versionbadge,
@@ -686,26 +686,26 @@ html[dir="rtl"] .path-admin #adminsettings .form-buttons {
$settings->set_hero($hero);
// Tab: Online activation (required before other features work).
$page = new admin_settingpage('meetletacbmarketplace_registration', get_string('tab_registration', 'meetletacbmarketplace'));
$page = new admin_settingpage('meetletacbfree_registration', get_string('tab_registration', 'meetletacbfree'));
$page->add(new admin_setting_heading(
'meetletacbmarketplace/registrationheading',
get_string('registration_heading', 'meetletacbmarketplace'),
get_string('registration_heading_desc', 'meetletacbmarketplace')
'meetletacbfree/registrationheading',
get_string('registration_heading', 'meetletacbfree'),
get_string('registration_heading_desc', 'meetletacbfree')
));
$page->add(new admin_setting_configtext(
'meetletacbmarketplace/registration_api_url',
get_string('registration_api_url', 'meetletacbmarketplace'),
get_string('registration_api_url_desc', 'meetletacbmarketplace'),
'meetletacbfree/registration_api_url',
get_string('registration_api_url', 'meetletacbfree'),
get_string('registration_api_url_desc', 'meetletacbfree'),
registration_manager::DEFAULT_API_URL,
PARAM_URL
));
$page->add(new \mod_meetletacbmarketplace\admin\setting_registration());
$page->add(new \mod_meetletacbfree\admin\setting_registration());
$settings->add($page);
// Tab: Privacy (always visible — read policy before activating).
$page = new admin_settingpage('meetletacbmarketplace_privacy', get_string('tab_privacy', 'meetletacbmarketplace'));
$page = new admin_settingpage('meetletacbfree_privacy', get_string('tab_privacy', 'meetletacbfree'));
$page->add(new admin_setting_heading(
'meetletacbmarketplace/privacycard',
'meetletacbfree/privacycard',
'',
privacy_policy::render()
));
@@ -716,93 +716,93 @@ html[dir="rtl"] .path-admin #adminsettings .form-buttons {
if ($registered) {
// Tab: Server setup guide.
$page = new admin_settingpage('meetletacbmarketplace_serverguide', get_string('tab_serverguide', 'meetletacbmarketplace'));
$page = new admin_settingpage('meetletacbfree_serverguide', get_string('tab_serverguide', 'meetletacbfree'));
$page->add(new admin_setting_heading(
'meetletacbmarketplace/serverguidecard',
'meetletacbfree/serverguidecard',
'',
server_guide::render()
));
$settings->add($page);
// Tab 2: Server settings (API / admin / offline listener).
$page = new admin_settingpage('meetletacbmarketplace_connection', get_string('settings_connection', 'meetletacbmarketplace'));
$page = new admin_settingpage('meetletacbfree_connection', get_string('settings_connection', 'meetletacbfree'));
$page->add(new admin_setting_heading(
'meetletacbmarketplace/connectionheading',
get_string('settings_connection', 'meetletacbmarketplace'),
get_string('settings_connection_desc', 'meetletacbmarketplace')
'meetletacbfree/connectionheading',
get_string('settings_connection', 'meetletacbfree'),
get_string('settings_connection_desc', 'meetletacbfree')
));
$page->add(new admin_setting_heading(
'meetletacbmarketplace/server_api_group',
'meetletacbfree/server_api_group',
'',
html_writer::div(
html_writer::tag('h4', get_string('server_group_api', 'meetletacbmarketplace')) .
html_writer::tag('p', get_string('server_group_api_desc', 'meetletacbmarketplace')),
html_writer::tag('h4', get_string('server_group_api', 'meetletacbfree')) .
html_writer::tag('p', get_string('server_group_api_desc', 'meetletacbfree')),
'meetlet-server-group'
)
));
$page->add(new admin_setting_configtext(
'meetletacbmarketplace/host', get_string('host', 'meetletacbmarketplace'), get_string('host_desc', 'meetletacbmarketplace'),
'meetletacbfree/host', get_string('host', 'meetletacbfree'), get_string('host_desc', 'meetletacbfree'),
'https://connect.example.edu/api/xml', PARAM_URL
));
$page->add(new admin_setting_configtext(
'meetletacbmarketplace/meethost', get_string('meethost', 'meetletacbmarketplace'), get_string('meethost_desc', 'meetletacbmarketplace'),
'meetletacbfree/meethost', get_string('meethost', 'meetletacbfree'), get_string('meethost_desc', 'meetletacbfree'),
'connect.example.edu', PARAM_HOST
));
$page->add(new admin_setting_configtext(
'meetletacbmarketplace/port', get_string('port', 'meetletacbmarketplace'), get_string('port_desc', 'meetletacbmarketplace'),
'meetletacbfree/port', get_string('port', 'meetletacbfree'), get_string('port_desc', 'meetletacbfree'),
'443', PARAM_INT
));
$page->add(new admin_setting_configcheckbox(
'meetletacbmarketplace/https', get_string('https', 'meetletacbmarketplace'), get_string('https_desc', 'meetletacbmarketplace'), 1
'meetletacbfree/https', get_string('https', 'meetletacbfree'), get_string('https_desc', 'meetletacbfree'), 1
));
$page->add(new admin_setting_heading(
'meetletacbmarketplace/server_admin_group',
'meetletacbfree/server_admin_group',
'',
html_writer::div(
html_writer::tag('h4', get_string('server_group_admin', 'meetletacbmarketplace')) .
html_writer::tag('p', get_string('server_group_admin_desc', 'meetletacbmarketplace')),
html_writer::tag('h4', get_string('server_group_admin', 'meetletacbfree')) .
html_writer::tag('p', get_string('server_group_admin_desc', 'meetletacbfree')),
'meetlet-server-group'
)
));
$page->add(new admin_setting_configtext(
'meetletacbmarketplace/admin_login', get_string('admin_login', 'meetletacbmarketplace'), get_string('admin_login_desc', 'meetletacbmarketplace'),
'meetletacbfree/admin_login', get_string('admin_login', 'meetletacbfree'), get_string('admin_login_desc', 'meetletacbfree'),
'', PARAM_RAW_TRIMMED
));
$page->add(new admin_setting_configpasswordunmask(
'meetletacbmarketplace/admin_password', get_string('admin_password', 'meetletacbmarketplace'), get_string('admin_password_desc', 'meetletacbmarketplace'), ''
'meetletacbfree/admin_password', get_string('admin_password', 'meetletacbfree'), get_string('admin_password_desc', 'meetletacbfree'), ''
));
$page->add(new admin_setting_configtext(
'meetletacbmarketplace/admin_httpauth', get_string('admin_httpauth', 'meetletacbmarketplace'), get_string('admin_httpauth_desc', 'meetletacbmarketplace'),
'meetletacbfree/admin_httpauth', get_string('admin_httpauth', 'meetletacbfree'), get_string('admin_httpauth_desc', 'meetletacbfree'),
'Generate-Safe-Random-Token', PARAM_TEXT
));
$page->add(new admin_setting_configcheckbox(
'meetletacbmarketplace/email_login', get_string('email_login', 'meetletacbmarketplace'), get_string('email_login_desc', 'meetletacbmarketplace'), 1
'meetletacbfree/email_login', get_string('email_login', 'meetletacbfree'), get_string('email_login_desc', 'meetletacbfree'), 1
));
$settings->add($page);
// Tab 4: Connection test (Ajax).
$page = new admin_settingpage('meetletacbmarketplace_test', get_string('tab_connectiontest', 'meetletacbmarketplace'));
$page = new admin_settingpage('meetletacbfree_test', get_string('tab_connectiontest', 'meetletacbfree'));
$steplabels = [
'login' => get_string('testlogin', 'meetletacbmarketplace'),
'folders' => get_string('testfolders', 'meetletacbmarketplace'),
'user' => get_string('testuser', 'meetletacbmarketplace'),
'sso' => get_string('testsso', 'meetletacbmarketplace'),
'cleanup' => get_string('testcleanup', 'meetletacbmarketplace'),
'login' => get_string('testlogin', 'meetletacbfree'),
'folders' => get_string('testfolders', 'meetletacbfree'),
'user' => get_string('testuser', 'meetletacbfree'),
'sso' => get_string('testsso', 'meetletacbfree'),
'cleanup' => get_string('testcleanup', 'meetletacbfree'),
];
$testui = html_writer::div(
html_writer::start_div('meetlet-conntest__hero') .
html_writer::img($logo, 'Adobe Connect', ['class' => 'meetlet-conntest__logo']) .
html_writer::tag('h2', get_string('conntesttitle', 'meetletacbmarketplace'), ['class' => 'meetlet-conntest__title']) .
html_writer::tag('p', get_string('conntestintro', 'meetletacbmarketplace'), ['class' => 'meetlet-conntest__intro']) .
html_writer::tag('h2', get_string('conntesttitle', 'meetletacbfree'), ['class' => 'meetlet-conntest__title']) .
html_writer::tag('p', get_string('conntestintro', 'meetletacbfree'), ['class' => 'meetlet-conntest__intro']) .
html_writer::end_div() .
html_writer::div(
html_writer::tag('button',
'<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">'
. '<path fill="currentColor" d="M8 5v14l11-7z"/></svg>'
. html_writer::span(get_string('runtest', 'meetletacbmarketplace'), 'meetlet-btn-with-icon__label'),
. html_writer::span(get_string('runtest', 'meetletacbfree'), 'meetlet-btn-with-icon__label'),
[
'type' => 'button',
'class' => 'meetlet-settings-btn meetlet-btn-with-icon',
@@ -832,110 +832,110 @@ html[dir="rtl"] .path-admin #adminsettings .form-buttons {
'data-sesskey' => sesskey(),
'data-steps' => implode(',', conntest_runner::STEPS),
'data-step-labels' => json_encode($steplabels, JSON_UNESCAPED_UNICODE),
'data-str-ok' => get_string('testok', 'meetletacbmarketplace'),
'data-str-fail' => get_string('testfail', 'meetletacbmarketplace'),
'data-str-running' => get_string('testrunning', 'meetletacbmarketplace'),
'data-str-ok' => get_string('testok', 'meetletacbfree'),
'data-str-fail' => get_string('testfail', 'meetletacbfree'),
'data-str-running' => get_string('testrunning', 'meetletacbfree'),
'data-str-idle' => '',
'data-str-waiting' => get_string('testwaiting', 'meetletacbmarketplace'),
'data-str-runningstep' => get_string('testrunningstep', 'meetletacbmarketplace'),
'data-str-skipped' => get_string('testskipped', 'meetletacbmarketplace'),
'data-str-progress' => get_string('testprogress', 'meetletacbmarketplace'),
'data-str-waiting' => get_string('testwaiting', 'meetletacbfree'),
'data-str-runningstep' => get_string('testrunningstep', 'meetletacbfree'),
'data-str-skipped' => get_string('testskipped', 'meetletacbfree'),
'data-str-progress' => get_string('testprogress', 'meetletacbfree'),
]
);
$page->add(new admin_setting_heading('meetletacbmarketplace/testui', '', $testui));
$page->add(new admin_setting_heading('meetletacbfree/testui', '', $testui));
$settings->add($page);
// Tab 4: Meeting settings (defaults + feature visibility).
$page = new admin_settingpage('meetletacbmarketplace_meetings', get_string('tab_meetingsettings', 'meetletacbmarketplace'));
$page = new admin_settingpage('meetletacbfree_meetings', get_string('tab_meetingsettings', 'meetletacbfree'));
$page->add(new admin_setting_heading(
'meetletacbmarketplace/roomdefaultsheading',
get_string('roomdefaults', 'meetletacbmarketplace'),
get_string('roomdefaults_desc', 'meetletacbmarketplace')
'meetletacbfree/roomdefaultsheading',
get_string('roomdefaults', 'meetletacbfree'),
get_string('roomdefaults_desc', 'meetletacbfree')
));
$page->add(new admin_setting_configselect(
'meetletacbmarketplace/default_meetinglang',
get_string('default_meetinglang', 'meetletacbmarketplace'),
get_string('default_meetinglang_desc', 'meetletacbmarketplace'),
'meetletacbfree/default_meetinglang',
get_string('default_meetinglang', 'meetletacbfree'),
get_string('default_meetinglang_desc', 'meetletacbfree'),
'',
config::meeting_lang_options()
));
$page->add(new admin_setting_configcheckbox(
'meetletacbmarketplace/default_waitforhost',
get_string('default_waitforhost', 'meetletacbmarketplace'),
get_string('default_waitforhost_desc', 'meetletacbmarketplace'),
'meetletacbfree/default_waitforhost',
get_string('default_waitforhost', 'meetletacbfree'),
get_string('default_waitforhost_desc', 'meetletacbfree'),
0
));
$page->add(new admin_setting_heading(
'meetletacbmarketplace/featuresheading',
get_string('featuresheading', 'meetletacbmarketplace'),
get_string('featuresheading_desc', 'meetletacbmarketplace')
'meetletacbfree/featuresheading',
get_string('featuresheading', 'meetletacbfree'),
get_string('featuresheading_desc', 'meetletacbfree')
));
$featuregroups = ['recordingstab', 'contenttab'];
foreach ($featuregroups as $feature) {
$grouphtml = html_writer::div(
html_writer::tag('h4', get_string('featuregroup_' . $feature, 'meetletacbmarketplace')) .
html_writer::tag('p', get_string('featuregroup_' . $feature . '_desc', 'meetletacbmarketplace')),
html_writer::tag('h4', get_string('featuregroup_' . $feature, 'meetletacbfree')) .
html_writer::tag('p', get_string('featuregroup_' . $feature . '_desc', 'meetletacbfree')),
'meetlet-feature-group'
);
$page->add(new admin_setting_heading(
'meetletacbmarketplace/featuregroup_' . $feature,
'meetletacbfree/featuregroup_' . $feature,
'',
$grouphtml
));
// ZIP download is off by default; other features stay on.
$enabledefault = ($feature === 'zip') ? 0 : 1;
$page->add(new admin_setting_configcheckbox(
'meetletacbmarketplace/enable_' . $feature,
get_string('enable_' . $feature, 'meetletacbmarketplace'),
get_string('enable_' . $feature . '_desc', 'meetletacbmarketplace'),
'meetletacbfree/enable_' . $feature,
get_string('enable_' . $feature, 'meetletacbfree'),
get_string('enable_' . $feature . '_desc', 'meetletacbfree'),
$enabledefault
));
$page->add(new admin_setting_configcheckbox(
'meetletacbmarketplace/allow_override_' . $feature,
get_string('allow_override_' . $feature, 'meetletacbmarketplace'),
get_string('allow_override_' . $feature . '_desc', 'meetletacbmarketplace'),
'meetletacbfree/allow_override_' . $feature,
get_string('allow_override_' . $feature, 'meetletacbfree'),
get_string('allow_override_' . $feature . '_desc', 'meetletacbfree'),
1
));
}
$settings->add($page);
// Tab 5: Role feature access + Adobe room role mapping.
$page = new admin_settingpage('meetletacbmarketplace_access', get_string('tab_accesssettings', 'meetletacbmarketplace'));
$page = new admin_settingpage('meetletacbfree_access', get_string('tab_accesssettings', 'meetletacbfree'));
$page->add(new admin_setting_heading(
'meetletacbmarketplace/rolemappingheading',
get_string('siterolemapping', 'meetletacbmarketplace'),
get_string('siterolemapping_desc', 'meetletacbmarketplace')
'meetletacbfree/rolemappingheading',
get_string('siterolemapping', 'meetletacbfree'),
get_string('siterolemapping_desc', 'meetletacbfree')
));
$page->add(new \mod_meetletacbmarketplace\admin\setting_rolemapping());
$page->add(new \mod_meetletacbfree\admin\setting_rolemapping());
$page->add(new admin_setting_heading(
'meetletacbmarketplace/accessheading',
get_string('featureaccess', 'meetletacbmarketplace'),
get_string('featureaccess_desc', 'meetletacbmarketplace')
'meetletacbfree/accessheading',
get_string('featureaccess', 'meetletacbfree'),
get_string('featureaccess_desc', 'meetletacbfree')
));
$page->add(new admin_setting_configcheckbox(
'meetletacbmarketplace/activity_featureaccess',
get_string('activity_featureaccess', 'meetletacbmarketplace'),
get_string('activity_featureaccess_desc', 'meetletacbmarketplace'),
'meetletacbfree/activity_featureaccess',
get_string('activity_featureaccess', 'meetletacbfree'),
get_string('activity_featureaccess_desc', 'meetletacbfree'),
1
));
$page->add(new \mod_meetletacbmarketplace\admin\setting_featureaccess());
$page->add(new \mod_meetletacbfree\admin\setting_featureaccess());
$page->add(new admin_setting_heading(
'meetletacbmarketplace/accessresetassets',
'meetletacbfree/accessresetassets',
'',
\mod_meetletacbmarketplace\admin\access_reset_ui::page_assets($resetajaxurl)
\mod_meetletacbfree\admin\access_reset_ui::page_assets($resetajaxurl)
));
$settings->add($page);
} // End tabs unlocked after online activation.
// Tab: About developer / MeetLet (read-only; always visible).
$page = new admin_settingpage('meetletacbmarketplace_about', get_string('tab_aboutdev', 'meetletacbmarketplace'));
$meetletlogo = $OUTPUT->image_url('meetlet_logo', 'meetletacbmarketplace');
$page = new admin_settingpage('meetletacbfree_about', get_string('tab_aboutdev', 'meetletacbfree'));
$meetletlogo = $OUTPUT->image_url('meetlet_logo', 'meetletacbfree');
$abouturl = new moodle_url('https://meetlet.net/', [
'utm_source' => 'moodle',
'utm_medium' => 'plugin',
'utm_campaign' => 'meetletacbmarketplace',
'utm_campaign' => 'meetletacbfree',
'utm_content' => 'about_developer_tab',
]);
$about = html_writer::div(
@@ -943,16 +943,16 @@ html[dir="rtl"] .path-admin #adminsettings .form-buttons {
html_writer::img($meetletlogo, 'MeetLet', ['alt' => 'MeetLet']),
'meetlet-about__brand'
) .
html_writer::tag('h4', get_string('about_heading', 'meetletacbmarketplace')) .
html_writer::tag('p', get_string('about_body_p1', 'meetletacbmarketplace')) .
html_writer::tag('p', get_string('about_body_p2', 'meetletacbmarketplace')) .
html_writer::tag('p', get_string('about_body_p3', 'meetletacbmarketplace')) .
html_writer::tag('p', get_string('about_body_p4', 'meetletacbmarketplace')) .
html_writer::tag('p', get_string('marketplace_commercial_note', 'meetletacbmarketplace'), [
html_writer::tag('h4', get_string('about_heading', 'meetletacbfree')) .
html_writer::tag('p', get_string('about_body_p1', 'meetletacbfree')) .
html_writer::tag('p', get_string('about_body_p2', 'meetletacbfree')) .
html_writer::tag('p', get_string('about_body_p3', 'meetletacbfree')) .
html_writer::tag('p', get_string('about_body_p4', 'meetletacbfree')) .
html_writer::tag('p', get_string('marketplace_commercial_note', 'meetletacbfree'), [
'class' => 'meetlet-about__commercial',
]) .
html_writer::div(
html_writer::link($abouturl, get_string('about_visit_website', 'meetletacbmarketplace'), [
html_writer::link($abouturl, get_string('about_visit_website', 'meetletacbfree'), [
'class' => 'meetlet-about__cta',
'target' => '_blank',
'rel' => 'noopener',
@@ -961,7 +961,7 @@ html[dir="rtl"] .path-admin #adminsettings .form-buttons {
),
'meetlet-about meetlet-settings-card'
);
$page->add(new admin_setting_heading('meetletacbmarketplace/aboutcard', '', $about));
$page->add(new admin_setting_heading('meetletacbfree/aboutcard', '', $about));
$settings->add($page);
}