Skip to content
Snippets Groups Projects
Select Git revision
  • fc1363d6d6fa5d48964c81afe15d25d4adab066d
  • master default protected
  • hsh_3.10
3 results

install.php

Blame
  • 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;
    
    }