Example #1
0
/**
 * Create EQUELLA single sign on token for current user
 *
 * @return string
 */
function equella_getssotoken($course = null)
{
    global $USER, $CFG, $COURSE;
    if (empty($course)) {
        $course = $COURSE;
    }
    $context_sys = context_system::instance();
    $context_cc = null;
    if (!empty($course->category) && is_int($course->category)) {
        $context_cc = context_coursecat::instance($course->category);
    }
    $context_c = context_course::instance($course->id);
    // roles are ordered by shortname
    $editingroles = get_all_editing_roles();
    foreach ($editingroles as $role) {
        $hassystemrole = false;
        if (!empty($context_sys)) {
            $hassystemrole = user_has_role_assignment($USER->id, $role->id, $context_sys->id);
        }
        $hascategoryrole = false;
        if (!empty($context_cc)) {
            $hascategoryrole = user_has_role_assignment($USER->id, $role->id, $context_cc->id);
        }
        $hascourserole = false;
        if (!empty($context_c)) {
            $hascourserole = user_has_role_assignment($USER->id, $role->id, $context_c->id);
        }
        if ($hassystemrole || $hascategoryrole || $hascourserole) {
            // see if the user has a role that is linked to an equella role
            $shareid = $CFG->{"equella_{$role->shortname}_shareid"};
            if (!empty($shareid)) {
                return equella_getssotoken_raw($USER->username, $shareid, $CFG->{"equella_{$role->shortname}_sharedsecret"});
            }
        }
    }
    // no roles found, use the default shareid and secret
    $shareid = $CFG->equella_shareid;
    if (!empty($shareid)) {
        return equella_getssotoken_raw($USER->username, $shareid, $CFG->equella_sharedsecret);
    }
}
Example #2
0
function equella_is_instructor($user, $cm, $courseid)
{
    global $CFG, $DB;
    $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
    $context_sys = context_system::instance();
    $context_cc = null;
    if (!empty($course->category)) {
        $context_cc = context_coursecat::instance($course->category);
    }
    $context_c = context_course::instance($courseid);
    // roles are ordered by shortname
    $editingroles = get_all_editing_roles();
    $isinstructor = false;
    foreach ($editingroles as $role) {
        $hassystemrole = user_has_role_assignment($user->id, $role->id, $context_sys->id);
        $hascategoryrole = false;
        if (!empty($context_cc)) {
            $hascategoryrole = user_has_role_assignment($user->id, $role->id, $context_cc->id);
        }
        $hascourserole = user_has_role_assignment($user->id, $role->id, $context_c->id);
        if ($hassystemrole || $hascategoryrole || $hascourserole) {
            return true;
        }
    }
    return false;
}
Example #3
0
 $settings->add(new admin_setting_heading('equella_lti_settings', ecs('lti.heading'), ecs('lti.help')));
 $settings->add(new admin_setting_configcheckbox('equella_enable_lti', ecs('enablelti'), ecs('enablelti.desc'), 0));
 $settings->add(new admin_setting_configtext('equella_lti_oauth_key', ecs('lti.key.title'), ecs('lti.key.help'), ''));
 $settings->add(new admin_setting_configtext('equella_lti_oauth_secret', ecs('lti.secret.title'), ecs('lti.secret.help'), ''));
 // ///////////////////////////////////////////////////////////////////////////////
 //
 // SHARED SECRETS
 //
 $settings->add(new admin_setting_heading('equella_sharedsecrets_settings', ecs('sharedsecrets.heading'), ecs('sharedsecrets.help')));
 $defaultvalue = '';
 $description = '';
 $settings->add(new equella_setting_left_heading('equella_default_group', ecs('group', ecs('group.default')), ''));
 $settings->add(new admin_setting_configtext('equella_shareid', ecs('sharedid.title'), $description, $defaultvalue));
 $settings->add(new admin_setting_configtext('equella_sharedsecret', ecs('sharedsecret.title'), $description, $defaultvalue));
 $rolearchetypes = get_role_archetypes();
 foreach (get_all_editing_roles() as $role) {
     $shortname = clean_param($role->shortname, PARAM_ALPHANUM);
     if (in_array($shortname, $rolearchetypes)) {
         $heading = ecs('group.' . $shortname);
     } else {
         $heading = ecs('group.noname', $shortname);
         if (!empty($role->name)) {
             $heading = ecs('group', $role->name);
         }
     }
     $sectionname = 'equella_' . $shortname . '_role_group';
     $settings->add(new equella_setting_left_heading($sectionname, $heading, ''));
     $settings->add(new admin_setting_configtext("equella_{$shortname}_shareid", ecs('sharedid.title'), $description, $defaultvalue, PARAM_TEXT));
     $settings->add(new admin_setting_configtext("equella_{$shortname}_sharedsecret", ecs('sharedsecret.title'), $description, $defaultvalue, PARAM_TEXT));
 }
 // ///////////////////////////////////////////////////////////////////////////////