if (WCC->Floors == NULL)
GetFloorListHash(Target, TP);
- serv_puts("LKRA");
if (WCC->Rooms == NULL)
+ {
+ serv_puts("LKRA");
WCC->Rooms = GetRoomListHash(Target, TP);
+ }
return WCC->Rooms;
}
+HashList *GetZappedRoomListHash(StrBuf *Target, WCTemplputParams *TP)
+{
+ wcsession *WCC = WC;
+
+ if (WCC->Floors == NULL)
+ GetFloorListHash(Target, TP);
+ serv_puts("LZRM -1");
+ return GetRoomListHash(Target, TP);
+}
+
void FlushFolder(folder *room)
{
int i;
+ FreeStrBuf(&room->XAPass);
+ FreeStrBuf(&room->Directory);
+ FreeStrBuf(&room->RoomAide);
+ FreeStrBuf(&room->XInfoText);
+
FreeStrBuf(&room->name);
+ if (room->IgnetCfgs[0] == (HashList*) StrBufNOTNULL)
+ {
+ room->IgnetCfgs[0] = NULL;
+ for (i = ignet_push_share; i < maxRoomNetCfg; i++)
+ DeleteHash(&room->IgnetCfgs[i]);
+ }
if (room->RoomNameParts != NULL)
{
for (i=0; i < room->nRoomNameParts; i++)
FreeStrBuf(&room->RoomNameParts[i]);
free(room->RoomNameParts);
}
+ memset(room, 0, sizeof(folder));
}
void vDeleteFolder(void *vFolder)
folder *room;
StrBuf *Buf;
const char *Pos;
- const char *Err;
void *vFloor;
wcsession *WCC = WC;
CompareFunc SortIt;
Buf = NewStrBuf();
rooms = NewHash(1, NULL);
- StrBufTCP_read_line(Buf, &WC->serv_sock, 0, &Err);
+ StrBuf_ServGetln(Buf);
if (GetServerStatus(Buf, NULL) == 1)
{
while(!Done && StrBuf_ServGetln(Buf))
room->QRFlags = StrBufExtractNext_long(Buf, &Pos, '|');
room->floorid = StrBufExtractNext_int(Buf, &Pos, '|');
- room->listorder = StrBufExtractNext_long(Buf, &Pos, '|');
+ room->Order = StrBufExtractNext_long(Buf, &Pos, '|');
room->QRFlags2 = StrBufExtractNext_long(Buf, &Pos, '|');
room->RAFlags = StrBufExtractNext_long(Buf, &Pos, '|');
return rooms;
}
+HashList *GetNetConfigHash(StrBuf *Target, WCTemplputParams *TP)
+{
+ wcsession *WCC = WC;
+ StrBuf *Line;
+ StrBuf *Token;
+ StrBuf *Content;
+ long WantThisOne;
+ long PutTo;
+ long State;
+
+ WantThisOne = GetTemplateTokenNumber(Target, TP, 5, 0);
+ if (WantThisOne == 0)
+ return NULL;
+ if (WCC->CurRoom.IgnetCfgs[0] == (HashList*) StrBufNOTNULL)
+ return WCC->CurRoom.IgnetCfgs[WantThisOne];
+
+ WCC->CurRoom.IgnetCfgs[0] = (HashList*) StrBufNOTNULL;
+ serv_puts("GNET");
+ Line = NewStrBuf();
+ Token = NewStrBuf();
+ StrBuf_ServGetln(Line);
+ if (GetServerStatus(Line, &State) == 1)
+ {
+ const char *Pos = NULL;
+ StrBuf_ServGetln(Line);
+ StrBufExtract_NextToken(Token, Line, &Pos, '|');
+ PutTo = GetTokenDefine(SKEY(Token), -1);
+ if ((PutTo > 0) &&
+ (PutTo < maxRoomNetCfg) &&
+ (Pos != StrBufNOTNULL))
+ {
+ int n;
+ HashList *SubH;
+
+ if (WCC->CurRoom.IgnetCfgs[PutTo] == NULL)
+ WCC->CurRoom.IgnetCfgs[PutTo] = NewHash(1, NULL);
+ SubH = NewHash(1, NULL);
+ n = GetCount(WCC->CurRoom.IgnetCfgs[PutTo]) + 1;
+ Put(WCC->CurRoom.IgnetCfgs[PutTo],
+ IKEY(n),
+ SubH,
+ HDeleteHash);
+ while (Pos != StrBufNOTNULL) {
+ Content = NewStrBuf();
+ StrBufExtract_NextToken(Content, Line, &Pos, '|');
+ Put(SubH,
+ IKEY(n),
+ Content,
+ HFreeStrBuf);
+ n++;
+ }
+ }
+ }
+ else if (State == 550)
+ StrBufAppendBufPlain(WCC->ImportantMsg,
+ _("Higher access is required to access this function."), -1, 0);
+
+
+ return WCC->CurRoom.IgnetCfgs[WantThisOne];
+}
+
/** Unused function that orders rooms by the listorder flag */
int SortRoomsByListOrder(const void *room1, const void *room2)
{
folder *r1 = (folder*) GetSearchPayload(room1);
folder *r2 = (folder*) GetSearchPayload(room2);
- if (r1->listorder == r2->listorder) return 0;
- if (r1->listorder > r2->listorder) return 1;
+ if (r1->Order == r2->Order) return 0;
+ if (r1->Order > r2->Order) return 1;
return -1;
}
}
-
+int CompareRooms(const folder *room1, const folder *room2)
+{
+ if ((room1 == NULL) || (room2 == NULL))
+ return -1;
+ return CompareRoomListByFloorRoomPrivFirst(room1, room2);
+}
{
folder *Folder = (folder *)CTX;
+ if (Folder == NULL)
+ {
+ wcsession *WCC = WC;
+
+ if (WCC == NULL)
+ return;
+ Folder = &WCC->CurRoom;
+ }
StrBufAppendTemplate(Target, TP, Folder->name, 0);
}
void tmplput_ROOM_BASENAME(StrBuf *Target, WCTemplputParams *TP)
void tmplput_ROOM_LISTORDER(StrBuf *Target, WCTemplputParams *TP)
{
folder *Folder = (folder *)CTX;
- StrBufAppendPrintf(Target, "%d", Folder->listorder);
+ StrBufAppendPrintf(Target, "%d", Folder->Order);
}
void tmplput_ROOM_VIEW(StrBuf *Target, WCTemplputParams *TP)
{
-int ConditionalRoomHas_UA_KNOWN(StrBuf *Target, WCTemplputParams *TP)
-{
- folder *Folder = (folder *)CTX;
- return (Folder->RAFlags & UA_KNOWN) != 0;
-}
-
-int ConditionalRoomHas_UA_GOTOALLOWED(StrBuf *Target, WCTemplputParams *TP)
-{
- folder *Folder = (folder *)CTX;
- return (Folder->RAFlags & UA_GOTOALLOWED) != 0;
-}
-
-int ConditionalRoomHas_UA_HASNEWMSGS(StrBuf *Target, WCTemplputParams *TP)
-{
- folder *Folder = (folder *)CTX;
- return (Folder->RAFlags & UA_HASNEWMSGS) != 0;
-}
-
-int ConditionalRoomHas_UA_ZAPPED(StrBuf *Target, WCTemplputParams *TP)
-{
- folder *Folder = (folder *)CTX;
- return (Folder->RAFlags & UA_ZAPPED) != 0;
-}
-
-int ConditionalRoomHas_UA_POSTALLOWED(StrBuf *Target, WCTemplputParams *TP)
-{
- folder *Folder = (folder *)CTX;
- return (Folder->RAFlags & UA_POSTALLOWED) != 0;
-}
-
-int ConditionalRoomHas_UA_ADMINALLOWED(StrBuf *Target, WCTemplputParams *TP)
-{
- folder *Folder = (folder *)CTX;
- return (Folder->RAFlags & UA_ADMINALLOWED) != 0;
-}
-
-int ConditionalRoomHas_UA_DELETEALLOWED(StrBuf *Target, WCTemplputParams *TP)
-{
- folder *Folder = (folder *)CTX;
- return (Folder->RAFlags & UA_DELETEALLOWED) != 0;
-}
-
int ConditionalRoomIsInbox(StrBuf *Target, WCTemplputParams *TP)
{
return WCC->CurrentFloor == MyFloor;
}
+int ConditionalFloorIsVirtual(StrBuf *Target, WCTemplputParams *TP)
+{
+ Floor *MyFloor = (Floor *)CTX;
+
+ return MyFloor->ID == VIRTUAL_MY_FLOOR;
+}
+
+int ConditionalFloorIsSUBROOM(StrBuf *Target, WCTemplputParams *TP)
+{
+ wcsession *WCC = WC;
+ Floor *MyFloor = (Floor *)CTX;
+
+ return WCC->CurRoom.floorid == MyFloor->ID;
+}
+
int ConditionalRoomIsRESTSubRoom(StrBuf *Target, WCTemplputParams *TP)
{
end_burst();
}
-
-void
-SessionDetachModule_ROOMLIST
-(wcsession *sess)
-{
- DeleteHash(&sess->Floors);
- DeleteHash(&sess->Rooms);
- DeleteHash(&sess->FloorsByName);
-}
+#define POP3_HOST 0
+#define POP3_USERNAME 1
+#define POP3_PASSWORD 2
+#define POP3_KEEP 3
+#define POP3_INTERVAL 4
void
InitModule_ROOMLIST
(void)
{
+
+ REGISTERTokenParamDefine(POP3_HOST);
+ REGISTERTokenParamDefine(POP3_USERNAME);
+ REGISTERTokenParamDefine(POP3_PASSWORD);
+ REGISTERTokenParamDefine(POP3_KEEP);
+ REGISTERTokenParamDefine(POP3_INTERVAL);
+
+
WebcitAddUrlHandler(HKEY("json_roomflr"), "", 0, jsonRoomFlr, 0);
RegisterNamespace("FLOOR:ID", 0, 0, tmplput_FLOOR_ID, NULL, CTX_FLOORS);
RegisterNamespace("FLOOR:NAME", 0, 1, tmplput_FLOOR_NAME, NULL, CTX_FLOORS);
RegisterNamespace("FLOOR:NROOMS", 0, 0, tmplput_FLOOR_NROOMS, NULL, CTX_FLOORS);
+ RegisterConditional(HKEY("COND:FLOOR:ISSUBROOM"), 0, ConditionalFloorIsSUBROOM, CTX_FLOORS);
+ RegisterConditional(HKEY("COND:FLOOR:ISVIRTUAL"), 0, ConditionalFloorIsVirtual, CTX_FLOORS);
RegisterConditional(HKEY("COND:ROOM:REST:ISSUBFLOOR"), 0, ConditionalFloorIsRESTSubFloor, CTX_FLOORS);
+ RegisterIterator("ITERATE:THISROOM:GNET", 1, NULL, GetNetConfigHash, NULL, NULL, CTX_STRBUFARR, CTX_NONE, IT_NOFLAG);
+
RegisterIterator("LFLR", 0, NULL, GetFloorListHash, NULL, NULL, CTX_FLOORS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE);
RegisterIterator("LKRA", 0, NULL, GetRoomListHashLKRA, NULL, NULL, CTX_ROOMS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE);
+ RegisterIterator("LZRM", 0, NULL, GetZappedRoomListHash, NULL, DeleteHash, CTX_ROOMS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE);
+
RegisterNamespace("ROOM:INFO:FLOORID", 0, 1, tmplput_ROOM_FLOORID, NULL, CTX_ROOMS);
RegisterNamespace("ROOM:INFO:NAME", 0, 1, tmplput_ROOM_NAME, NULL, CTX_ROOMS);
- RegisterNamespace("ROOM:INFO:PRINT_NAME", 0, 1, tmplput_ROOM_NAME, NULL, CTX_ROOMS);/// TODO!
+ RegisterNamespace("ROOM:INFO:PRINT_NAME", 0, 1, tmplput_ROOM_NAME, NULL, CTX_NONE);
RegisterNamespace("ROOM:INFO:BASENAME", 0, 1, tmplput_ROOM_BASENAME, NULL, CTX_ROOMS);
RegisterNamespace("ROOM:INFO:LEVELNTIMES", 1, 2, tmplput_ROOM_LEVEL_N_TIMES, NULL, CTX_ROOMS);
RegisterConditional(HKEY("COND:ROOM:REST:ISSUBROOM"), 0, ConditionalRoomIsRESTSubRoom, CTX_ROOMS);
RegisterConditional(HKEY("COND:ROOM:INFO:IS_INBOX"), 0, ConditionalRoomIsInbox, CTX_ROOMS);
- RegisterConditional(HKEY("COND:ROOM:FLAGS:UA_KNOWN"), 0, ConditionalRoomHas_UA_KNOWN, CTX_ROOMS);
- RegisterConditional(HKEY("COND:ROOM:FLAGS:UA_GOTOALLOWED"), 0, ConditionalRoomHas_UA_GOTOALLOWED, CTX_ROOMS);
- RegisterConditional(HKEY("COND:ROOM:FLAGS:UA_HASNEWMSGS"), 0, ConditionalRoomHas_UA_HASNEWMSGS, CTX_ROOMS);
- RegisterConditional(HKEY("COND:ROOM:FLAGS:UA_ZAPPED"), 0, ConditionalRoomHas_UA_ZAPPED, CTX_ROOMS);
- RegisterConditional(HKEY("COND:ROOM:FLAGS:UA_POSTALLOWED"), 0, ConditionalRoomHas_UA_POSTALLOWED, CTX_ROOMS);
- RegisterConditional(HKEY("COND:ROOM:FLAGS:UA_ADMINALLOWED"), 0, ConditionalRoomHas_UA_ADMINALLOWED, CTX_ROOMS);
- RegisterConditional(HKEY("COND:ROOM:FLAGS:UA_DELETEALLOWED"), 0, ConditionalRoomHas_UA_DELETEALLOWED, CTX_ROOMS);
RegisterConditional(HKEY("COND:ROOM:GROUPDAV_CONTENT"), 0, ConditionalRoomHasGroupdavContent, CTX_ROOMS);