mod_muc_log_http/muc_log_http/mod_muc_log_http.lua
author Waqas Hussain <waqas20@gmail.com>
Mon, 25 Jul 2011 02:21:40 +0500
changeset 387 90d0e90c5b0e
parent 386 d54dbbfda3bb
child 388 75aea9752062
permissions -rw-r--r--
mod_muc_log_http: Fixed a typo.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
     1
-- Copyright (C) 2009 Thilo Cestonaro
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
     2
--
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
     3
-- This project is MIT/X11 licensed. Please see the
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
     4
-- COPYING file in the source package for more information.
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
     5
--
102
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
     6
264
07c17b60229a mod_muc_log_http: Mark as global.
Waqas Hussain <waqas20@gmail.com>
parents: 194
diff changeset
     7
module:set_global();
07c17b60229a mod_muc_log_http: Mark as global.
Waqas Hussain <waqas20@gmail.com>
parents: 194
diff changeset
     8
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
     9
local prosody = prosody;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    10
local tabSort = table.sort;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    11
local tonumber = _G.tonumber;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    12
local tostring = _G.tostring;
116
f68a781efe81 mod_muc_log_http: support escaped urls
Thilo Cestonaro <thilo@cestona.ro>
parents: 115
diff changeset
    13
local strchar = string.char;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    14
local strformat = string.format;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    15
local splitJid = require "util.jid".split;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    16
local config_get = require "core.configmanager".get;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    17
local httpserver = require "net.httpserver";
344
2b0f2160fc61 mod_muc_log_http: Fix room name encoding/decoding (for UTF-8 room names)
Joseph Wallace <JosephWallace@letu.edu>
parents: 343
diff changeset
    18
local urlencode = require "net.http".urlencode;
2b0f2160fc61 mod_muc_log_http: Fix room name encoding/decoding (for UTF-8 room names)
Joseph Wallace <JosephWallace@letu.edu>
parents: 343
diff changeset
    19
local urldecode = require "net.http".urldecode;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    20
local datamanager = require "util.datamanager";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    21
local data_load, data_getpath = datamanager.load, datamanager.getpath;
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    22
local datastore = "muc_log";
102
a10ab09096e2 mod_muc_log_http: double check if muc_hosts is not nil, less logging, config var renamed to http_port back again
Thilo Cestonaro <thilo@cestona.ro>
parents: 101
diff changeset
    23
local urlBase = "muc_log";
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    24
local muc_hosts = {};
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    25
local config = nil;
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
    26
local tostring = _G.tostring;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
    27
local tonumber = _G.tonumber;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
    28
local os_date, os_time = os.date, os.time;
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
    29
local str_format = string.format;
105
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
    30
local io_open = io.open;
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
    31
local themesParent = (module.path and module.path:gsub("[/\\][^/\\]*$", "")  or (prosody.paths.plugins or "./plugins") .. "/muc_log_http") .. "/themes";
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    32
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    33
local lom = require "lxp.lom";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    34
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
    35
--[[ LuaFileSystem
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    36
* URL: http://www.keplerproject.org/luafilesystem/index.html
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    37
* Install: luarocks install luafilesystem
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    38
* ]]
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    39
local lfs = require "lfs";
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    40
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    41
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    42
--[[
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    43
* Default templates for the html output.
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    44
]]--
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    45
local html = {};
183
9d4fd01443eb mod_muc_log_http: ensure to have the default being "prosody"
Thilo Cestonaro <thilo@cestona.ro>
parents: 180
diff changeset
    46
local theme;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    47
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    48
local function checkDatastorePathExists(node, host, today, create)
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    49
	create = create or false;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    50
	local path = data_getpath(node, host, datastore, "dat", true);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    51
	path = path:gsub("/[^/]*$", "");
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
    52
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    53
	-- check existance
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    54
	local attributes, err = lfs.attributes(path);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    55
	if attributes == nil or attributes.mode ~= "directory" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    56
		module:log("warn", "muc_log folder isn't a folder: %s", path);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    57
		return false;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    58
	end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    59
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    60
	attributes, err = lfs.attributes(path .. "/" .. today);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    61
	if attributes == nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    62
		if create then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    63
			return lfs.mkdir(path .. "/" .. today);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    64
		else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    65
			return false;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    66
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    67
	elseif attributes.mode == "directory" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    68
		return true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    69
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    70
	return false;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    71
end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    72
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    73
function createDoc(body)
383
4099f0837936 mod_muc_log_http: Added assertion to ensure proper failure on empty responses.
Waqas Hussain <waqas20@gmail.com>
parents: 382
diff changeset
    74
	assert(body, "<nil> HTTP response");
4099f0837936 mod_muc_log_http: Added assertion to ensure proper failure on empty responses.
Waqas Hussain <waqas20@gmail.com>
parents: 382
diff changeset
    75
	body = body:gsub("%%", "%%%%");
4099f0837936 mod_muc_log_http: Added assertion to ensure proper failure on empty responses.
Waqas Hussain <waqas20@gmail.com>
parents: 382
diff changeset
    76
	return html.doc:gsub("###BODY_STUFF###", body);
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    77
end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    78
116
f68a781efe81 mod_muc_log_http: support escaped urls
Thilo Cestonaro <thilo@cestona.ro>
parents: 115
diff changeset
    79
function urlunescape (escapedUrl)
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    80
	escapedUrl = escapedUrl:gsub("+", " ")
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    81
	escapedUrl = escapedUrl:gsub("%%(%x%x)", function(h) return strchar(tonumber(h,16)) end)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    82
	escapedUrl = escapedUrl:gsub("\r\n", "\n")
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    83
	return escapedUrl
116
f68a781efe81 mod_muc_log_http: support escaped urls
Thilo Cestonaro <thilo@cestona.ro>
parents: 115
diff changeset
    84
end
f68a781efe81 mod_muc_log_http: support escaped urls
Thilo Cestonaro <thilo@cestona.ro>
parents: 115
diff changeset
    85
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
    86
local function htmlEscape(t)
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    87
	if t then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    88
		t = t:gsub("<", "&lt;");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    89
		t = t:gsub(">", "&gt;");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    90
		t = t:gsub("(http://[%a%d@%.:/&%?=%-_#%%~]+)", function(h)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    91
			h = urlunescape(h)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    92
			return "<a href='" .. h .. "'>" .. h .. "</a>";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    93
		end);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    94
		t = t:gsub("\n", "<br />");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    95
		t = t:gsub("%%", "%%%%");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    96
	else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    97
		t = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    98
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
    99
	return t;
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   100
end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   101
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   102
local function generateComponentListSiteContent()
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   103
	local components = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   104
	for component,muc_host in pairs(muc_hosts or {}) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   105
		components = components .. html.components.bit:gsub("###COMPONENT###", component);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   106
	end
381
f932dc371ce7 mod_muc_log_http: Generate main component list page even when there are no components defined.
Waqas Hussain <waqas20@gmail.com>
parents: 380
diff changeset
   107
	return html.components.body:gsub("###COMPONENTS_STUFF###", components);
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   108
end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   109
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   110
local function generateRoomListSiteContent(component)
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   111
	local rooms = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   112
	if prosody.hosts[component] and prosody.hosts[component].muc ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   113
		for jid, room in pairs(prosody.hosts[component].muc.rooms) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   114
			local node = splitJid(jid);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   115
			if not room._data.hidden and node then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   116
				rooms = rooms .. html.rooms.bit:gsub("###ROOM###", node):gsub("###COMPONENT###", component);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   117
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   118
		end
385
fec9bc52aa42 mod_muc_log_http: Generate component room list page even when there are no rooms.
Waqas Hussain <waqas20@gmail.com>
parents: 384
diff changeset
   119
		return html.rooms.body:gsub("###ROOMS_STUFF###", rooms):gsub("###COMPONENT###", component);
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   120
	end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   121
end
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   122
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
   123
-- Calendar stuff
386
d54dbbfda3bb mod_muc_log_http: Simplified calculating day count for a month.
Waqas Hussain <waqas20@gmail.com>
parents: 385
diff changeset
   124
local function get_days_for_month(month, year)
d54dbbfda3bb mod_muc_log_http: Simplified calculating day count for a month.
Waqas Hussain <waqas20@gmail.com>
parents: 385
diff changeset
   125
	if month == 2 then
d54dbbfda3bb mod_muc_log_http: Simplified calculating day count for a month.
Waqas Hussain <waqas20@gmail.com>
parents: 385
diff changeset
   126
		local is_leap_year = (year % 4 == 0 and year % 100 ~= 0) or year % 400 == 0;
d54dbbfda3bb mod_muc_log_http: Simplified calculating day count for a month.
Waqas Hussain <waqas20@gmail.com>
parents: 385
diff changeset
   127
		return is_leap_year and 29 or 28;
d54dbbfda3bb mod_muc_log_http: Simplified calculating day count for a month.
Waqas Hussain <waqas20@gmail.com>
parents: 385
diff changeset
   128
	elseif (month < 8 and month%2 == 1) or (month >= 8 and month%2 == 0) then
d54dbbfda3bb mod_muc_log_http: Simplified calculating day count for a month.
Waqas Hussain <waqas20@gmail.com>
parents: 385
diff changeset
   129
		return 31;
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   130
	end
386
d54dbbfda3bb mod_muc_log_http: Simplified calculating day count for a month.
Waqas Hussain <waqas20@gmail.com>
parents: 385
diff changeset
   131
	return 30;
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   132
end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   133
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   134
local function createMonth(month, year, dayCallback)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   135
	local htmlStr = html.month.header;
386
d54dbbfda3bb mod_muc_log_http: Simplified calculating day count for a month.
Waqas Hussain <waqas20@gmail.com>
parents: 385
diff changeset
   136
	local days = get_days_for_month(month, year);
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   137
	local time = os_time{year=year, month=month, day=1};
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   138
	local dow = tostring(os_date("%a", time))
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   139
	local title = tostring(os_date("%B", time));
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   140
	local weekDays = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   141
	local weekDay = 0;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   142
	local weeks = 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   143
	local logAvailableForMinimumOneDay = false;
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   144
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   145
	local weekDaysHtml = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   146
	for _, tmp in ipairs(weekDays) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   147
		weekDaysHtml = weekDaysHtml .. html.month.weekDay:gsub("###DAY###", tmp) .. "\n";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   148
	end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   149
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   150
	htmlStr = htmlStr:gsub("###TITLE###", title):gsub("###WEEKDAYS###", weekDaysHtml);
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   151
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   152
	for i = 1, 31 do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   153
		weekDay = weekDay + 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   154
		if weekDay == 1 then htmlStr = htmlStr .. "<tr>\n"; end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   155
		if i == 1 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   156
			for _, tmp in ipairs(weekDays) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   157
				if dow ~= tmp then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   158
					htmlStr = htmlStr .. html.month.emptyDay .. "\n";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   159
					weekDay = weekDay + 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   160
				else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   161
					break;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   162
				end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   163
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   164
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   165
		if i < days + 1 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   166
			local tmp = tostring(i);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   167
			if dayCallback ~= nil and dayCallback.callback ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   168
				tmp = dayCallback.callback(dayCallback.path, i, month, year, dayCallback.room, dayCallback.webPath);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   169
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   170
			if tmp == nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   171
				tmp = tostring(i);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   172
			else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   173
				logAvailableForMinimumOneDay = true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   174
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   175
			htmlStr = htmlStr .. html.month.day:gsub("###DAY###", tmp) .. "\n";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   176
		end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   177
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   178
		if i >= days then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   179
			break;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   180
		end
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
   181
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   182
		if weekDay == 7 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   183
			weekDay = 0;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   184
			weeks = weeks + 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   185
			htmlStr = htmlStr .. "</tr>\n";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   186
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   187
	end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   188
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   189
	if weekDay + 1 < 8 or weeks < 6 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   190
		weekDay = weekDay + 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   191
		if weekDay > 7 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   192
			weekDay = 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   193
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   194
		if weekDay == 1 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   195
			weeks = weeks + 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   196
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   197
		for y = weeks, 6 do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   198
			if weekDay == 1 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   199
				htmlStr = htmlStr .. "<tr>\n";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   200
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   201
			for i = weekDay, 7 do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   202
				htmlStr = htmlStr .. html.month.emptyDay .. "\n";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   203
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   204
			weekDay = 1
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   205
			htmlStr = htmlStr .. "</tr>\n";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   206
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   207
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   208
	htmlStr = htmlStr .. html.month.footer;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   209
	if logAvailableForMinimumOneDay then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   210
		return htmlStr;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   211
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   212
end
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
   213
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   214
local function createYear(year, dayCallback)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   215
	local year = year;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   216
	local tmp;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   217
	if tonumber(year) <= 99 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   218
		year = year + 2000;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   219
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   220
	local htmlStr = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   221
	for i=1, 12 do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   222
		tmp = createMonth(i, year, dayCallback);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   223
		if tmp then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   224
			htmlStr = htmlStr .. "<div style='float: left; padding: 5px;'>\n" .. tmp .. "</div>\n";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   225
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   226
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   227
	if htmlStr ~= "" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   228
		return "<div name='yearDiv' style='padding: 40px; text-align: center;'>" .. html.year.title:gsub("###YEAR###", tostring(year)) .. htmlStr .. "</div><br style='clear:both;'/> \n";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   229
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   230
	return "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   231
end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   232
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   233
local function perDayCallback(path, day, month, year, room, webPath)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   234
	local webPath = webPath or ""
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   235
	local year = year;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   236
	if year > 2000 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   237
		year = year - 2000;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   238
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   239
	local bareDay = str_format("%.02d%.02d%.02d", year, month, day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   240
	room = urlencode(room);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   241
	local attributes, err = lfs.attributes(path.."/"..bareDay.."/"..room..".dat")
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   242
	if attributes ~= nil and attributes.mode == "file" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   243
		local s = html.days.bit;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   244
		s = s:gsub("###BARE_DAY###", webPath .. bareDay);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   245
		s = s:gsub("###DAY###", day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   246
		return s;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   247
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   248
	return;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   249
end
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
   250
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   251
local function generateDayListSiteContentByRoom(bareRoomJid)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   252
	local days = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   253
	local arrDays = {};
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   254
	local tmp;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   255
	local node, host, resource = splitJid(bareRoomJid);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   256
	local path = data_getpath(node, host, datastore);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   257
	local room = nil;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   258
	local nextRoom = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   259
	local previousRoom = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   260
	local rooms = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   261
	local attributes = nil;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   262
	local since = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   263
	local to = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   264
	local topic = "";
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   265
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   266
	path = path:gsub("/[^/]*$", "");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   267
	attributes = lfs.attributes(path);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   268
	if muc_hosts ~= nil and muc_hosts[host] and prosody.hosts[host] ~= nil and prosody.hosts[host].muc ~= nil and prosody.hosts[host].muc.rooms[bareRoomJid] ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   269
		local found = 0;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   270
		for jid, room in pairs(prosody.hosts[host].muc.rooms) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   271
			local node = splitJid(jid)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   272
			if not room._data.hidden and node then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   273
				if found == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   274
					previousRoom = node
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   275
				elseif found == 1 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   276
					nextRoom = node
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   277
					found = -1
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   278
				end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   279
				if jid == bareRoomJid then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   280
					found = 1
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   281
				end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   282
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   283
				rooms = rooms .. html.days.rooms.bit:gsub("###ROOM###", node);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   284
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   285
		end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   286
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   287
		room = prosody.hosts[host].muc.rooms[bareRoomJid];
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   288
		if room._data.hidden then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   289
			room = nil
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   290
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   291
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   292
	if attributes ~= nil and room ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   293
		local first = 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   294
		local alreadyDoneYears = {};
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   295
		local temptime = {day=0, month=0, year=0};
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   296
		topic = room._data.subject or "(no subject)"
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   297
		if topic:len() > 135 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   298
			topic = topic:sub(1, topic:find(" ", 120)) .. " ..."
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   299
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   300
		for folder in lfs.dir(path) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   301
			local year, month, day = folder:match("^(%d%d)(%d%d)(%d%d)");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   302
			if year ~= nil and alreadyDoneYears[year] == nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   303
				temptime.day = tonumber(day)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   304
				temptime.month = tonumber(month)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   305
				temptime.year = 2000 + tonumber(year)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   306
				if first == 1 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   307
					to = tostring(os_date("%B %Y", os_time(temptime)))
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   308
					first = 0
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   309
				end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   310
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   311
				since = tostring(os_date("%B %Y", os_time(temptime)))
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   312
				module:log("debug", "creating overview for: " .. tostring(since))
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   313
				days = createYear(year, {callback=perDayCallback, path=path, room=node}) .. days;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   314
				alreadyDoneYears[year] = true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   315
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   316
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   317
	end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   318
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   319
	if days ~= "" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   320
		tmp = html.days.body:gsub("###DAYS_STUFF###", days);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   321
		tmp = tmp:gsub("###PREVIOUS_ROOM###", previousRoom == "" and node or previousRoom);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   322
		tmp = tmp:gsub("###NEXT_ROOM###", nextRoom == "" and node or nextRoom);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   323
		tmp = tmp:gsub("###ROOMS###", rooms);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   324
		tmp = tmp:gsub("###ROOMTOPIC###", topic);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   325
		tmp = tmp:gsub("###SINCE###", since);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   326
		tmp = tmp:gsub("###TO###", to);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   327
		return tmp:gsub("###JID###", bareRoomJid);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   328
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   329
end
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
   330
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   331
local function parseIqStanza(stanza, timeStuff, nick)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   332
	local text = nil;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   333
	local victim = nil;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   334
	if(stanza.attr.type == "set") then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   335
		for _,tag in ipairs(stanza) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   336
			if tag.tag == "query" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   337
				for _,item in ipairs(tag) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   338
					if item.tag == "item" and item.attr.nick ~= nil and item.attr.role == 'none' then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   339
						victim = item.attr.nick;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   340
						for _,reason in ipairs(item) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   341
							if reason.tag == "reason" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   342
								text = reason[1];
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   343
								break;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   344
							end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   345
						end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   346
						break;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   347
					end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   348
				end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   349
				break;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   350
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   351
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   352
		if victim ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   353
			if text ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   354
				text = html.day.reason:gsub("###REASON###", htmlEscape(text));
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   355
			else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   356
				text = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   357
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   358
			return html.day.kick:gsub("###TIME_STUFF###", timeStuff):gsub("###VICTIM###", victim):gsub("###REASON_STUFF###", text);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   359
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   360
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   361
	return;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   362
end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   363
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   364
local function parsePresenceStanza(stanza, timeStuff, nick)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   365
	local ret = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   366
	local showJoin = "block"
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   367
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   368
	if config and not config.showJoin then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   369
		showJoin = "none";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   370
	end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   371
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   372
	if stanza.attr.type == nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   373
		local showStatus = "block"
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   374
		if config and not config.showStatus then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   375
			showStatus = "none";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   376
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   377
		local show, status = nil, "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   378
		local alreadyJoined = false;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   379
		for _, tag in ipairs(stanza) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   380
			if tag.tag == "alreadyJoined" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   381
				alreadyJoined = true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   382
			elseif tag.tag == "show" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   383
				show = tag[1];
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   384
			elseif tag.tag == "status" and tag[1] ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   385
				status = tag[1];
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   386
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   387
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   388
		if alreadyJoined == true then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   389
			if show == nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   390
				show = "online";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   391
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   392
			ret = html.day.presence.statusChange:gsub("###TIME_STUFF###", timeStuff);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   393
			if status ~= "" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   394
				status = html.day.presence.statusText:gsub("###STATUS###", htmlEscape(status));
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   395
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   396
			ret = ret:gsub("###SHOW###", show):gsub("###NICK###", nick):gsub("###SHOWHIDE###", showStatus):gsub("###STATUS_STUFF###", status);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   397
		else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   398
			ret = html.day.presence.join:gsub("###TIME_STUFF###", timeStuff):gsub("###SHOWHIDE###", showJoin):gsub("###NICK###", nick);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   399
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   400
	elseif stanza.attr.type ~= nil and stanza.attr.type == "unavailable" then
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   401
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   402
		ret = html.day.presence.leave:gsub("###TIME_STUFF###", timeStuff):gsub("###SHOWHIDE###", showJoin):gsub("###NICK###", nick);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   403
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   404
	return ret;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   405
end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   406
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   407
local function parseMessageStanza(stanza, timeStuff, nick)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   408
	local body, title, ret = nil, nil, "";
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   409
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   410
	for _,tag in ipairs(stanza) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   411
		if tag.tag == "body" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   412
			body = tag[1];
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   413
			if nick ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   414
				break;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   415
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   416
		elseif tag.tag == "nick" and nick == nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   417
			nick = htmlEscape(tag[1]);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   418
			if body ~= nil or title ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   419
				break;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   420
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   421
		elseif tag.tag == "subject" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   422
			title = tag[1];
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   423
			if nick ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   424
				break;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   425
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   426
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   427
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   428
	if nick ~= nil and body ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   429
		body = htmlEscape(body);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   430
		local me = body:find("^/me");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   431
		local template = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   432
		if not me then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   433
			template = html.day.message;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   434
		else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   435
			template = html.day.messageMe;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   436
			body = body:gsub("^/me ", "");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   437
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   438
		ret = template:gsub("###TIME_STUFF###", timeStuff):gsub("###NICK###", nick):gsub("###MSG###", body);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   439
	elseif nick ~= nil and title ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   440
		title = htmlEscape(title);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   441
		ret = html.day.titleChange:gsub("###TIME_STUFF###", timeStuff):gsub("###NICK###", nick):gsub("###TITLE###", title);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   442
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   443
	return ret;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   444
end
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
   445
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   446
local function incrementDay(bare_day)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   447
	local year, month, day = bare_day:match("^(%d%d)(%d%d)(%d%d)");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   448
	local leapyear = false;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   449
	module:log("debug", tostring(day).."/"..tostring(month).."/"..tostring(year))
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   450
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   451
	day = tonumber(day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   452
	month = tonumber(month);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   453
	year = tonumber(year);
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
   454
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   455
	if year%4 == 0 and year%100 == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   456
		if year%400 == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   457
			leapyear = true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   458
		else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   459
			leapyear = false; -- turn of the century but not a leapyear
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   460
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   461
	elseif year%4 == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   462
		leapyear = true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   463
	end
101
e3c09996cf7b mod_muc_log_http: display available days in a calendar view
Thilo Cestonaro <thilo@cestona.ro>
parents: 94
diff changeset
   464
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   465
	if (month == 2 and leapyear and day + 1 > 29) or
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   466
		(month == 2 and not leapyear and day + 1 > 28) or
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   467
		(month < 8 and month%2 == 1 and day + 1 > 31) or
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   468
		(month < 8 and month%2 == 0 and day + 1 > 30) or
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   469
		(month >= 8 and month%2 == 0 and day + 1 > 31) or
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   470
		(month >= 8 and month%2 == 1 and day + 1 > 30)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   471
	then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   472
		if month + 1 > 12 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   473
			year = year + 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   474
			month = 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   475
			day = 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   476
		else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   477
			month = month + 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   478
			day = 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   479
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   480
	else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   481
		day = day + 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   482
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   483
	return strformat("%.02d%.02d%.02d", year, month, day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   484
end
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
   485
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   486
local function findNextDay(bareRoomJid, bare_day)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   487
	local node, host, resource = splitJid(bareRoomJid);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   488
	local day = incrementDay(bare_day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   489
	local max_trys = 7;
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
   490
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   491
	module:log("debug", day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   492
	while(not checkDatastorePathExists(node, host, day, false)) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   493
		max_trys = max_trys - 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   494
		if max_trys == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   495
			break;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   496
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   497
		day = incrementDay(day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   498
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   499
	if max_trys == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   500
		return nil;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   501
	else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   502
		return day;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   503
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   504
end
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
   505
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   506
local function decrementDay(bare_day)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   507
	local year, month, day = bare_day:match("^(%d%d)(%d%d)(%d%d)");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   508
	local leapyear = false;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   509
	module:log("debug", tostring(day).."/"..tostring(month).."/"..tostring(year))
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   510
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   511
	day = tonumber(day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   512
	month = tonumber(month);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   513
	year = tonumber(year);
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   514
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   515
	if year%4 == 0 and year%100 == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   516
		if year%400 == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   517
			leapyear = true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   518
		else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   519
			leapyear = false; -- turn of the century but not a leapyear
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   520
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   521
	elseif year%4 == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   522
		leapyear = true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   523
	end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   524
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   525
	if day - 1 == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   526
		if month - 1 == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   527
			year = year - 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   528
			month = 12;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   529
			day = 31;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   530
		else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   531
			month = month - 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   532
			if (month == 2 and leapyear) then day = 29
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   533
			elseif (month == 2 and not leapyear) then day = 28
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   534
			elseif (month < 8 and month%2 == 1) or (month >= 8 and month%2 == 0) then day = 31
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   535
			else day = 30
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   536
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   537
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   538
	else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   539
		day = day - 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   540
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   541
	return strformat("%.02d%.02d%.02d", year, month, day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   542
end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   543
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   544
local function findPreviousDay(bareRoomJid, bare_day)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   545
	local node, host, resource = splitJid(bareRoomJid);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   546
	local day = decrementDay(bare_day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   547
	local max_trys = 7;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   548
	module:log("debug", day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   549
	while(not checkDatastorePathExists(node, host, day, false)) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   550
		max_trys = max_trys - 1;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   551
		if max_trys == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   552
			break;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   553
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   554
		day = decrementDay(day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   555
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   556
	if max_trys == 0 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   557
		return nil;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   558
	else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   559
		return day;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   560
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   561
end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   562
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   563
local function parseDay(bareRoomJid, roomSubject, bare_day)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   564
	local ret = "";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   565
	local year;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   566
	local month;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   567
	local day;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   568
	local tmp;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   569
	local node, host, resource = splitJid(bareRoomJid);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   570
	local year, month, day = bare_day:match("^(%d%d)(%d%d)(%d%d)");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   571
	local previousDay = findPreviousDay(bareRoomJid, bare_day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   572
	local nextDay = findNextDay(bareRoomJid, bare_day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   573
	local temptime = {day=0, month=0, year=0};
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   574
	local path = data_getpath(node, host, datastore);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   575
	path = path:gsub("/[^/]*$", "");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   576
	local calendar = ""
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   577
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   578
	if tonumber(year) <= 99 then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   579
		year = year + 2000;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   580
	end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   581
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   582
	temptime.day = tonumber(day)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   583
	temptime.month = tonumber(month)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   584
	temptime.year = tonumber(year)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   585
	calendar = createMonth(temptime.month, temptime.year, {callback=perDayCallback, path=path, room=node, webPath="../"}) or ""
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   586
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   587
	if bare_day ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   588
		local data = data_load(node, host, datastore .. "/" .. bare_day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   589
		if data ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   590
			for i=1, #data, 1 do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   591
				local stanza = lom.parse(data[i]);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   592
				if stanza ~= nil and stanza.attr ~= nil and stanza.attr.time ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   593
					local timeStuff = html.day.time:gsub("###TIME###", stanza.attr.time):gsub("###UTC###", stanza.attr.utc or stanza.attr.time);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   594
					if stanza[1] ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   595
						local nick;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   596
						local tmp;
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   597
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   598
						-- grep nick from "from" resource
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   599
						if stanza[1].attr.from ~= nil then -- presence and messages
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   600
							nick = htmlEscape(stanza[1].attr.from:match("/(.+)$"));
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   601
						elseif stanza[1].attr.to ~= nil then -- iq
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   602
							nick = htmlEscape(stanza[1].attr.to:match("/(.+)$"));
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   603
						end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   604
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   605
						if stanza[1].tag == "presence" and nick ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   606
							tmp = parsePresenceStanza(stanza[1], timeStuff, nick);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   607
						elseif stanza[1].tag == "message" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   608
							tmp = parseMessageStanza(stanza[1], timeStuff, nick);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   609
						elseif stanza[1].tag == "iq" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   610
							tmp = parseIqStanza(stanza[1], timeStuff, nick);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   611
						else
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   612
							module:log("info", "unknown stanza subtag in log found. room: %s; day: %s", bareRoomJid, year .. "/" .. month .. "/" .. day);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   613
						end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   614
						if tmp ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   615
							ret = ret .. tmp
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   616
							tmp = nil;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   617
						end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   618
					end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   619
				end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   620
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   621
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   622
		if ret ~= "" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   623
			if nextDay then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   624
				nextDay = html.day.dayLink:gsub("###DAY###", nextDay):gsub("###TEXT###", "&gt;")
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   625
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   626
			if previousDay then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   627
				previousDay = html.day.dayLink:gsub("###DAY###", previousDay):gsub("###TEXT###", "&lt;");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   628
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   629
			ret = ret:gsub("%%", "%%%%");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   630
			tmp = html.day.body:gsub("###DAY_STUFF###", ret):gsub("###JID###", bareRoomJid);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   631
			tmp = tmp:gsub("###CALENDAR###", calendar);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   632
			tmp = tmp:gsub("###DATE###", tostring(os_date("%A, %B %d, %Y", os_time(temptime))));
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   633
			tmp = tmp:gsub("###TITLE_STUFF###", html.day.title:gsub("###TITLE###", roomSubject));
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   634
			tmp = tmp:gsub("###STATUS_CHECKED###", config.showStatus and "checked='checked'" or "");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   635
			tmp = tmp:gsub("###JOIN_CHECKED###", config.showJoin and "checked='checked'" or "");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   636
			tmp = tmp:gsub("###NEXT_LINK###", nextDay or "");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   637
			tmp = tmp:gsub("###PREVIOUS_LINK###", previousDay or "");
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   638
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   639
			return tmp;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   640
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   641
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   642
end
119
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
   643
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   644
function handle_request(method, body, request)
384
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   645
	local host, node, day, more = request.url.path:match("^/muc_log/+([^/]*)/*([^/]*)/*([^/]*)/*(.*)$");
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   646
	if more ~= "" then return { status = "404 Not found", body = "Unknown URL" }; end
382
19469f3ad6d6 mod_muc_log_http: Cleaned up URL parsing.
Waqas Hussain <waqas20@gmail.com>
parents: 381
diff changeset
   647
	if host == "" then host = nil; end
19469f3ad6d6 mod_muc_log_http: Cleaned up URL parsing.
Waqas Hussain <waqas20@gmail.com>
parents: 381
diff changeset
   648
	if node == "" then node = nil; end
19469f3ad6d6 mod_muc_log_http: Cleaned up URL parsing.
Waqas Hussain <waqas20@gmail.com>
parents: 381
diff changeset
   649
	if day  == "" then day  = nil; end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   650
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   651
	node = urldecode(node);
119
e6592d8305cb mod_muc_log_http: support next, previous day calculations from one month/year to the next or visa versa
Thilo Cestonaro <thilo@cestona.ro>
parents: 118
diff changeset
   652
384
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   653
	assert(muc_hosts and html.doc, "MUC hosts or theme not loaded");
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   654
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   655
	if host and not(hosts[host] and hosts[host].modules.muc) then return { status = "404 Not found", body = "No such MUC component" }; end
387
90d0e90c5b0e mod_muc_log_http: Fixed a typo.
Waqas Hussain <waqas20@gmail.com>
parents: 386
diff changeset
   656
	if host and node and not(hosts[host].modules.muc.rooms[node.."@"..host]) then return { status = "404 Not found", body = "No such MUC room" }; end
384
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   657
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   658
	if not host then -- main component list
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   659
		return createDoc(generateComponentListSiteContent());
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   660
	elseif not node then -- room list for component
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   661
		return createDoc(generateRoomListSiteContent(host));
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   662
	elseif not day then -- room's listing
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   663
		return createDoc(generateDayListSiteContentByRoom(node.."@"..host));
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   664
	else
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   665
		local room = muc_hosts[host].modules.muc.rooms[node.."@"..host];
79983e658bb5 mod_muc_log_http: Cleaned up URL handling.
Waqas Hussain <waqas20@gmail.com>
parents: 383
diff changeset
   666
		return createDoc(parseDay(node.."@"..host, room._data.subject or "", day:gsub("%-", "")));
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   667
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   668
end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   669
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   670
-- Compatibility: Lua-5.1
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   671
function split(str, pat)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   672
	local t = {}  -- NOTE: use {n = 0} in Lua-5.0
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   673
	local fpat = "(.-)" .. pat
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   674
	local last_end = 1
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   675
	local s, e, cap = str:find(fpat, 1)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   676
	while s do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   677
		if s ~= 1 or cap ~= "" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   678
			table.insert(t,cap)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   679
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   680
		last_end = e+1
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   681
		s, e, cap = str:find(fpat, last_end)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   682
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   683
	if last_end <= #str then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   684
		cap = str:sub(last_end)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   685
		table.insert(t, cap)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   686
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   687
	return t
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   688
end
179
af6143756a9e mod_muc_log_http: started new prosody theme
Thilo Cestonaro <thilo@cestona.ro>
parents: 146
diff changeset
   689
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   690
local function assign(arr, content)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   691
	local tmp = html;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   692
	local idx = nil;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   693
	for _,i in ipairs(arr) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   694
		if idx ~= nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   695
			if tmp[idx] == nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   696
				tmp[idx] = {};
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   697
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   698
			tmp = tmp[idx];
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   699
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   700
		idx = i;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   701
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   702
	tmp[idx] = content;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   703
end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   704
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   705
local function readFile(filepath)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   706
	local f = assert(io_open(filepath, "r"));
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   707
	local t = f:read("*all");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   708
	f:close()
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   709
	return t;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   710
end
344
2b0f2160fc61 mod_muc_log_http: Fix room name encoding/decoding (for UTF-8 room names)
Joseph Wallace <JosephWallace@letu.edu>
parents: 343
diff changeset
   711
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   712
local function loadTheme(path)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   713
	for file in lfs.dir(path) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   714
		if file ~= "." and file ~= ".." then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   715
			module:log("debug", "opening theme file: " .. file);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   716
			local tmp = split(file:gsub("\.html$", ""), "_");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   717
			local content = readFile(path .. "/" .. file);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   718
			assign(tmp, content);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   719
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   720
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   721
	return true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   722
end
348
03e1dc036a28 mod_muc_log_http: HTML overhaul. Replacing deprecated elements and style-attributes.
Florian Zeitz <florob@babelmonkeys.de>
parents: 344
diff changeset
   723
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   724
function module.load()
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   725
	config = config_get("*", "core", "muc_log_http") or {};
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   726
	if config.showStatus == nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   727
		config.showStatus = true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   728
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   729
	if config.showJoin == nil then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   730
		config.showJoin = true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   731
	end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   732
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   733
	theme = config.theme or "prosody";
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   734
	local themePath = themesParent .. "/" .. tostring(theme);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   735
	local attributes, err = lfs.attributes(themePath);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   736
	if attributes == nil or attributes.mode ~= "directory" then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   737
		module:log("error", "Theme folder of theme \"".. tostring(theme) .. "\" isn't existing. expected Path: " .. themePath);
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   738
		return false;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   739
	end
105
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
   740
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   741
	-- module:log("debug", (require "util.serialization").serialize(html));
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   742
	if(not loadTheme(themePath)) then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   743
		module:log("error", "Theme \"".. tostring(theme) .. "\" is missing something.");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   744
		return false;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   745
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   746
	-- module:log("debug", (require "util.serialization").serialize(html));
105
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
   747
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   748
	httpserver.new_from_config({ config.http_port or true }, handle_request, { base = urlBase, ssl = false, port = 5290 });
105
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
   749
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   750
	for jid, host in pairs(prosody.hosts) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   751
		if host.muc then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   752
			local enabledModules = config_get(jid, "core", "modules_enabled");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   753
			if enabledModules then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   754
				for _,mod in ipairs(enabledModules) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   755
					if(mod == "muc_log") then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   756
						module:log("debug", "component: %s", tostring(jid));
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   757
						muc_hosts[jid] = true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   758
						break;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   759
					end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   760
				end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   761
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   762
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   763
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   764
	module:log("debug", "loaded mod_muc_log_http");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   765
end
105
cef943f0a551 mod_muc_log_http: themified ...
Thilo Cestonaro <thilo@cestona.ro>
parents: 104
diff changeset
   766
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   767
function module.unload()
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   768
	muc_hosts = nil;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   769
	module:log("debug", "unloaded mod_muc_log_http");
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   770
end
94
941fd7d8b9b2 mod_muc_log: split into mod_muc_log and mod_muc_log_http
Thilo Cestonaro <thilo@cestona.ro>
parents:
diff changeset
   771
380
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   772
module:hook("component-activated", function(component, config)
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   773
	if config.core and config.core.modules_enabled then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   774
		for _,mod in ipairs(config.core.modules_enabled) do
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   775
			if(mod == "muc_log") then
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   776
				module:log("debug", "component: %s", tostring(component));
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   777
				muc_hosts[component] = true;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   778
				break;
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   779
			end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   780
		end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   781
	end
5ef71af77ae2 mod_muc_log_http: Spaces -> Tabs.
Waqas Hussain <waqas20@gmail.com>
parents: 348
diff changeset
   782
end);