/* * @package AJAX_Chat * @author Sebastian Tschan * @copyright (c) Sebastian Tschan * @license GNU Affero General Public License * @link https://blueimp.net/ajax/ */ // Overrides client-side functionality for the logs view: ajaxChat.logsMonitorMode = null; ajaxChat.logsLastID = null; ajaxChat.logsCommand = null; ajaxChat.startChatUpdate = function() { var infos = 'userID,userName,userRole'; if(this.socketServerEnabled) { infos += ',socketRegistrationID'; } this.updateChat('&getInfos=' + this.encodeText(infos)); } ajaxChat.updateChat = function(paramString) { // Only update if we have parameters, are in monitor mode or the lastID has changed since the last update: if(paramString || this.logsMonitorMode || !this.logsLastID || this.lastID != this.logsLastID) { // Update the logsLastID for the lastID check: this.logsLastID = this.lastID; var requestUrl = this.ajaxURL + '&lastID=' + this.lastID; if(paramString) { requestUrl += paramString; } requestUrl += '&' + this.getLogsCommand(); this.makeRequest(requestUrl,'GET',null); } else { this.logsLastID = null; } } ajaxChat.sendMessage = function() { this.getLogs(); } ajaxChat.getLogs = function() { clearTimeout(this.timer); this.clearChatList(); this.lastID = 0; this.logsCommand = null; this.makeRequest(this.ajaxURL,'POST',this.getLogsCommand()); } ajaxChat.getLogsCommand = function() { if(!this.logsCommand) { if(!this.dom['inputField'].value && parseInt(this.dom['yearSelection'].value) <= 0 && parseInt(this.dom['hourSelection'].value) <= 0) { this.logsMonitorMode = true; } else { this.logsMonitorMode = false; } this.logsCommand = 'command=getLogs' + '&channelID=' + this.dom['channelSelection'].value + '&year=' + this.dom['yearSelection'].value + '&month=' + this.dom['monthSelection'].value + '&day=' + this.dom['daySelection'].value + '&hour=' + this.dom['hourSelection'].value + '&search=' + this.encodeText(this.dom['inputField'].value); } return this.logsCommand; } ajaxChat.onNewMessage = function(dateObject, userID, userName, userRoleClass, messageID, messageText, channelID, ip) { if(messageText.indexOf('/delete') == 0) { return false; } if(this.logsMonitorMode) { this.blinkOnNewMessage(dateObject, userID, userName, userRoleClass, messageID, messageText, channelID, ip); this.playSoundOnNewMessage( dateObject, userID, userName, userRoleClass, messageID, messageText, channelID, ip ); } return true; } ajaxChat.logout = function() { clearTimeout(this.timer); this.makeRequest(this.ajaxURL,'POST','logout=true'); } ajaxChat.switchLanguage = function(langCode) { window.location.search = '?view=logs&lang='+langCode; } ajaxChat.setChatUpdateTimer = function() { clearTimeout(this.timer); var timeout; if(this.socketIsConnected && this.logsLastID && this.lastID == this.logsLastID) { timeout = this.socketTimerRate; } else { timeout = this.timerRate; if(this.socketServerEnabled && !this.socketReconnectTimer) { // If the socket connection fails try to reconnect once in a minute: this.socketReconnectTimer = setTimeout('ajaxChat.socketConnect();', 60000); } } this.timer = setTimeout('ajaxChat.updateChat(null);', timeout); } ajaxChat.socketUpdate = function(data) { if(this.logsMonitorMode) { var xmlDoc = this.loadXML(data); if(xmlDoc) { var selectedChannelID = parseInt(this.dom['channelSelection'].value); var channelID = parseInt(xmlDoc.firstChild.getAttribute('channelID')); if(selectedChannelID == -3 || channelID == selectedChannelID || selectedChannelID == -2 && channelID >= this.privateMessageDiff || selectedChannelID == -1 && channelID >= this.privateChannelDiff && channelID < this.privateMessageDiff ) { this.handleChatMessages(xmlDoc.getElementsByTagName('message')); } } } }