1 42 package com.mvnforum.common.kg; 43 44 import java.sql.Date ; 45 import java.sql.Timestamp ; 46 import java.util.Locale ; 47 48 import javax.servlet.http.HttpServletRequest ; 49 50 import com.mvnforum.*; 51 import com.mvnforum.auth.MVNForumPermission; 52 import com.mvnforum.common.SendMailUtil; 53 import com.mvnforum.db.DAOFactory; 54 import com.mvnforum.db.MemberBean; 55 import com.mvnforum.search.member.MemberIndexer; 56 import net.myvietnam.mvncore.exception.*; 57 import net.myvietnam.mvncore.interceptor.InterceptorService; 58 import net.myvietnam.mvncore.security.Encoder; 59 import net.myvietnam.mvncore.util.*; 60 import org.apache.commons.logging.Log; 61 import org.apache.commons.logging.LogFactory; 62 63 72 public class KGUtils { 73 74 public static final String KG_PREFIX = "kg_"; 75 76 public static final int KG_FORUM_ADMIN_GROUP = 4; 77 78 private static Log log = LogFactory.getLog(KGUtils.class); 79 80 private KGUtils() { 81 } 82 83 public static void addNewMember(HttpServletRequest request, String memberName, String memberPassword, String memberEmail, Date memberBirthday) 84 throws BadInputException, ObjectNotFoundException, CreateException, DatabaseException, DuplicateKeyException, 85 ForeignKeyNotFoundException, InterceptorException { 86 87 Locale locale = I18nUtil.getLocaleInRequest(request); 88 89 Timestamp now = DateUtil.getCurrentGMTTimestamp(); 90 91 memberName = KG_PREFIX + memberName; 92 StringUtil.checkGoodName(memberName); 93 if (memberName.length() > MVNForumGlobal.MAX_MEMBER_LOGIN_LENGTH) { 94 String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.member_name_too_long"); 95 throw new BadInputException(localizedMessage); 96 } 98 99 memberPassword = Encoder.getMD5_Base64(memberPassword); 100 101 if (memberEmail.length() > MVNForumGlobal.MAX_MEMBER_EMAIL_LENGTH) { 102 String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.member_email_too_long"); 103 throw new BadInputException(localizedMessage); 104 } 106 String memberFirstEmail = memberEmail; 107 InterceptorService.getInstance().validateMail(memberFirstEmail); 108 109 int memberEmailVisible = MemberBean.MEMBER_EMAIL_INVISIBLE; 110 int memberNameVisible = MemberBean.MEMBER_NAME_VISIBLE; 111 String memberFirstIP = request.getRemoteAddr(); 112 String memberLastIP = memberFirstIP; 113 int memberOption = 0; int memberStatus = 0; String memberActivateCode = ""; int memberMessageOption = 0; int memberPostsPerPage = 10; if (memberBirthday == null) { 119 memberBirthday = new java.sql.Date (now.getTime()); 120 } 121 Timestamp memberCreationDate= now; 122 Timestamp memberModifiedDate= now; 123 Timestamp memberExpireDate = memberCreationDate; if (MVNForumConfig.getEnableCompany()) { 125 memberExpireDate = DateUtil.getCurrentGMTTimestampExpiredDay(MVNForumConfig.getExpireDateTutor()); 126 } 127 128 DAOFactory.getMemberDAO().create(memberName, memberPassword, memberFirstEmail, 129 memberEmail, memberEmailVisible, memberNameVisible, 130 memberFirstIP, memberLastIP, 0, 131 0, memberCreationDate, memberModifiedDate, memberExpireDate, 132 now, memberOption, memberStatus, 133 memberActivateCode, "", 0, 134 memberMessageOption, memberPostsPerPage, 0, 135 0, 0, 0, 136 "", 0, "", 137 "", "", "", 138 " ", " ", 1, 139 memberBirthday, "", "", 140 "", "", "", 141 "", "", "", 142 "", "", "", 143 "", "", "", 144 ""); 145 146 int memberID = DAOFactory.getMemberDAO().getMemberIDFromMemberName(memberName); 148 int folderStatus = 0; 149 int folderOption = 0; 150 int folderType = 0; 151 DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_INBOX, memberID, 0, folderStatus, folderOption, folderType, now, now); 152 DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_DRAFT, memberID, 1, folderStatus, folderOption, folderType, now, now); 153 DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_SENT, memberID, 2, folderStatus, folderOption, folderType, now, now); 154 DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_TRASH, memberID, 3, folderStatus, folderOption, folderType, now, now); 155 156 MemberBean memberBean = null; 158 try { 159 memberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID); 160 } catch(ObjectNotFoundException ex) { 161 String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object [] {new Integer (memberID)}); 162 throw new ObjectNotFoundException(localizedMessage); 163 } 164 MemberIndexer.scheduleAddMemberTask(memberBean); 165 166 if (MVNForumConfig.getRequireActivation()) { 170 String serverName = ParamUtil.getServerPath(); try { 172 SendMailUtil.sendActivationCodeEmail(memberID, serverName); 173 } catch (Exception ex) { 174 log.error("Cannot send mail after registration!", ex); 175 request.setAttribute("mvnforum.mail.failed", "Cannot send activation email after registration!"); 176 } 178 } 179 } 180 181 public static void grantPermission(String memberName, int forumID) 182 throws DatabaseException, ObjectNotFoundException, ForeignKeyNotFoundException, DuplicateKeyException, CreateException { 183 184 memberName = KG_PREFIX + memberName; 185 int memberID = DAOFactory.getMemberDAO().getMemberIDFromMemberName(memberName); 186 DAOFactory.getMemberForumDAO().create(memberID, forumID, MVNForumPermission.PERMISSION_FORUM_MODERATOR); 187 } 188 189 public static void revokePermission(String memberName, int forumID) 190 throws DatabaseException, ObjectNotFoundException { 191 192 memberName = KG_PREFIX + memberName; 193 int memberID = DAOFactory.getMemberDAO().getMemberIDFromMemberName(memberName); 194 DAOFactory.getMemberForumDAO().delete(memberID, forumID, MVNForumPermission.PERMISSION_FORUM_MODERATOR); 195 } 196 197 public static void grantForumAdminPermission(String memberName) 198 throws DatabaseException, ForeignKeyNotFoundException, DuplicateKeyException, CreateException { 199 200 memberName = KG_PREFIX + memberName; 201 Timestamp now = DateUtil.getCurrentGMTTimestamp(); 202 DAOFactory.getMemberGroupDAO().create(KG_FORUM_ADMIN_GROUP, memberName, 0, now, now); 203 } 204 205 218 219 } 220 | Popular Tags |