Merge pull request #3785 from dpalou/MOBILE-4323
MOBILE-4323 enrol: Handle methods without get_enrol_infomain
commit
23f0d07343
|
@ -211,18 +211,20 @@ export class CoreCourseSummaryPage implements OnInit, OnDestroy {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.getEnrolmentInfo();
|
await this.getEnrolmentInfo(courseByField?.enrollmentmethods);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get course enrolment methods.
|
* Get course enrolment info.
|
||||||
|
*
|
||||||
|
* @param enrolmentMethods Enrolment methods.
|
||||||
*/
|
*/
|
||||||
protected async getEnrolmentInfo(): Promise<void> {
|
protected async getEnrolmentInfo(enrolmentMethods?: string[]): Promise<void> {
|
||||||
if (this.isEnrolled) {
|
if (this.isEnrolled) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const enrolByType = await CoreEnrolHelper.getEnrolmentsByType(this.courseId);
|
const enrolByType = await CoreEnrolHelper.getEnrolmentsByType(this.courseId, enrolmentMethods);
|
||||||
|
|
||||||
this.hasBrowserEnrolments = enrolByType.hasBrowser;
|
this.hasBrowserEnrolments = enrolByType.hasBrowser;
|
||||||
this.selfEnrolInstances = enrolByType.self;
|
this.selfEnrolInstances = enrolByType.self;
|
||||||
|
|
|
@ -75,10 +75,12 @@ export class CoreEnrolHelperService {
|
||||||
* Get enrolment methods divided by type.
|
* Get enrolment methods divided by type.
|
||||||
*
|
*
|
||||||
* @param courseId Course Id.
|
* @param courseId Course Id.
|
||||||
|
* @param allMethodTypes List of enrolment methods returned by getCourseByField.
|
||||||
* @returns Enrolment info divided by types.
|
* @returns Enrolment info divided by types.
|
||||||
*/
|
*/
|
||||||
async getEnrolmentsByType(courseId: number): Promise<CoreEnrolmentsByType> {
|
async getEnrolmentsByType(courseId: number, allMethodTypes?: string[]): Promise<CoreEnrolmentsByType> {
|
||||||
const enrolmentMethods = await CoreEnrol.getSupportedCourseEnrolmentMethods(courseId);
|
// Don't use getSupportedCourseEnrolmentMethods to treat unsupported methods and methods with disabled status.
|
||||||
|
const enrolmentMethods = await CoreEnrol.getCourseEnrolmentMethods(courseId);
|
||||||
|
|
||||||
const self: CoreEnrolEnrolmentMethod[] = [];
|
const self: CoreEnrolEnrolmentMethod[] = [];
|
||||||
const guest: CoreEnrolEnrolmentMethod[] = [];
|
const guest: CoreEnrolEnrolmentMethod[] = [];
|
||||||
|
@ -108,6 +110,17 @@ export class CoreEnrolHelperService {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Now treat the methods returned by getCourseByField but not by getCourseEnrolmentMethods.
|
||||||
|
allMethodTypes?.forEach(type => {
|
||||||
|
if (enrolmentMethods.some(method => method.type === type)) {
|
||||||
|
return; // Already treated.
|
||||||
|
}
|
||||||
|
|
||||||
|
const action = CoreEnrolDelegate.getEnrolmentAction(type);
|
||||||
|
hasBrowser = hasBrowser || action === CoreEnrolAction.BROWSER;
|
||||||
|
hasNotSupported = hasNotSupported || action === CoreEnrolAction.NOT_SUPPORTED;
|
||||||
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
self,
|
self,
|
||||||
guest,
|
guest,
|
||||||
|
|
|
@ -29,12 +29,14 @@ export class CoreEnrolService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the enrolment methods from a course.
|
* Get the enrolment methods from a course.
|
||||||
|
* Please notice that this function will only return methods that implement get_enrol_info, it won't return all
|
||||||
|
* enrolment methods in a course.
|
||||||
*
|
*
|
||||||
* @param courseId ID of the course.
|
* @param courseId ID of the course.
|
||||||
* @param siteId Site ID. If not defined, use current site.
|
* @param siteId Site ID. If not defined, use current site.
|
||||||
* @returns Promise resolved with the methods.
|
* @returns Promise resolved with the methods.
|
||||||
*/
|
*/
|
||||||
protected async getCourseEnrolmentMethods(courseId: number, siteId?: string): Promise<CoreEnrolEnrolmentMethod[]> {
|
async getCourseEnrolmentMethods(courseId: number, siteId?: string): Promise<CoreEnrolEnrolmentMethod[]> {
|
||||||
const site = await CoreSites.getSite(siteId);
|
const site = await CoreSites.getSite(siteId);
|
||||||
|
|
||||||
const params: CoreEnrolGetCourseEnrolmentMethodsWSParams = {
|
const params: CoreEnrolGetCourseEnrolmentMethodsWSParams = {
|
||||||
|
@ -50,6 +52,8 @@ export class CoreEnrolService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the enrolment methods from a course that are enabled and supported by the app.
|
* Get the enrolment methods from a course that are enabled and supported by the app.
|
||||||
|
* Please notice that this function will only return methods that implement get_enrol_info, it won't return all
|
||||||
|
* enrolment methods in a course.
|
||||||
*
|
*
|
||||||
* @param courseId ID of the course.
|
* @param courseId ID of the course.
|
||||||
* @param options Options.
|
* @param options Options.
|
||||||
|
|
Loading…
Reference in New Issue