Changeset 279:57864e38a85b

Show
Ignore:
Timestamp:
06/15/2008 03:17:34 PM (4 years ago)
Author:
Dmitry Nezhevenko <dion@…>
Branch:
default
Message:

/global: Global aliases that can be accessed without "!" character

Location:
src/plugins/alias
Files:
2 added
4 modified

Legend:

Unmodified
Added
Removed
  • src/plugins/alias/CMakeLists.txt

    r0 r279  
    66 
    77set (plugin_HDR 
     8        alias.h 
    89        aliaslist.h 
    910) 
    1011 
    1112set (plugin_SRC 
     13        alias.cpp 
    1214        aliaslist.cpp 
    1315        aliasplugin.cpp 
  • src/plugins/alias/aliaslist.cpp

    r260 r279  
    1010} 
    1111 
    12 int AliasList::append(const StorageKey& storage, const QString& name, const QString& value) 
     12int AliasList::append(const StorageKey& storage, const Alias& alias) 
    1313{ 
    1414        if (!storage.isValid()) 
    1515                return 0; 
    1616        QSqlQuery query=DataStorage::instance() 
    17                 ->prepareQuery("INSERT INTO aliases(plugin, storage, name, value) VALUES (?, ?, ?, ?)"); 
     17                ->prepareQuery("INSERT INTO aliases(plugin, storage, global, name, value) VALUES (?, ?, ?, ?, ?)"); 
    1818        query.addBindValue(storage.plugin()); 
    1919        query.addBindValue(storage.storage()); 
    20         query.addBindValue(name); 
    21         query.addBindValue(value); 
     20        query.addBindValue(alias.isGlobal()); 
     21        query.addBindValue(alias.name()); 
     22        query.addBindValue(alias.value()); 
    2223        if (query.exec()) 
    2324                return 1; 
    2425        query.clear(); 
    25         query.prepare("UPDATE aliases SET value=? WHERE plugin=? AND storage=? AND name=?"); 
    26         query.addBindValue(value); 
     26        query.prepare("UPDATE aliases SET global=?, value=? WHERE plugin=? AND storage=? AND name=?"); 
     27        query.addBindValue(alias.isGlobal()); 
     28        query.addBindValue(alias.value()); 
    2729        query.addBindValue(storage.plugin()); 
    2830        query.addBindValue(storage.storage()); 
    29         query.addBindValue(name); 
     31        query.addBindValue(alias.name()); 
    3032        if (query.exec()) 
    3133                return 2; 
     
    3335} 
    3436 
    35 QMap<QString,QString> AliasList::getAll(const StorageKey& storage) 
     37QMap<QString,Alias> AliasList::getAll(const StorageKey& storage) 
    3638{ 
    37         QMap<QString,QString> map; 
     39        QMap<QString,Alias> map; 
    3840        if (!storage.isValid()) 
    3941                return map; 
    4042        QSqlQuery query=DataStorage::instance() 
    41                 ->prepareQuery("SELECT name, value FROM aliases WHERE plugin=? AND storage=?"); 
     43                ->prepareQuery("SELECT global, name, value FROM aliases WHERE plugin=? AND storage=?"); 
    4244        query.addBindValue(storage.plugin()); 
    4345        query.addBindValue(storage.storage()); 
    4446        query.exec(); 
    4547        while (query.next()) 
    46                 map[query.value(0).toString()]=query.value(1).toString(); 
     48        { 
     49                Alias alias(query.value(1).toString(),query.value(2).toString()); 
     50                alias.setGlobal(query.value(0).toBool()); 
     51                map[alias.name()]=alias; 
     52        } 
    4753        return map; 
    4854} 
    4955 
    50 QString AliasList::get(const StorageKey& storage, const QString&name) 
     56Alias AliasList::get(const StorageKey& storage, const QString& name) 
    5157{ 
    5258        if (!storage.isValid()) 
    53                 return QString::null; 
     59                return Alias(); 
    5460        QSqlQuery query=DataStorage::instance() 
    55                 ->prepareQuery("SELECT value FROM aliases WHERE plugin=? AND storage=? AND name=?"); 
     61                ->prepareQuery("SELECT global, value FROM aliases WHERE plugin=? AND storage=? AND name=?"); 
    5662        query.addBindValue(storage.plugin()); 
    5763        query.addBindValue(storage.storage()); 
     
    5965        query.exec(); 
    6066        if (!query.next()) 
    61                 return QString::null; 
    62         return query.value(0).toString(); 
     67                return Alias(); 
     68        Alias alias(name, query.value(1).toString()); 
     69        alias.setGlobal(query.value(0).toBool()); 
     70        return alias; 
    6371} 
    6472 
  • src/plugins/alias/aliaslist.h

    r260 r279  
    22#define ALIAS_LIST 
    33 
     4#include "alias.h" 
    45#include "base/config/storagekey.h" 
    56 
     
    1415        AliasList(); 
    1516        // 0 - err, 1 - added, 2 - updated 
    16         int append(const StorageKey& storage, const QString& name, const QString& value); 
    17         QMap<QString,QString> getAll(const StorageKey& storage); 
    18         QString get(const StorageKey& storage, const QString&name); 
     17        int append(const StorageKey& storage, const Alias& alias); 
     18        QMap<QString,Alias> getAll(const StorageKey& storage); 
     19        Alias get(const StorageKey& storage, const QString&name); 
    1920        void clear(const StorageKey& storage); 
    2021        int count(const StorageKey& storage); 
  • src/plugins/alias/aliasplugin.cpp

    r233 r279  
    3232        if (s->hasAttribute("glooxbot_alias")) 
    3333                return false; 
    34         bool res=MessageParser(s,getMyNick(s)).isForMe(); 
    35         return res; 
     34        return true; 
    3635} 
    3736 
     
    4443                return parseCommands(s); 
    4544 
    46         QString res=aliases.get(bot()->getStorage(s), cmd); 
     45        Alias alias=aliases.get(bot()->getStorage(s), cmd); 
     46         
     47        if (!parser.isForMe() && !alias.isGlobal()) 
     48        { 
     49                myShouldIgnoreError=1; 
     50                return false; 
     51        } 
     52         
     53        QString res=alias.value(); 
    4754        QString firstArg=res.section(' ',0,0).toUpper(); 
    4855 
     
    115122                { 
    116123                        QString res; 
    117                         QMap<QString, QString> all=aliases.getAll(bot()->getStorage(s)); 
     124                        QMap<QString, Alias> all=aliases.getAll(bot()->getStorage(s)); 
    118125                        int cnt=all.count(); 
    119126                        if (!cnt) 
     
    123130                        } 
    124131                        for (int i=0; i<cnt; i++) 
    125                                 res+=QString("\n%1) %2=%3").arg(i+1).arg(all.keys()[i].toLower()).arg(all.values()[i]); 
     132                                res+=QString("\n%1) %2%3=%4").arg(i+1).arg(all.values()[i].isGlobal() ? "[GLOBAL] ": "") 
     133                                        .arg(all.keys()[i].toLower()).arg(all.values()[i].value()); 
    126134                        reply(s, QString("Aliases:%1").arg(res)); 
    127135                        return true; 
     
    129137                else 
    130138                { 
    131                         QString value=aliases.get(bot()->getStorage(s),aliasName.toUpper()); 
     139                        Alias alias=aliases.get(bot()->getStorage(s),aliasName.toUpper()); 
     140                        QString value=alias.value(); 
    132141                        if (!value.isNull()) 
    133                                 reply(s, QString("Alias: %1=%2").arg(aliasName).arg(value)); 
     142                                reply(s, QString("Alias: %1%2=%3").arg(alias.isGlobal() ? "[GLOBAL] " : "") 
     143                                                .arg(aliasName).arg(value)); 
    134144                        else 
    135145                                reply(s, QString("No such alias: %1").arg(aliasName)); 
     
    154164        if (cmd=="ADD") 
    155165        { 
     166                bool global=false; 
     167                const QString globalStr("/global "); 
     168                if (value.toLower().startsWith(globalStr)) 
     169                { 
     170                        global=true; 
     171                        value=value.remove(0,globalStr.length()).trimmed(); 
     172                } 
    156173                if (name.isEmpty() || value.isEmpty()) 
    157174                { 
     
    161178                        return true; 
    162179                } 
    163                 int res=aliases.append(bot()->getStorage(s), name, value); 
     180                Alias alias(name, value); 
     181                alias.setGlobal(global); 
     182                int res=aliases.append(bot()->getStorage(s), alias); 
    164183                switch (res) 
    165184                {