Merge pull request #1939 from dpalou/MOBILE-3036

Mobile 3036
main
Juan Leyva 2019-05-24 10:11:09 +02:00 committed by GitHub
commit f10edf083c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
43 changed files with 295 additions and 130 deletions

View File

@ -15,6 +15,7 @@
import { Injectable } from '@angular/core';
import { CoreLoggerProvider } from '@providers/logger';
import { CoreSitesProvider } from '@providers/sites';
import { CoreSite } from '@classes/site';
/**
* Service to handle badges.
@ -79,11 +80,12 @@ export class AddonBadgesProvider {
courseid : courseId,
userid : userId
},
presets = {
cacheKey: this.getBadgesCacheKey(courseId, userId)
preSets = {
cacheKey: this.getBadgesCacheKey(courseId, userId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('core_badges_get_user_badges', data, presets).then((response) => {
return site.read('core_badges_get_user_badges', data, preSets).then((response) => {
if (response && response.badges) {
return response.badges;
} else {

View File

@ -17,6 +17,7 @@ import { CoreLoggerProvider } from '@providers/logger';
import { CoreSitesProvider } from '@providers/sites';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CorePushNotificationsProvider } from '@core/pushnotifications/providers/pushnotifications';
import { CoreSite } from '@classes/site';
/**
* Service to handle blog entries.
@ -76,7 +77,8 @@ export class AddonBlogProvider {
};
const preSets = {
cacheKey: this.getEntriesCacheKey(filter)
cacheKey: this.getEntriesCacheKey(filter),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('core_blog_get_entries', data, preSets);

View File

@ -292,7 +292,8 @@ export class AddonCalendarProvider {
getEvent(id: number, siteId?: string): Promise<any> {
return this.sitesProvider.getSite(siteId).then((site) => {
const preSets = {
cacheKey: this.getEventCacheKey(id)
cacheKey: this.getEventCacheKey(id),
updateFrequency: CoreSite.FREQUENCY_RARELY
},
data = {
options: {
@ -332,7 +333,8 @@ export class AddonCalendarProvider {
cacheKey: this.getEventCacheKey(id)
},
data = {
eventid: id
eventid: id,
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('core_calendar_get_calendar_event_by_id', data, preSets).then((response) => {
@ -469,7 +471,8 @@ export class AddonCalendarProvider {
// We need to retrieve cached data using cache key because we have timestamp in the params.
const preSets = {
cacheKey: this.getEventsListCacheKey(daysToStart, daysInterval),
getCacheUsingCacheKey: true
getCacheUsingCacheKey: true,
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('core_calendar_get_calendar_events', data, preSets).then((response) => {

View File

@ -16,6 +16,7 @@ import { Injectable } from '@angular/core';
import { CoreLoggerProvider } from '@providers/logger';
import { CoreSitesProvider } from '@providers/sites';
import { CorePushNotificationsProvider } from '@core/pushnotifications/providers/pushnotifications';
import { CoreSite } from '@classes/site';
/**
* Service to handle caompetency learning plans.
@ -156,7 +157,8 @@ export class AddonCompetencyProvider {
userid: userId
},
preSets = {
cacheKey: this.getLearningPlansCacheKey(userId)
cacheKey: this.getLearningPlansCacheKey(userId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('tool_lp_data_for_plans_page', params, preSets).then((response) => {
@ -185,7 +187,8 @@ export class AddonCompetencyProvider {
planid: planId
},
preSets = {
cacheKey: this.getLearningPlanCacheKey(planId)
cacheKey: this.getLearningPlanCacheKey(planId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('tool_lp_data_for_plan_page', params, preSets).then((response) => {
@ -216,7 +219,8 @@ export class AddonCompetencyProvider {
competencyid: competencyId
},
preSets = {
cacheKey: this.getCompetencyInPlanCacheKey(planId, competencyId)
cacheKey: this.getCompetencyInPlanCacheKey(planId, competencyId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('tool_lp_data_for_user_competency_summary_in_plan', params, preSets).then((response) => {
@ -253,7 +257,8 @@ export class AddonCompetencyProvider {
userid: userId
},
preSets: any = {
cacheKey: this.getCompetencyInCourseCacheKey(courseId, competencyId, userId)
cacheKey: this.getCompetencyInCourseCacheKey(courseId, competencyId, userId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (ignoreCache) {
@ -291,7 +296,8 @@ export class AddonCompetencyProvider {
userid: userId
},
preSets: any = {
cacheKey: this.getCompetencySummaryCacheKey(competencyId, userId)
cacheKey: this.getCompetencySummaryCacheKey(competencyId, userId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (ignoreCache) {
@ -327,7 +333,8 @@ export class AddonCompetencyProvider {
courseid: courseId
},
preSets: any = {
cacheKey: this.getCourseCompetenciesCacheKey(courseId)
cacheKey: this.getCourseCompetenciesCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (ignoreCache) {

View File

@ -17,6 +17,7 @@ import { CoreLoggerProvider } from '@providers/logger';
import { CoreSitesProvider } from '@providers/sites';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreCoursesProvider } from '@core/courses/providers/courses';
import { CoreSite } from '@classes/site';
/**
* Service to handle course completion.
@ -108,6 +109,7 @@ export class AddonCourseCompletionProvider {
};
preSets.cacheKey = this.getCompletionCacheKey(courseId, userId);
preSets.updateFrequency = preSets.updateFrequency || CoreSite.FREQUENCY_SOMETIMES;
return site.read('core_completion_get_course_completion_status', data, preSets).then((data) => {
if (data.completionstatus) {

View File

@ -77,7 +77,8 @@ export class AddonFilesProvider {
return this.sitesProvider.getSite(siteId).then((site) => {
const preSets = {
cacheKey: this.getFilesListCacheKey(params)
cacheKey: this.getFilesListCacheKey(params),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('core_files_get_files', params, preSets);
@ -171,7 +172,8 @@ export class AddonFilesProvider {
userid: userId
},
preSets = {
cacheKey: this.getPrivateFilesInfoCacheKey(userId)
cacheKey: this.getPrivateFilesInfoCacheKey(userId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('core_user_get_private_files_info', params, preSets);

View File

@ -16,6 +16,7 @@ import { Injectable } from '@angular/core';
import { CoreLoggerProvider } from '@providers/logger';
import { CoreSitesProvider } from '@providers/sites';
import { CoreConfigConstants } from '../../../../configconstants';
import { CoreSite } from '@classes/site';
/**
* Service to handle Airnotifier message output.
@ -81,7 +82,8 @@ export class AddonMessageOutputAirnotifierProvider {
appid: CoreConfigConstants.app_id
};
const preSets = {
cacheKey: this.getUserDevicesCacheKey()
cacheKey: this.getUserDevicesCacheKey(),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('message_airnotifier_get_user_devices', data, preSets).then((data) => {

View File

@ -571,7 +571,8 @@ export class AddonMessagesProvider {
userid: userId
},
preSets = {
cacheKey: this.getCacheKeyForBlockedContacts(userId)
cacheKey: this.getCacheKeyForBlockedContacts(userId),
updateFrequency: CoreSite.FREQUENCY_OFTEN
};
return site.read('core_message_get_blocked_users', params, preSets);
@ -590,7 +591,8 @@ export class AddonMessagesProvider {
getContacts(siteId?: string): Promise<any> {
return this.sitesProvider.getSite(siteId).then((site) => {
const preSets = {
cacheKey: this.getCacheKeyForContacts()
cacheKey: this.getCacheKeyForContacts(),
updateFrequency: CoreSite.FREQUENCY_OFTEN
};
return site.read('core_message_get_contacts', undefined, preSets).then((contacts) => {
@ -632,7 +634,8 @@ export class AddonMessagesProvider {
limitnum: limitNum <= 0 ? 0 : limitNum + 1
};
const preSets = {
cacheKey: this.getCacheKeyForUserContacts()
cacheKey: this.getCacheKeyForUserContacts(),
updateFrequency: CoreSite.FREQUENCY_OFTEN
};
return site.read('core_message_get_user_contacts', params, preSets).then((contacts) => {
@ -673,7 +676,8 @@ export class AddonMessagesProvider {
limitnum: limitNum <= 0 ? 0 : limitNum + 1
};
const preSets = {
cacheKey: this.getCacheKeyForContactRequests()
cacheKey: this.getCacheKeyForContactRequests(),
updateFrequency: CoreSite.FREQUENCY_OFTEN
};
return site.read('core_message_get_contact_requests', data, preSets).then((requests) => {
@ -837,7 +841,8 @@ export class AddonMessagesProvider {
}
const preSets = {
cacheKey: this.getCacheKeyForConversationMembers(userId, conversationId)
cacheKey: this.getCacheKeyForConversationMembers(userId, conversationId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
},
params: any = {
userid: userId,
@ -1272,7 +1277,8 @@ export class AddonMessagesProvider {
userId = userId || site.getUserId();
const preSets = {
cacheKey: this.getCacheKeyForMemberInfo(userId, otherUserId)
cacheKey: this.getCacheKeyForMemberInfo(userId, otherUserId),
updateFrequency: CoreSite.FREQUENCY_OFTEN
},
params: any = {
referenceuserid: userId,
@ -1312,7 +1318,8 @@ export class AddonMessagesProvider {
return this.sitesProvider.getSite(siteId).then((site) => {
const preSets = {
cacheKey: this.getMessagePreferencesCacheKey()
cacheKey: this.getMessagePreferencesCacheKey(),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('core_message_get_user_message_preferences', {}, preSets).then((data) => {

View File

@ -25,7 +25,7 @@ import { CoreGradesProvider } from '@core/grades/providers/grades';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { AddonModAssignSubmissionDelegate } from './submission-delegate';
import { AddonModAssignOfflineProvider } from './assign-offline';
import { CoreSiteWSPreSets } from '@classes/site';
import { CoreSite, CoreSiteWSPreSets } from '@classes/site';
import { CoreInterceptor } from '@classes/interceptor';
/**
@ -146,7 +146,8 @@ export class AddonModAssignProvider {
includenotenrolledcourses: 1
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getAssignmentCacheKey(courseId)
cacheKey: this.getAssignmentCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (ignoreCache) {
@ -215,7 +216,8 @@ export class AddonModAssignProvider {
assignmentids: [assignId]
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getAssignmentUserMappingsCacheKey(assignId)
cacheKey: this.getAssignmentUserMappingsCacheKey(assignId),
updateFrequency: CoreSite.FREQUENCY_OFTEN
};
if (ignoreCache) {
@ -437,7 +439,8 @@ export class AddonModAssignProvider {
assignmentids: [assignId]
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getSubmissionsCacheKey(assignId)
cacheKey: this.getSubmissionsCacheKey(assignId),
updateFrequency: CoreSite.FREQUENCY_OFTEN
};
if (ignoreCache) {
@ -642,7 +645,8 @@ export class AddonModAssignProvider {
filter: ''
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.listParticipantsCacheKey(assignId, groupId)
cacheKey: this.listParticipantsCacheKey(assignId, groupId),
updateFrequency: CoreSite.FREQUENCY_OFTEN
};
if (ignoreCache) {

View File

@ -23,6 +23,7 @@ import { CoreTextUtilsProvider } from '@providers/utils/text';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreCourseProvider } from '@core/course/providers/course';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { CoreSite } from '@classes/site';
/**
* A book chapter inside the toc list.
@ -97,7 +98,8 @@ export class AddonModBookProvider {
courseids: [courseId]
},
preSets = {
cacheKey: this.getBookDataCacheKey(courseId)
cacheKey: this.getBookDataCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('mod_book_get_books_by_courses', params, preSets).then((response) => {

View File

@ -18,7 +18,7 @@ import { CoreSitesProvider } from '@providers/sites';
import { CoreUserProvider } from '@core/user/providers/user';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreSiteWSPreSets } from '@classes/site';
import { CoreSite, CoreSiteWSPreSets } from '@classes/site';
/**
* Service that provides some features for chats.
@ -47,7 +47,8 @@ export class AddonModChatProvider {
courseids: [courseId]
};
const preSets: CoreSiteWSPreSets = {
cacheKey: this.getChatsCacheKey(courseId)
cacheKey: this.getChatsCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('mod_chat_get_chats_by_courses', params, preSets).then((response) => {
@ -214,6 +215,7 @@ export class AddonModChatProvider {
};
const preSets: CoreSiteWSPreSets = {
cacheKey: this.getSessionsCacheKey(chatId, groupId, showAll),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (ignoreCache) {
preSets.getFromCache = false;
@ -252,7 +254,8 @@ export class AddonModChatProvider {
groupid: groupId
};
const preSets: CoreSiteWSPreSets = {
cacheKey: this.getSessionMessagesCacheKey(chatId, sessionStart, groupId)
cacheKey: this.getSessionMessagesCacheKey(chatId, sessionStart, groupId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (ignoreCache) {
preSets.getFromCache = false;

View File

@ -19,7 +19,7 @@ import { CoreAppProvider } from '@providers/app';
import { CoreFilepoolProvider } from '@providers/filepool';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { AddonModChoiceOfflineProvider } from './offline';
import { CoreSiteWSPreSets } from '@classes/site';
import { CoreSite, CoreSiteWSPreSets } from '@classes/site';
/**
* Service that provides some features for choices.
@ -187,7 +187,8 @@ export class AddonModChoiceProvider {
};
const preSets: CoreSiteWSPreSets = {
cacheKey: this.getChoiceDataCacheKey(courseId),
omitExpires: forceCache
omitExpires: forceCache,
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (forceCache) {
@ -252,7 +253,8 @@ export class AddonModChoiceProvider {
choiceid: choiceId
};
const preSets: CoreSiteWSPreSets = {
cacheKey: this.getChoiceOptionsCacheKey(choiceId)
cacheKey: this.getChoiceOptionsCacheKey(choiceId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (ignoreCache) {

View File

@ -22,6 +22,7 @@ import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { AddonModDataOfflineProvider } from './offline';
import { AddonModDataFieldsDelegate } from './fields-delegate';
import { CoreRatingInfo } from '@core/rating/providers/rating';
import { CoreSite } from '@classes/site';
/**
* Database entry (online or offline).
@ -538,7 +539,8 @@ export class AddonModDataProvider {
courseids: [courseId]
},
preSets = {
cacheKey: this.getDatabaseDataCacheKey(courseId)
cacheKey: this.getDatabaseDataCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (forceCache) {
preSets['omitExpires'] = true;
@ -675,7 +677,8 @@ export class AddonModDataProvider {
order: order
},
preSets = {
cacheKey: this.getEntriesCacheKey(dataId, groupId)
cacheKey: this.getEntriesCacheKey(dataId, groupId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (forceCache) {
@ -733,7 +736,8 @@ export class AddonModDataProvider {
returncontents: 1
},
preSets = {
cacheKey: this.getEntryCacheKey(dataId, entryId)
cacheKey: this.getEntryCacheKey(dataId, entryId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (ignoreCache) {
@ -775,7 +779,8 @@ export class AddonModDataProvider {
databaseid: dataId
},
preSets = {
cacheKey: this.getFieldsCacheKey(dataId)
cacheKey: this.getFieldsCacheKey(dataId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (forceCache) {

View File

@ -20,7 +20,7 @@ import { CoreFilepoolProvider } from '@providers/filepool';
import { CoreAppProvider } from '@providers/app';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { AddonModFeedbackOfflineProvider } from './offline';
import { CoreSiteWSPreSets } from '@classes/site';
import { CoreSite, CoreSiteWSPreSets } from '@classes/site';
/**
* Service that provides some features for feedbacks.
@ -583,7 +583,8 @@ export class AddonModFeedbackProvider {
courseids: [courseId]
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getFeedbackCacheKey(courseId)
cacheKey: this.getFeedbackCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (forceCache) {
@ -650,7 +651,8 @@ export class AddonModFeedbackProvider {
feedbackid: feedbackId
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getItemsDataCacheKey(feedbackId)
cacheKey: this.getItemsDataCacheKey(feedbackId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (ignoreCache) {

View File

@ -18,6 +18,7 @@ import { CoreSitesProvider } from '@providers/sites';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreCourseProvider } from '@core/course/providers/course';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { CoreSite } from '@classes/site';
/**
* Service that provides some features for folder.
@ -61,7 +62,8 @@ export class AddonModFolderProvider {
courseids: [courseId]
},
preSets = {
cacheKey: this.getFolderCacheKey(courseId)
cacheKey: this.getFolderCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('mod_folder_get_folders_by_courses', params, preSets).then((response) => {

View File

@ -472,7 +472,8 @@ export class AddonModForumDiscussionPage implements OnDestroy {
const promises = [
this.forumProvider.invalidateForumData(this.courseId),
this.forumProvider.invalidateDiscussionPosts(this.discussionId),
this.forumProvider.invalidateAccessInformation(this.forumId)
this.forumProvider.invalidateAccessInformation(this.forumId),
this.forumProvider.invalidateCanAddDiscussion(this.forumId)
];
return this.utils.allPromises(promises).catch(() => {

View File

@ -298,7 +298,8 @@ export class AddonModForumProvider {
courseids: [courseId]
};
const preSets = {
cacheKey: this.getForumDataCacheKey(courseId)
cacheKey: this.getForumDataCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('mod_forum_get_forums_by_courses', params, preSets);

View File

@ -71,7 +71,8 @@ export class AddonModGlossaryProvider {
courseids: [courseId]
};
const preSets = {
cacheKey: this.getCourseGlossariesCacheKey(courseId)
cacheKey: this.getCourseGlossariesCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('mod_glossary_get_glossaries_by_courses', params, preSets).then((result) => {
@ -134,7 +135,8 @@ export class AddonModGlossaryProvider {
};
const preSets = {
cacheKey: this.getEntriesByAuthorCacheKey(glossaryId, letter, field, sort),
omitExpires: forceCache
omitExpires: forceCache,
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('mod_glossary_get_entries_by_author', params, preSets);
@ -182,7 +184,8 @@ export class AddonModGlossaryProvider {
};
const preSets = {
cacheKey: this.getEntriesByCategoryCacheKey(glossaryId, categoryId),
omitExpires: forceCache
omitExpires: forceCache,
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('mod_glossary_get_entries_by_category', params, preSets);
@ -254,7 +257,8 @@ export class AddonModGlossaryProvider {
};
const preSets = {
cacheKey: this.getEntriesByDateCacheKey(glossaryId, order, sort),
omitExpires: forceCache
omitExpires: forceCache,
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('mod_glossary_get_entries_by_date', params, preSets);
@ -311,7 +315,8 @@ export class AddonModGlossaryProvider {
};
const preSets = {
cacheKey: this.getEntriesByLetterCacheKey(glossaryId, letter),
omitExpires: forceCache
omitExpires: forceCache,
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('mod_glossary_get_entries_by_letter', params, preSets);
@ -378,6 +383,7 @@ export class AddonModGlossaryProvider {
const preSets = {
cacheKey: this.getEntriesBySearchCacheKey(glossaryId, query, fullSearch, order, sort),
omitExpires: forceCache,
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('mod_glossary_get_entries_by_search', params, preSets);
@ -444,7 +450,8 @@ export class AddonModGlossaryProvider {
limit: limit
};
const preSets = {
cacheKey: this.getCategoriesCacheKey(glossaryId)
cacheKey: this.getCategoriesCacheKey(glossaryId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('mod_glossary_get_categories', params, preSets).then((response) => {
@ -496,7 +503,8 @@ export class AddonModGlossaryProvider {
id: entryId
};
const preSets = {
cacheKey: this.getEntryCacheKey(entryId)
cacheKey: this.getEntryCacheKey(entryId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('mod_glossary_get_entry_by_id', params, preSets).then((response) => {

View File

@ -20,6 +20,7 @@ import { CoreTextUtilsProvider } from '@providers/utils/text';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreCourseProvider } from '@core/course/providers/course';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { CoreSite } from '@classes/site';
/**
* Service that provides some features for IMSCP.
@ -162,7 +163,8 @@ export class AddonModImscpProvider {
courseids: [courseId]
};
const preSets = {
cacheKey: this.getImscpDataCacheKey(courseId)
cacheKey: this.getImscpDataCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('mod_imscp_get_imscps_by_courses', params, preSets).then((response) => {

View File

@ -59,7 +59,8 @@ export class AddonModLabelProvider {
courseids: [courseId]
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getLabelDataCacheKey(courseId)
cacheKey: this.getLabelDataCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (forceCache) {

View File

@ -22,7 +22,7 @@ import { CoreDomUtilsProvider } from '@providers/utils/dom';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreGradesProvider } from '@core/grades/providers/grades';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { CoreSiteWSPreSets } from '@classes/site';
import { CoreSite, CoreSiteWSPreSets } from '@classes/site';
import { AddonModLessonOfflineProvider } from './lesson-offline';
/**
@ -1436,7 +1436,8 @@ export class AddonModLessonProvider {
courseids: [courseId]
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getLessonDataCacheKey(courseId)
cacheKey: this.getLessonDataCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (forceCache) {
@ -1761,7 +1762,8 @@ export class AddonModLessonProvider {
lessonid: lessonId,
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getPagesCacheKey(lessonId)
cacheKey: this.getPagesCacheKey(lessonId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (typeof password == 'string') {
@ -2118,7 +2120,8 @@ export class AddonModLessonProvider {
groupid: groupId
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getRetakesOverviewCacheKey(lessonId, groupId)
cacheKey: this.getRetakesOverviewCacheKey(lessonId, groupId),
updateFrequency: CoreSite.FREQUENCY_OFTEN
};
if (forceCache) {
@ -2348,7 +2351,8 @@ export class AddonModLessonProvider {
lessonattempt: retake
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getUserRetakeCacheKey(lessonId, userId, retake)
cacheKey: this.getUserRetakeCacheKey(lessonId, userId, retake),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (forceCache) {

View File

@ -21,6 +21,7 @@ import { CoreTextUtilsProvider } from '@providers/utils/text';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreUrlUtilsProvider } from '@providers/utils/url';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { CoreSite } from '@classes/site';
export interface AddonModLtiParam {
name: string;
@ -108,7 +109,8 @@ export class AddonModLtiProvider {
courseids: [courseId]
};
const preSets: any = {
cacheKey: this.getLtiCacheKey(courseId)
cacheKey: this.getLtiCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return this.sitesProvider.getCurrentSite().read('mod_lti_get_ltis_by_courses', params, preSets).then((response) => {

View File

@ -19,6 +19,7 @@ import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreCourseProvider } from '@core/course/providers/course';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { CoreFilepoolProvider } from '@providers/filepool';
import { CoreSite } from '@classes/site';
/**
* Service that provides some features for page.
@ -63,7 +64,8 @@ export class AddonModPageProvider {
courseids: [courseId]
},
preSets = {
cacheKey: this.getPageCacheKey(courseId)
cacheKey: this.getPageCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('mod_page_get_pages_by_courses', params, preSets).then((response) => {

View File

@ -21,7 +21,7 @@ import { CoreDomUtilsProvider } from '@providers/utils/dom';
import { CoreTextUtilsProvider } from '@providers/utils/text';
import { CoreTimeUtilsProvider } from '@providers/utils/time';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreSiteWSPreSets } from '@classes/site';
import { CoreSite, CoreSiteWSPreSets } from '@classes/site';
import { CoreGradesHelperProvider } from '@core/grades/providers/helper';
import { CoreQuestionDelegate } from '@core/question/providers/delegate';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
@ -570,7 +570,8 @@ export class AddonModQuizProvider {
grade: grade
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getFeedbackForGradeCacheKey(quizId, grade)
cacheKey: this.getFeedbackForGradeCacheKey(quizId, grade),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (ignoreCache) {
@ -687,7 +688,8 @@ export class AddonModQuizProvider {
courseids: [courseId]
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getQuizDataCacheKey(courseId)
cacheKey: this.getQuizDataCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (forceCache) {
@ -829,7 +831,8 @@ export class AddonModQuizProvider {
quizid: quizId
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getQuizRequiredQtypesCacheKey(quizId)
cacheKey: this.getQuizRequiredQtypesCacheKey(quizId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (ignoreCache) {
@ -991,7 +994,8 @@ export class AddonModQuizProvider {
includepreviews: includePreviews ? 1 : 0
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getUserAttemptsCacheKey(quizId, userId)
cacheKey: this.getUserAttemptsCacheKey(quizId, userId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (offline) {

View File

@ -19,6 +19,7 @@ import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreCourseProvider } from '@core/course/providers/course';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { CoreFilepoolProvider } from '@providers/filepool';
import { CoreSite } from '@classes/site';
/**
* Service that provides some features for resources.
@ -61,7 +62,8 @@ export class AddonModResourceProvider {
courseids: [courseId]
},
preSets = {
cacheKey: this.getResourceCacheKey(courseId)
cacheKey: this.getResourceCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('mod_resource_get_resources_by_courses', params, preSets).then((response) => {

View File

@ -24,7 +24,7 @@ import { CoreTextUtilsProvider } from '@providers/utils/text';
import { CoreTimeUtilsProvider } from '@providers/utils/time';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { AddonModScormOfflineProvider } from './scorm-offline';
import { CoreSiteWSPreSets } from '@classes/site';
import { CoreSite, CoreSiteWSPreSets } from '@classes/site';
import { CoreConstants } from '@core/constants';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
@ -547,7 +547,8 @@ export class AddonModScormProvider {
ignoremissingcompletion: ignoreMissing ? 1 : 0
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getAttemptCountCacheKey(scormId, userId)
cacheKey: this.getAttemptCountCacheKey(scormId, userId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (ignoreCache) {
@ -835,7 +836,8 @@ export class AddonModScormProvider {
scormid: scormId
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getScosCacheKey(scormId)
cacheKey: this.getScosCacheKey(scormId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (ignoreCache) {
@ -1070,7 +1072,8 @@ export class AddonModScormProvider {
courseids: [courseId]
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getScormDataCacheKey(courseId)
cacheKey: this.getScormDataCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (forceCache) {

View File

@ -20,7 +20,7 @@ import { CoreAppProvider } from '@providers/app';
import { CoreFilepoolProvider } from '@providers/filepool';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { AddonModSurveyOfflineProvider } from './offline';
import { CoreSiteWSPreSets } from '@classes/site';
import { CoreSite, CoreSiteWSPreSets } from '@classes/site';
/**
* Service that provides some features for surveys.
@ -52,7 +52,8 @@ export class AddonModSurveyProvider {
surveyid: surveyId
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getQuestionsCacheKey(surveyId)
cacheKey: this.getQuestionsCacheKey(surveyId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (ignoreCache) {
@ -106,7 +107,8 @@ export class AddonModSurveyProvider {
courseids: [courseId]
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getSurveyCacheKey(courseId)
cacheKey: this.getSurveyCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (ignoreCache) {

View File

@ -20,6 +20,7 @@ import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreCourseProvider } from '@core/course/providers/course';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { CoreConstants } from '@core/constants';
import { CoreSite } from '@classes/site';
/**
* Service that provides some features for urls.
@ -114,7 +115,8 @@ export class AddonModUrlProvider {
courseids: [courseId]
},
preSets = {
cacheKey: this.getUrlCacheKey(courseId)
cacheKey: this.getUrlCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('mod_url_get_urls_by_courses', params, preSets).then((response) => {

View File

@ -22,7 +22,7 @@ import { CoreAppProvider } from '@providers/app';
import { CoreFilepoolProvider } from '@providers/filepool';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { AddonModWikiOfflineProvider } from './wiki-offline';
import { CoreSiteWSPreSets } from '@classes/site';
import { CoreSite, CoreSiteWSPreSets } from '@classes/site';
export interface AddonModWikiSubwikiListData {
/**
@ -134,7 +134,8 @@ export class AddonModWikiProvider {
pageid: pageId
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getPageContentsCacheKey(pageId)
cacheKey: this.getPageContentsCacheKey(pageId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (offline) {
@ -215,7 +216,8 @@ export class AddonModWikiProvider {
userid: userId
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getSubwikiFilesCacheKey(wikiId, groupId, userId)
cacheKey: this.getSubwikiFilesCacheKey(wikiId, groupId, userId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (offline) {
@ -299,7 +301,8 @@ export class AddonModWikiProvider {
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getSubwikiPagesCacheKey(wikiId, groupId, userId)
cacheKey: this.getSubwikiPagesCacheKey(wikiId, groupId, userId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (offline) {
@ -352,7 +355,8 @@ export class AddonModWikiProvider {
wikiid: wikiId
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getSubwikisCacheKey(wikiId)
cacheKey: this.getSubwikisCacheKey(wikiId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (offline) {
@ -408,7 +412,8 @@ export class AddonModWikiProvider {
courseids: [courseId]
},
preSets = {
cacheKey: this.getWikiDataCacheKey(courseId)
cacheKey: this.getWikiDataCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('mod_wiki_get_wikis_by_courses', params, preSets).then((response) => {

View File

@ -19,6 +19,7 @@ import { CoreSitesProvider } from '@providers/sites';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper';
import { AddonModWorkshopOfflineProvider } from './offline';
import { CoreSite } from '@classes/site';
/**
* Service that provides some features for workshops.
@ -212,7 +213,8 @@ export class AddonModWorkshopProvider {
courseids: [courseId]
};
const preSets: any = {
cacheKey: this.getWorkshopDataCacheKey(courseId)
cacheKey: this.getWorkshopDataCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (forceCache) {
@ -355,7 +357,8 @@ export class AddonModWorkshopProvider {
workshopid: workshopId
};
const preSets: any = {
cacheKey: this.getUserPlanDataCacheKey(workshopId)
cacheKey: this.getUserPlanDataCacheKey(workshopId),
updateFrequency: CoreSite.FREQUENCY_OFTEN
};
if (offline) {
@ -408,7 +411,8 @@ export class AddonModWorkshopProvider {
groupid: groupId
};
const preSets: any = {
cacheKey: this.getSubmissionsDataCacheKey(workshopId, userId, groupId)
cacheKey: this.getSubmissionsDataCacheKey(workshopId, userId, groupId),
updateFrequency: CoreSite.FREQUENCY_OFTEN
};
if (offline) {
@ -539,7 +543,8 @@ export class AddonModWorkshopProvider {
perpage: perPage || AddonModWorkshopProvider.PER_PAGE
};
const preSets: any = {
cacheKey: this.getGradesReportDataCacheKey(workshopId, groupId)
cacheKey: this.getGradesReportDataCacheKey(workshopId, groupId),
updateFrequency: CoreSite.FREQUENCY_OFTEN
};
if (offline) {
@ -1004,7 +1009,8 @@ export class AddonModWorkshopProvider {
mode: mode || 'assessment'
};
const preSets: any = {
cacheKey: this.getAssessmentFormDataCacheKey(workshopId, assessmentId, mode)
cacheKey: this.getAssessmentFormDataCacheKey(workshopId, assessmentId, mode),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (offline) {

View File

@ -17,7 +17,7 @@ import { CoreAppProvider } from '@providers/app';
import { CoreLoggerProvider } from '@providers/logger';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreSitesProvider } from '@providers/sites';
import { CoreSiteWSPreSets } from '@classes/site';
import { CoreSite, CoreSiteWSPreSets } from '@classes/site';
import { TranslateService } from '@ngx-translate/core';
import { CoreUserProvider } from '@core/user/providers/user';
import { AddonNotesOfflineProvider } from './notes-offline';
@ -160,20 +160,23 @@ export class AddonNotesProvider {
// The only way to detect if it's enabled is to perform a WS call.
// We use an invalid user ID (-1) to avoid saving the note if the user has permissions.
const data = {
notes: [
{
userid: -1,
publishstate: 'personal',
courseid: courseId,
text: '',
format: 1
}
]
};
notes: [
{
userid: -1,
publishstate: 'personal',
courseid: courseId,
text: '',
format: 1
}
]
},
preSets = {
updateFrequency: CoreSite.FREQUENCY_RARELY
};
/* Use .read to cache data and be able to check it in offline. This means that, if a user loses the capabilities
to add notes, he'll still see the option in the app. */
return this.utils.promiseWorks(site.read('core_notes_create_notes', data));
return this.utils.promiseWorks(site.read('core_notes_create_notes', data, preSets));
});
}
@ -232,7 +235,8 @@ export class AddonNotesProvider {
}
const preSets: CoreSiteWSPreSets = {
cacheKey: this.getNotesCacheKey(courseId, userId)
cacheKey: this.getNotesCacheKey(courseId, userId),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
if (ignoreCache) {

View File

@ -21,6 +21,7 @@ import { CoreTimeUtilsProvider } from '@providers/utils/time';
import { CoreUserProvider } from '@core/user/providers/user';
import { CoreEmulatorHelperProvider } from '@core/emulator/providers/helper';
import { AddonMessagesProvider } from '@addon/messages/providers/messages';
import { CoreSite } from '@classes/site';
/**
* Service to handle notifications.
@ -121,7 +122,8 @@ export class AddonNotificationsProvider {
return this.sitesProvider.getSite(siteId).then((site) => {
const preSets = {
cacheKey: this.getNotificationPreferencesCacheKey()
cacheKey: this.getNotificationPreferencesCacheKey(),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('core_message_get_user_notification_preferences', {}, preSets).then((data) => {

View File

@ -117,11 +117,13 @@ export interface CoreSiteWSPreSets {
/**
* Wehther a pending request in the queue matching the same function and arguments can be reused instead of adding
* a new request to the queue. Defaults to true for read requests.
* @type {boolean}
*/
reusePending?: boolean;
/**
* Whether the request will be be sent immediately as a single request. Defaults to false.
* @type {boolean}
*/
skipQueue?: boolean;
@ -129,6 +131,14 @@ export interface CoreSiteWSPreSets {
* Cache the response if it returns an errorcode present in this list.
*/
cacheErrors?: string[];
/**
* Update frequency. This value determines how often the cached data will be updated. Possible values:
* CoreSite.FREQUENCY_USUALLY, CoreSite.FREQUENCY_OFTEN, CoreSite.FREQUENCY_SOMETIMES, CoreSite.FREQUENCY_RARELY.
* Defaults to CoreSite.FREQUENCY_USUALLY.
* @type {number}
*/
updateFrequency?: number;
}
/**
@ -184,6 +194,12 @@ export class CoreSite {
// @todo Set REQUEST_QUEUE_FORCE_WS to false before the release.
static REQUEST_QUEUE_FORCE_WS = true; // Use "tool_mobile_call_external_functions" even for calling a single function.
// Constants for cache update frequency.
static FREQUENCY_USUALLY = 0;
static FREQUENCY_OFTEN = 1;
static FREQUENCY_SOMETIMES = 2;
static FREQUENCY_RARELY = 3;
// List of injected services. This class isn't injectable, so it cannot use DI.
protected appProvider: CoreAppProvider;
protected dbProvider: CoreDbProvider;
@ -213,6 +229,14 @@ export class CoreSite {
3.7: 2019052000
};
// Possible cache update frequencies.
protected UPDATE_FREQUENCIES = [
CoreConfigConstants.cache_update_frequency_usually || 420000,
CoreConfigConstants.cache_update_frequency_often || 1200000,
CoreConfigConstants.cache_update_frequency_sometimes || 3600000,
CoreConfigConstants.cache_update_frequency_rarely || 43200000
];
// Rest of variables.
protected logger;
protected db: SQLiteDB;
@ -1016,11 +1040,22 @@ export class CoreSite {
return promise.then((entry) => {
const now = Date.now();
let expirationTime;
preSets.omitExpires = preSets.omitExpires || !this.appProvider.isOnline();
if (!preSets.omitExpires) {
if (now > entry.expirationTime) {
let expirationDelay = this.UPDATE_FREQUENCIES[preSets.updateFrequency] ||
this.UPDATE_FREQUENCIES[CoreSite.FREQUENCY_USUALLY];
if (this.appProvider.isNetworkAccessLimited()) {
// Not WiFi, increase the expiration delay a 50% to decrease the data usage in this case.
expirationDelay *= 1.5;
}
expirationTime = entry.expirationTime + expirationDelay;
if (now > expirationTime) {
this.logger.debug('Cached element found, but it is expired');
return Promise.reject(null);
@ -1028,8 +1063,12 @@ export class CoreSite {
}
if (typeof entry != 'undefined' && typeof entry.data != 'undefined') {
const expires = (entry.expirationTime - now) / 1000;
this.logger.info(`Cached element found, id: ${id} expires in ${expires} seconds`);
if (!expirationTime) {
this.logger.info(`Cached element found, id: ${id}. Expiration time ignored.`);
} else {
const expires = (expirationTime - now) / 1000;
this.logger.info(`Cached element found, id: ${id}. Expires in expires in ${expires} seconds`);
}
return this.textUtils.parseJSON(entry.data, {});
}
@ -1064,15 +1103,15 @@ export class CoreSite {
}
return promise.then(() => {
// Since 3.7, the expiration time contains the time the entry is modified instead of the expiration time.
// We decided to reuse this field to prevent modifying the database table.
const id = this.getCacheId(method, data),
entry: any = {
id: id,
data: JSON.stringify(response)
data: JSON.stringify(response),
expirationTime: Date.now()
};
let cacheExpirationTime = CoreConfigConstants.cache_expiration_time;
cacheExpirationTime = isNaN(cacheExpirationTime) ? 300000 : cacheExpirationTime;
entry.expirationTime = new Date().getTime() + cacheExpirationTime;
if (preSets.cacheKey) {
entry.key = preSets.cacheKey;
}

View File

@ -4,7 +4,10 @@
"desktopappname": "Moodle Desktop",
"versioncode": 3700,
"versionname": "3.7.0-dev",
"cache_expiration_time": 300000,
"cache_update_frequency_usually": 420000,
"cache_update_frequency_often": 1200000,
"cache_update_frequency_sometimes": 3600000,
"cache_update_frequency_rarely": 43200000,
"default_lang": "en",
"languages": {
"ar": "عربي",

View File

@ -102,7 +102,8 @@ export class CoreCommentsProvider {
};
const preSets = {
cacheKey: this.getCommentsCacheKey(contextLevel, instanceId, component, itemId, area, page)
cacheKey: this.getCommentsCacheKey(contextLevel, instanceId, component, itemId, area, page),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('core_comment_get_comments', params, preSets).then((response) => {

View File

@ -258,7 +258,8 @@ export class CoreCourseProvider {
courseid: courseId
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getCourseBlocksCacheKey(courseId)
cacheKey: this.getCourseBlocksCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('core_block_get_course_blocks', params, preSets).then((result) => {
@ -336,7 +337,8 @@ export class CoreCourseProvider {
options: []
};
const preSets: CoreSiteWSPreSets = {
omitExpires: preferCache
omitExpires: preferCache,
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (includeStealth) {
@ -446,7 +448,8 @@ export class CoreCourseProvider {
cmid: moduleId
},
preSets = {
cacheKey: this.getModuleCacheKey(moduleId)
cacheKey: this.getModuleCacheKey(moduleId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('core_course_get_course_module', params, preSets).then((response) => {
@ -502,7 +505,8 @@ export class CoreCourseProvider {
module: module
},
preSets = {
cacheKey: this.getModuleBasicInfoByInstanceCacheKey(id, module)
cacheKey: this.getModuleBasicInfoByInstanceCacheKey(id, module),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('core_course_get_course_module_by_instance', params, preSets).then((response) => {
@ -629,6 +633,7 @@ export class CoreCourseProvider {
return this.sitesProvider.getSite(siteId).then((site) => {
preSets = preSets || {};
preSets.cacheKey = this.getSectionsCacheKey(courseId);
preSets.updateFrequency = preSets.updateFrequency || CoreSite.FREQUENCY_RARELY;
const params = {
courseid: courseId,

View File

@ -63,7 +63,8 @@ export class CoreCoursesProvider {
addsubcategories: addSubcategories ? 1 : 0
},
preSets = {
cacheKey: this.getCategoriesCacheKey(categoryId, addSubcategories)
cacheKey: this.getCategoriesCacheKey(categoryId, addSubcategories),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('core_course_get_categories', data, preSets);
@ -271,7 +272,8 @@ export class CoreCoursesProvider {
courseid: id
},
preSets = {
cacheKey: this.getCourseEnrolmentMethodsCacheKey(id)
cacheKey: this.getCourseEnrolmentMethodsCacheKey(id),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('core_enrol_get_course_enrolment_methods', params, preSets);
@ -301,7 +303,8 @@ export class CoreCoursesProvider {
instanceid: instanceId
},
preSets = {
cacheKey: this.getCourseGuestEnrolmentInfoCacheKey(instanceId)
cacheKey: this.getCourseGuestEnrolmentInfoCacheKey(instanceId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('enrol_guest_get_instance_info', params, preSets).then((response) => {
@ -343,7 +346,8 @@ export class CoreCoursesProvider {
}
},
preSets = {
cacheKey: this.getCoursesCacheKey(ids)
cacheKey: this.getCoursesCacheKey(ids),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('core_course_get_courses', data, preSets);
@ -445,7 +449,8 @@ export class CoreCoursesProvider {
value: field ? value : ''
},
preSets = {
cacheKey: this.getCoursesByFieldCacheKey(field, value)
cacheKey: this.getCoursesByFieldCacheKey(field, value),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('core_course_get_courses_by_field', data, preSets).then((courses) => {
@ -604,7 +609,8 @@ export class CoreCoursesProvider {
courseids: courseIds
},
preSets = {
cacheKey: this.getUserAdministrationOptionsCacheKey(courseIds)
cacheKey: this.getUserAdministrationOptionsCacheKey(courseIds),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('core_course_get_user_administration_options', params, preSets).then((response) => {
@ -650,7 +656,8 @@ export class CoreCoursesProvider {
courseids: courseIds
},
preSets = {
cacheKey: this.getUserNavigationOptionsCacheKey(courseIds)
cacheKey: this.getUserNavigationOptionsCacheKey(courseIds),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('core_course_get_user_navigation_options', params, preSets).then((response) => {
@ -728,7 +735,8 @@ export class CoreCoursesProvider {
preSets = {
cacheKey: this.getUserCoursesCacheKey(),
getCacheUsingCacheKey: true,
omitExpires: !!preferCache
omitExpires: !!preferCache,
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (site.isVersionGreaterEqualThan('3.7')) {

View File

@ -49,7 +49,8 @@ export class CoreCoursesDashboardProvider {
const params = {
},
preSets = {
cacheKey: this.getDashboardBlocksCacheKey(userId)
cacheKey: this.getDashboardBlocksCacheKey(userId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (userId) {

View File

@ -251,7 +251,8 @@ export class CoreRatingProvider {
sort: sort
};
const preSets: CoreSiteWSPreSets = {
cacheKey: this.getItemRatingsCacheKey(contextLevel, instanceId, component, ratingArea, itemId, scaleId, sort)
cacheKey: this.getItemRatingsCacheKey(contextLevel, instanceId, component, ratingArea, itemId, scaleId, sort),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (ignoreCache) {
preSets.getFromCache = false;

View File

@ -234,6 +234,8 @@ export class CoreSitePluginsProvider {
preSets = preSets || {};
preSets.cacheKey = this.getContentCacheKey(component, method, args);
preSets.updateFrequency = typeof preSets.updateFrequency != 'undefined' ? preSets.updateFrequency :
CoreSite.FREQUENCY_OFTEN;
return this.sitesProvider.getCurrentSite().read('tool_mobile_get_content', data, preSets);
}).then((result) => {

View File

@ -151,7 +151,8 @@ export class CoreUserProvider {
}
]
}, preSets: any = {
cacheKey: this.getParticipantsListCacheKey(courseId)
cacheKey: this.getParticipantsListCacheKey(courseId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (ignoreCache) {
@ -235,7 +236,8 @@ export class CoreUserProvider {
protected getUserFromWS(userId: number, courseId?: number, siteId?: string): Promise<any> {
return this.sitesProvider.getSite(siteId).then((site) => {
const presets = {
cacheKey: this.getUserCacheKey(userId)
cacheKey: this.getUserCacheKey(userId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
let wsName, data;
@ -329,7 +331,8 @@ export class CoreUserProvider {
return this.sitesProvider.getSite(siteId).then((site) => {
const data = { name };
const preSets: CoreSiteWSPreSets = {
cacheKey: this.getUserPreferenceCacheKey(data.name)
cacheKey: this.getUserPreferenceCacheKey(data.name),
updateFrequency: CoreSite.FREQUENCY_SOMETIMES
};
return site.read('core_user_get_user_preferences', data, preSets).then((result) => {

View File

@ -16,7 +16,7 @@ import { Injectable } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { CoreSitesProvider } from './sites';
import { CoreCoursesProvider } from '@core/courses/providers/courses';
import { CoreSiteWSPreSets } from '@classes/site';
import { CoreSite, CoreSiteWSPreSets } from '@classes/site';
/**
* Group info for an activity.
@ -89,7 +89,8 @@ export class CoreGroupsProvider {
userid: userId
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getActivityAllowedGroupsCacheKey(cmId, userId)
cacheKey: this.getActivityAllowedGroupsCacheKey(cmId, userId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (ignoreCache) {
@ -196,7 +197,8 @@ export class CoreGroupsProvider {
cmid: cmId
},
preSets: CoreSiteWSPreSets = {
cacheKey: this.getActivityGroupModeCacheKey(cmId)
cacheKey: this.getActivityGroupModeCacheKey(cmId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
if (ignoreCache) {
@ -283,7 +285,8 @@ export class CoreGroupsProvider {
courseid: courseId
},
preSets = {
cacheKey: this.getUserGroupsInCourseCacheKey(courseId, userId)
cacheKey: this.getUserGroupsInCourseCacheKey(courseId, userId),
updateFrequency: CoreSite.FREQUENCY_RARELY
};
return site.read('core_group_get_course_user_groups', data, preSets).then((response) => {

View File

@ -4,6 +4,7 @@ information provided here is intended especially for developers.
=== 3.7.0 ===
- The pushnotifications addon has been moved to core. All imports of that addon need to be fixed to use the right path and name.
- Now the expirationTime of cache entries contains the time the entry was modified, not the expiration time. This is to allow calculating dynamic expiration times. We decided to reuse the same field to prevent modifying the database table.
=== 3.6.1 ===