|
What this is
Other links
The source code
/*
* $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/admin/MemberWebHandler.java,v 1.75 2005/01/26 18:46:51 minhnn Exp $
* $Author: minhnn $
* $Revision: 1.75 $
* $Date: 2005/01/26 18:46:51 $
*
* ====================================================================
*
* Copyright (C) 2002-2005 by MyVietnam.net
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* All copyright notices regarding mvnForum MUST remain intact
* in the scripts and in the outputted HTML.
* The "powered by" text/logo with a link back to
* http://www.mvnForum.com and http://www.MyVietnam.net in the
* footer of the pages MUST remain visible when the pages
* are viewed on the internet or intranet.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Support can be obtained from support forums at:
* http://www.mvnForum.com/mvnforum/index
*
* Correspondence and Marketing Questions can be sent to:
* info@MyVietnam.net
*
* @author: Minh Nguyen minhnn@MyVietnam.net
* @author: Mai Nguyen mai.nh@MyVietnam.net
* @author: Igor Manic imanic@users.sourceforge.net
*/
package com.mvnforum.admin;
import java.io.File;
import java.io.IOException;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.*;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mvnforum.*;
import com.mvnforum.auth.*;
import com.mvnforum.common.*;
import com.mvnforum.db.*;
import com.mvnforum.search.member.MemberIndexer;
import com.mvnforum.search.member.MemberSearchQuery;
import net.myvietnam.mvncore.exception.*;
import net.myvietnam.mvncore.interceptor.InterceptorService;
import net.myvietnam.mvncore.security.Encoder;
import net.myvietnam.mvncore.util.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
class MemberWebHandler {
private static Log log = LogFactory.getLog(MemberWebHandler.class);
private OnlineUserManager onlineUserManager = OnlineUserManager.getInstance();
MemberWebHandler() {
}
void processAdd(HttpServletRequest request)
throws BadInputException, ObjectNotFoundException, CreateException, DatabaseException, DuplicateKeyException,
ForeignKeyNotFoundException, AuthenticationException, AssertionException, InterceptorException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
Locale locale = I18nUtil.getLocaleInRequest(request);
Timestamp now = DateUtil.getCurrentGMTTimestamp();
String memberName = ParamUtil.getParameterSafe(request, "MemberName", true);// check good name
/** @todo move to a name filter */
if ( memberName.equalsIgnoreCase(MVNForumConfig.getDefaultGuestName()) ||
memberName.equalsIgnoreCase("Guest") ||
memberName.equalsIgnoreCase("Administrator") ||
memberName.equalsIgnoreCase("Moderator") ) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_register_with_reserved_name", new Object[] {memberName});
throw new BadInputException(localizedMessage);
//throw new BadInputException("Cannot register member with a reserved name : " + memberName);
}
StringUtil.checkGoodName(memberName);
InterceptorService.getInstance().validateLoginID(memberName);
if (memberName.length() > MVNForumGlobal.MAX_MEMBER_LOGIN_LENGTH) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.member_name_too_long");
throw new BadInputException(localizedMessage);
//throw new BadInputException("MemberName cannot be longer than 30 characters.");
}
String memberPassword1 = ParamUtil.getParameterPassword(request, "MemberMatkhau", 3, 0);
String memberPassword2 = ParamUtil.getParameterPassword(request, "MemberMatkhauConfirm", 3, 0);
if (!memberPassword1.equals(memberPassword2)) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.confirmed_password_is_not_match");
throw new BadInputException(localizedMessage);
//throw new BadInputException("Password and confirmed password are not the same, please try again.");
}
String memberPassword = Encoder.getMD5_Base64(memberPassword1);
String memberEmail = ParamUtil.getParameterEmail(request, "MemberEmail");
String memberEmailConfirm = ParamUtil.getParameterEmail(request, "MemberEmailConfirm");
if (!memberEmail.equals(memberEmailConfirm)) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.confirmed_email_is_not_match");
throw new BadInputException(localizedMessage);
//throw new BadInputException("Email and confirmed email are not the same, please try again.");
}
if (memberEmail.length() > MVNForumGlobal.MAX_MEMBER_EMAIL_LENGTH) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.member_email_too_long");
throw new BadInputException(localizedMessage);
//throw new BadInputException("MemberEmail cannot be longer than 60 characters.");
}
String memberFirstEmail = memberEmail;
InterceptorService.getInstance().validateMail(memberFirstEmail);
int memberEmailVisible = MemberBean.MEMBER_EMAIL_INVISIBLE;
int memberNameVisible = MemberBean.MEMBER_NAME_VISIBLE;
String memberFirstIP = request.getRemoteAddr();
String memberLastIP = memberFirstIP;
int memberOption = 0;//@todo review and support it later
int memberStatus = 0;// @todo review and support it later, ex: should it be active or not?
String memberActivateCode = "";// @todo review and support it later
int memberMessageOption = 0;// @todo review and support it later
int memberPostsPerPage = 10; //default for all preregistered users
Date memberBirthday = new java.sql.Date(now.getTime());
Timestamp memberCreationDate= now;
Timestamp memberModifiedDate= now;
Timestamp memberExpireDate = memberCreationDate;// equal Creation Date mean no expiration
if (MVNForumConfig.getEnableCompany()) {
memberExpireDate = DateUtil.getCurrentGMTTimestampExpiredDay(MVNForumConfig.getExpireDateTutor());
}
DAOFactory.getMemberDAO().create(memberName, memberPassword, memberFirstEmail,
memberEmail, memberEmailVisible, memberNameVisible,
memberFirstIP, memberLastIP, 0/*memberViewCount*/,
0/*memberPostCount*/, memberCreationDate, memberModifiedDate,memberExpireDate,
now/*memberLastLogon*/, memberOption, memberStatus,
memberActivateCode, ""/*memberTempPassword*/, 0/*memberMessageCount*/,
memberMessageOption, memberPostsPerPage, 0/*memberWarnCount*/,
0/*memberVoteCount*/, 0/*memberVoteTotalStars*/, 0/*memberRewardPoints*/,
""/*memberTitle*/, 0/*memberTimeZone*/, ""/*memberSignature*/,
""/*memberAvatar*/, ""/*memberSkin*/, ""/*memberLanguage*/,
" "/*memberFirstname*/, " "/*memberLastname*/, 1/*memberGender*/,
memberBirthday, ""/*memberAddress*/, ""/*memberCity*/,
""/*memberState*/, ""/*memberCountry*/, ""/*memberPhone*/,
""/*memberMobile*/, ""/*memberFax*/, ""/*memberCareer*/,
""/*memberHomepage*/, ""/*memberYahoo*/, ""/*memberAol*/,
""/*memberIcq*/, ""/*memberMsn*/, ""/*memberCoolLink1*/,
""/*memberCoolLink2*/);
// Now, create 4 default folders for each member
int memberID = DAOFactory.getMemberDAO().getMemberIDFromMemberName(memberName);
int folderStatus = 0;
int folderOption = 0;
int folderType = 0;
DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_INBOX, memberID, 0/*order*/, folderStatus, folderOption, folderType, now, now);
DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_DRAFT, memberID, 1/*order*/, folderStatus, folderOption, folderType, now, now);
DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_SENT, memberID, 2/*order*/, folderStatus, folderOption, folderType, now, now);
DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_TRASH, memberID, 3/*order*/, folderStatus, folderOption, folderType, now, now);
// Add member to the lucene index
MemberBean memberBean = null;
try {
memberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
} catch(ObjectNotFoundException ex) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
MemberIndexer.scheduleAddMemberTask(memberBean);
// now, if require activation, then we will send mail
// Note that because after this page succeed,
// we redirect to usermanagement so not use mvnforum.mail.failed now
if (MVNForumConfig.getRequireActivation()) {
String serverName = ParamUtil.getServerPath();//ParamUtil.getServer2(request);
try {
SendMailUtil.sendActivationCodeEmail(memberID, serverName);
} catch (Exception ex) {
log.error("Cannot send mail after registration!", ex);
request.setAttribute("mvnforum.mail.failed", "Cannot send activation email after registration!");
//@todo: save the error message to displayed later
}
}
}
void processUpdateMemberStatus(HttpServletRequest request)
throws BadInputException, ObjectNotFoundException, DatabaseException {
// primary key column(s)
int memberID = ParamUtil.getParameterInt(request, "memberid");
// column(s) to update
int memberStatus= ParamUtil.getParameterInt(request, "status");
Locale locale = I18nUtil.getLocaleInRequest(request);
// now check if status is in the valid range
if ( memberStatus != MemberBean.MEMBER_STATUS_ENABLE
&& memberStatus != MemberBean.MEMBER_STATUS_DISABLE) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_update_member_status.unknown_status", new Object[] { new Integer(memberStatus)});
throw new BadInputException(localizedMessage);
//throw new BadInputException("Cannot update member's status to an unknown status = " + memberStatus);
}
// This code make sure Admin always has Enable status
if (memberID == MVNForumConstant.MEMBER_ID_OF_ADMIN) {
memberStatus = MemberBean.MEMBER_STATUS_ENABLE;
}
//IMPORTANT: Guest (id=MEMBER_ID_OF_GUEST) can be disabled by administrator.
try {
DAOFactory.getMemberDAO().updateStatus(memberID, // primary key
memberStatus);
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
}
void prepareEdit(HttpServletRequest request)
throws BadInputException, ObjectNotFoundException, DatabaseException,
AssertionException, AuthenticationException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
Locale locale = I18nUtil.getLocaleInRequest(request);
int memberID = ParamUtil.getParameterInt(request, "memberid");
MemberBean memberBean = null;
try {
// we must use getMember_forEditCurrentMember because we need more information on this member
memberBean = DAOFactory.getMemberDAO().getMember_forEditCurrentMember(memberID);
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
request.setAttribute("MemberBean", memberBean);
}
void processEdit(HttpServletRequest request, HttpServletResponse response)
throws BadInputException, ObjectNotFoundException, DatabaseException,
AssertionException, AuthenticationException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
MyUtil.saveVNTyperMode(request, response);
int memberID = ParamUtil.getParameterInt(request, "memberid");
Timestamp now = DateUtil.getCurrentGMTTimestamp();
// column(s) to update
int memberEmailVisible = ParamUtil.getParameterBoolean(request, "MemberEmailVisible")? MemberBean.MEMBER_EMAIL_VISIBLE : MemberBean.MEMBER_EMAIL_INVISIBLE;
int memberNameVisible = ParamUtil.getParameterBoolean(request, "MemberNameVisible") ? MemberBean.MEMBER_NAME_VISIBLE : MemberBean.MEMBER_NAME_INVISIBLE;
int memberOption = 0;//ParamUtil.getParameterInt(request, "MemberOption");
int memberStatus = ParamUtil.getParameterInt(request, "MemberStatus");
int memberMessageOption = 0;//ParamUtil.getParameterInt(request, "MemberMessageOption");
int memberPostsPerPage = ParamUtil.getParameterInt(request, "MemberPostsPerPage");
if (memberPostsPerPage < 5) {
memberPostsPerPage = 5;
}
int memberTimeZone = ParamUtil.getParameterTimeZone(request, "MemberTimeZone");
String memberSkin = ParamUtil.getParameterSafe(request, "MemberSkin", false);
String memberLanguage = ParamUtil.getParameterSafe(request, "MemberLanguage", false);
String memberFirstname = ParamUtil.getParameterSafe(request, "MemberFirstname", true);
String memberLastname = ParamUtil.getParameterSafe(request, "MemberLastname", true);
int memberGender = ParamUtil.getParameterBoolean(request, "MemberGender")? 1 : 0;
Date memberBirthday = ParamUtil.getParameterDate(request, "MemberBirthday");
String memberAddress = ParamUtil.getParameterSafe(request, "MemberAddress", false);
String memberCity = ParamUtil.getParameterSafe(request, "MemberCity", false);
String memberState = ParamUtil.getParameterSafe(request, "MemberState", false);
String memberCountry = ParamUtil.getParameterSafe(request, "MemberCountry", false);
String memberPhone = ParamUtil.getParameterSafe(request, "MemberPhone", false);
String memberMobile = ParamUtil.getParameterSafe(request, "MemberMobile", false);
String memberFax = ParamUtil.getParameterSafe(request, "MemberFax", false);
String memberCareer = ParamUtil.getParameterSafe(request, "MemberCareer", false);
String memberHomepage = ParamUtil.getParameterUrl(request, "MemberHomepage");
String memberYahoo = ParamUtil.getParameterSafe(request, "MemberYahoo", false);
String memberAol = ParamUtil.getParameterSafe(request, "MemberAol", false);
String memberIcq = ParamUtil.getParameterSafe(request, "MemberIcq", false);
String memberMsn = ParamUtil.getParameterSafe(request, "MemberMsn", false);
String memberCoolLink1 = ParamUtil.getParameterUrl(request, "MemberCoolLink1");
String memberCoolLink2 = ParamUtil.getParameterUrl(request, "MemberCoolLink2");
try {
DAOFactory.getMemberDAO().update(memberID, // primary key
memberEmailVisible, memberNameVisible, now/*memberModifiedDate*/,
memberOption, memberStatus, memberMessageOption,
memberPostsPerPage, memberTimeZone, memberSkin,
memberLanguage, memberFirstname, memberLastname,
memberGender, memberBirthday, memberAddress,
memberCity, memberState, memberCountry,
memberPhone, memberMobile, memberFax,
memberCareer, memberHomepage, memberYahoo,
memberAol, memberIcq, memberMsn,
memberCoolLink1, memberCoolLink2);
} catch(ObjectNotFoundException ex) {
Locale locale = I18nUtil.getLocaleInRequest(request);
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
MemberBean justEditedMemberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
MemberIndexer.scheduleUpdateMemberTask(justEditedMemberBean);
//request.setAttribute("MemberBean", justEditedMemberBean);
}
void prepareView(HttpServletRequest request)
throws BadInputException, ObjectNotFoundException, DatabaseException,
AssertionException, AuthenticationException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
Locale locale = I18nUtil.getLocaleInRequest(request);
String strMemberID = ParamUtil.getParameter(request, "memberid", false);
String strMemberName = ParamUtil.getParameter(request, "member", false);
String strMemberEmail = ParamUtil.getParameter(request, "memberemail", false);
int memberID;
if (strMemberID.length() > 0) {
memberID = ParamUtil.getParameterInt(request, "memberid");
} else if (strMemberName.length() > 0){
/**@todo: improve this for better performance(dont use this method,
* and write 2 new methods)*/
StringUtil.checkGoodName(strMemberName);// check for better security
try {
memberID = DAOFactory.getMemberDAO().getMemberIDFromMemberName(strMemberName);
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.membername_not_exists", new Object[] {strMemberName});
throw new ObjectNotFoundException(localizedMessage);
}
} else if (strMemberEmail.length() > 0){
String memberEmail = ParamUtil.getParameterEmail(request, "memberemail");// check for better security
try {
memberID = DAOFactory.getMemberDAO().getMemberIDFromMemberEmail(memberEmail);
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberemail_not_exists", new Object[] {memberEmail});
throw new ObjectNotFoundException(localizedMessage);
}
} else {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_get_member_info");
throw new BadInputException(localizedMessage);
//throw new BadInputException("Cannot get the information to view member.");
}
// Update statistics to make sure Admin can delete this user
// with the actual memberPostCount
try {
StatisticsUtil.updateMemberStatistics(memberID);
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
int toMessageCount = 0;
int fromMessageCount = 0;
String toDay = ParamUtil.getParameter(request, "toDay", false);
String toMonth = ParamUtil.getParameter(request, "toMonth", false);
String toYear = ParamUtil.getParameter(request, "toYear", false);
String fromDay = ParamUtil.getParameter(request, "fromDay", false);
String fromMonth = ParamUtil.getParameter(request, "fromMonth", false);
String fromYear = ParamUtil.getParameter(request, "fromYear", false);
if ( !toDay.equals("") &&
!toMonth.equals("") &&
!toYear.equals("") &&
!fromDay.equals("") &&
!fromMonth.equals("") &&
!fromYear.equals("")) {
Timestamp from = new Timestamp(ParamUtil.getParameterDate(request, "fromDay", "fromMonth", "fromYear").getTime());
Timestamp to = new Timestamp(ParamUtil.getParameterDate(request, "toDay", "toMonth", "toYear").getTime());
toMessageCount = DAOFactory.getMessageStatisticsDAO().getNumberOfBeans_inToID_supportTimestamp(memberID, from, to);
fromMessageCount = DAOFactory.getMessageStatisticsDAO().getNumberOfBeans_inFromID_supportTimestamp(memberID, from, to);
} else {
toMessageCount = DAOFactory.getMessageStatisticsDAO().getNumberOfBeans_inToID(memberID);
fromMessageCount = DAOFactory.getMessageStatisticsDAO().getNumberOfBeans_inFromID(memberID);
}
MemberBean memberBean = null;
try {
// minhnn: dont use getMember_forViewCurrentMember because it does not support firstIP
memberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
int watchCount = DAOFactory.getWatchDAO().getNumberOfWatches_forMember(memberID);
request.setAttribute("MemberBean", memberBean);
request.setAttribute("WatchCount", new Integer(watchCount));
request.setAttribute("ToMessageCount", new Integer(toMessageCount));
request.setAttribute("FromMessageCount", new Integer(fromMessageCount));
request.setAttribute("toDay", toDay);
request.setAttribute("toMonth", toMonth);
request.setAttribute("toYear", toYear);
request.setAttribute("fromDay", fromDay);
request.setAttribute("fromMonth", fromMonth);
request.setAttribute("fromYear", toYear);
}
void processUpdateMemberTitle(HttpServletRequest request, HttpServletResponse response)
throws BadInputException, DatabaseException, ObjectNotFoundException,
AuthenticationException, AssertionException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
MyUtil.saveVNTyperMode(request, response);
// primary key column(s)
int memberID = ParamUtil.getParameterInt(request, "MemberID");
// column(s) to update
String memberTitle = ParamUtil.getParameterSafe(request, "MemberTitle", false);
Locale locale = I18nUtil.getLocaleInRequest(request);
try {
DAOFactory.getMemberDAO().updateTitle(memberID, memberTitle);
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
}
void processResetMemberSignature(HttpServletRequest request)
throws BadInputException, DatabaseException, ObjectNotFoundException,
AuthenticationException, AssertionException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
Locale locale = I18nUtil.getLocaleInRequest(request);
int memberID = ParamUtil.getParameterInt(request, "memberid");
try {
DAOFactory.getMemberDAO().updateSignature(memberID, "");
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
request.setAttribute("MemberID", new Integer(memberID));
}
void processResetMemberAvatar(HttpServletRequest request)
throws BadInputException, DatabaseException, ObjectNotFoundException,
AuthenticationException, AssertionException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
Locale locale = I18nUtil.getLocaleInRequest(request);
int memberID = ParamUtil.getParameterInt(request, "memberid");
try {
DAOFactory.getMemberDAO().updateAvatar(memberID, "");
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
request.setAttribute("MemberID", new Integer(memberID));
}
void processResetMemberActivation(HttpServletRequest request)
throws BadInputException, DatabaseException, ObjectNotFoundException,
AuthenticationException, AssertionException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
Locale locale = I18nUtil.getLocaleInRequest(request);
int memberID = ParamUtil.getParameterInt(request, "memberid");
try {
DAOFactory.getMemberDAO().updateActivateCode(memberID, "");
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
request.setAttribute("MemberID", new Integer(memberID));
}
void processDeleteMember(ServletContext context, HttpServletRequest request)
throws BadInputException, DatabaseException, ObjectNotFoundException,
AuthenticationException, AssertionException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
Locale locale = I18nUtil.getLocaleInRequest(request);
// now check the password
MyUtil.ensureCorrectCurrentPassword(request);
int memberID = ParamUtil.getParameterInt(request, "memberid");
if ((memberID==MVNForumConstant.MEMBER_ID_OF_ADMIN) ||
(memberID==0) ||
(memberID==MVNForumConstant.MEMBER_ID_OF_GUEST)) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_admin_or_guest");
throw new BadInputException(localizedMessage);
//throw new BadInputException("Cannot delete default Admin and Guest users.");
}
boolean deleteSentMessages = ParamUtil.getParameterBoolean(request, "deletesentmessages");
MemberBean memberBean = null;
try {
memberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
MemberWebHandler.deleteMember(memberBean, deleteSentMessages, context, locale);
/*
if (memberBean.getMemberPostCount() > 0) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_member_has_a_post");
throw new BadInputException(localizedMessage);
//throw new BadInputException("Cannot delete member that has posted at least one post.");
}
// first, we delete uploaded image if there is one
String memberName = memberBean.getMemberName();
StringBuffer bufferPicFile = new StringBuffer(256);
bufferPicFile.append(context.getRealPath(MVNForumGlobal.UPLOADED_AVATAR_DIR));
bufferPicFile.append(File.separatorChar).append(memberName).append(".jpg");
String picFile = bufferPicFile.toString();
log.debug("Delete avatar = " + picFile);
File file = new File(picFile);
file.delete();// we dont need to check the returned value
//@todo delete table Post/Thread/Attachment if we support delete posted user
DAOFactory.getWatchDAO().delete_inMember(memberID);
DAOFactory.getMemberForumDAO().delete_inMember(memberID);
DAOFactory.getMemberGroupDAO().delete_inMember(memberID);
DAOFactory.getMemberPermissionDAO().delete_inMember(memberID);
DAOFactory.getFavoriteThreadDAO().delete_inMember(memberID);
//Delete message, attachmessage, folder, message statistics stuff
PrivateMessageUtil.deleteMessageFoldersInDatabase(memberID);
DAOFactory.getMessageStatisticsDAO().delete_inMember(memberID);
if (deleteSentMessages) {
DAOFactory.getMessageDAO().deleteSenderMessages(memberID);
}
//Delete company stuff
if (MVNForumConfig.getEnableCompany()) {
DAOFactory.getMemberCompanyDAO().delete_inMember(memberID);
DAOFactory.getMemberTutorDAO().deleteMembers_inTutor(memberID);
try {
DAOFactory.getMemberTutorDAO().delete(memberID);
} catch (ObjectNotFoundException ex) {
//ignore
}
}
//Delete in primary table
DAOFactory.getMemberDAO().deleteByPrimaryKey(memberID);
MemberIndexer.scheduleDeleteMemberTask(memberID);
*/
}
/**
* This method supports sorting base on many criteria
*/
void prepareShowUserManagement(HttpServletRequest request)
throws DatabaseException, AssertionException, BadInputException, AuthenticationException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
Locale locale = I18nUtil.getLocaleInRequest(request);
// for sort and order stuff
String sort = net.myvietnam.mvncore.util.ParamUtil.getParameter(request, "sort");
String order = net.myvietnam.mvncore.util.ParamUtil.getParameter(request, "order");
if (sort.length() == 0) sort = "MemberCreationDate";
if (order.length()== 0) order = "DESC";
// we continue
int postsPerPage = onlineUser.getPostsPerPage();
int offset = 0;
try {
offset = ParamUtil.getParameterInt(request, "offset");
} catch (BadInputException e) {
// do nothing
}
int totalMembers = DAOFactory.getMemberDAO().getNumberOfMembers();
if (offset > totalMembers) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.offset_greater_than_total_rows");
throw new BadInputException(localizedMessage);
//throw new BadInputException("The offset is not allowed to be greater than total rows.");
}
Collection memberBeans = DAOFactory.getMemberDAO().getMembers_withSortSupport_limit(offset, postsPerPage, sort, order);
int enabledMembers = DAOFactory.getMemberDAO().getNumberOfMembers_inMemberStatus(MemberBean.MEMBER_STATUS_ENABLE);
int disabledMembers = DAOFactory.getMemberDAO().getNumberOfMembers_inMemberStatus(MemberBean.MEMBER_STATUS_DISABLE);
int activatedMembers = DAOFactory.getMemberDAO().getNumberOfMembers_inActivationStatus(true);
int nonactivatedMembers = DAOFactory.getMemberDAO().getNumberOfMembers_inActivationStatus(false);
if ((disabledMembers + enabledMembers) != totalMembers) {
// please do not localize this
throw new AssertionException("Assertion: (disabledMembers + enabledMembers) == totalMembers");
}
if ((activatedMembers + nonactivatedMembers) != totalMembers) {
// please do not localize this
throw new AssertionException("Assertion: (activatedMembers + nonactivatedMembers) == totalMembers");
}
request.setAttribute("MemberBeans", memberBeans);
request.setAttribute("TotalMembers", new Integer(totalMembers));
request.setAttribute("EnabledMembers", new Integer(enabledMembers));
request.setAttribute("DisabledMembers", new Integer(disabledMembers));
request.setAttribute("ActivatedMembers", new Integer(activatedMembers));
request.setAttribute("NonActivatedMembers", new Integer(nonactivatedMembers));
request.setAttribute("offset", new Integer(offset));
}
public void prepareListUserExpire(HttpServletRequest request)
throws DatabaseException, AssertionException, BadInputException, AuthenticationException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
// for sort and order stuff
String sort = ParamUtil.getParameter(request, "sort");
String order = ParamUtil.getParameter(request, "order");
if (sort.length() == 0) sort = "MemberExpireDate";
if (order.length()== 0) order = "ASC";
// we continue
int postsPerPage = onlineUser.getPostsPerPage();
int offset = 0;
try {
offset = ParamUtil.getParameterInt(request, "offset");
} catch (BadInputException e) {
// do nothing
}
Timestamp expiresoonDate = DateUtil.getCurrentGMTTimestampExpiredDay(MVNForumConfig.getUserTutorExpireSoonDate());
int totalExpireMembers = DAOFactory.getMemberDAO().getNumberOfMembers_inExpire(expiresoonDate);
if (offset > totalExpireMembers) {
//@todo : localize me
throw new BadInputException("The offset is not allowed to be greater than total members.");
}
Collection expireMemberBeans = DAOFactory.getMemberDAO().getMembers_inExpire_limit(expiresoonDate, offset, postsPerPage, sort, order);
request.setAttribute("TotalMembers", new Integer(totalExpireMembers));
request.setAttribute("ExpireMemberBeans", expireMemberBeans);
request.setAttribute("offset", new Integer(offset));
}
public void updateMemberExpireProcess(HttpServletRequest request)
throws DatabaseException, BadInputException, ObjectNotFoundException,
AssertionException, AuthenticationException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
//int expiredDays = MVNForumConfig.getExpireDateTutor();
String renew = ParamUtil.getParameter(request, "renew");
String disable = ParamUtil.getParameter(request, "disable");
String enable = ParamUtil.getParameter(request, "enable");
int expiredDays = ParamUtil.getParameterUnsignedInt(request, "addtime");
String[] checkList = request.getParameterValues("selectedmember");
if (checkList == null) return;
if (renew.equals("Renew")) {
//renew creation date and expire date
long offsetDate = expiredDays * DateUtil.DAY;
Timestamp now = DateUtil.getCurrentGMTTimestamp();
for (int i = 0; (checkList != null) && (i < checkList.length); i++) {
int memberID = Integer.parseInt(checkList[i]);
log.debug("Renew expiration date for MemberID = " + memberID);
try {
MemberBean memberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
Timestamp expireDate = memberBean.getMemberExpireDate();
if (expireDate == null) {
expireDate = now;
}
Timestamp memberExpireDate = new Timestamp(expireDate.getTime() + offsetDate);
DAOFactory.getMemberDAO().updateMember_expireDate(memberID, memberExpireDate);
} catch (ObjectNotFoundException e) {
Locale locale = I18nUtil.getLocaleInRequest(request);
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
}
} else if (disable.equals("Disable")) {
for (int i = 0; (checkList != null) && (i < checkList.length); i++) {
int memberID = Integer.parseInt(checkList[i]);
log.debug("Disable member with MemberID = " + memberID);
try {
DAOFactory.getMemberDAO().updateStatus(memberID, MemberBean.MEMBER_STATUS_DISABLE);
} catch (ObjectNotFoundException e) {
Locale locale = I18nUtil.getLocaleInRequest(request);
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
}
} else if (enable.equals("Enable")) {
for (int i = 0; (checkList != null) && (i < checkList.length); i++) {
int memberID = Integer.parseInt(checkList[i]);
log.debug("Enable member with MemberID = " + memberID);
try {
DAOFactory.getMemberDAO().updateStatus(memberID, MemberBean.MEMBER_STATUS_ENABLE);
} catch (ObjectNotFoundException e) {
Locale locale = I18nUtil.getLocaleInRequest(request);
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
}
}
}
void processSearch(HttpServletRequest request)
throws BadInputException, IOException, DatabaseException, ObjectNotFoundException,
AuthenticationException, AssertionException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
String memberNameKey = ParamUtil.getParameter(request, "membername", false);
String memberEmailKey = ParamUtil.getParameter(request, "email", false);
String memberLastNameKey = ParamUtil.getParameter(request, "lastname", false);
String memberFirstNameKey = ParamUtil.getParameter(request, "firstname", false);
String memberCountryKey = ParamUtil.getParameter(request, "country", false);
Locale locale = I18nUtil.getLocaleInRequest(request);
int defaultRows = onlineUser.getPostsPerPage();
int offset = ParamUtil.getParameterUnsignedInt(request, "offset", 0);
int rows = ParamUtil.getParameterUnsignedInt(request, "rows", defaultRows);
if (rows == 0) {
rows = defaultRows;// fix NullPointerException when rows = 0
}
// offset should be even when divide with rowsToReturn
offset = (offset / rows) * rows;
MemberSearchQuery query = new MemberSearchQuery();
boolean isNullKey = true;
if (memberNameKey.length() > 0) {
query.setMemberNameKey(memberNameKey);
isNullKey = false;
}
if (memberEmailKey.length() > 0) {
query.setMemberEmailKey(memberEmailKey);
isNullKey = false;
}
if (memberLastNameKey.length() > 0) {
query.setMemberLastNameKey(memberLastNameKey);
isNullKey = false;
}
if (memberFirstNameKey.length() > 0){
query.setMemberFirstNameKey(memberFirstNameKey);
isNullKey = false;
}
if (memberCountryKey.length() > 0) {
query.setCountry(memberCountryKey);
isNullKey = false;
}
if (isNullKey) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_search.key_is_null");
throw new BadInputException(localizedMessage);
}
int searchDate = ParamUtil.getParameterUnsignedInt(request, "date", MemberSearchQuery.SEARCH_ANY_DATE);
int searchBeforeAfter = ParamUtil.getParameterInt(request, "beforeafter", MemberSearchQuery.SEARCH_NEWER);
if ((searchDate != MemberSearchQuery.SEARCH_ANY_DATE) && (searchDate < 365 * 10)) { // 10 years
long deltaTime = DateUtil.DAY * searchDate;
Timestamp now = DateUtil.getCurrentGMTTimestamp();
Timestamp from = null;
Timestamp to = null;
long currentTime = now.getTime();
if (searchBeforeAfter == MemberSearchQuery.SEARCH_NEWER) {
from = new Timestamp(currentTime - deltaTime);
} else {// older
to = new Timestamp(currentTime - deltaTime);
}
query.setFromDate(from);
query.setToDate(to);
}
query.searchDocuments(offset, rows);
int hitCount = query.getHitCount();
Collection result = query.getMemberResult();
if (offset > hitCount) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.offset_greater_than_total_rows");
throw new BadInputException(localizedMessage);
}
request.setAttribute("offset", new Integer(offset));
request.setAttribute("rows", new Integer(rows));
request.setAttribute("TotalMembers", new Integer(hitCount));
request.setAttribute("MemberBeans", result);
request.setAttribute("MemberName", memberNameKey);
request.setAttribute("MemberEmail", memberEmailKey); //strCompanyAddress);
request.setAttribute("DateOption", new Integer(searchDate)); //strCompanyCreationDate);
request.setAttribute("BeforeAfterOption", new Integer(searchBeforeAfter)); //strCompanyModifiedDate);
}
public void preparePermissionSummary(HttpServletRequest request )
throws DatabaseException, ObjectNotFoundException, AuthenticationException, AssertionException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
Collection authorizedMembers = DAOFactory.getMemberDAO().getAuthorizedMembers();
Collection forumsAuthorizedMembers = DAOFactory.getMemberDAO().getForumsAuthorizedMembers();
Collection distinctAuthorizedGroups = DAOFactory.getGroupPermissionDAO().getDistinctGroups();
Collection authorizedGroups = new ArrayList(distinctAuthorizedGroups.size());
for (Iterator iter = distinctAuthorizedGroups.iterator(); iter.hasNext(); ) {
GroupPermissionBean item = (GroupPermissionBean) iter.next();
GroupsBean groupBean = DAOFactory.getGroupsDAO().getGroup(item.getGroupID());
authorizedGroups.add(groupBean);
}
Collection distinctForumAuthorizedGroups = DAOFactory.getGroupForumDAO().getDistinctGroups();
Collection forumAuthorizedGroups = new ArrayList(distinctForumAuthorizedGroups.size());
for (Iterator iter = distinctForumAuthorizedGroups.iterator(); iter.hasNext(); ) {
GroupForumBean item = (GroupForumBean) iter.next();
GroupsBean groupBean = DAOFactory.getGroupsDAO().getGroup(item.getGroupID());
forumAuthorizedGroups.add(groupBean);
}
request.setAttribute("AuthorizedMembers", authorizedMembers);
request.setAttribute("ForumsAuthorizedMembers", forumsAuthorizedMembers);
request.setAttribute("AuthorizedGroups", authorizedGroups);
request.setAttribute("ForumAuthorizedGroups", forumAuthorizedGroups);
}
public void prepareViewPermission(HttpServletRequest request )
throws AuthenticationException, BadInputException, DatabaseException, AssertionException, ObjectNotFoundException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
int memberID = ParamUtil.getParameterInt(request, "memberid");
MemberBean member = null;
try {
member = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
} catch (ObjectNotFoundException e) {
Locale locale = I18nUtil.getLocaleInRequest(request);
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
MVNForumPermission thisPermission = MVNForumPermissionFactory.getAuthenticatedPermission(memberID);
Collection groups = DAOFactory.getGroupsDAO().getMyGroups(memberID);
request.setAttribute("MemberBean", member);
request.setAttribute("MemberGroups", groups);
request.setAttribute("Permissions", thisPermission);
}
public void prepareChangePassword(HttpServletRequest request )
throws DatabaseException, AuthenticationException, AssertionException,
ObjectNotFoundException, BadInputException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
Locale locale = I18nUtil.getLocaleInRequest(request);
if ( ! MVNForumConfig.getEnableAdminCanChangePassword()) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.admin_can_change_password_is_disabled");
throw new AssertionException(localizedMessage);
//throw new AssertionException("Admin Cannot change the user password. This feature is disabled by administrator");
}
int memberID = ParamUtil.getParameterInt(request, "memberid");
if ( memberID == MVNForumConstant.MEMBER_ID_OF_ADMIN ) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.cannot_change_root_password");
throw new AssertionException(localizedMessage);
}
MemberBean memberBean = null;
try {
memberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
request.setAttribute("MemberBean", memberBean);
}
public void processChangePassword(HttpServletRequest request )
throws DatabaseException, AuthenticationException, AssertionException,
ObjectNotFoundException, BadInputException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
Locale locale = I18nUtil.getLocaleInRequest(request);
if ( ! MVNForumConfig.getEnableAdminCanChangePassword()) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.admin_can_change_password_is_disabled");
throw new AssertionException(localizedMessage);
//throw new AssertionException("Admin Cannot change the user password. This feature is disabled by administrator");
}
int memberID = ParamUtil.getParameterInt(request, "memberid");
if ( memberID == MVNForumConstant.MEMBER_ID_OF_ADMIN ) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.cannot_change_root_password");
throw new AssertionException(localizedMessage);
}
// now check the password
MyUtil.ensureCorrectCurrentPassword(request);
String password = ParamUtil.getParameterPassword(request, "MemberMatkhau", 3, 0);
String confirmword = ParamUtil.getParameterPassword(request, "MemberMatkhauConfirm", 3, 0);
if (!password.equals(confirmword)) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.confirmed_password_is_not_match");
throw new BadInputException(localizedMessage);
//throw new BadInputException("Password and confirmed password are not the same, please try again.");
}
password = Encoder.getMD5_Base64(password);
try {
DAOFactory.getMemberDAO().updatePassword(memberID, password);
} catch (ObjectNotFoundException e) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object[] {new Integer(memberID)});
throw new ObjectNotFoundException(localizedMessage);
}
request.setAttribute("MemberID", new Integer(memberID));
}
void prepareDeleteNonActivatedNoPostMembers(HttpServletRequest request)
throws DatabaseException, AuthenticationException,
AssertionException, BadInputException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
int days = ParamUtil.getParameterUnsignedInt(request, "days");
long delta = days * DateUtil.DAY;
Timestamp before = new Timestamp(DateUtil.getCurrentGMTTimestamp().getTime() - delta);
Collection members = DAOFactory.getMemberDAO().getNonActivatedNoPostMembers(before);
request.setAttribute("DeleteMembers", members);
}
void processDeleteNonActivatedNoPostMembers(ServletContext context, HttpServletRequest request)
throws DatabaseException, ObjectNotFoundException, BadInputException,
AuthenticationException, AssertionException {
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
permission.ensureCanAdminSystem();
Locale locale = I18nUtil.getLocaleInRequest(request);
// now check the password
MyUtil.ensureCorrectCurrentPassword(request);
int days = ParamUtil.getParameterUnsignedInt(request, "days");
boolean deleteMessages = ParamUtil.getParameterBoolean(request, "deletesentmessages");
long delta = days * DateUtil.DAY;
Timestamp before = new Timestamp(DateUtil.getCurrentGMTTimestamp().getTime() - delta);
Collection members = DAOFactory.getMemberDAO().getNonActivatedNoPostMembers(before);
int deletedMembersCount = 0;
for (Iterator iterator = members.iterator(); iterator.hasNext(); ) {
MemberBean member = (MemberBean) iterator.next();
if ((member.getMemberID() != 0) && (member.getMemberID() != 1)) {
MemberWebHandler.deleteMember(member, deleteMessages, context, locale);
deletedMembersCount++;
}
}
log.debug("Total: Deleted " + deletedMembersCount + " members");
request.setAttribute("DeletedMembersCount", new Integer(deletedMembersCount));
}
public static void deleteMember(MemberBean memberBean, boolean deleteSentMessages, ServletContext context, Locale locale)
throws DatabaseException, BadInputException, ObjectNotFoundException, AssertionException {
int memberID = memberBean.getMemberID();
if ((memberID==MVNForumConstant.MEMBER_ID_OF_ADMIN) ||
(memberID==0) ||
(memberID==MVNForumConstant.MEMBER_ID_OF_GUEST)) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_admin_or_guest");
throw new BadInputException(localizedMessage);
//throw new BadInputException("Cannot delete default Admin and Guest users.");
}
// check in the MemberBean
if (memberBean.getMemberPostCount() > 0) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_member_has_a_post");
throw new BadInputException(localizedMessage);
//throw new BadInputException("Cannot delete member that has posted at least one post.");
}
// Real checking in table post
if (DAOFactory.getPostDAO().getNumberOfPosts_inMember(memberID) > 0) {
String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_member_has_a_post");
throw new BadInputException(localizedMessage);
//throw new BadInputException("Cannot delete member that has posted at least one post.");
}
// first, we delete uploaded image if there is one
String memberName = memberBean.getMemberName();
log.info("About to delete member with login = " + memberName + " and id = " + memberID + " with option deleteSentMessages = " + deleteSentMessages);
StringBuffer bufferPicFile = new StringBuffer(256);
bufferPicFile.append(context.getRealPath(MVNForumGlobal.UPLOADED_AVATAR_DIR));
bufferPicFile.append(File.separatorChar).append(memberName).append(".jpg");
String picFile = bufferPicFile.toString();
log.debug("Delete avatar = " + picFile);
File file = new File(picFile);
file.delete();// we dont need to check the returned value
//@todo delete table Post/Thread/Attachment if we support delete posted user
DAOFactory.getWatchDAO().delete_inMember(memberID);
DAOFactory.getMemberForumDAO().delete_inMember(memberID);
DAOFactory.getMemberGroupDAO().delete_inMember(memberID);
DAOFactory.getMemberPermissionDAO().delete_inMember(memberID);
DAOFactory.getFavoriteThreadDAO().delete_inMember(memberID);
//Delete message, attachmessage, folder, message statistics stuff
PrivateMessageUtil.deleteMessageFoldersInDatabase(memberID);
DAOFactory.getMessageStatisticsDAO().delete_inMember(memberID);
if (deleteSentMessages) {
DAOFactory.getMessageDAO().deleteSenderMessages(memberID);
}
//Delete company stuff
if (MVNForumConfig.getEnableCompany()) {
DAOFactory.getMemberCompanyDAO().delete_inMember(memberID);
DAOFactory.getMemberTutorDAO().deleteMembers_inTutor(memberID);
try {
DAOFactory.getMemberTutorDAO().delete(memberID);
} catch (ObjectNotFoundException ex) {
//ignore
}
}
//Delete in primary table
DAOFactory.getMemberDAO().deleteByPrimaryKey(memberID);
MemberIndexer.scheduleDeleteMemberTask(memberID);
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.