Ext.namespace('Zarafa.core');

/**
 * @class Zarafa.core.PresencePlugin
 * @extends Zarafa.core.Plugin
 *
 * A {@link Zarafa.core.PresencePlugin PresencePlugin} is a special kind of plugin
 * that should implement a method to communicate presence information about
 * users to the WebApp core. The core will then use this information to display
 * a presence indication in the UI.
 *
 * This class was intended to be overridden.
 */
Zarafa.core.PresencePlugin = Ext.extend(Zarafa.core.Plugin, {
	/**
	 * Presence plugins should overwrite this function and return an array with an
	 * entry for each of the users defines in userInfos. An entry should be one of
	 * the statuses defined in {@link Zarafa.core.data.PresenceStatus}
	 * @param {Zarafa.core.data.UserIdObject[]} users An array of users
	 * for whom a {@link Zarafa.core.data.PresenceStatus presence status} is
	 * requested,
	 * @return {Array} Array of {@link Zarafa.core.data.PresenceStatus}
	 */
	getPresenceStatuses : function(users) {
		// This function should be overwritten, but just in case we will return a
		// status unknown for all users
		return users.map(function() {
			return Zarafa.core.data.PresenceStatus.UNKNOWN;
		});
	}
});