Select Git revision
install.php 7.60 KiB
<?php
// This file replaces:
// * STATEMENTS section in db/install.xml
// * lib.php/modulename_install() post installation hook
// * partially defaults.php
/**
* @package mod
* @subpackage adobeconnect
* @author Akinsaya Delamarre (adelamarre@remote-learner.net)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
//
// DFNconf - Workaround wegen Bug MDL-65668
//
function ac_assign_capability($capability, $permission, $roleid, $contextid, $overwrite = false) {
global $USER, $DB;
if ($contextid instanceof context) {
$context = $contextid;
} else {
$context = context::instance_by_id($contextid);
}
// Capability must exist.
//if (!$capinfo = get_capability_info($capability)) {
// throw new coding_exception("Capability '{$capability}' was not found! This has to be fixed in code.");
//}
if (empty($permission) || $permission == CAP_INHERIT) { // if permission is not set
unassign_capability($capability, $roleid, $context->id);
return true;
}
$existing = $DB->get_record('role_capabilities', array('contextid'=>$context->id, 'roleid'=>$roleid, 'capability'=>$capability));
if ($existing and !$overwrite) { // We want to keep whatever is there already
return true;
}
$cap = new stdClass();
$cap->contextid = $context->id;
$cap->roleid = $roleid;
$cap->capability = $capability;
$cap->permission = $permission;
$cap->timemodified = time();
$cap->modifierid = empty($USER->id) ? 0 : $USER->id;
if ($existing) {
$cap->id = $existing->id;
$DB->update_record('role_capabilities', $cap);
} else {
if ($DB->record_exists('context', array('id'=>$context->id))) {
$DB->insert_record('role_capabilities', $cap);
}
}
// Reset any cache of this role, including MUC.
accesslib_clear_role_cache($roleid);
return true;
}
function xmldb_adobeconnect_install() {
global $DB;
$result = true;
$timenow = time();
$sysctx = context_system::instance();
$mrole = new stdClass();
$levels = array(CONTEXT_COURSECAT, CONTEXT_COURSE, CONTEXT_MODULE);
$param = array('shortname' => 'coursecreator');
$coursecreator = $DB->get_records('role', $param, 'id ASC', 'id', 0, 1);
if (empty($coursecreator)) {
$param = array('archetype' => 'coursecreator');
$coursecreator = $DB->get_records('role', $param, 'id ASC', 'id', 0, 1);
}
$coursecreatorrid = array_shift($coursecreator);
$param = array('shortname' =>'editingteacher');
$editingteacher = $DB->get_records('role', $param, 'id ASC', 'id', 0, 1);
if (empty($editingteacher)) {
$param = array('archetype' => 'editingteacher');
$editingteacher = $DB->get_records('role', $param, 'id ASC', 'id', 0, 1);
}
$editingteacherrid = array_shift($editingteacher);
$param = array('shortname' =>'teacher');
$teacher = $DB->get_records('role', $param, 'id ASC', 'id', 0, 1);
if (empty($teacher)) {
$param = array('archetype' => 'teacher');
$teacher = $DB->get_records('role', $param, 'id ASC', 'id', 0, 1);
}
$teacherrid = array_shift($teacher);
// Fully setup the Adobe Connect Presenter role.
$param = array('shortname' => 'adobeconnectpresenter');
if (!$mrole = $DB->get_record('role', $param)) {
if ($rid = create_role(get_string('adobeconnectpresenter', 'adobeconnect'), 'adobeconnectpresenter',
get_string('adobeconnectpresenterdescription', 'adobeconnect'), 'adobeconnectpresenter')) {
$mrole = new stdClass();
$mrole->id = $rid;
$result = $result && ac_assign_capability('mod/adobeconnect:meetingpresenter', CAP_ALLOW, $mrole->id, $sysctx->id);
set_role_contextlevels($mrole->id, $levels);
} else {
$result = false;
}
}
if (isset($coursecreatorrid->id)) {
$param = array('allowassign' => $mrole->id, 'roleid' => $coursecreatorrid->id);
if (!$DB->get_record('role_allow_assign', $param)) {
allow_assign($coursecreatorrid->id, $mrole->id);
}
}
if (isset($editingteacherrid->id)) {
$param = array('allowassign' => $mrole->id, 'roleid' => $editingteacherrid->id);
if (!$DB->get_record('role_allow_assign', $param)) {
allow_assign($editingteacherrid->id, $mrole->id);
}
}
if (isset($teacherrid->id)) {
$param = array('allowassign' => $mrole->id, 'roleid' => $teacherrid->id);
if (!$DB->get_record('role_allow_assign', $param)) {
allow_assign($teacherrid->id, $mrole->id);
}
}
// Fully setup the Adobe Connect Participant role.
$param = array('shortname' => 'adobeconnectparticipant');
if ($result && !($mrole = $DB->get_record('role', $param))) {
if ($rid = create_role(get_string('adobeconnectparticipant', 'adobeconnect'), 'adobeconnectparticipant',
get_string('adobeconnectparticipantdescription', 'adobeconnect'), 'adobeconnectparticipant')) {
$mrole = new stdClass();
$mrole->id = $rid;
$result = $result && ac_assign_capability('mod/adobeconnect:meetingparticipant', CAP_ALLOW, $mrole->id, $sysctx->id);
set_role_contextlevels($mrole->id, $levels);
} else {
$result = false;
}
}
if (isset($coursecreatorrid->id)) {
$param = array('allowassign' => $mrole->id, 'roleid' => $coursecreatorrid->id);
if (!$DB->get_record('role_allow_assign', $param)) {
allow_assign($coursecreatorrid->id, $mrole->id);
}
}
if (isset($editingteacherrid->id)) {
$param = array('allowassign' => $mrole->id, 'roleid' => $editingteacherrid->id);
if (!$DB->get_record('role_allow_assign', $param)) {
allow_assign($editingteacherrid->id, $mrole->id);
}
}
if (isset($teacherrid->id)) {
$param = array('allowassign' => $mrole->id, 'roleid' => $teacherrid->id);
if (!$DB->get_record('role_allow_assign', $param)) {
allow_assign($teacherrid->id, $mrole->id);
}
}
// Fully setup the Adobe Connect Host role.
$param = array('shortname' => 'adobeconnecthost');
if ($result && !$mrole = $DB->get_record('role', $param)) {
if ($rid = create_role(get_string('adobeconnecthost', 'adobeconnect'), 'adobeconnecthost',
get_string('adobeconnecthostdescription', 'adobeconnect'), 'adobeconnecthost')) {
$mrole = new stdClass();
$mrole->id = $rid;
$result = $result && ac_assign_capability('mod/adobeconnect:meetinghost', CAP_ALLOW, $mrole->id, $sysctx->id);
set_role_contextlevels($mrole->id, $levels);
} else {
$result = false;
}
}
if (isset($coursecreatorrid->id)) {
$param = array('allowassign' => $mrole->id, 'roleid' => $coursecreatorrid->id);
if (!$DB->get_record('role_allow_assign', $param)) {
allow_assign($coursecreatorrid->id, $mrole->id);
}
}
if (isset($editingteacherrid->id)) {
$param = array('allowassign' => $mrole->id, 'roleid' => $editingteacherrid->id);
if (!$DB->get_record('role_allow_assign', $param)) {
allow_assign($editingteacherrid->id, $mrole->id);
}
}
if (isset($teacherrid->id)) {
$param = array('allowassign' => $mrole->id, 'roleid' => $teacherrid->id);
if (!$DB->get_record('role_allow_assign', $param)) {
allow_assign($teacherrid->id, $mrole->id);
}
}
return $result;
}