Пример #1
0
function get_course_mapping_for_sync(&$err, $config)
{
    $course_mapping = array();
    if ($config->supportcourses == 'external') {
        require_once "DBNewConnection.php";
        $DB_mapping = DBNewConnection($config->externalcoursemappingdsn);
        $rs = false;
        if ($DB_mapping) {
            $DB_mapping->SetFetchMode(ADODB_FETCH_ASSOC);
            $rs = $DB_mapping->Execute($config->externalcoursemappingsql);
            if ($rs !== false) {
                $res_array = $rs->GetAll();
            }
            $DB_mapping->Disconnect();
        }
    } else {
        global $DB;
        $fields = 'course_mapping_id, saml_course_id, saml_course_period , lms_course_id';
        $rs = $DB->get_records_select('course_mapping', '', null, '', $fields, 0, 0);
        if ($rs !== false) {
            $res_array = $rs;
        }
    }
    if ($rs === false) {
        $err['course_mapping_db'][] = get_string("auth_saml_error_executing_course_mapping_query", "auth_saml");
    } else {
        //creating the courses mapping
        foreach ($res_array as $tuple) {
            $tuple = array_change_key_case((array) $tuple, CASE_LOWER);
            if (empty($tuple['saml_course_id']) || empty($tuple['saml_course_period']) || empty($tuple['lms_course_id'])) {
                $err['role_mapping_db'][] = "<p>" . get_string("auth_saml_error_attribute_course_mapping", "auth_saml") . "</p><p>saml_course_id:" . $tuple['saml_course_id'] . " saml_course_period: " . $tuple['saml_course_period'] . " lms_course_id:" . $tuple['lms_course_id'] . "</p>";
            } else {
                if (isset($course_mapping[$tuple['saml_course_id']][$tuple['saml_course_period']])) {
                    $err['course_mapping_db'][] = get_string('auth_saml_duplicated_saml_data', "auth_saml") . ' saml_course_id:' . $tuple['saml_course_id'] . ' saml_course_period:' . $tuple['saml_course_period'];
                } else {
                    $course_mapping[$tuple['saml_course_id']][$tuple['saml_course_period']] = $tuple['lms_course_id'];
                }
            }
        }
        unset($res_array);
        unset($rs);
    }
    return $course_mapping;
}
Пример #2
0
function get_role_mapping_for_sync(&$err, $config)
{
    $role_mapping = array();
    if ($config->supportcourses == 'external') {
        require_once "DBNewConnection.php";
        $DB_mapping = DBNewConnection($config->externalrolemappingdsn);
        $rs = false;
        if ($DB_mapping) {
            $DB_mapping->SetFetchMode(ADODB_FETCH_ASSOC);
            $rs = $DB_mapping->Execute($config->externalrolemappingsql);
            if ($rs !== false) {
                $saml_roles = $rs->GetAll();
            }
            $DB_mapping->Disconnect();
        }
    } else {
        global $DB;
        $rs = $DB->get_records_select('role_mapping', '', null, '', '*', 0, 0);
        if ($rs !== false) {
            $saml_roles = $rs;
        }
    }
    if ($rs === false) {
        $err['role_mapping_db'][] = get_string("auth_saml_error_executing_role_mapping_query", "auth_saml");
    } else {
        foreach ($saml_roles as $role) {
            $role = array_change_key_case((array) $role, CASE_LOWER);
            if (empty($role['lms_role']) || empty($role['saml_role'])) {
                $err['role_mapping_db'][] = "<p>" . get_string("auth_saml_error_attribute_role_mapping", "auth_saml") . "</p><p>saml_role: " . $role['saml_role'] . " lms_role: " . $role['lms_role'] . "</p>";
            } else {
                if (isset($role_mapping[$role['saml_role']])) {
                    $err['role_mapping_db'][] = get_string('auth_saml_duplicated_saml_data', "auth_saml") . ' saml_role:' . $role['saml_role'];
                } else {
                    $role_mapping[$role['saml_role']] = $role['lms_role'];
                }
            }
        }
        unset($rs);
        unset($saml_roles);
    }
    return $role_mapping;
}