Changeset 414:873cd91b02be
- Timestamp:
- 06/21/2010 01:08:00 PM (20 months ago)
- Author:
- Sidgyck <sidgyck@…>
- Branch:
- default
- Children:
- 415:c17256e1dc79, 418:db5fa97c4e4c
- Message:
-
[NEW]: !muc seenjid[ex] <jid>
- Location:
- src/plugins/muc
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r400
|
r414
|
|
| 158 | 158 | } |
| 159 | 159 | |
| 160 | | QString Conference::seen(const QString&n, bool ext) |
| 161 | | { |
| 162 | | Nick* nick=myNicks.byName(n); |
| 163 | | // int cnt=0; |
| | 160 | QString Conference::seen(const QString& n, bool ext, bool byjid) |
| | 161 | { |
| | 162 | Nick *nick = (byjid) ? myNicks.byJid(n): myNicks.byName(n); |
| 164 | 163 | if (nick) |
| 165 | 164 | { |
| 166 | | return QString("\"%1\" is already in room (Joined %2 ago)").arg(n) |
| | 165 | return QString("\"%1\" is already in room (Joined %2 ago)").arg(nick->nick()) |
| 167 | 166 | .arg(secsToString(nick->joined().secsTo(QDateTime::currentDateTime()))); |
| 168 | 167 | } |
| 169 | | QSqlQuery query=DataStorage::instance() |
| 170 | | ->prepareQuery("SELECT jid FROM conference_nicks WHERE conference_id=? AND nick=? ORDER BY lastaction DESC LIMIT 1"); |
| 171 | | query.addBindValue(myId); |
| 172 | | query.addBindValue(n); |
| | 168 | |
| | 169 | QSqlQuery query; |
| | 170 | if (byjid) |
| | 171 | { |
| | 172 | query=DataStorage::instance() |
| | 173 | ->prepareQuery("SELECT id from conference_jids WHERE conference_id=? AND jid=?"); |
| | 174 | query.addBindValue(myId); |
| | 175 | query.addBindValue(n); |
| | 176 | } |
| | 177 | else |
| | 178 | { |
| | 179 | query=DataStorage::instance() |
| | 180 | ->prepareQuery("SELECT jid FROM conference_nicks WHERE conference_id=? AND nick=? ORDER BY lastaction DESC LIMIT 1"); |
| | 181 | query.addBindValue(myId); |
| | 182 | query.addBindValue(n); |
| | 183 | } |
| | 184 | |
| 173 | 185 | if (query.exec() && query.next()) |
| 174 | 186 | { |
| … |
… |
|
| 224 | 236 | } |
| 225 | 237 | QString reply; |
| 226 | | if (newNick == n) |
| | 238 | if (!byjid && newNick == n) |
| 227 | 239 | reply = QString("%1 %2 %3 ago").arg(n, token, secs); |
| 228 | 240 | else |
| … |
… |
|
| 230 | 242 | if (!reason.isEmpty()) |
| 231 | 243 | reply += QString(" (%1)").arg(reason); |
| 232 | | if (!version.isEmpty()) |
| | 244 | if (!version.isEmpty() && ext) |
| 233 | 245 | reply += QString(", Client: %1").arg(version); |
| 234 | 246 | return reply; |
-
|
r400
|
r414
|
|
| 41 | 41 | AList* acommand() { return myCommand; }; |
| 42 | 42 | QStringList* alistTraceList() { return alistTraceList_; } |
| 43 | | |
| 44 | | QString seen(const QString& nick, bool ext = false); |
| | 43 | |
| | 44 | QString seen(const QString& nick, bool ext = false, bool byjid = false); |
| 45 | 45 | QString clientStat(); |
| 46 | 46 | void setNick(const QString& name); |
-
|
r413
|
r414
|
|
| 34 | 34 | { |
| 35 | 35 | commands << "WHEREAMI" << "NICK" << "IDLE" << "KNOWN" << "JOIN" << "LEAVE" |
| 36 | | << "KICK" << "VISITOR" << "PARTICIPANT" << "MODERATOR" << "BAN" |
| 37 | | << "BANJID" << "UNBAN" << "NONE" << "MEMBER" << "ADMIN" << "OWNER"; |
| | 36 | << "KICK" << "VISITOR" << "PARTICIPANT" << "MODERATOR" << "BAN" |
| | 37 | << "BANJID" << "UNBAN" << "NONE" << "MEMBER" << "ADMIN" << "OWNER"; |
| 38 | 38 | commands << "ABAN" << "AKICK" << "AVISITOR" << "ACMD" << "AMODERATOR" << "APARTICIPANT" << "AFIND" |
| 39 | | << "ATRACE" << "SEEN" << "SEENEX" << "CLIENTS" << "SETNICK" << "CHECKVCARD" << "ROLE" << "VERSION"; |
| | 39 | << "ATRACE" << "SEEN" << "SEENEX" << "SEENJID" << "CLIENTS" << "SETNICK" << "CHECKVCARD" << "ROLE" << "VERSION"; |
| 40 | 40 | commands << "HERE" << "STATUS" << "AGE" << "AGESTAT"; |
| 41 | 41 | |
| … |
… |
|
| 880 | 880 | } |
| 881 | 881 | |
| 882 | | if (cmd=="SEEN" || cmd=="SEENEX") |
| 883 | | { |
| 884 | | if( arg.isEmpty() ) { |
| 885 | | Nick *n = getNick(s); |
| 886 | | if(!n) return true; |
| 887 | | reply(s, conf->seen(n->nick(), "SEENEX" == cmd)); |
| 888 | | return true; |
| 889 | | } |
| 890 | | reply(s, conf->seen(arg, "SEENEX" == cmd)); |
| | 882 | if (cmd=="SEEN" || cmd=="SEENEX" || cmd=="SEENJID" || cmd=="SEENJIDEX") |
| | 883 | { |
| | 884 | if (arg.isEmpty()) |
| | 885 | { |
| | 886 | if (cmd.startsWith("SEENJID")) |
| | 887 | { |
| | 888 | reply(s, "!muc seenjid[ex] <jid>"); |
| | 889 | return true; |
| | 890 | } |
| | 891 | Nick *n = getNick(s); |
| | 892 | if (!n) |
| | 893 | return true; |
| | 894 | reply(s, conf->seen(n->nick(), cmd.endsWith("EX"), false)); |
| | 895 | return true; |
| | 896 | } |
| | 897 | reply(s, conf->seen(arg, cmd.endsWith("EX"), cmd.startsWith("SEENJID"))); |
| 891 | 898 | return true; |
| 892 | 899 | } |
-
|
r400
|
r414
|
|
| 11 | 11 | // |
| 12 | 12 | #include "nicklist.h" |
| 13 | | |
| 14 | 13 | #include <QtDebug> |
| 15 | 14 | |
| … |
… |
|
| 17 | 16 | { |
| 18 | 17 | } |
| 19 | | |
| 20 | 18 | |
| 21 | 19 | NickList::~NickList() |
| … |
… |
|
| 58 | 56 | } |
| 59 | 57 | |
| | 58 | Nick* NickList::byJid(const QString& j) const |
| | 59 | { |
| | 60 | int cnt=count(); |
| | 61 | Jid* jid; |
| | 62 | for (int i = 0; i < cnt; i++) |
| | 63 | { |
| | 64 | jid = value(i)->jid(); |
| | 65 | if (j.toLower() == jid->jid().toLower()) |
| | 66 | return value(i); |
| | 67 | } |
| | 68 | return 0; |
| | 69 | } |
| | 70 | |
| 60 | 71 | void NickList::remove(Nick* nick) |
| 61 | 72 | { |
-
|
r400
|
r414
|
|
| 3 | 3 | |
| 4 | 4 | #include "nick.h" |
| 5 | | |
| | 5 | #include "jid.h" |
| 6 | 6 | #include <QList> |
| 7 | | |
| 8 | 7 | /** |
| 9 | 8 | @author Dmitry Nezhevenko <dion@inhex.net> |
| 10 | 9 | */ |
| | 10 | class Jid; |
| | 11 | |
| 11 | 12 | class NickList: public QList<Nick*> |
| 12 | 13 | { |
| … |
… |
|
| 19 | 20 | void remove(Nick* nick); |
| 20 | 21 | Nick *byName(const QString&) const; |
| | 22 | Nick *byJid(const QString&) const; |
| 21 | 23 | }; |
| 22 | 24 | |