diff --git a/core/pluginmsg.h b/core/pluginmsg.h index 8daf267..e836eb6 100755 --- a/core/pluginmsg.h +++ b/core/pluginmsg.h @@ -161,6 +161,21 @@ // from the session file #define WINIX_USER_LOGGED 30600 +// preparing a current user to logout +// send from 'logout' winix function +// !! IMPROVE ME this message can be sent when winix is making the shutdown +// (for sessions which are not mark as 'remember me') +// and when the SessionManager deletes a session (from the special thread) +#define WINIX_PREPARE_USER_LOGGED_OUT 30610 + +// a user has been logged out +// send from 'logout' winix function +// in l1 you have the old user_id +// !! IMPROVE ME this message can be sent when winix is making the shutdown +// (for sessions which are not mark as 'remember me') +// and when the SessionManager deletes a session (from the special thread) +#define WINIX_USER_LOGGED_OUT 30620 + // here you add your own html templates // call TemplatesFunctions::patterns.Add(L"file_name.html") diff --git a/db/dbbase.cpp b/db/dbbase.cpp index e9ab6b7..af4bbfd 100755 --- a/db/dbbase.cpp +++ b/db/dbbase.cpp @@ -88,10 +88,6 @@ return r; } -PGresult * DbBase::AssertQuery(const std::wstring & q) -{ - return AssertQuery(q.c_str()); -} PGresult * DbBase::AssertQuery(const DbTextStream & query) @@ -100,6 +96,23 @@ PGresult * DbBase::AssertQuery(const DbTextStream & query) } + +PGresult * DbBase::AssertQuery(const char * q, ExecStatusType t) +{ + PGresult * r = AssertQuery(q); + AssertResult(r, t); + +return r; +} + + +PGresult * DbBase::AssertQuery(const DbTextStream & query, ExecStatusType t) +{ + return AssertQuery(query.CStr(), t); +} + + + void DbBase::AssertResult(PGresult * r, ExecStatusType t) { if( PQresultStatus(r) != t ) diff --git a/db/dbbase.h b/db/dbbase.h index ebc3bda..49de086 100755 --- a/db/dbbase.h +++ b/db/dbbase.h @@ -32,8 +32,9 @@ public: void LogQueries(bool log_q); PGresult * AssertQuery(const char * query); - PGresult * AssertQuery(const std::wstring & query); PGresult * AssertQuery(const DbTextStream & query); + PGresult * AssertQuery(const char * q, ExecStatusType t); + PGresult * AssertQuery(const DbTextStream & query, ExecStatusType t); void AssertResult(PGresult * r, ExecStatusType t); static int AssertColumn(PGresult * r, const char * column_name); diff --git a/functions/logout.cpp b/functions/logout.cpp index 02a77f0..8f999f7 100755 --- a/functions/logout.cpp +++ b/functions/logout.cpp @@ -2,13 +2,13 @@ * This file is a part of Winix * and is not publicly distributed * - * Copyright (c) 2008-2010, Tomasz Sowa + * Copyright (c) 2008-2012, Tomasz Sowa * All rights reserved. * */ #include "logout.h" - +#include "core/plugin.h" @@ -22,11 +22,26 @@ Logout::Logout() } +void Logout::LogoutCurrentUser() +{ + if( cur->session && cur->session->puser ) + { + long user_id = cur->session->puser->id; + plugin.Call(WINIX_PREPARE_USER_LOGGED_OUT); + + system->users.LogoutCurrentUser(); + plugin.Call(WINIX_USER_LOGGED_OUT, user_id); + } +} + void Logout::MakeGet() { - system->users.LogoutCurrentUser(); - system->RedirectToLastItem(); + if( cur->session->puser ) + { + LogoutCurrentUser(); + system->RedirectToLastItem(); + } } diff --git a/functions/logout.h b/functions/logout.h index 7a84e9c..ab01e99 100755 --- a/functions/logout.h +++ b/functions/logout.h @@ -2,7 +2,7 @@ * This file is a part of Winix * and is not publicly distributed * - * Copyright (c) 2010, Tomasz Sowa + * Copyright (c) 2010-2012, Tomasz Sowa * All rights reserved. * */ @@ -23,7 +23,10 @@ class Logout : public FunctionBase public: Logout(); + void MakeGet(); + void LogoutCurrentUser(); + private: