From c6f8a170e642b5b1a28bd85857f715846bbadbb4 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 27 Mar 2009 01:37:37 +0100 Subject: userInfo() im Mysql-Backend implementiert; UserInfo-Request hinzugefuegt --- src/modules/UserBackendMysql.cpp | 50 ++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 7 deletions(-) (limited to 'src/modules/UserBackendMysql.cpp') diff --git a/src/modules/UserBackendMysql.cpp b/src/modules/UserBackendMysql.cpp index 0b028fb..db3c32b 100644 --- a/src/modules/UserBackendMysql.cpp +++ b/src/modules/UserBackendMysql.cpp @@ -17,14 +17,17 @@ * with this program. If not, see . */ +#include + #include "UserBackendMysql.h" #include #include #include -#include +#include -#include +#include +#include #define init UserBackendMysql_LTX_init #define deinit UserBackendMysql_LTX_deinit @@ -61,7 +64,7 @@ bool UserBackendMysql::handleConfigEntry(const Common::ConfigEntry &entry, bool char *endptr; long val; - val = std::strtol(entry[1][0].c_str(), &endptr, 10); + val = strtol(entry[1][0].c_str(), &endptr, 10); if(endptr != 0 || val < 0 || val > 65535) Common::Logger::log(Common::Logger::WARNING, "UserBackendMysql: Invalid port"); @@ -143,9 +146,9 @@ bool UserBackendMysql::userList(const sigc::slot users; while(MYSQL_ROW row = mysql_fetch_row(result)) { - Common::UserInfo user(std::strtoul(row[0], 0, 10), row[2]); + Common::UserInfo user(strtoul(row[0], 0, 10), row[2]); - user.setGid(std::strtoul(row[1], 0, 10)); + user.setGid(strtoul(row[1], 0, 10)); user.setFullName(row[3]); users.insert(std::make_pair(user.getUid(), user)); @@ -157,10 +160,43 @@ bool UserBackendMysql::userList(const sigc::slot &callback) { - return false; + mysql_ping(mysql); + + std::string query = queryUserById; + + std::ostringstream tmp; + tmp << '"'; + tmp << uid; + tmp << '"'; + + pcrecpp::RE("\\{ID\\}").GlobalReplace(tmp.str(), &query); + + mysql_real_query(mysql, query.c_str(), query.length()); + MYSQL_RES *result = mysql_use_result(mysql); + + if(mysql_num_fields(result) < 4) + return true; // TODO Error + + MYSQL_ROW row = mysql_fetch_row(result); + + if(row) { + Common::UserInfo user(strtoul(row[0], 0, 10), row[2]); + + user.setGid(strtoul(row[1], 0, 10)); + user.setFullName(row[3]); + + Common::ActionManager::get()->add(sigc::bind(callback, user)); + + while((row = mysql_fetch_row(result)) != 0) {} + } + else { + Common::ActionManager::get()->add(sigc::bind(callback, Common::UserInfo())); + } + + return true; } -bool UserBackendMysql::password(unsigned long uid, const std::string &password, const sigc::slot &callback) { +bool UserBackendMysql::password(unsigned long uid _UNUSED_PARAMETER_, const std::string &password _UNUSED_PARAMETER_, const sigc::slot &callback _UNUSED_PARAMETER_) { return false; } -- cgit v1.2.3