]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_spanningtree/metadata.cpp
Remove the intercomm system since sqlite is synchronous.
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / metadata.cpp
1 /*       +------------------------------------+
2  *       | Inspire Internet Relay Chat Daemon |
3  *       +------------------------------------+
4  *
5  *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
6  * See: http://wiki.inspircd.org/Credits
7  *
8  * This program is free but copyrighted software; see
9  *            the file COPYING for details.
10  *
11  * ---------------------------------------------------
12  */
13
14 #include "inspircd.h"
15 #include "xline.h"
16
17 #include "treesocket.h"
18 #include "treeserver.h"
19 #include "utils.h"
20
21 bool TreeSocket::MetaData(const std::string &prefix, parameterlist &params)
22 {
23         if (params.size() < 2)
24                 return true;
25         else if (params.size() < 3)
26                 params.push_back("");
27         TreeServer* ServerSource = Utils->FindServer(prefix);
28         ExtensionItem* item = ServerInstance->Extensions.GetItem(params[1]);
29         if (ServerSource)
30         {
31                 if (params[0] == "*")
32                 {
33                         FOREACH_MOD(I_OnDecodeMetaData,OnDecodeMetaData(NULL,params[1],params[2]));
34                 }
35                 else if (*(params[0].c_str()) == '#')
36                 {
37                         Channel* c = ServerInstance->FindChan(params[0]);
38                         if (c)
39                         {
40                                 if (item)
41                                         item->unserialize(FORMAT_NETWORK, c, params[2]);
42                                 FOREACH_MOD(I_OnDecodeMetaData,OnDecodeMetaData(c,params[1],params[2]));
43                         }
44                 }
45                 else if (*(params[0].c_str()) != '#')
46                 {
47                         User* u = ServerInstance->FindNick(params[0]);
48                         if (u)
49                         {
50                                 if (item)
51                                         item->unserialize(FORMAT_NETWORK, u, params[2]);
52                                 FOREACH_MOD(I_OnDecodeMetaData,OnDecodeMetaData(u,params[1],params[2]));
53                         }
54                 }
55         }
56
57         params[2] = ":" + params[2];
58         Utils->DoOneToAllButSender(prefix,"METADATA",params,prefix);
59         return true;
60 }
61