ComunicWeb/assets/js/common/cacheManager.js
2017-06-14 11:51:43 +02:00

94 lines
2.0 KiB
JavaScript

/**
* Global cache management system
*
* @author Pierre HUBERT
*/
ComunicWeb.common.cacheManager = {
/**
* @var {Array} cachesArray An array that contains all the functions that can empty caches
*/
__cachesCleaners: [],
/**
* @var {Array} intervalsList A list of all created intervals
*/
__intervalsList: [],
/**
* Register a new cache cleaner
*
* @param {Function} cacheCleaner The cache cleaner to register
* @param {Boolean} persistant If it is set to true, the cache will have to be cleaned only on user logout
* @return {Boolean} True for a success
*/
registerCacheCleaner: function(cacheCleaner, persistant){
//Add the function to the list
this.__cachesCleaners.push([cacheCleaner, persistant]);
//Success
return true;
},
/**
* Register a new interval
*
* @param {Interval} interval The interval to register
* @return {Boolean} True for a success
*/
registerInterval: function(interval){
//Add the interval to the list
this.__intervalsList.push(interval);
//Success
return true;
},
/**
* Clean the caches
*
* @param {Boolean} allCaches Specify wether persistent caches has to be cleaned or not
* @return {Boolean} True for a success
*/
cleanCaches: function(allCaches){
//Log action
ComunicWeb.debug.logMessage("Empty all caches");
//Process each cleaning function
for(i in this.__cachesCleaners){
if(allCaches || !this.__cachesCleaners[i][1])
eval(this.__cachesCleaners[i][0]+"()");
}
//Clean list
this.__cachesCleaners = [];
//Success
return true;
},
/**
* Unset all intervals
*
* @return {Boolean} True for a success
*/
cleanIntervals: function(){
//Log action
ComunicWeb.debug.logMessage("Unset all intervals");
//Process each cleaning function
for(i in this.__intervalsList){
//if(allCaches || !this.__intervalsList[i][1])
clearInterval(this.__intervalsList[i]);
}
//Remove intervals
this.__intervalsList = [];
//Success
return true
}
}