@@ -389,6 +389,30 @@ export class CoreCoursesProvider {
389389 }
390390 }
391391
392+ /**
393+ * Get the first course returned by getCoursesByField.
394+ *
395+ * @param {string } [field] The field to search. Can be left empty for all courses or:
396+ * id: course id.
397+ * ids: comma separated course ids.
398+ * shortname: course short name.
399+ * idnumber: course id number.
400+ * category: category id the course belongs to.
401+ * @param {any } [value] The value to match.
402+ * @param {string } [siteId] Site ID. If not defined, use current site.
403+ * @return {Promise<any> } Promise resolved with the first course.
404+ * @since 3.2
405+ */
406+ getCourseByField ( field ?: string , value ?: any , siteId ?: string ) : Promise < any > {
407+ return this . getCoursesByField ( field , value , siteId ) . then ( ( courses ) => {
408+ if ( courses && courses . length > 0 ) {
409+ return courses [ 0 ] ;
410+ }
411+
412+ return Promise . reject ( null ) ;
413+ } ) ;
414+ }
415+
392416 /**
393417 * Get courses. They can be filtered by field.
394418 *
@@ -482,13 +506,29 @@ export class CoreCoursesProvider {
482506 }
483507
484508 /**
485- * Check if get courses by field WS is available.
509+ * Check if get courses by field WS is available in a certain site .
486510 *
511+ * @param {CoreSite } [site] Site to check.
487512 * @return {boolean } Whether get courses by field is available.
488513 * @since 3.2
489514 */
490- isGetCoursesByFieldAvailable ( ) : boolean {
491- return this . sitesProvider . wsAvailableInCurrentSite ( 'core_course_get_courses_by_field' ) ;
515+ isGetCoursesByFieldAvailable ( site ?: CoreSite ) : boolean {
516+ site = site || this . sitesProvider . getCurrentSite ( ) ;
517+
518+ return site . wsAvailable ( 'core_course_get_courses_by_field' ) ;
519+ }
520+
521+ /**
522+ * Check if get courses by field WS is available in a certain site, by site ID.
523+ *
524+ * @param {string } [siteId] Site ID. If not defined, current site.
525+ * @return {Promise<boolean> } Promise resolved with boolean: whether get courses by field is available.
526+ * @since 3.2
527+ */
528+ isGetCoursesByFieldAvailableInSite ( siteId ?: string ) : Promise < boolean > {
529+ return this . sitesProvider . getSite ( siteId ) . then ( ( site ) => {
530+ return this . isGetCoursesByFieldAvailable ( site ) ;
531+ } ) ;
492532 }
493533
494534 /**
0 commit comments