KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mvnforum > admin > MemberWebHandler


1 /*
2  * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/admin/MemberWebHandler.java,v 1.84 2006/04/14 17:05:25 minhnn Exp $
3  * $Author: minhnn $
4  * $Revision: 1.84 $
5  * $Date: 2006/04/14 17:05:25 $
6  *
7  * ====================================================================
8  *
9  * Copyright (C) 2002-2006 by MyVietnam.net
10  *
11  * All copyright notices regarding mvnForum MUST remain
12  * intact in the scripts and in the outputted HTML.
13  * The "powered by" text/logo with a link back to
14  * http://www.mvnForum.com and http://www.MyVietnam.net in
15  * the footer of the pages MUST remain visible when the pages
16  * are viewed on the internet or intranet.
17  *
18  * This program is free software; you can redistribute it and/or modify
19  * it under the terms of the GNU General Public License as published by
20  * the Free Software Foundation; either version 2 of the License, or
21  * any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26  * GNU General Public License for more details.
27  *
28  * You should have received a copy of the GNU General Public License
29  * along with this program; if not, write to the Free Software
30  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
31  *
32  * Support can be obtained from support forums at:
33  * http://www.mvnForum.com/mvnforum/index
34  *
35  * Correspondence and Marketing Questions can be sent to:
36  * info at MyVietnam net
37  *
38  * @author: Minh Nguyen
39  * @author: Mai Nguyen
40  * @author: Igor Manic
41  */

42 package com.mvnforum.admin;
43
44 import java.io.File JavaDoc;
45 import java.io.IOException JavaDoc;
46 import java.sql.Date JavaDoc;
47 import java.sql.Timestamp JavaDoc;
48 import java.util.*;
49
50 //import javax.servlet.ServletContext;
51

52 import com.mvnforum.*;
53 import com.mvnforum.auth.*;
54 import com.mvnforum.common.*;
55 import com.mvnforum.db.*;
56 import com.mvnforum.search.member.MemberIndexer;
57 import com.mvnforum.search.member.MemberSearchQuery;
58
59 import net.myvietnam.mvncore.exception.*;
60 import net.myvietnam.mvncore.interceptor.InterceptorService;
61 import net.myvietnam.mvncore.security.Encoder;
62 import net.myvietnam.mvncore.util.*;
63
64 import net.myvietnam.mvncore.web.GenericRequest;
65 import net.myvietnam.mvncore.web.GenericResponse;
66 import org.apache.commons.logging.Log;
67 import org.apache.commons.logging.LogFactory;
68
69 public class MemberWebHandler {
70
71     private static Log log = LogFactory.getLog(MemberWebHandler.class);
72
73     private OnlineUserManager onlineUserManager = OnlineUserManager.getInstance();
74
75     public MemberWebHandler() {
76     }
77
78     public void processAdd(GenericRequest request)
79         throws BadInputException, ObjectNotFoundException, CreateException, DatabaseException, DuplicateKeyException,
80         ForeignKeyNotFoundException, AuthenticationException, AssertionException, InterceptorException {
81
82         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
83         MVNForumPermission permission = onlineUser.getPermission();
84         permission.ensureCanAdminSystem();
85
86         Locale locale = I18nUtil.getLocaleInRequest(request);
87
88         Timestamp JavaDoc now = DateUtil.getCurrentGMTTimestamp();
89
90         String JavaDoc memberName = GenericParamUtil.getParameterSafe(request, "MemberName", true); // check good name
91
/** @todo move to a name filter */
92         if ( memberName.equalsIgnoreCase(MVNForumConfig.getDefaultGuestName()) ||
93              memberName.equalsIgnoreCase("Guest") ||
94              memberName.equalsIgnoreCase("Administrator") ||
95              memberName.equalsIgnoreCase("Moderator") ) {
96             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_register_with_reserved_name", new Object JavaDoc[] {memberName});
97             throw new BadInputException(localizedMessage);
98             //throw new BadInputException("Cannot register member with a reserved name : " + memberName);
99
}
100         StringUtil.checkGoodName(memberName);
101         InterceptorService.getInstance().validateLoginID(memberName);
102         if (memberName.length() > MVNForumGlobal.MAX_MEMBER_LOGIN_LENGTH) {
103             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.member_name_too_long");
104             throw new BadInputException(localizedMessage);
105             //throw new BadInputException("MemberName cannot be longer than 30 characters.");
106
}
107
108         String JavaDoc memberPassword1 = GenericParamUtil.getParameterPassword(request, "MemberMatkhau", 3, 0);
109         String JavaDoc memberPassword2 = GenericParamUtil.getParameterPassword(request, "MemberMatkhauConfirm", 3, 0);
110         if (!memberPassword1.equals(memberPassword2)) {
111             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.confirmed_password_is_not_match");
112             throw new BadInputException(localizedMessage);
113             //throw new BadInputException("Password and confirmed password are not the same, please try again.");
114
}
115         String JavaDoc memberPassword = Encoder.getMD5_Base64(memberPassword1);
116
117         String JavaDoc memberEmail = GenericParamUtil.getParameterEmail(request, "MemberEmail");
118         String JavaDoc memberEmailConfirm = GenericParamUtil.getParameterEmail(request, "MemberEmailConfirm");
119         if (!memberEmail.equals(memberEmailConfirm)) {
120             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.confirmed_email_is_not_match");
121             throw new BadInputException(localizedMessage);
122             //throw new BadInputException("Email and confirmed email are not the same, please try again.");
123
}
124         if (memberEmail.length() > MVNForumGlobal.MAX_MEMBER_EMAIL_LENGTH) {
125             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.member_email_too_long");
126             throw new BadInputException(localizedMessage);
127             //throw new BadInputException("MemberEmail cannot be longer than 60 characters.");
128
}
129         String JavaDoc memberFirstEmail = memberEmail;
130         InterceptorService.getInstance().validateMail(memberFirstEmail);
131
132         int memberEmailVisible = MemberBean.MEMBER_EMAIL_INVISIBLE;
133         int memberNameVisible = MemberBean.MEMBER_NAME_VISIBLE;
134         String JavaDoc memberFirstIP = request.getRemoteAddr();
135         String JavaDoc memberLastIP = memberFirstIP;
136         int memberOption = 0;//@todo review and support it later
137
int memberStatus = 0;// @todo review and support it later, ex: should it be active or not?
138
String JavaDoc memberActivateCode = "";// @todo review and support it later
139
int memberMessageOption = 0;// @todo review and support it later
140
int memberPostsPerPage = 10; //default for all preregistered users
141
Date JavaDoc memberBirthday = new java.sql.Date JavaDoc(now.getTime());
142         Timestamp JavaDoc memberCreationDate= now;
143         Timestamp JavaDoc memberModifiedDate= now;
144         Timestamp JavaDoc memberExpireDate = memberCreationDate;// equal Creation Date mean no expiration
145
if (MVNForumConfig.getEnableCompany()) {
146             memberExpireDate = DateUtil.getCurrentGMTTimestampExpiredDay(MVNForumConfig.getExpireDateTutor());
147         }
148
149         DAOFactory.getMemberDAO().create(memberName, memberPassword, memberFirstEmail,
150                                    memberEmail, memberEmailVisible, memberNameVisible,
151                                    memberFirstIP, memberLastIP, 0/*memberViewCount*/,
152                                    0/*memberPostCount*/, memberCreationDate, memberModifiedDate,memberExpireDate,
153                                    now/*memberLastLogon*/, memberOption, memberStatus,
154                                    memberActivateCode, ""/*memberTempPassword*/, 0/*memberMessageCount*/,
155                                    memberMessageOption, memberPostsPerPage, 0/*memberWarnCount*/,
156                                    0/*memberVoteCount*/, 0/*memberVoteTotalStars*/, 0/*memberRewardPoints*/,
157                                    ""/*memberTitle*/, 0/*memberTimeZone*/, ""/*memberSignature*/,
158                                    ""/*memberAvatar*/, ""/*memberSkin*/, ""/*memberLanguage*/,
159                                    " "/*memberFirstname*/, " "/*memberLastname*/, 1/*memberGender*/,
160                                    memberBirthday, ""/*memberAddress*/, ""/*memberCity*/,
161                                    ""/*memberState*/, ""/*memberCountry*/, ""/*memberPhone*/,
162                                    ""/*memberMobile*/, ""/*memberFax*/, ""/*memberCareer*/,
163                                    ""/*memberHomepage*/, ""/*memberYahoo*/, ""/*memberAol*/,
164                                    ""/*memberIcq*/, ""/*memberMsn*/, ""/*memberCoolLink1*/,
165                                    ""/*memberCoolLink2*/);
166
167         // Now, create 4 default folders for each member
168
int memberID = DAOFactory.getMemberDAO().getMemberIDFromMemberName(memberName);
169         int folderStatus = 0;
170         int folderOption = 0;
171         int folderType = 0;
172         DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_INBOX, memberID, 0/*order*/, folderStatus, folderOption, folderType, now, now);
173         DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_DRAFT, memberID, 1/*order*/, folderStatus, folderOption, folderType, now, now);
174         DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_SENT, memberID, 2/*order*/, folderStatus, folderOption, folderType, now, now);
175         DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_TRASH, memberID, 3/*order*/, folderStatus, folderOption, folderType, now, now);
176
177         // Add member to the lucene index
178
MemberBean memberBean = null;
179         try {
180             memberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
181         } catch(ObjectNotFoundException ex) {
182             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
183             throw new ObjectNotFoundException(localizedMessage);
184         }
185         MemberIndexer.scheduleAddMemberTask(memberBean);
186
187         // now, if require activation, then we will send mail
188
// Note that because after this page succeed,
189
// we redirect to usermanagement so not use mvnforum.mail.failed now
190
if (MVNForumConfig.getRequireActivation()) {
191             String JavaDoc serverName = ParamUtil.getServerPath();//ParamUtil.getServer2(request);
192
try {
193                 SendMailUtil.sendActivationCodeEmail(memberID, serverName);
194             } catch (Exception JavaDoc ex) {
195                 log.error("Cannot send mail after registration!", ex);
196                 request.setAttribute("mvnforum.mail.failed", "Cannot send activation email after registration!");
197                 //@todo: save the error message to displayed later
198
}
199         }
200     }
201
202     public void processUpdateMemberStatus(GenericRequest request)
203         throws BadInputException, ObjectNotFoundException, DatabaseException {
204
205         // primary key column(s)
206
int memberID = GenericParamUtil.getParameterInt(request, "memberid");
207
208         // column(s) to update
209
int memberStatus= GenericParamUtil.getParameterInt(request, "status");
210
211         Locale locale = I18nUtil.getLocaleInRequest(request);
212
213         // now check if status is in the valid range
214
if ( memberStatus != MemberBean.MEMBER_STATUS_ENABLE
215           && memberStatus != MemberBean.MEMBER_STATUS_DISABLE) {
216             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_update_member_status.unknown_status", new Object JavaDoc[] { new Integer JavaDoc(memberStatus)});
217             throw new BadInputException(localizedMessage);
218             //throw new BadInputException("Cannot update member's status to an unknown status = " + memberStatus);
219
}
220
221         // This code make sure Admin always has Enable status
222
if (memberID == MVNForumConstant.MEMBER_ID_OF_ADMIN) {
223             memberStatus = MemberBean.MEMBER_STATUS_ENABLE;
224         }
225         //IMPORTANT: Guest (id=MEMBER_ID_OF_GUEST) can be disabled by administrator.
226
try {
227             DAOFactory.getMemberDAO().updateStatus(memberID, // primary key
228
memberStatus);
229         } catch (ObjectNotFoundException e) {
230             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
231             throw new ObjectNotFoundException(localizedMessage);
232         }
233     }
234
235     public void prepareEdit(GenericRequest request)
236         throws BadInputException, ObjectNotFoundException, DatabaseException,
237         AssertionException, AuthenticationException {
238
239         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
240         MVNForumPermission permission = onlineUser.getPermission();
241         permission.ensureCanAdminSystem();
242
243         Locale locale = I18nUtil.getLocaleInRequest(request);
244
245         int memberID = GenericParamUtil.getParameterInt(request, "memberid");
246
247         MemberBean memberBean = null;
248         try {
249             // we must use getMember_forEditCurrentMember because we need more information on this member
250
memberBean = DAOFactory.getMemberDAO().getMember_forEditCurrentMember(memberID);
251         } catch (ObjectNotFoundException e) {
252             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
253             throw new ObjectNotFoundException(localizedMessage);
254         }
255
256         request.setAttribute("MemberBean", memberBean);
257     }
258
259     public void processEdit(GenericRequest request, GenericResponse response)
260         throws BadInputException, ObjectNotFoundException, DatabaseException,
261         AssertionException, AuthenticationException {
262
263         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
264         MVNForumPermission permission = onlineUser.getPermission();
265         permission.ensureCanAdminSystem();
266
267         MyUtil.saveVNTyperMode(request, response);
268
269         int memberID = GenericParamUtil.getParameterInt(request, "memberid");
270
271         Timestamp JavaDoc now = DateUtil.getCurrentGMTTimestamp();
272
273         // column(s) to update
274
int memberEmailVisible = GenericParamUtil.getParameterBoolean(request, "MemberEmailVisible")? MemberBean.MEMBER_EMAIL_VISIBLE : MemberBean.MEMBER_EMAIL_INVISIBLE;
275         int memberNameVisible = GenericParamUtil.getParameterBoolean(request, "MemberNameVisible") ? MemberBean.MEMBER_NAME_VISIBLE : MemberBean.MEMBER_NAME_INVISIBLE;
276         int memberOption = 0;//GenericParamUtil.getParameterInt(request, "MemberOption");
277
int memberStatus = GenericParamUtil.getParameterInt(request, "MemberStatus");
278         int memberMessageOption = 0;//GenericParamUtil.getParameterInt(request, "MemberMessageOption");
279
int memberPostsPerPage = GenericParamUtil.getParameterInt(request, "MemberPostsPerPage");
280         if (memberPostsPerPage < 5) {
281             memberPostsPerPage = 5;
282         }
283         double memberTimeZone = GenericParamUtil.getParameterTimeZone(request, "MemberTimeZone");
284         String JavaDoc memberSkin = GenericParamUtil.getParameterSafe(request, "MemberSkin", false);
285         String JavaDoc memberLanguage = GenericParamUtil.getParameterSafe(request, "MemberLanguage", false);
286         String JavaDoc memberFirstname = GenericParamUtil.getParameterSafe(request, "MemberFirstname", true);
287         String JavaDoc memberLastname = GenericParamUtil.getParameterSafe(request, "MemberLastname", true);
288         int memberGender = GenericParamUtil.getParameterBoolean(request, "MemberGender")? 1 : 0;
289         Date JavaDoc memberBirthday = GenericParamUtil.getParameterDate(request, "MemberBirthday");
290         String JavaDoc memberAddress = GenericParamUtil.getParameterSafe(request, "MemberAddress", false);
291         String JavaDoc memberCity = GenericParamUtil.getParameterSafe(request, "MemberCity", false);
292         String JavaDoc memberState = GenericParamUtil.getParameterSafe(request, "MemberState", false);
293         String JavaDoc memberCountry = GenericParamUtil.getParameterSafe(request, "MemberCountry", false);
294         String JavaDoc memberPhone = GenericParamUtil.getParameterSafe(request, "MemberPhone", false);
295         String JavaDoc memberMobile = GenericParamUtil.getParameterSafe(request, "MemberMobile", false);
296         String JavaDoc memberFax = GenericParamUtil.getParameterSafe(request, "MemberFax", false);
297         String JavaDoc memberCareer = GenericParamUtil.getParameterSafe(request, "MemberCareer", false);
298         String JavaDoc memberHomepage = GenericParamUtil.getParameterUrl(request, "MemberHomepage");
299         String JavaDoc memberYahoo = GenericParamUtil.getParameterSafe(request, "MemberYahoo", false);
300         String JavaDoc memberAol = GenericParamUtil.getParameterSafe(request, "MemberAol", false);
301         String JavaDoc memberIcq = GenericParamUtil.getParameterSafe(request, "MemberIcq", false);
302         String JavaDoc memberMsn = GenericParamUtil.getParameterSafe(request, "MemberMsn", false);
303         String JavaDoc memberCoolLink1 = GenericParamUtil.getParameterUrl(request, "MemberCoolLink1");
304         String JavaDoc memberCoolLink2 = GenericParamUtil.getParameterUrl(request, "MemberCoolLink2");
305
306         try {
307             DAOFactory.getMemberDAO().update(memberID, // primary key
308
memberEmailVisible, memberNameVisible, now/*memberModifiedDate*/,
309                                memberOption, memberStatus, memberMessageOption,
310                                memberPostsPerPage, memberTimeZone, memberSkin,
311                                memberLanguage, memberFirstname, memberLastname,
312                                memberGender, memberBirthday, memberAddress,
313                                memberCity, memberState, memberCountry,
314                                memberPhone, memberMobile, memberFax,
315                                memberCareer, memberHomepage, memberYahoo,
316                                memberAol, memberIcq, memberMsn,
317                                memberCoolLink1, memberCoolLink2);
318         } catch(ObjectNotFoundException ex) {
319             Locale locale = I18nUtil.getLocaleInRequest(request);
320             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
321             throw new ObjectNotFoundException(localizedMessage);
322         }
323
324         MemberBean justEditedMemberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
325
326         MemberIndexer.scheduleUpdateMemberTask(justEditedMemberBean);
327         //request.setAttribute("MemberBean", justEditedMemberBean);
328
}
329
330     public void prepareView(GenericRequest request)
331         throws BadInputException, ObjectNotFoundException, DatabaseException,
332         AssertionException, AuthenticationException {
333
334         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
335         MVNForumPermission permission = onlineUser.getPermission();
336         permission.ensureCanAdminSystem();
337
338         Locale locale = I18nUtil.getLocaleInRequest(request);
339
340         String JavaDoc strMemberID = GenericParamUtil.getParameter(request, "memberid", false);
341         String JavaDoc strMemberName = GenericParamUtil.getParameter(request, "member", false);
342         String JavaDoc strMemberEmail = GenericParamUtil.getParameter(request, "memberemail", false);
343
344         int memberID;
345
346         if (strMemberID.length() > 0) {
347             memberID = GenericParamUtil.getParameterInt(request, "memberid");
348         } else if (strMemberName.length() > 0){
349             /**@todo: improve this for better performance(dont use this method,
350              * and write 2 new methods)*/

351             StringUtil.checkGoodName(strMemberName);// check for better security
352
try {
353                 memberID = DAOFactory.getMemberDAO().getMemberIDFromMemberName(strMemberName);
354             } catch (ObjectNotFoundException e) {
355                 String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.membername_not_exists", new Object JavaDoc[] {strMemberName});
356                 throw new ObjectNotFoundException(localizedMessage);
357             }
358         } else if (strMemberEmail.length() > 0){
359             String JavaDoc memberEmail = GenericParamUtil.getParameterEmail(request, "memberemail");// check for better security
360
try {
361                 memberID = DAOFactory.getMemberDAO().getMemberIDFromMemberEmail(memberEmail);
362             } catch (ObjectNotFoundException e) {
363                 String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberemail_not_exists", new Object JavaDoc[] {memberEmail});
364                 throw new ObjectNotFoundException(localizedMessage);
365             }
366         } else {
367             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_get_member_info");
368             throw new BadInputException(localizedMessage);
369             //throw new BadInputException("Cannot get the information to view member.");
370
}
371
372         // Update statistics to make sure Admin can delete this user
373
// with the actual memberPostCount
374
try {
375             StatisticsUtil.updateMemberStatistics(memberID);
376         } catch (ObjectNotFoundException e) {
377             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
378             throw new ObjectNotFoundException(localizedMessage);
379         }
380
381         int toMessageCount = 0;
382         int fromMessageCount = 0;
383
384         String JavaDoc toDay = GenericParamUtil.getParameter(request, "toDay", false);
385         String JavaDoc toMonth = GenericParamUtil.getParameter(request, "toMonth", false);
386         String JavaDoc toYear = GenericParamUtil.getParameter(request, "toYear", false);
387
388         String JavaDoc fromDay = GenericParamUtil.getParameter(request, "fromDay", false);
389         String JavaDoc fromMonth = GenericParamUtil.getParameter(request, "fromMonth", false);
390         String JavaDoc fromYear = GenericParamUtil.getParameter(request, "fromYear", false);
391
392         if ( !toDay.equals("") &&
393              !toMonth.equals("") &&
394              !toYear.equals("") &&
395              !fromDay.equals("") &&
396              !fromMonth.equals("") &&
397              !fromYear.equals("")) {
398             Timestamp JavaDoc from = new Timestamp JavaDoc(GenericParamUtil.getParameterDate(request, "fromDay", "fromMonth", "fromYear").getTime());
399             Timestamp JavaDoc to = new Timestamp JavaDoc(GenericParamUtil.getParameterDate(request, "toDay", "toMonth", "toYear").getTime());
400
401             toMessageCount = DAOFactory.getMessageStatisticsDAO().getNumberOfBeans_inToID_supportTimestamp(memberID, from, to);
402             fromMessageCount = DAOFactory.getMessageStatisticsDAO().getNumberOfBeans_inFromID_supportTimestamp(memberID, from, to);
403         } else {
404             toMessageCount = DAOFactory.getMessageStatisticsDAO().getNumberOfBeans_inToID(memberID);
405             fromMessageCount = DAOFactory.getMessageStatisticsDAO().getNumberOfBeans_inFromID(memberID);
406         }
407
408         MemberBean memberBean = null;
409         try {
410             // minhnn: dont use getMember_forViewCurrentMember because it does not support firstIP
411
memberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
412         } catch (ObjectNotFoundException e) {
413             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
414             throw new ObjectNotFoundException(localizedMessage);
415         }
416         int watchCount = DAOFactory.getWatchDAO().getNumberOfWatches_forMember(memberID);
417
418         request.setAttribute("MemberBean", memberBean);
419         request.setAttribute("WatchCount", new Integer JavaDoc(watchCount));
420
421         request.setAttribute("ToMessageCount", new Integer JavaDoc(toMessageCount));
422         request.setAttribute("FromMessageCount", new Integer JavaDoc(fromMessageCount));
423         request.setAttribute("toDay", toDay);
424         request.setAttribute("toMonth", toMonth);
425         request.setAttribute("toYear", toYear);
426         request.setAttribute("fromDay", fromDay);
427         request.setAttribute("fromMonth", fromMonth);
428         request.setAttribute("fromYear", toYear);
429     }
430
431     public void processUpdateMemberTitle(GenericRequest request, GenericResponse response)
432         throws BadInputException, DatabaseException, ObjectNotFoundException,
433         AuthenticationException, AssertionException {
434
435         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
436         MVNForumPermission permission = onlineUser.getPermission();
437         permission.ensureCanAdminSystem();
438
439         MyUtil.saveVNTyperMode(request, response);
440
441         // primary key column(s)
442
int memberID = GenericParamUtil.getParameterInt(request, "MemberID");
443
444         // column(s) to update
445
String JavaDoc memberTitle = GenericParamUtil.getParameterSafe(request, "MemberTitle", false);
446         Locale locale = I18nUtil.getLocaleInRequest(request);
447         try {
448             DAOFactory.getMemberDAO().updateTitle(memberID, memberTitle);
449         } catch (ObjectNotFoundException e) {
450             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
451             throw new ObjectNotFoundException(localizedMessage);
452         }
453     }
454
455     public void processResetMemberSignature(GenericRequest request)
456         throws BadInputException, DatabaseException, ObjectNotFoundException,
457         AuthenticationException, AssertionException {
458
459         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
460         MVNForumPermission permission = onlineUser.getPermission();
461         permission.ensureCanAdminSystem();
462         Locale locale = I18nUtil.getLocaleInRequest(request);
463         int memberID = GenericParamUtil.getParameterInt(request, "memberid");
464         try {
465             DAOFactory.getMemberDAO().updateSignature(memberID, "");
466         } catch (ObjectNotFoundException e) {
467             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
468             throw new ObjectNotFoundException(localizedMessage);
469         }
470
471         request.setAttribute("MemberID", new Integer JavaDoc(memberID));
472     }
473
474     public void processResetMemberAvatar(GenericRequest request)
475         throws BadInputException, DatabaseException, ObjectNotFoundException,
476         AuthenticationException, AssertionException {
477
478         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
479         MVNForumPermission permission = onlineUser.getPermission();
480         permission.ensureCanAdminSystem();
481
482         Locale locale = I18nUtil.getLocaleInRequest(request);
483         int memberID = GenericParamUtil.getParameterInt(request, "memberid");
484         try {
485             DAOFactory.getMemberDAO().updateAvatar(memberID, "");
486         } catch (ObjectNotFoundException e) {
487             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
488             throw new ObjectNotFoundException(localizedMessage);
489         }
490
491         request.setAttribute("MemberID", new Integer JavaDoc(memberID));
492     }
493
494     public void processResetMemberActivation(GenericRequest request)
495         throws BadInputException, DatabaseException, ObjectNotFoundException,
496         AuthenticationException, AssertionException {
497
498         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
499         MVNForumPermission permission = onlineUser.getPermission();
500         permission.ensureCanAdminSystem();
501
502         Locale locale = I18nUtil.getLocaleInRequest(request);
503         int memberID = GenericParamUtil.getParameterInt(request, "memberid");
504         try {
505             DAOFactory.getMemberDAO().updateActivateCode(memberID, "");
506         } catch (ObjectNotFoundException e) {
507             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
508             throw new ObjectNotFoundException(localizedMessage);
509         }
510
511         request.setAttribute("MemberID", new Integer JavaDoc(memberID));
512     }
513
514     public void processDeleteMember(GenericRequest request)
515         throws BadInputException, DatabaseException, ObjectNotFoundException,
516         AuthenticationException, AssertionException {
517
518         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
519         MVNForumPermission permission = onlineUser.getPermission();
520         permission.ensureCanAdminSystem();
521
522         Locale locale = I18nUtil.getLocaleInRequest(request);
523
524         // now check the password
525
MyUtil.ensureCorrectCurrentPassword(request);
526
527         int memberID = GenericParamUtil.getParameterInt(request, "memberid");
528         if ((memberID==MVNForumConstant.MEMBER_ID_OF_ADMIN) ||
529             (memberID==0) ||
530             (memberID==MVNForumConstant.MEMBER_ID_OF_GUEST)) {
531             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_admin_or_guest");
532             throw new BadInputException(localizedMessage);
533             //throw new BadInputException("Cannot delete default Admin and Guest users.");
534
}
535
536         boolean deleteSentMessages = GenericParamUtil.getParameterBoolean(request, "deletesentmessages");
537
538         MemberBean memberBean = null;
539         try {
540             memberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
541         } catch (ObjectNotFoundException e) {
542             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
543             throw new ObjectNotFoundException(localizedMessage);
544         }
545
546         MemberWebHandler.deleteMember(memberBean, deleteSentMessages, /*context*/request, locale);
547
548         /*
549         if (memberBean.getMemberPostCount() > 0) {
550             String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_member_has_a_post");
551             throw new BadInputException(localizedMessage);
552             //throw new BadInputException("Cannot delete member that has posted at least one post.");
553         }
554
555         // first, we delete uploaded image if there is one
556         String memberName = memberBean.getMemberName();
557         StringBuffer bufferPicFile = new StringBuffer(256);
558         bufferPicFile.append(context.getRealPath(MVNForumGlobal.UPLOADED_AVATAR_DIR));
559         bufferPicFile.append(File.separatorChar).append(memberName).append(".jpg");
560         String picFile = bufferPicFile.toString();
561
562         log.debug("Delete avatar = " + picFile);
563         File file = new File(picFile);
564         file.delete();// we dont need to check the returned value
565
566         //@todo delete table Post/Thread/Attachment if we support delete posted user
567         DAOFactory.getWatchDAO().delete_inMember(memberID);
568         DAOFactory.getMemberForumDAO().delete_inMember(memberID);
569         DAOFactory.getMemberGroupDAO().delete_inMember(memberID);
570         DAOFactory.getMemberPermissionDAO().delete_inMember(memberID);
571         DAOFactory.getFavoriteThreadDAO().delete_inMember(memberID);
572
573         //Delete message, attachmessage, folder, message statistics stuff
574         PrivateMessageUtil.deleteMessageFoldersInDatabase(memberID);
575         DAOFactory.getMessageStatisticsDAO().delete_inMember(memberID);
576         if (deleteSentMessages) {
577             DAOFactory.getMessageDAO().deleteSenderMessages(memberID);
578         }
579
580         //Delete company stuff
581         if (MVNForumConfig.getEnableCompany()) {
582             DAOFactory.getMemberCompanyDAO().delete_inMember(memberID);
583             DAOFactory.getMemberTutorDAO().deleteMembers_inTutor(memberID);
584             try {
585                 DAOFactory.getMemberTutorDAO().delete(memberID);
586             } catch (ObjectNotFoundException ex) {
587                 //ignore
588             }
589         }
590
591         //Delete in primary table
592         DAOFactory.getMemberDAO().deleteByPrimaryKey(memberID);
593         MemberIndexer.scheduleDeleteMemberTask(memberID);
594         */

595     }
596
597     /**
598      * This method supports sorting base on many criteria
599      */

600     public void prepareShowUserManagement(GenericRequest request)
601         throws DatabaseException, AssertionException, BadInputException, AuthenticationException {
602
603         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
604         MVNForumPermission permission = onlineUser.getPermission();
605         permission.ensureCanAdminSystem();
606
607         Locale locale = I18nUtil.getLocaleInRequest(request);
608
609         // for sort and order stuff
610
String JavaDoc sort = GenericParamUtil.getParameter(request, "sort");
611         String JavaDoc order = GenericParamUtil.getParameter(request, "order");
612         if (sort.length() == 0) sort = "MemberCreationDate";
613         if (order.length()== 0) order = "DESC";
614
615         // we continue
616
int postsPerPage = onlineUser.getPostsPerPage();
617         int offset = 0;
618         try {
619             offset = GenericParamUtil.getParameterInt(request, "offset");
620         } catch (BadInputException e) {
621             // do nothing
622
}
623
624         int totalMembers = DAOFactory.getMemberDAO().getNumberOfMembers();
625         if (offset > totalMembers) {
626             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.offset_greater_than_total_rows");
627             throw new BadInputException(localizedMessage);
628             //throw new BadInputException("The offset is not allowed to be greater than total rows.");
629
}
630
631         Collection memberBeans = DAOFactory.getMemberDAO().getMembers_withSortSupport_limit(offset, postsPerPage, sort, order);
632         int enabledMembers = DAOFactory.getMemberDAO().getNumberOfMembers_inMemberStatus(MemberBean.MEMBER_STATUS_ENABLE);
633         int disabledMembers = DAOFactory.getMemberDAO().getNumberOfMembers_inMemberStatus(MemberBean.MEMBER_STATUS_DISABLE);
634         int activatedMembers = DAOFactory.getMemberDAO().getNumberOfMembers_inActivationStatus(true);
635         int nonactivatedMembers = DAOFactory.getMemberDAO().getNumberOfMembers_inActivationStatus(false);
636
637         if ((disabledMembers + enabledMembers) != totalMembers) {
638             // please do not localize this
639
throw new AssertionException("Assertion: (disabledMembers + enabledMembers) == totalMembers");
640         }
641         if ((activatedMembers + nonactivatedMembers) != totalMembers) {
642             // please do not localize this
643
throw new AssertionException("Assertion: (activatedMembers + nonactivatedMembers) == totalMembers");
644         }
645
646         request.setAttribute("MemberBeans", memberBeans);
647         request.setAttribute("TotalMembers", new Integer JavaDoc(totalMembers));
648         request.setAttribute("EnabledMembers", new Integer JavaDoc(enabledMembers));
649         request.setAttribute("DisabledMembers", new Integer JavaDoc(disabledMembers));
650         request.setAttribute("ActivatedMembers", new Integer JavaDoc(activatedMembers));
651         request.setAttribute("NonActivatedMembers", new Integer JavaDoc(nonactivatedMembers));
652         request.setAttribute("offset", new Integer JavaDoc(offset));
653     }
654
655     public void prepareListUserExpire(GenericRequest request)
656         throws DatabaseException, AssertionException, BadInputException, AuthenticationException {
657
658         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
659         MVNForumPermission permission = onlineUser.getPermission();
660         permission.ensureCanAdminSystem();
661
662         // for sort and order stuff
663
String JavaDoc sort = GenericParamUtil.getParameter(request, "sort");
664         String JavaDoc order = GenericParamUtil.getParameter(request, "order");
665         if (sort.length() == 0) sort = "MemberExpireDate";
666         if (order.length()== 0) order = "ASC";
667
668         // we continue
669
int postsPerPage = onlineUser.getPostsPerPage();
670         int offset = 0;
671         try {
672             offset = GenericParamUtil.getParameterInt(request, "offset");
673         } catch (BadInputException e) {
674             // do nothing
675
}
676         Timestamp JavaDoc expiresoonDate = DateUtil.getCurrentGMTTimestampExpiredDay(MVNForumConfig.getUserTutorExpireSoonDate());
677
678         int totalExpireMembers = DAOFactory.getMemberDAO().getNumberOfMembers_inExpire(expiresoonDate);
679         if (offset > totalExpireMembers) {
680             //@todo : localize me
681
throw new BadInputException("The offset is not allowed to be greater than total members.");
682         }
683
684         Collection expireMemberBeans = DAOFactory.getMemberDAO().getMembers_inExpire_limit(expiresoonDate, offset, postsPerPage, sort, order);
685
686         request.setAttribute("TotalMembers", new Integer JavaDoc(totalExpireMembers));
687         request.setAttribute("ExpireMemberBeans", expireMemberBeans);
688         request.setAttribute("offset", new Integer JavaDoc(offset));
689     }
690
691     public void updateMemberExpireProcess(GenericRequest request)
692         throws DatabaseException, BadInputException, ObjectNotFoundException,
693         AssertionException, AuthenticationException {
694
695         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
696         MVNForumPermission permission = onlineUser.getPermission();
697         permission.ensureCanAdminSystem();
698
699         //int expiredDays = MVNForumConfig.getExpireDateTutor();
700
String JavaDoc renew = GenericParamUtil.getParameter(request, "renew");
701         String JavaDoc disable = GenericParamUtil.getParameter(request, "disable");
702         String JavaDoc enable = GenericParamUtil.getParameter(request, "enable");
703         int expiredDays = GenericParamUtil.getParameterUnsignedInt(request, "addtime");
704
705         String JavaDoc[] checkList = request.getParameterValues("selectedmember");
706         if (checkList == null) return;
707
708         if (renew.equals("Renew")) {
709             //renew creation date and expire date
710
long offsetDate = expiredDays * DateUtil.DAY;
711             Timestamp JavaDoc now = DateUtil.getCurrentGMTTimestamp();
712             for (int i = 0; (checkList != null) && (i < checkList.length); i++) {
713                 int memberID = Integer.parseInt(checkList[i]);
714                 log.debug("Renew expiration date for MemberID = " + memberID);
715                 try {
716                     MemberBean memberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
717                     Timestamp JavaDoc expireDate = memberBean.getMemberExpireDate();
718                     if (expireDate == null) {
719                         expireDate = now;
720                     }
721                     Timestamp JavaDoc memberExpireDate = new Timestamp JavaDoc(expireDate.getTime() + offsetDate);
722                     DAOFactory.getMemberDAO().updateMember_expireDate(memberID, memberExpireDate);
723                 } catch (ObjectNotFoundException e) {
724                     Locale locale = I18nUtil.getLocaleInRequest(request);
725                     String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
726                     throw new ObjectNotFoundException(localizedMessage);
727                 }
728             }
729         } else if (disable.equals("Disable")) {
730             for (int i = 0; (checkList != null) && (i < checkList.length); i++) {
731                 int memberID = Integer.parseInt(checkList[i]);
732                 log.debug("Disable member with MemberID = " + memberID);
733                 try {
734                     DAOFactory.getMemberDAO().updateStatus(memberID, MemberBean.MEMBER_STATUS_DISABLE);
735                 } catch (ObjectNotFoundException e) {
736                     Locale locale = I18nUtil.getLocaleInRequest(request);
737                     String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
738                     throw new ObjectNotFoundException(localizedMessage);
739                 }
740             }
741         } else if (enable.equals("Enable")) {
742             for (int i = 0; (checkList != null) && (i < checkList.length); i++) {
743                 int memberID = Integer.parseInt(checkList[i]);
744                 log.debug("Enable member with MemberID = " + memberID);
745                 try {
746                     DAOFactory.getMemberDAO().updateStatus(memberID, MemberBean.MEMBER_STATUS_ENABLE);
747                 } catch (ObjectNotFoundException e) {
748                     Locale locale = I18nUtil.getLocaleInRequest(request);
749                     String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
750                     throw new ObjectNotFoundException(localizedMessage);
751                 }
752             }
753         }
754     }
755
756     public void processSearch(GenericRequest request)
757         throws BadInputException, IOException JavaDoc, DatabaseException, ObjectNotFoundException,
758         AuthenticationException, AssertionException {
759
760         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
761         MVNForumPermission permission = onlineUser.getPermission();
762         permission.ensureCanAdminSystem();
763
764         String JavaDoc memberNameKey = GenericParamUtil.getParameter(request, "membername", false);
765         String JavaDoc memberEmailKey = GenericParamUtil.getParameter(request, "email", false);
766         String JavaDoc memberLastNameKey = GenericParamUtil.getParameter(request, "lastname", false);
767         String JavaDoc memberFirstNameKey = GenericParamUtil.getParameter(request, "firstname", false);
768         String JavaDoc memberCountryKey = GenericParamUtil.getParameter(request, "country", false);
769
770         Locale locale = I18nUtil.getLocaleInRequest(request);
771
772         int defaultRows = onlineUser.getPostsPerPage();
773
774         int offset = GenericParamUtil.getParameterUnsignedInt(request, "offset", 0);
775         int rows = GenericParamUtil.getParameterUnsignedInt(request, "rows", defaultRows);
776         if (rows == 0) {
777             rows = defaultRows;// fix NullPointerException when rows = 0
778
}
779
780         // offset should be even when divide with rowsToReturn
781
offset = (offset / rows) * rows;
782
783         MemberSearchQuery query = new MemberSearchQuery();
784         boolean isNullKey = true;
785         if (memberNameKey.length() > 0) {
786             query.setMemberNameKey(memberNameKey);
787             isNullKey = false;
788         }
789         if (memberEmailKey.length() > 0) {
790             query.setMemberEmailKey(memberEmailKey);
791             isNullKey = false;
792         }
793         if (memberLastNameKey.length() > 0) {
794             query.setMemberLastNameKey(memberLastNameKey);
795             isNullKey = false;
796         }
797         if (memberFirstNameKey.length() > 0){
798             query.setMemberFirstNameKey(memberFirstNameKey);
799             isNullKey = false;
800         }
801         if (memberCountryKey.length() > 0) {
802             query.setCountry(memberCountryKey);
803             isNullKey = false;
804         }
805         if (isNullKey) {
806             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_search.key_is_null");
807             throw new BadInputException(localizedMessage);
808         }
809
810         int searchDate = GenericParamUtil.getParameterUnsignedInt(request, "date", MemberSearchQuery.SEARCH_ANY_DATE);
811         int searchBeforeAfter = GenericParamUtil.getParameterInt(request, "beforeafter", MemberSearchQuery.SEARCH_NEWER);
812
813         if ((searchDate != MemberSearchQuery.SEARCH_ANY_DATE) && (searchDate < 365 * 10)) { // 10 years
814
long deltaTime = DateUtil.DAY * searchDate;
815
816             Timestamp JavaDoc now = DateUtil.getCurrentGMTTimestamp();
817             Timestamp JavaDoc from = null;
818             Timestamp JavaDoc to = null;
819
820             long currentTime = now.getTime();
821
822             if (searchBeforeAfter == MemberSearchQuery.SEARCH_NEWER) {
823                 from = new Timestamp JavaDoc(currentTime - deltaTime);
824             } else {// older
825
to = new Timestamp JavaDoc(currentTime - deltaTime);
826             }
827
828             query.setFromDate(from);
829             query.setToDate(to);
830         }
831
832
833         query.searchDocuments(offset, rows);
834         int hitCount = query.getHitCount();
835         Collection result = query.getMemberResult();
836
837         if (offset > hitCount) {
838             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.offset_greater_than_total_rows");
839             throw new BadInputException(localizedMessage);
840         }
841
842         request.setAttribute("offset", new Integer JavaDoc(offset));
843         request.setAttribute("rows", new Integer JavaDoc(rows));
844         request.setAttribute("TotalMembers", new Integer JavaDoc(hitCount));
845         request.setAttribute("MemberBeans", result);
846         request.setAttribute("MemberName", memberNameKey);
847         request.setAttribute("MemberEmail", memberEmailKey); //strCompanyAddress);
848
request.setAttribute("DateOption", new Integer JavaDoc(searchDate)); //strCompanyCreationDate);
849
request.setAttribute("BeforeAfterOption", new Integer JavaDoc(searchBeforeAfter)); //strCompanyModifiedDate);
850
}
851
852     public void preparePermissionSummary(GenericRequest request )
853         throws DatabaseException, ObjectNotFoundException, AuthenticationException, AssertionException {
854
855         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
856         MVNForumPermission permission = onlineUser.getPermission();
857         permission.ensureCanAdminSystem();
858
859         Collection authorizedMembers = DAOFactory.getMemberDAO().getAuthorizedMembers();
860         Collection forumsAuthorizedMembers = DAOFactory.getMemberDAO().getForumsAuthorizedMembers();
861
862         Collection distinctAuthorizedGroups = DAOFactory.getGroupPermissionDAO().getDistinctGroups();
863         Collection authorizedGroups = new ArrayList(distinctAuthorizedGroups.size());
864         for (Iterator iter = distinctAuthorizedGroups.iterator(); iter.hasNext(); ) {
865             GroupPermissionBean item = (GroupPermissionBean) iter.next();
866             GroupsBean groupBean = DAOFactory.getGroupsDAO().getGroup(item.getGroupID());
867             authorizedGroups.add(groupBean);
868         }
869
870         Collection distinctForumAuthorizedGroups = DAOFactory.getGroupForumDAO().getDistinctGroups();
871         Collection forumAuthorizedGroups = new ArrayList(distinctForumAuthorizedGroups.size());
872         for (Iterator iter = distinctForumAuthorizedGroups.iterator(); iter.hasNext(); ) {
873             GroupForumBean item = (GroupForumBean) iter.next();
874             GroupsBean groupBean = DAOFactory.getGroupsDAO().getGroup(item.getGroupID());
875             forumAuthorizedGroups.add(groupBean);
876         }
877
878         request.setAttribute("AuthorizedMembers", authorizedMembers);
879         request.setAttribute("ForumsAuthorizedMembers", forumsAuthorizedMembers);
880         request.setAttribute("AuthorizedGroups", authorizedGroups);
881         request.setAttribute("ForumAuthorizedGroups", forumAuthorizedGroups);
882     }
883
884     public void prepareViewPermission(GenericRequest request )
885         throws AuthenticationException, BadInputException, DatabaseException, AssertionException, ObjectNotFoundException {
886
887         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
888         MVNForumPermission permission = onlineUser.getPermission();
889         permission.ensureCanAdminSystem();
890
891         int memberID = GenericParamUtil.getParameterInt(request, "memberid");
892
893         MemberBean member = null;
894         try {
895             member = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
896         } catch (ObjectNotFoundException e) {
897             Locale locale = I18nUtil.getLocaleInRequest(request);
898             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
899             throw new ObjectNotFoundException(localizedMessage);
900         }
901         MVNForumPermission thisPermission = MVNForumPermissionFactory.getAuthenticatedPermission(memberID);
902         Collection groups = DAOFactory.getGroupsDAO().getMyGroups(memberID);
903
904         request.setAttribute("MemberBean", member);
905         request.setAttribute("MemberGroups", groups);
906         request.setAttribute("Permissions", thisPermission);
907     }
908
909     public void prepareChangePassword(GenericRequest request )
910         throws DatabaseException, AuthenticationException, AssertionException,
911         ObjectNotFoundException, BadInputException {
912
913         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
914         MVNForumPermission permission = onlineUser.getPermission();
915         permission.ensureCanAdminSystem();
916
917         Locale locale = I18nUtil.getLocaleInRequest(request);
918         if ( ! MVNForumConfig.getEnableAdminCanChangePassword()) {
919             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.admin_can_change_password_is_disabled");
920             throw new AssertionException(localizedMessage);
921             //throw new AssertionException("Admin Cannot change the user password. This feature is disabled by administrator");
922
}
923         int memberID = GenericParamUtil.getParameterInt(request, "memberid");
924
925         if ( memberID == MVNForumConstant.MEMBER_ID_OF_ADMIN ) {
926             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.cannot_change_root_password");
927             throw new AssertionException(localizedMessage);
928         }
929         MemberBean memberBean = null;
930         try {
931             memberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
932         } catch (ObjectNotFoundException e) {
933             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
934             throw new ObjectNotFoundException(localizedMessage);
935         }
936
937         request.setAttribute("MemberBean", memberBean);
938     }
939
940     public void processChangePassword(GenericRequest request )
941         throws DatabaseException, AuthenticationException, AssertionException,
942         ObjectNotFoundException, BadInputException {
943
944         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
945         MVNForumPermission permission = onlineUser.getPermission();
946         permission.ensureCanAdminSystem();
947
948         Locale locale = I18nUtil.getLocaleInRequest(request);
949
950         if ( ! MVNForumConfig.getEnableAdminCanChangePassword()) {
951             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.admin_can_change_password_is_disabled");
952             throw new AssertionException(localizedMessage);
953             //throw new AssertionException("Admin Cannot change the user password. This feature is disabled by administrator");
954
}
955
956         int memberID = GenericParamUtil.getParameterInt(request, "memberid");
957
958         if ( memberID == MVNForumConstant.MEMBER_ID_OF_ADMIN ) {
959             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.cannot_change_root_password");
960             throw new AssertionException(localizedMessage);
961         }
962
963         // now check the password
964
MyUtil.ensureCorrectCurrentPassword(request);
965
966         String JavaDoc password = GenericParamUtil.getParameterPassword(request, "MemberMatkhau", 3, 0);
967         String JavaDoc confirmword = GenericParamUtil.getParameterPassword(request, "MemberMatkhauConfirm", 3, 0);
968         if (!password.equals(confirmword)) {
969             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.confirmed_password_is_not_match");
970             throw new BadInputException(localizedMessage);
971             //throw new BadInputException("Password and confirmed password are not the same, please try again.");
972
}
973         password = Encoder.getMD5_Base64(password);
974
975         try {
976             DAOFactory.getMemberDAO().updatePassword(memberID, password);
977         } catch (ObjectNotFoundException e) {
978             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
979             throw new ObjectNotFoundException(localizedMessage);
980         }
981
982         request.setAttribute("MemberID", new Integer JavaDoc(memberID));
983     }
984
985     public void prepareDeleteNonActivatedNoPostMembers(GenericRequest request)
986         throws DatabaseException, AuthenticationException,
987         AssertionException, BadInputException {
988
989         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
990         MVNForumPermission permission = onlineUser.getPermission();
991         permission.ensureCanAdminSystem();
992
993         int days = GenericParamUtil.getParameterUnsignedInt(request, "days");
994
995         long delta = days * DateUtil.DAY;
996         Timestamp JavaDoc before = new Timestamp JavaDoc(DateUtil.getCurrentGMTTimestamp().getTime() - delta);
997
998         Collection members = DAOFactory.getMemberDAO().getNonActivatedNoPostMembers(before);
999
1000        request.setAttribute("DeleteMembers", members);
1001    }
1002
1003    public void processDeleteNonActivatedNoPostMembers(/*ServletContext context, */GenericRequest request)
1004        throws DatabaseException, ObjectNotFoundException, BadInputException,
1005        AuthenticationException, AssertionException {
1006
1007        OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
1008        MVNForumPermission permission = onlineUser.getPermission();
1009        permission.ensureCanAdminSystem();
1010
1011        Locale locale = I18nUtil.getLocaleInRequest(request);
1012
1013        // now check the password
1014
MyUtil.ensureCorrectCurrentPassword(request);
1015
1016        int days = GenericParamUtil.getParameterUnsignedInt(request, "days");
1017
1018        boolean deleteMessages = GenericParamUtil.getParameterBoolean(request, "deletesentmessages");
1019
1020        long delta = days * DateUtil.DAY;
1021        Timestamp JavaDoc before = new Timestamp JavaDoc(DateUtil.getCurrentGMTTimestamp().getTime() - delta);
1022
1023        Collection members = DAOFactory.getMemberDAO().getNonActivatedNoPostMembers(before);
1024
1025        int deletedMembersCount = 0;
1026        for (Iterator iterator = members.iterator(); iterator.hasNext(); ) {
1027            MemberBean member = (MemberBean) iterator.next();
1028            if ((member.getMemberID() != 0) && ( MyUtil.isRootAdminID(member.getMemberID()) == false)) {
1029                MemberWebHandler.deleteMember(member, deleteMessages,/* context */ request, locale);
1030                deletedMembersCount++;
1031            }
1032        }
1033        log.debug("Total: Deleted " + deletedMembersCount + " members");
1034
1035        request.setAttribute("DeletedMembersCount", new Integer JavaDoc(deletedMembersCount));
1036    }
1037
1038    public static void deleteMember(MemberBean memberBean, boolean deleteSentMessages, /*ServletContext context*/ GenericRequest request, Locale locale)
1039        throws DatabaseException, BadInputException, ObjectNotFoundException, AssertionException {
1040
1041        int memberID = memberBean.getMemberID();
1042        if ((memberID==MVNForumConstant.MEMBER_ID_OF_ADMIN) ||
1043            (memberID==0) ||
1044            (memberID==MVNForumConstant.MEMBER_ID_OF_GUEST)) {
1045            String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_admin_or_guest");
1046            throw new BadInputException(localizedMessage);
1047            //throw new BadInputException("Cannot delete default Admin and Guest users.");
1048
}
1049
1050        // check in the MemberBean
1051
if (memberBean.getMemberPostCount() > 0) {
1052            String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_member_has_a_post");
1053            throw new BadInputException(localizedMessage);
1054            //throw new BadInputException("Cannot delete member that has posted at least one post.");
1055
}
1056
1057        // Real checking in table post
1058
if (DAOFactory.getPostDAO().getNumberOfPosts_inMember(memberID) > 0) {
1059            String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_member_has_a_post");
1060            throw new BadInputException(localizedMessage);
1061            //throw new BadInputException("Cannot delete member that has posted at least one post.");
1062
}
1063
1064        // first, we delete uploaded image if there is one
1065
String JavaDoc memberName = memberBean.getMemberName();
1066
1067        log.info("About to delete member with login = " + memberName + " and id = " + memberID + " with option deleteSentMessages = " + deleteSentMessages);
1068
1069        StringBuffer JavaDoc bufferPicFile = new StringBuffer JavaDoc(256);
1070        //bufferPicFile.append(context.getRealPath(MVNForumGlobal.UPLOADED_AVATAR_DIR));
1071
bufferPicFile.append(request.getRealPath(MVNForumGlobal.UPLOADED_AVATAR_DIR));
1072        bufferPicFile.append(File.separatorChar).append(memberName).append(".jpg");
1073        String JavaDoc picFile = bufferPicFile.toString();
1074
1075        log.debug("Delete avatar = " + picFile);
1076        File JavaDoc file = new File JavaDoc(picFile);
1077        file.delete();// we dont need to check the returned value
1078

1079        //@todo delete table Post/Thread/Attachment if we support delete posted user
1080
DAOFactory.getWatchDAO().delete_inMember(memberID);
1081        DAOFactory.getMemberForumDAO().delete_inMember(memberID);
1082        DAOFactory.getMemberGroupDAO().delete_inMember(memberID);
1083        DAOFactory.getMemberPermissionDAO().delete_inMember(memberID);
1084        DAOFactory.getFavoriteThreadDAO().delete_inMember(memberID);
1085
1086        //Delete message, attachmessage, folder, message statistics stuff
1087
PrivateMessageUtil.deleteMessageFoldersInDatabase(memberID);
1088        DAOFactory.getMessageStatisticsDAO().delete_inMember(memberID);
1089        if (deleteSentMessages) {
1090            DAOFactory.getMessageDAO().deleteSenderMessages(memberID);
1091        }
1092
1093        //Delete company stuff
1094
if (MVNForumConfig.getEnableCompany()) {
1095            DAOFactory.getMemberCompanyDAO().delete_inMember(memberID);
1096            DAOFactory.getMemberTutorDAO().deleteMembers_inTutor(memberID);
1097            try {
1098                DAOFactory.getMemberTutorDAO().delete(memberID);
1099            } catch (ObjectNotFoundException ex) {
1100                //ignore
1101
}
1102        }
1103
1104        //Delete in primary table
1105
DAOFactory.getMemberDAO().deleteByPrimaryKey(memberID);
1106        MemberIndexer.scheduleDeleteMemberTask(memberID);
1107    }
1108}
1109
Popular Tags