/** * 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); } }
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; }
$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)); } // ///////////////////////////////////////////////////////////////////////////////