📄 common.java
字号:
package cn.jsprun.utils;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TimeZone;
import java.util.TreeMap;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.MatchResult;
import org.apache.oro.text.regex.Perl5Compiler;
import org.apache.oro.text.regex.Perl5Matcher;
import org.apache.struts.upload.FormFile;
import cn.jsprun.domain.Members;
import cn.jsprun.domain.Usergroups;
import cn.jsprun.foreg.service.PostOperating;
import cn.jsprun.foreg.utils.CookieUtil;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.service.user.MemberService;
public final class Common {
private static DataBaseService dataBaseService=(DataBaseService) BeanFactory.getBean("dataBaseService");
private static MemberService memberService =((MemberService) BeanFactory.getBean("memberService"));
private static PostOperating postOperating = (PostOperating)BeanFactory.getBean("postOperating");
private static DataParse dataParse=((DataParse)BeanFactory.getBean("dataParse"));
private static FtpUtils ftputil=((FtpUtils)BeanFactory.getBean("ftputils"));
public static Random random = new Random();
public static String periodscheck(String banperiods,byte disableperiodctrl,float timeoffset)
{
if(disableperiodctrl==0&&banperiods!=null&&!banperiods.equals(""))
{
float now=Float.valueOf(new SimpleDateFormat("HH.mm").format((Common.time()+timeoffset*3600)*1000l));
String[] periods=banperiods.split("\r\n");
for (String period : periods) {
period=period.trim().replaceAll(":", ".");
String[] periodTime=period.split("-");
if(periodTime!=null&&periodTime.length>=2)
{
float periodbegin=Float.valueOf(periodTime[0]);
float periodend=Float.valueOf(periodTime[1]);
if((periodbegin > periodend && (now >= periodbegin || now < periodend)) || (periodbegin < periodend && now >= periodbegin && now < periodend)) {
return "对不起,管理员设置了每日 "+banperiods.replaceAll("\r\n", ",")+" 不能进行此操作或访问此页面,请其他时间再试。";
}
}
}
}
return null;
}
public static boolean datecheck(String ymd){
return datecheck(ymd,"-");
}
public static boolean datecheck(String ymd,String sep){
if(ymd!=null&&ymd.length()!=0){
if(ymd.matches("^\\d{1,4}"+sep+"\\d{1,2}"+sep+"\\d{1,2}$")){
String[] dates=ymd.split("-");
return checkdate(Integer.valueOf(dates[0]),Integer.valueOf(dates[1]),Integer.valueOf(dates[2]));
}
}
return false;
}
public static boolean checkdate(int year,int month,int day){
if(year<1||year>9999||month<1||month>12||day<1){
return false;
}
Calendar calendar = getGMTCalendar();
calendar.set(year,month-1,1);
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
if(day>maxDay){
return false;
}
return true;
}
public static String dateformat(String ymd){
return dateformat(ymd,"yyyy-MM-dd");
}
public static String dateformat(String ymd,String formattype){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formattype);
try {
return simpleDateFormat.format(simpleDateFormat.parse(ymd));
} catch (ParseException e) {
e.printStackTrace();
return "";
}
}
public static boolean isEmail(String email) {
return email!=null&&email.length() > 6&& email.matches("^[\\w\\-\\.]+@[\\w\\-\\.]+(\\.\\w+)+$");
}
public static boolean forum(Map<String, String> forum,String hideprivate,short groupid,Integer lastvisit, String extgroupids,Map<String, Map<String, String>> lastposts,SimpleDateFormat sdf,int timeoffset,int rewritestatus) {
String viewperm = forum.get("viewperm");
if ("".equals(viewperm) || !"".equals(viewperm)&& forumperm(viewperm,groupid,extgroupids)|| forum.get("allowview") != null) {
forum.put("permission", "2");
} else if (hideprivate!=null&&hideprivate.equals("0")) {
forum.put("permission", "1");
} else {
return false;
}
boolean spaceurlurl=(rewritestatus & 4)>0;
boolean forumdisplayurl=(rewritestatus & 1)>0;
String icon=forum.get("icon");
if (!"".equals(icon)) {
if (forum.get("icon").indexOf(",")>=0) {
String[] flash = forum.get("icon").split(",");
if(flash.length==3){
if(forumdisplayurl){
forum.put("icon","<a href=\"forum-"+ forum.get("fid")+ "-1.html\"><embed style=\"margin-right: 10px\" src=\""+ flash[0].trim()+ "\" width=\""+ flash[1].trim()+ "\" height=\""+ flash[2].trim()+ "\" type=\"application/x-shockwave-flash\" align=\"left\"></embed></a>");
}else{
forum.put("icon","<a href=\"forumdisplay.jsp?fid="+ forum.get("fid")+ "\"><embed style=\"margin-right: 10px\" src=\""+ flash[0].trim()+ "\" width=\""+ flash[1].trim()+ "\" height=\""+ flash[2].trim()+ "\" type=\"application/x-shockwave-flash\" align=\"left\"></embed></a>");
}
}
} else {
if(forumdisplayurl){
forum.put("icon", "<a href=\"forum-"+ forum.get("fid")+ "-1.html\"><img style=\"margin-right: 10px\" src=\""+ icon+ "\" align=\"left\" border=\"0\" /></a>");
}else{
forum.put("icon", "<a href=\"forumdisplay.jsp?fid="+ forum.get("fid")+ "\"><img style=\"margin-right: 10px\" src=\""+ icon+ "\" align=\"left\" border=\"0\" /></a>");
}
}
}
Map<String, String> lastpost = new HashMap<String, String>();
long dateline=0;
String lastpoststr = forum.get("lastpost").trim();
if (lastpoststr.length()>0) {
String[] obj = lastpoststr.split("\t");
dateline=Long.valueOf(obj[2]);
lastpost.put("tid", obj[0]);
lastpost.put("subject", obj[1]);
lastpost.put("dateline", Common.gmdate(sdf, (int)(dateline+timeoffset)));
lastpost.put("author", obj[3]);
}else{
lastpost.put("tid", "0");
lastpost.put("subject", "");
lastpost.put("dateline", "0");
lastpost.put("author", "");
}
forum.put("folder", lastvisit!= null&& lastvisit < dateline ? " class='new'" : "");
if (Integer.valueOf(lastpost.get("tid")) > 0) {
String author=lastpost.get("author");
if (!"".equals(author)) {
if(spaceurlurl){
lastpost.put("author", "<a href=\"space-username-"+ Common.encode(author) + ".html\">"+ author + "</a>");
}else{
lastpost.put("author", "<a href=\"space.jsp?username="+ Common.encode(author) + "\">"+ author + "</a>");
}
}
lastposts.put(forum.get("fid"), lastpost);
} else {
lastposts.put(forum.get("fid"), null);
}
lastpost=null;
forum.put("moderators", moddisplay(forum.get("moderators"),"flat",false,spaceurlurl));
String subforums=forum.get("subforums");
if (subforums!= null&& !subforums.equals("")) {
forum.put("subforums", subforums);
}
return true;
}
public static String moddisplay(String moderator, String type, Boolean inherit,boolean urlstatic) {
StringBuffer modlist = new StringBuffer();
if ("selectbox".equals(type)) {
if (moderator != null && !"".equals(moderator)) {
String[] moderators = moderator.split("\t");
for (String obj : moderators) {
if(urlstatic){
modlist.append("<li><a href=\"space-username-" + Common.encode(obj)+ ".html\">" + (inherit ? "<strong>" + obj + "</strong>" : obj) + "</a></li>");
}else{
modlist.append("<li><a href=\"space.jsp?username=" + Common.encode(obj)+ "\">" + (inherit ? "<strong>" + obj + "</strong>" : obj) + "</a></li>");
}
}
}
return modlist+"";
} else {
if (moderator != null && !"".equals(moderator)) {
String[] moderators = moderator.split("\t");
for (String obj : moderators) {
if(urlstatic){
modlist.append("<a class=\"notabs\" href=\"space-username-"+ Common.encode(obj) + ".html\">"+ (inherit ? "<strong>" + obj + "</strong>" : obj)+ "</a>, ");
}else{
modlist.append("<a class=\"notabs\" href=\"space.jsp?username="+Common.encode(obj) + "\">"+ (inherit ? "<strong>" + obj + "</strong>" : obj)+ "</a>, ");
}
}
}
int length=modlist.length();
return length>=2?modlist.substring(0,length-2):"";
}
}
public static boolean forumperm(String permstr,short groupid,String extgroupid) {
StringBuffer groupidarray = new StringBuffer();
groupidarray.append(groupid);
if (extgroupid != null && extgroupid.length() > 0) {
String[] extgroupids = extgroupid.split("\t");
for (String obj : extgroupids) {
if(!obj.equals("")){
groupidarray.append("|" + obj);
}
}
}
return permstr.matches(".*(^|\t)(" + groupidarray + ")(\t|$).*");
}
public static boolean matches(String content, String regex) {
boolean flag=false;
try {
flag =new Perl5Matcher().contains(content, new Perl5Compiler().compile(regex));
} catch (MalformedPatternException e) {
e.printStackTrace();
}
return flag;
}
public static boolean ismoderator(short fid, Members member) {
if (member == null) {
return false;
}
if (member.getAdminid() == 1 || member.getAdminid() == 2) {
return true;
}
List<Map<String, String>> modertar = dataBaseService.executeQuery("select m.uid from jrun_moderators m where m.uid='"+ member.getUid() + "' AND m.fid=" + fid);
boolean flag=false;
if (modertar != null && modertar.size() > 0) {
flag= true;
}
modertar=null;
return flag;
}
@SuppressWarnings("unchecked")
public static Map<String,String> forumformulaperm(String formulaperm,Members member,boolean ismoderator,Map<Integer,Map<String,String>> extcredits)
{
if(ismoderator){
return null;
}
Map<Integer,String> formula=dataParse.characterParse(formulaperm, true);
if(formula.size()<2){
return null;
}
String formulamessage=formula.get(0);
if(!formulamessage.trim().equals(""))
{
if(member!=null){
List<Map<String,String>> members=dataBaseService.executeQuery("SELECT uid FROM jrun_members WHERE uid="+member.getUid()+" AND ("+formulamessage+")");
if(members!=null&&members.size()>0){
return null;
}
}
String usermsg=formula.get(1);
String[] usermsgs=usermsg.split("\\$_DSESSION");
List<String> usermsgList=new ArrayList<String>();
if(usermsgs!=null)
{
for (String obj : usermsgs) {
obj=obj.trim();
if(!obj.equals("")){
usermsgList.add(obj.substring(obj.indexOf("'")+1,obj.lastIndexOf("'")));
}
}
}
if(usermsgList!=null)
{
usermsg="";
if(member!=null){
Map<String,Object> usermsgValue=getValues(member,usermsgList,new HashMap<String, Object>());
for (String obj : usermsgList) {
Object value=usermsgValue.get(obj);
if(value!=null)
{
usermsg+=obj+" = "+value+" ";
}else{
usermsg +=obj+" = 0 ";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -