📄 msgmgr.java
字号:
package com.redmoon.forum;import java.io.IOException;import java.util.*;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import cn.js.fan.util.*;import com.redmoon.forum.plugin.*;import com.redmoon.forum.plugin.base.*;import com.redmoon.kit.util.FileUpload;import org.apache.log4j.Logger;import com.redmoon.forum.plugin2.Plugin2Mgr;import com.redmoon.forum.plugin2.Plugin2Unit;import cn.js.fan.web.SkinUtil;import com.redmoon.kit.util.FileInfo;import cn.js.fan.web.Global;import java.io.File;import com.redmoon.forum.message.MessageDb;import com.redmoon.forum.person.UserPrivDb;import com.redmoon.forum.person.UserDb;import com.redmoon.forum.search.Indexer;import com.cloudwebsoft.framework.util.LogUtil;import com.cloudwebsoft.framework.db.JdbcTemplate;public class MsgMgr { boolean debug = true; Privilege privilege; Logger logger = Logger.getLogger(MsgMgr.class.getName()); public FileUpload fileUpload = null; public MsgMgr() { privilege = new Privilege(); } public FileUpload doUpload(ServletContext application, HttpServletRequest request) throws ErrMsgException { Config cfg = Config.getInstance(); int maxAttachmentSize = cfg.getIntProperty("forum.maxAttachmentSize"); int maxAllFileSize = cfg.getIntProperty("forum.maxAllFileSize"); MultiFileUpload fu = new MultiFileUpload(); String userName = privilege.getUser(request); UserPrivDb upd = new UserPrivDb(); if (privilege.isUserLogin(request)) { upd = upd.getUserPrivDb(userName); if (upd.getInt("is_default") == 0) { maxAttachmentSize = upd.getInt("attach_size"); } } fu.setMaxAllFileSize(maxAllFileSize); fu.setMaxFileSize(maxAttachmentSize); String[] ext = StrUtil.split(cfg.getProperty("forum.ext"), ","); if (ext!=null) fu.setValidExtname(ext); int ret = 0; try { ret = fu.doUpload(application, request); fileUpload = fu; if (ret!=FileUpload.RET_SUCCESS) { throw new ErrMsgException(fu.getErrMessage(request)); } } catch (IOException e) { logger.error("doUpload:" + e.getMessage()); throw new ErrMsgException(e.getMessage()); } String boardcode = StrUtil.getNullString(fu.getFieldValue("boardcode")); if (boardcode.equals("")) throw new ErrMsgException(LoadString(request, "err_need_board")); if (fu.getFiles().size()>0 || fu.getAttachments().size()>0) { if (!privilege.canUserUpload(request, boardcode)) { if (privilege.isUserLogin(request)) throw new ErrMsgException(SkinUtil.LoadString(request, "res.forum.MsgMgr", "err_upload_count_exceed") + upd.getAttachTodayUploadCount()); else { throw new ErrMsgException(SkinUtil.LoadString(request, "res.forum.MsgMgr", "err_upload_priv")); } } } boolean waterMarkImg = cfg.getBooleanProperty("forum.waterMarkImg"); boolean isNeedWatermark = true; if (cfg.getBooleanProperty("forum.waterMarkOptional")) isNeedWatermark = StrUtil.getNullStr(fu.getFieldValue("isNeedWaterMark")).equals("1"); if (waterMarkImg && isNeedWatermark) { Vector files = fu.getFiles(); com.redmoon.forum.ImageUtil iu = new com.redmoon.forum.ImageUtil(); iu.setRealPath(Global.getRealPath()); if (files.size() > 0) { Iterator ir = files.iterator(); while (ir.hasNext()) { FileInfo fi = (FileInfo) ir.next(); if (fi.getExt().equalsIgnoreCase("jpg") || fi.getExt().equalsIgnoreCase("jpeg")) { iu.WaterMark(fi); } } } } return fu; } public String[] uploadImg(ServletContext application, HttpServletRequest request) throws ErrMsgException { UserPrivDb upd = new UserPrivDb(); upd = upd.getUserPrivDb(privilege.getUser(request)); if (upd.getBoolean("attach_upload") && upd.getAttachTodayUploadCount()<upd.getInt("attach_day_count")) ; else { throw new ErrMsgException(SkinUtil.LoadString(request, "res.forum.MsgMgr", "err_upload_count_exceed") + upd.getAttachTodayUploadCount()); } Config cfg = Config.getInstance(); int maxAttachmentSize = cfg.getIntProperty("forum.maxAttachmentSize"); int maxAllFileSize = cfg.getIntProperty("forum.maxAllFileSize"); if (upd.getInt("is_default")==0) { maxAllFileSize = upd.getInt("attach_size"); } MultiFileUpload fu = new MultiFileUpload(); fu.setMaxAllFileSize(maxAllFileSize); fu.setMaxFileSize(maxAttachmentSize); String[] ext = new String[] {"jpg", "gif", "png", "bmp"}; if (ext!=null) fu.setValidExtname(ext); int ret = 0; try { ret = fu.doUpload(application, request); fileUpload = fu; if (ret!=fu.RET_SUCCESS) { throw new ErrMsgException(fu.getErrMessage(request)); } if (!cn.js.fan.security.Form.isTokenValid(request, fu)) throw new ErrMsgException(SkinUtil.LoadString(request, "res.forum.MsgMgr", "err_back_refresh")); if (fu.getFiles().size()==0) throw new ErrMsgException(SkinUtil.LoadString(request, "res.forum.MsgMgr", "err_upload_none")); } catch (IOException e) { logger.error("doUpload:" + e.getMessage()); throw new ErrMsgException(e.getMessage()); } boolean waterMarkImg = cfg.getBooleanProperty("forum.waterMarkImg"); boolean isNeedWatermark = true; if (cfg.getBooleanProperty("forum.waterMarkOptional")) isNeedWatermark = StrUtil.getNullStr(fu.getFieldValue("isNeedWaterMark")).equals("1"); if (waterMarkImg && isNeedWatermark) { Vector files = fu.getFiles(); com.redmoon.forum.ImageUtil iu = new com.redmoon.forum.ImageUtil(); iu.setRealPath(Global.getRealPath()); if (files.size() > 0) { Iterator ir = files.iterator(); if (ir.hasNext()) { FileInfo fi = (FileInfo) ir.next(); if (fi.getExt().equalsIgnoreCase("jpg") || fi.getExt().equalsIgnoreCase("jpeg")) { iu.WaterMark(fi); } } } } Calendar cal = Calendar.getInstance(); String year = "" + (cal.get(cal.YEAR)); String month = "" + (cal.get(cal.MONTH) + 1); String virtualpath = year + "/" + month; String filepath = Global.getRealPath() + Config.getInstance().getAttachmentPath() + "/" + virtualpath + "/"; File f = new File(filepath); if (!f.isDirectory()) { f.mkdirs(); } fu.setSavePath(filepath); String[] re = null; Vector v = fu.getFiles(); Iterator ir = v.iterator(); int orders = 0; String attachmentBasePath = request.getContextPath() + "/" + Config.getInstance().getAttachmentPath() + "/"; boolean isFtpUsed = cfg.getBooleanProperty("forum.ftpUsed"); FTPUtil ftp = new FTPUtil(); if (isFtpUsed && v.size()>0) { boolean retFtp = ftp.connect(cfg.getProperty( "forum.ftpServer"), cfg.getIntProperty("forum.ftpPort"), cfg.getProperty("forum.ftpUser"), cfg.getProperty("forum.ftpPwd"), true); if (!retFtp) { ftp.close(); throw new ErrMsgException(ftp.getReplyMessage()); } attachmentBasePath = cfg.getProperty("forum.ftpUrl"); if (attachmentBasePath.lastIndexOf("/")!=attachmentBasePath.length()-1) attachmentBasePath += "/"; } if (ir.hasNext()) { FileInfo fi = (FileInfo) ir.next(); String fname = FileUpload.getRandName() + "." + fi.getExt(); if (isFtpUsed) { try { ftp.storeFile(virtualpath + "/" + fname, fi.getTmpFilePath()); } catch (IOException e) { LogUtil.getLog(getClass()).error("AddNew: storeFile - " + e.getMessage()); } } else { fi.write(fu.getSavePath(), fname); } Attachment att = new Attachment(); att.setDiskName(fi.getDiskName()); att.setMsgId(att.TEMP_MSG_ID); att.setName(fi.getName()); att.setDiskName(fname); att.setOrders(orders); att.setVisualPath(virtualpath); att.setUploadDate(new java.util.Date()); att.setSize(fi.getSize()); att.setUserName(privilege.getUser(request)); att.setExt(fi.getExt()); att.setRemote(isFtpUsed); if (att.create()) { re = new String[2]; re[0] = "" + att.getId(); re[1] = attachmentBasePath + att.getVisualPath() + "/" + att.getDiskName(); upd.addAttachTodayUploadCount(1); } } if (isFtpUsed && v.size()>0) { ftp.close(); } return re; } public boolean AddNewWE(ServletContext application, HttpServletRequest request) throws ErrMsgException { MultiFileUpload fu = (MultiFileUpload)doUpload(application, request); String boardcode; boardcode = fu.getFieldValue("boardcode"); if (boardcode == null || boardcode.trim().equals("")) throw new ErrMsgException(LoadString(request, "err_need_board")); if (!privilege.canAddNew(request, boardcode, fu)) throw new ErrMsgException(SkinUtil.LoadString(request, SkinUtil.PVG_INVALID)); Leaf lf = new Leaf(); lf = lf.getLeaf(boardcode); if (lf==null || !lf.isLoaded()) throw new ErrMsgException(LoadString(request, "err_board_lost")); String pluginCode = StrUtil.getNullString(fu.getFieldValue("pluginCode")); boolean isPluginValid = false; PluginMgr pm = new PluginMgr(); Vector vplugin = pm.getAllPluginUnitOfBoard(boardcode); if (vplugin.size() > 0) { Iterator irplugin = vplugin.iterator(); while (irplugin.hasNext()) { PluginUnit pu = (PluginUnit) irplugin.next(); IPluginPrivilege ipp = pu.getPrivilege(); if (!ipp.canAddNew(request, boardcode, fu)) { String str = LoadString(request, "err_pvg_plugin"); str = str.replaceFirst("\\$p", pu.getName(request)); throw new ErrMsgException(str); } if (!pluginCode.equals("")) if (pu.getCode().equals(pluginCode)) isPluginValid = true; } } if (!pluginCode.equals("") && !isPluginValid) { throw new ErrMsgException(LoadString(request, "err_plugin_invalid")); } String name; if (privilege.isUserLogin(request)) name = privilege.getUser(request); else name = ""; MsgDb md = new MsgDb(); boolean re = false; try { re = md.AddNewWE(application, request, name, fu); } catch (ErrMsgException e) { throw e; } if (re) { id = md.getId(); String plugin2Code = StrUtil.getNullString(fu.getFieldValue("plugin2Code")).trim(); if (!plugin2Code.equals("")) { Plugin2Mgr p2m = new Plugin2Mgr(); Plugin2Unit p2u = p2m.getPlugin2Unit(plugin2Code); if (p2u!=null) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -