亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dlog_velocitytool.java

?? 個人Blog java編寫的Blog可以直接使用!
?? JAVA
字號:
/*
 *  DLOG_VelocityTool.java
 *  
 *  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
 *  (at your option) any later version.
 *
 *  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 Library 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.
 *  
 *  Author: Winter Lau
 *  http://dlog4j.sourceforge.net
 *  
 */
package com.liusoft.dlog4j.velocity;

import java.io.File;
import java.net.URL;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.digester.rss.Channel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.util.MessageResources;
import org.apache.velocity.tools.struts.StrutsUtils;
import org.hibernate.HibernateException;

import com.liusoft.dlog4j.SessionUserObject;
import com.liusoft.dlog4j.UserLoginManager;
import com.liusoft.dlog4j.beans.BookmarkBean;
import com.liusoft.dlog4j.beans.ExternalReferBean;
import com.liusoft.dlog4j.beans.LinkBean;
import com.liusoft.dlog4j.beans.MessageBean;
import com.liusoft.dlog4j.beans.SiteBean;
import com.liusoft.dlog4j.beans.UserBean;
import com.liusoft.dlog4j.dao.BookmarkDAO;
import com.liusoft.dlog4j.dao.ExternalReferDAO;
import com.liusoft.dlog4j.dao.GuestBookDAO;
import com.liusoft.dlog4j.dao.LinkDAO;
import com.liusoft.dlog4j.dao.MessageDAO;
import com.liusoft.dlog4j.dao.SiteDAO;
import com.liusoft.dlog4j.dao.UserDAO;
import com.liusoft.dlog4j.util.RequestUtils;
import com.liusoft.dlog4j.util.StringUtils;
import com.liusoft.dlog4j.xml.RSSFetcher;

/**
 * DLOG4J的Toolbox類
 * @author liudong
 */
public class DLOG_VelocityTool extends VelocityTool {

	private static Log log = LogFactory.getLog(DLOG_VelocityTool.class);		
	
	/**
	 * 該屬性對應velocity-toolbox.xml中的配置
	 */
	private boolean saveRefer = true;
	
	/**
	 * 列出某人的書簽
	 * @param user
	 * @return
	 */
	public List bookmarks(SessionUserObject user){
		if(user==null)
			return null;
		return BookmarkDAO.list(user.getId());
	}
	
	/**
	 * 獲取FCKUpload過程中生成的會話ID
	 * @return
	 */
	public String dlog_session_id(HttpServletRequest req){
		return RequestUtils.getDlogSessionId(req);
	}
	
	/**
	 * 獲取一個全路徑的文件名部分
	 * @param absolute_path
	 * @return
	 */
	public String file_name(String absolute_path){
		return StringUtils.substringAfterLast(absolute_path, File.separator);
	}
	
	/**
	 * 記錄外部網站引用
	 * @param site
	 * @param ref_id
	 * @param ref_type
	 * @param req
	 */
	public void save_refer(SiteBean site, int ref_id, int ref_type, HttpServletRequest req){
		if(!saveRefer)
			return ;
		String refer = RequestUtils.getHeader(req, "refer");
		if(StringUtils.isNotEmpty(refer)){
			URL url;
			try {
				url = new URL(refer);
				String host = url.getHost();
				if(!StringUtils.equals(req.getServerName(),host)){
					ExternalReferBean rbean = new ExternalReferBean();
					rbean.setUrl(refer);
					rbean.setClientAddr(req.getRemoteAddr());
					rbean.setReferTime(new Date());
					rbean.setRefId(ref_id);
					rbean.setRefType(ref_type);
					rbean.setSite(site);
					rbean.setHost(host);
					ExternalReferDAO.save(rbean);
				}
			} catch (Exception e) {
				log.error("Save refer failed, ip="+req.getRemoteAddr()+",refer="+refer, e);
			} finally {
				url = null;
			}
		}
	}
	
	/**
	 * 判斷用戶能否訪問某個網站
	 * @param site
	 * @param loginUser
	 * @return
	 */
	public boolean can_access_site(SiteBean site, UserBean loginUser){
		if(site == null)
			return true;
		boolean is_owner = is_owner(site, loginUser);
		if(is_owner)
			return true;
		switch(site.getAccessMode()){
		case SiteBean.ACCESS_MODE_PUBLIC:
			return true;
		case SiteBean.ACCESS_MODE_PRIVATE:
			return is_owner;
		case SiteBean.ACCESS_MODE_LOGIN:
			return loginUser!=null;
		case SiteBean.ACCESS_MODE_FRIEND:
			//判斷是否站長的好友
			return is_friend_of(site.getOwner().getId(),
					(loginUser != null) ? loginUser.getId() : -1);
		case SiteBean.ACCESS_MODE_SECRET_CODE:
			//判斷是否已經輸入密碼
			HttpSession ssn = request.getSession(false);
			if(ssn!=null){
				String pwd = (String)ssn.getAttribute("ACCESS_CODE_OF_SITE#"+site.getId());
				return pwd!=null && StringUtils.equals(site.getAccessCode(), pwd);
			}
		}
		return false;
	}
	
	/**
	 * 判斷兩個人是否為好友
	 * @param user1
	 * @param user2
	 * @return
	 */
	public boolean is_friend_of(int user1, int user2){
		if(user1<1 || user2<1)
			return false;
		return UserDAO.getFriend(user1, user2)!=null;
	}
	
	/**
	 * 生成客戶端安全識別碼
	 * @return
	 */
	public String gen_client_id(){
		return UserLoginManager.generateClientId(request, response);
	}
	
	/**
	 * 獲取某個站點的留言板信息數
	 * @param site
	 * @return
	 */
	public int get_guest_msg_count(SiteBean site){
		if(site==null)
			return -1;
		return GuestBookDAO.getMsgCount(site);
	}
	
	/**
	 * 分頁瀏覽留言板中的信息
	 * @param site
	 * @param page
	 * @param pageSize
	 * @return
	 */
	public List list_guest_msgs(SiteBean site, int page, int pageSize){
		if(site==null)
			return null;
		if(pageSize < 1 || pageSize > 100)
			pageSize = 10;
		int fromIdx = (page - 1) * pageSize;
		if(fromIdx < 0)
			fromIdx = 0;
		return GuestBookDAO.listMsgs(site, fromIdx, pageSize);
	}
	
	/**
	 * 得到某個站點新的留言簿的留言信息數
	 * @param site
	 * @param fromId
	 * @return
	 */
	public int get_guest_msg_count_after(SiteBean site, int fromId){
		if(site == null)
			return -1;
		return GuestBookDAO.getNewMsgCount(site, fromId);
	}
	
	/**
	 * @see listmsg.vm
	 * @param user
	 */
	public void read_msgs(SessionUserObject user){
		if(user!=null){
			try{
				MessageDAO.readNewMsgs(user.getId());
			}catch(Exception e){
				context.log("DLOG_VelocityTool.read_msgs failed.", e);
			}
		}
	}
	
	/**
	 * 讀取某條留言信息(sendmsg.vm)
	 * @param msg_id
	 * @return
	 */
	public MessageBean get_msg(int msg_id){
		if(msg_id <1)
			return null;
		return MessageDAO.getMsg(msg_id);
	}
	
	/**
	 * 根據書簽生成超鏈(bookmark.vm)
	 * @param bmb
	 * @return
	 */
	public String gen_bookmark_hyperlink(BookmarkBean bmb){
		return gen_bookmark_hyperlink(bmb, "html");
	}

	/**
	 * 根據書簽生成超鏈(bookmark.vm)
	 * @param bmb
	 * @return
	 */
	public String gen_bookmark_hyperlink(BookmarkBean bmb, String subDir){
		if(bmb==null)
			return null;
		return bmb.url(request, subDir);
	}
	
	/**
	 * 判斷是否有給某個人的留言
	 * @param site
	 * @param user
	 * @return
	 */
	public boolean has_new_msg(SiteBean site, SessionUserObject user){
		if(user==null)
			return false;
		return MessageDAO.hasNewMessage(user.getId());
	}
	
	/**
	 * 返回某個用戶的新留言數
	 * @param user
	 * @return
	 */
	public int get_new_msg_count(SessionUserObject user){
		if(user==null) 
			return -1;
		return MessageDAO.getNewMessageCount(user.getId());
	}

	/**
	 * 返回某個用戶的留言數
	 * @param user
	 * @return
	 */
	public int get_msg_count(SessionUserObject user){
		if(user==null)
			return -1;
		return MessageDAO.getMessageCount(user.getId());
	}
	
	/**
	 * 抓取頻道內容
	 * @param type
	 * @param url
	 * @return
	 */
	public Channel fetch_channel(int type, String url){
		if(StringUtils.isEmpty(url))
			return null;
		return RSSFetcher.fetchChannel(type, url);
	}
	
	/**
	 * 獲取鏈接信息(/html/rssview.vm)
	 * @param site
	 * @param linkid
	 * @return
	 * @important 此方法因為可能需要在讀取頻道時候耗費比較長的時間,為了不占用數據庫資源,在此釋放數據庫連接
	 */
	public LinkBean get_link(int linkid){
		if(linkid<0)
			return null;
		return LinkDAO.getLinkByID(linkid);
	}
	
	/**
	 * 返回用戶是否為指定站點的站長
	 * @param site
	 * @param user
	 * @return
	 */
	public boolean is_owner(SiteBean site, SessionUserObject user){
		if(site==null) 
			return false;
		return site.isOwner(user);
	}
	
	/**
	 * 判斷用戶是不是超級管理員
	 * @param site
	 * @param user
	 * @return
	 */
	public boolean is_superior(SessionUserObject user){
		return SiteBean.isSuperior(user);
	}
	
	/**
	 * 顯示時間(diary.vm)
	 * @param year
	 * @param month
	 * @param date
	 * @return
	 */
	public String show_time(int year, int month, int date){
		StringBuffer stime = new StringBuffer();
		if(year>0&&month>0&&date>0){//某天
			stime.append(year);
			stime.append('.');
			stime.append(month);
			stime.append('.');
			stime.append(date);
		}
		else
		if(year>0&&month>0){//某月
			stime.append(year);
			stime.append('.');
			stime.append(month);
		}
		else
		if(year>0){//某年
			stime.append(year);
		}
		return stime.toString();
	}
	
	/**
	 * 根據網站編號獲取其詳細資料(_global.vm)
	 * 
	 * @param site_id
	 * @return
	 * @throws HibernateException
	 */
	public SiteBean site(int site_id) throws HibernateException {
		if (site_id <= 0)
			return null;
		return SiteDAO.getSiteByID(site_id);
	}

	/**
	 * 返回當前訪問的用戶信息
	 */
	public SessionUserObject get_current_user() {
		return UserLoginManager.getLoginUser(request,response,false);
	}

	/**
	 * 構造日歷(_catalog_and_calendar.vm)
	 * 
	 * @param year
	 * @param month
	 * @return
	 */
	public int[][] calendar(int year, int month) {
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.YEAR, year);
		cal.set(Calendar.MONTH, month - 1);
		cal.set(Calendar.DAY_OF_MONTH, 1);
		int firstDateInWeek = cal.get(Calendar.DAY_OF_WEEK) - 1;
		int dateOfMonth = getMonthDateCount(cal);
		int base = dateOfMonth + firstDateInWeek;
		int row = base / 7;
		row += ((base % 7) > 0) ? 1 : 0;
		int[][] cals = new int[row][7];
		int iCol = firstDateInWeek, iRow = 0;
		for (int i = 1; i <= dateOfMonth; i++) {
			cals[iRow][iCol] = i;
			if (iCol == 6) {
				iCol = 0;
				iRow++;
			} else
				iCol++;
		}
		return cals;
	}

	/**
	 * 得到指定月份的天數
	 * 
	 * @param cal
	 * @return
	 */
	private static int getMonthDateCount(Calendar cal) {
		Calendar cal2 = (Calendar) cal.clone();
		cal2.add(Calendar.MONTH, 1);
		cal2.set(Calendar.DAY_OF_MONTH, 1);
		cal2.add(Calendar.DAY_OF_MONTH, -1);
		return cal2.get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * (_catalog_and_calendar.vm)
	 * 
	 * @param field
	 * @return
	 */
	public int calendar(int field) {
		Calendar cal = Calendar.getInstance();
		String param;
		int defValue;
		switch (field) {
		case 1:
			param = "year";
			defValue = cal.get(Calendar.YEAR);
			break;
		case 2:
			param = "month";
			defValue = cal.get(Calendar.MONTH) + 1;
			break;
		case 3:
			param = "date";
			defValue = cal.get(Calendar.DATE);
			break;
		default:
			return -1;
		}
		return RequestUtils.getParam(request, param, defValue);
	}
	
	/**
	 * 根據時間參數組合URL (diary.vm)
	 * @param year
	 * @param month
	 * @param date
	 * @return
	 */
	public String make_date_params(String param_name, int cat_id, int year, int month, int date){
		StringBuffer param = new StringBuffer();
		if(cat_id>0){
			param.append('&');
			param.append(param_name);
			param.append('=');
			param.append(cat_id);
		}
		if(year>0){
			param.append("&year=");
			param.append(year);
		}
		if(month>0){
			param.append("&month=");
			param.append(month);
		}
		if(date>0){
			param.append("&date=");
			param.append(date);
		}
		return param.toString();
	}
	
	/**
	 * 對較長的文本內容進行切割
	 * @param content
	 * @param page
	 * @param word_count
	 * @return
	 */
	public String split(String content, int page, int word_count){
		int fromIdx = ( page - 1 ) * word_count;
		int endIdx = fromIdx + word_count;
		if(fromIdx >= content.length())
			return "";
		if(endIdx > content.length())
			endIdx = content.length();
		return content.substring(fromIdx, endIdx);
	}	

	/** parameter getter/setter */
	public boolean isSaveRefer() {
		return saveRefer;
	}

	public void setSaveRefer(boolean saveRefer) {
		this.saveRefer = saveRefer;
	}

	/**
	 * 自動創建一個博客網站,并返回該網站的編號 
	 * @param username
	 * @return
	 * @throws Exception 
	 */
	public SiteBean auto_create_site() throws Exception{
		String username = "admin";
		//創建用戶
		UserBean ubean = auto_create_user(username);
		//創建網站
		SiteBean sbean = auto_create_site(ubean);
		//執行登錄過程
		UserLoginManager.loginUser(request, response, ubean, -1);
		return sbean;
	}

	/**
	 * 自動創建dlog用戶
	 * @param username
	 * @return
	 */
	private UserBean auto_create_user(String username){
		UserBean ubean = new UserBean();
		ubean.setName(username);
		String nickname = null;
    	MessageResources res = StrutsUtils.getMessageResources(request, context, null);
    	if(res!=null)
    		nickname = res.getMessage("administrator");
    	if(StringUtils.isEmpty(nickname))
    		nickname = "Administrator";
		ubean.setNickname(nickname);
		ubean.setPassword("admin");		
		UserDAO.createUser(ubean);
		return ubean;
	}

	/**
	 * 自動開通個人空間
	 * @param ubean
	 * @return
	 */
	private SiteBean auto_create_site(UserBean ubean){
		SiteBean sbean = new SiteBean();
		sbean.setCreateTime(new Date());
		sbean.setUniqueName(ubean.getName());
		sbean.setFriendlyName("DLOG of "+ubean.getNickname());
		sbean.setOwner(ubean);
		SiteDAO.createSite(sbean);
		return sbean;
	}
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕精品一区| 国产一区二区三区美女| 五月天激情小说综合| 欧美aⅴ一区二区三区视频| 99久久久精品| 日韩美女视频在线| 亚洲一区二区三区视频在线播放| 国产精选一区二区三区| 欧美精品第一页| 亚洲精品免费一二三区| 成人激情小说网站| 国产午夜亚洲精品午夜鲁丝片| 亚洲成av人片在线| 91视视频在线观看入口直接观看www | 色综合久久久网| 国产精品欧美久久久久无广告| 久久精品免费观看| 欧美一区二区三区视频免费播放| 亚洲精品欧美激情| 色一区在线观看| 国产精品进线69影院| 国产成人av网站| 久久久午夜精品| 国内成人精品2018免费看| 欧美一二区视频| 日本中文一区二区三区| 777a∨成人精品桃花网| 亚洲v日本v欧美v久久精品| 欧美性三三影院| 亚洲一二三四久久| 欧美日韩在线亚洲一区蜜芽| 一区av在线播放| 欧美亚洲自拍偷拍| 亚洲不卡av一区二区三区| 欧美人伦禁忌dvd放荡欲情| 亚洲国产精品嫩草影院| 欧美三级视频在线播放| 午夜精品一区二区三区三上悠亚| 精品视频在线看| 日韩在线一区二区| 精品久久久久久最新网址| 久久99精品一区二区三区| 26uuu亚洲综合色| 国产不卡一区视频| 日韩一区有码在线| 日本福利一区二区| 丝袜诱惑制服诱惑色一区在线观看 | 国产日韩欧美在线一区| bt7086福利一区国产| 依依成人综合视频| 91精品国产综合久久福利 | 91蝌蚪porny| 亚洲一区二区欧美| 亚洲精品一区二区三区蜜桃下载| 国产成人在线免费| 亚洲一区二区三区不卡国产欧美| 日韩一区二区不卡| 成人自拍视频在线观看| 亚洲人成影院在线观看| 6080日韩午夜伦伦午夜伦| 韩国精品久久久| 亚洲乱码国产乱码精品精98午夜 | 国产乱码精品一区二区三区av | 91麻豆免费在线观看| 午夜久久福利影院| 国产精品人妖ts系列视频| 欧美性淫爽ww久久久久无| 老司机精品视频在线| 日韩理论片中文av| 日韩欧美一卡二卡| 91亚洲国产成人精品一区二区三| 日韩在线播放一区二区| 亚洲人吸女人奶水| 亚洲精品一区二区三区蜜桃下载| 日本韩国一区二区| 国产一二三精品| 婷婷国产在线综合| 国产精品久久久久婷婷二区次| 这里是久久伊人| 色哟哟一区二区| 国产91在线看| 久久精品99国产精品日本| 夜夜亚洲天天久久| 亚洲国产高清在线观看视频| 欧美一级欧美三级在线观看| 99久久国产综合精品色伊| 久久爱www久久做| 亚洲第一激情av| 亚洲欧美一区二区三区孕妇| 精品福利二区三区| 5858s免费视频成人| 欧洲精品在线观看| 成人18精品视频| 国产精品亚洲视频| 麻豆精品一二三| 亚洲v日本v欧美v久久精品| 一区二区中文字幕在线| 久久精品水蜜桃av综合天堂| 日韩一区二区在线看片| 欧美三级电影网站| 91精品福利视频| 一本色道久久综合亚洲91| 波波电影院一区二区三区| 国产成人日日夜夜| 国产成人午夜片在线观看高清观看| 青青草91视频| 蜜臀久久99精品久久久久久9| 午夜免费久久看| 婷婷综合在线观看| 五月天网站亚洲| 美女一区二区视频| 麻豆国产欧美日韩综合精品二区| 性感美女极品91精品| 亚洲丰满少妇videoshd| 亚洲图片欧美色图| 亚洲国产视频在线| 日韩高清在线电影| 男女视频一区二区| 久久国产精品色| 激情深爱一区二区| 国产精品香蕉一区二区三区| 成人污视频在线观看| 99re在线精品| 欧美视频在线观看一区| 欧美精品丝袜中出| 日韩视频一区二区三区在线播放| 日韩欧美一区电影| 亚洲欧洲国产专区| 美女视频第一区二区三区免费观看网站 | ...xxx性欧美| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 97久久精品人人做人人爽| 91色porny| 欧美精品久久一区二区三区| 欧美一区二区网站| 久久精品男人的天堂| 综合亚洲深深色噜噜狠狠网站| 一区二区三区在线免费播放| 天天综合色天天综合| 国产麻豆精品在线观看| 成人午夜伦理影院| 欧美日韩一级片网站| 久久影音资源网| 亚洲精品日韩一| 久久99精品久久只有精品| 成人午夜精品在线| 欧美日韩专区在线| 国产亚洲精品bt天堂精选| 一区二区在线免费观看| 麻豆精品一区二区三区| 91免费版pro下载短视频| 555www色欧美视频| 中文字幕在线不卡一区二区三区| 亚洲第一狼人社区| 成人短视频下载| 欧美一区二区福利在线| 国产精品免费人成网站| 丝袜诱惑制服诱惑色一区在线观看| 国产宾馆实践打屁股91| 欧美日韩在线播放三区| 久久精品亚洲精品国产欧美kt∨| 亚洲高清免费一级二级三级| 国产精品一级黄| 91精品国产一区二区三区蜜臀| 国产精品久久久久久久午夜片 | 亚洲一区二区高清| 婷婷综合五月天| 成人高清在线视频| 日韩亚洲国产中文字幕欧美| 成人免费在线观看入口| 久久黄色级2电影| 欧美亚洲一区二区在线观看| 亚洲国产高清在线观看视频| 麻豆免费看一区二区三区| 色美美综合视频| 国产精品区一区二区三| 狠狠色丁香久久婷婷综| 91精品免费在线观看| 亚洲日本免费电影| 成人免费观看av| 国产清纯白嫩初高生在线观看91| 日韩精品免费专区| 欧美欧美欧美欧美| 亚洲成a人v欧美综合天堂下载| 99久久精品国产一区二区三区| 国产欧美精品一区二区色综合朱莉 | 精品久久久久久久久久久久久久久久久| 亚洲男人电影天堂| av在线这里只有精品| 国产亚洲欧美一级| 国产在线不卡一区| 久久色成人在线| 国产在线精品一区二区不卡了| 3d动漫精品啪啪1区2区免费| 亚洲成人综合网站| 欧美日韩一区二区在线视频| 亚洲综合男人的天堂| 欧美色男人天堂| 日韩va欧美va亚洲va久久| 日韩三级av在线播放|