diff options
Diffstat (limited to 'Swiftob/Users.cpp')
-rw-r--r-- | Swiftob/Users.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Swiftob/Users.cpp b/Swiftob/Users.cpp new file mode 100644 index 0000000..55ba4eb --- /dev/null +++ b/Swiftob/Users.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2011 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include "Swiftob/Users.h" + +#include <iostream> + +#include <Swiften/Client/Client.h> + +#include "Swiftob/MUCs.h" + +Users::Users(Client* client, MUCs* mucs) { + client_ = client; + mucs_ = mucs; +} + +/* TODO: Store in roster */ +void Users::clearAll() { + users_.clear(); +} + +void Users::addUser(const User& user) { + users_.push_back(user); +} + +Users::User::Role Users::getRoleForSender(Message::ref message) { + JID jid = message->getFrom(); + MUC::ref muc = mucs_->getMUC(message->getFrom().toBare()); + if (muc && muc->hasOccupant(message->getFrom().getResource())) { + MUCOccupant occupant = muc->getOccupant(message->getFrom().getResource()); + if (occupant.getRealJID()) { + jid = occupant.getRealJID().get(); + } + } + foreach (User user, users_) { + if (user.getJID().equals(jid.toBare(), JID::WithoutResource)) { + return user.getRole(); + } + } + return User::Unknown; +} + |