]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_randquote.cpp
Fix the cloaking module on C++98 compilers.
[user/henk/code/inspircd.git] / src / modules / m_randquote.cpp
index 62d3022cffa38b6bb7ba484cb2270e9973856694..0148e48d6c0e780c9c1d0bf76e46f964bba5faae 100644 (file)
@@ -1,11 +1,12 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
+ *   Copyright (C) 2013, 2020 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2012, 2019 Robby <robby@chatbelgie.be>
  *   Copyright (C) 2010 Daniel De Graaf <danieldg@inspircd.org>
- *   Copyright (C) 2007-2008 Robin Burchell <robin+git@viroteck.net>
+ *   Copyright (C) 2009 Uli Schlachter <psychon@inspircd.org>
  *   Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
- *   Copyright (C) 2003, 2006 Craig Edwards <craigedwards@brainbox.cc>
- *   Copyright (C) 2005 Craig McLure <craig@chatspike.net>
+ *   Copyright (C) 2003, 2006-2008, 2010 Craig Edwards <brain@inspircd.org>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
  * redistribute it and/or modify it under the terms of the GNU General Public
  */
 
 
-/* $ModDesc: Provides random quotes on connect. */
-
 #include "inspircd.h"
 
-static FileReader *quotes = NULL;
-
-std::string prefix;
-std::string suffix;
-
-/** Handle /RANDQUOTE
- */
-class CommandRandquote : public Command
-{
- public:
-       CommandRandquote(Module* Creator) : Command(Creator,"RANDQUOTE", 0)
-       {
-       }
-
-       CmdResult Handle (const std::vector<std::string>& parameters, User *user)
-       {
-               std::string str;
-               int fsize;
-
-               fsize = quotes->FileSize();
-               str = quotes->GetLine(ServerInstance->GenRandomInt(fsize));
-               user->WriteNotice(prefix + str + suffix);
-
-               return CMD_SUCCESS;
-       }
-};
-
 class ModuleRandQuote : public Module
 {
-       CommandRandquote cmd;
- public:
-       ModuleRandQuote()
-               : cmd(this)
-       {
-       }
+ private:
+       std::string prefix;
+       std::string suffix;
+       std::vector<std::string> quotes;
 
+ public:
        void init() CXX11_OVERRIDE
        {
                ConfigTag* conf = ServerInstance->Config->ConfValue("randquote");
-
-               std::string q_file = conf->getString("file","quotes");
                prefix = conf->getString("prefix");
                suffix = conf->getString("suffix");
-
-               quotes = new FileReader(q_file);
-               if (!quotes->Exists())
-               {
-                       throw ModuleException("m_randquote: QuoteFile not Found!! Please check your config - module will not function.");
-               }
-               ServerInstance->Modules->AddService(cmd);
-               Implementation eventlist[] = { I_OnUserConnect };
-               ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
+               FileReader reader(conf->getString("file", "quotes", 1));
+               quotes = reader.GetVector();
        }
 
-       ~ModuleRandQuote()
+       void OnUserConnect(LocalUser* user) CXX11_OVERRIDE
        {
-               delete quotes;
+               if (!quotes.empty())
+               {
+                       unsigned long random = ServerInstance->GenRandomInt(quotes.size());
+                       user->WriteNotice(prefix + quotes[random] + suffix);
+               }
        }
 
        Version GetVersion() CXX11_OVERRIDE
        {
-               return Version("Provides random quotes on connect.",VF_VENDOR);
-       }
-
-       void OnUserConnect(LocalUser* user) CXX11_OVERRIDE
-       {
-               cmd.Handle(std::vector<std::string>(), user);
+               return Version("Allows random quotes to be sent to users when they connect to the server.", VF_VENDOR);
        }
 };