From 13ddd325f911db4ba6ae4207eb76c6c0c08fd755 Mon Sep 17 00:00:00 2001 From: psychon Date: Mon, 26 May 2008 15:02:09 +0000 Subject: [PATCH] Webadmin: Don't reset all channel settings submitting a user page In r1058 the behaviour of CUser::Clone() was changed. It now also handles the channel settings. This change breaks webadmin, because it doesn't properly set up the channels it feeds to CUser::Clone() This commit 'fixes' this by adding an extra parameter to CUser::Clone() which makes it revert to the old behaviour. Webadmin uses this parameter. git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1074 726aef4b-f618-498e-8847-2d620e286838 --- User.cpp | 5 +++-- User.h | 2 +- modules/webadmin.cpp | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/User.cpp b/User.cpp index 32be4c48..92b46f21 100644 --- a/User.cpp +++ b/User.cpp @@ -251,7 +251,7 @@ void CUser::UserDisconnected(CClient* pClient) { } } -bool CUser::Clone(const CUser& User, CString& sErrorRet) { +bool CUser::Clone(const CUser& User, CString& sErrorRet, bool bCloneChans) { unsigned int a = 0; sErrorRet.clear(); @@ -392,7 +392,8 @@ bool CUser::Clone(const CUser& User, CString& sErrorRet) { if (!pNewChan) { pChan->SetInConfig(false); } else { - pChan->Clone(*pNewChan); + if (bCloneChans) + pChan->Clone(*pNewChan); } } diff --git a/User.h b/User.h index 3dbad504..02dca00a 100644 --- a/User.h +++ b/User.h @@ -106,7 +106,7 @@ public: bool GetFile(const CString& sRemoteNick, const CString& sRemoteIP, unsigned short uRemotePort, const CString& sFileName, unsigned long uFileSize, const CString& sModuleName = ""); bool ResumeFile(const CString& sRemoteNick, unsigned short uPort, unsigned long uFileSize); CString GetCurNick() const; - bool Clone(const CUser& User, CString& sErrorRet); + bool Clone(const CUser& User, CString& sErrorRet, bool bCloneChans = true); void BounceAllClients(); void AddBytesRead(unsigned long long u) { m_uBytesRead += u; } diff --git a/modules/webadmin.cpp b/modules/webadmin.cpp index 98cf55a2..2ce75267 100644 --- a/modules/webadmin.cpp +++ b/modules/webadmin.cpp @@ -993,7 +993,7 @@ bool CWebAdminSock::UserPage(CString& sPageRet, CUser* pUser) { } } else { // Edit User Submission - if (!pUser->Clone(*pNewUser, sErr)) { + if (!pUser->Clone(*pNewUser, sErr, false)) { delete pNewUser; GetErrorPage(sPageRet, "Invalid Submission [" + sErr + "]"); return true;