Adobe Connect Bridge Marketplace edition — initial release

This commit is contained in:
2026-09-01 22:43:54 +03:30
commit 555cd725f7
93 changed files with 20833 additions and 0 deletions
@@ -0,0 +1,41 @@
<?php
// This file is part of Moodle - http://moodle.org/
defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot . '/mod/meetletacbmarketplace/backup/moodle2/backup_meetletacbmarketplace_stepslib.php');
/**
* Backup task.
*
* @package mod_meetletacbmarketplace
* @copyright 2026 MeetLet
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class backup_meetletacbmarketplace_activity_task extends backup_activity_task {
protected function define_my_settings() {
}
protected function define_my_steps() {
$this->add_step(new backup_meetletacbmarketplace_activity_structure_step(
'meetletacbmarketplace_structure',
'meetletacbmarketplace.xml'
));
}
public static function encode_content_links($content) {
global $CFG;
$base = preg_quote($CFG->wwwroot, '/');
$content = preg_replace("/($base\/mod\/meetletacbmarketplace\/index.php\?id=)([0-9]+)/",
'$@MEETLETACBINDEX*$2@$', $content);
$content = preg_replace("/($base\/mod\/meetletacbmarketplace\/view.php\?id=)([0-9]+)/",
'$@MEETLETACBVIEWBYID*$2@$', $content);
$content = preg_replace("/($base\/mod\/meetletadobeconnectbridge\/index.php\?id=)([0-9]+)/",
'$@MEETLETACBINDEX*$2@$', $content);
$content = preg_replace("/($base\/mod\/meetletadobeconnectbridge\/view.php\?id=)([0-9]+)/",
'$@MEETLETACBVIEWBYID*$2@$', $content);
// Legacy plugin path (pre-rename).
$content = preg_replace("/($base\/mod\/meetlet\/index.php\?id=)([0-9]+)/", '$@MEETLETACBINDEX*$2@$', $content);
$content = preg_replace("/($base\/mod\/meetlet\/view.php\?id=)([0-9]+)/", '$@MEETLETACBVIEWBYID*$2@$', $content);
return $content;
}
}
@@ -0,0 +1,38 @@
<?php
// This file is part of Moodle - http://moodle.org/
defined('MOODLE_INTERNAL') || die();
/**
* Backup structure.
*
* @package mod_meetletacbmarketplace
* @copyright 2026 MeetLet
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class backup_meetletacbmarketplace_activity_structure_step extends backup_activity_structure_step {
protected function define_structure() {
$userinfo = $this->get_setting_value('userinfo');
$meetlet = new backup_nested_element('meetletacbmarketplace', ['id'], [
'name', 'intro', 'introformat', 'userid', 'templatescoid', 'meeturl',
'starttime', 'endtime', 'meetingpublic', 'participants', 'grade',
'autooffline', 'showzip', 'showofflineplayer', 'showrecordingstab', 'showcontenttab', 'showmp4',
'showmakeoffline',
'linkmode', 'existingscoid', 'meetinglang', 'waitforhost', 'featureaccess', 'settingoverrides',
'participantsmode',
'timecreated', 'timemodified',
]);
$meetings = new backup_nested_element('meetings');
$meeting = new backup_nested_element('meeting', ['id'], [
'meetingscoid', 'groupid', 'urlpath',
]);
$meetlet->add_child($meetings);
$meetings->add_child($meeting);
$meetlet->set_source_table('meetletacbmarketplace', ['id' => backup::VAR_ACTIVITYID]);
$meeting->set_source_table('meetlet_marketplace_meetings', ['instanceid' => backup::VAR_PARENTID]);
return $this->prepare_activity_structure($meetlet);
}
}
@@ -0,0 +1,48 @@
<?php
// This file is part of Moodle - http://moodle.org/
defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot . '/mod/meetletacbmarketplace/backup/moodle2/restore_meetletacbmarketplace_stepslib.php');
/**
* Restore task.
*
* @package mod_meetletacbmarketplace
* @copyright 2026 MeetLet
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class restore_meetletacbmarketplace_activity_task extends restore_activity_task {
protected function define_my_settings() {
}
protected function define_my_steps() {
$filename = 'meetletacbmarketplace.xml';
$base = $this->get_taskbasepath();
if ($base) {
foreach (['meetletacbmarketplace.xml', 'meetletadobeconnectbridge.xml', 'meetlet.xml'] as $candidate) {
if (file_exists($base . '/' . $candidate)) {
$filename = $candidate;
break;
}
}
}
$this->add_step(new restore_meetletacbmarketplace_activity_structure_step(
'meetletacbmarketplace_structure',
$filename
));
}
public static function define_decode_contents() {
return [new restore_decode_content('meetletacbmarketplace', ['intro'], 'meetletacbmarketplace')];
}
public static function define_decode_rules() {
return [
new restore_decode_rule('MEETLETACBVIEWBYID', '/mod/meetletacbmarketplace/view.php?id=$1', 'course_module'),
new restore_decode_rule('MEETLETACBINDEX', '/mod/meetletacbmarketplace/index.php?id=$1', 'course'),
// Legacy tokens from pre-rename backups.
new restore_decode_rule('MEETLETVIEWBYID', '/mod/meetletacbmarketplace/view.php?id=$1', 'course_module'),
new restore_decode_rule('MEETLETINDEX', '/mod/meetletacbmarketplace/index.php?id=$1', 'course'),
];
}
}
@@ -0,0 +1,104 @@
<?php
// This file is part of Moodle - http://moodle.org/
defined('MOODLE_INTERNAL') || die();
/**
* Restore structure.
*
* @package mod_meetletacbmarketplace
* @copyright 2026 MeetLet
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class restore_meetletacbmarketplace_activity_structure_step extends restore_activity_structure_step {
protected function define_structure() {
$paths = [];
// Current format.
$paths[] = new restore_path_element('meetletacbmarketplace', '/activity/meetletacbmarketplace');
$paths[] = new restore_path_element('meetletacbmarketplace_meeting',
'/activity/meetletacbmarketplace/meetings/meeting');
$paths[] = new restore_path_element('meetletacbmarketplace_long', '/activity/meetletadobeconnectbridge');
$paths[] = new restore_path_element('meetletacbmarketplace_long_meeting',
'/activity/meetletadobeconnectbridge/meetings/meeting');
// Legacy format from pre-rename backups.
$paths[] = new restore_path_element('meetlet_legacy', '/activity/meetlet');
$paths[] = new restore_path_element('meetlet_legacy_meeting', '/activity/meetlet/meetings/meeting');
return $this->prepare_activity_structure($paths);
}
protected function process_meetletacbmarketplace($data) {
$this->process_instance_record($data);
}
protected function process_meetletacbmarketplace_long($data) {
$this->process_instance_record($data);
}
protected function process_meetlet_legacy($data) {
$this->process_instance_record($data);
}
protected function process_instance_record($data) {
global $DB;
$data = (object)$data;
$data->course = $this->get_courseid();
if (!isset($data->showmakeoffline)) {
$data->showmakeoffline = 1;
}
if (!isset($data->settingoverrides)) {
$data->settingoverrides = \mod_meetletacbmarketplace\local\config::setting_overrides_json([
'waitforhost' => !empty($data->waitforhost)
? \mod_meetletacbmarketplace\local\config::OVERRIDE_ON
: \mod_meetletacbmarketplace\local\config::OVERRIDE_OFF,
'autooffline' => !empty($data->autooffline)
? \mod_meetletacbmarketplace\local\config::OVERRIDE_ON
: \mod_meetletacbmarketplace\local\config::OVERRIDE_OFF,
'showzip' => !empty($data->showzip)
? \mod_meetletacbmarketplace\local\config::OVERRIDE_ON
: \mod_meetletacbmarketplace\local\config::OVERRIDE_OFF,
'showrecordingstab' => !empty($data->showrecordingstab)
? \mod_meetletacbmarketplace\local\config::OVERRIDE_ON
: \mod_meetletacbmarketplace\local\config::OVERRIDE_OFF,
'showcontenttab' => !empty($data->showcontenttab)
? \mod_meetletacbmarketplace\local\config::OVERRIDE_ON
: \mod_meetletacbmarketplace\local\config::OVERRIDE_OFF,
'showmp4' => !empty($data->showmp4)
? \mod_meetletacbmarketplace\local\config::OVERRIDE_ON
: \mod_meetletacbmarketplace\local\config::OVERRIDE_OFF,
'showmakeoffline' => !empty($data->showmakeoffline)
? \mod_meetletacbmarketplace\local\config::OVERRIDE_ON
: \mod_meetletacbmarketplace\local\config::OVERRIDE_OFF,
]);
}
if (!isset($data->participantsmode)) {
$data->participantsmode = 1;
}
$newid = $DB->insert_record('meetletacbmarketplace', $data);
$this->apply_activity_instance($newid);
}
protected function process_meetletacbmarketplace_meeting($data) {
$this->process_meeting_record($data, 'meetletacbmarketplace');
}
protected function process_meetletacbmarketplace_long_meeting($data) {
$this->process_meeting_record($data, 'meetletacbmarketplace_long');
}
protected function process_meetlet_legacy_meeting($data) {
$this->process_meeting_record($data, 'meetlet_legacy');
}
protected function process_meeting_record($data, string $parentname) {
global $DB;
$data = (object)$data;
$data->instanceid = $this->get_new_parentid($parentname);
if (!empty($data->groupid)) {
$data->groupid = $this->get_mappingid('group', $data->groupid);
}
$DB->insert_record('meetlet_marketplace_meetings', $data);
}
protected function after_execute() {
$this->add_related_files('mod_meetletacbmarketplace', 'intro', null);
}
}