forked from EVOgeek/Vmeda.Online
		
	Merge pull request #3785 from dpalou/MOBILE-4323
MOBILE-4323 enrol: Handle methods without get_enrol_info
This commit is contained in:
		
						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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user