package cn.jcenterhome.web.action;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import org.apache.commons.collections.CollectionUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import cn.jcenterhome.service.BlogService;
import cn.jcenterhome.service.TreeService;
import cn.jcenterhome.util.BeanFactory;
import cn.jcenterhome.util.Common;
import cn.jcenterhome.util.CookieHelper;
import cn.jcenterhome.util.ExifUtil;
import cn.jcenterhome.util.FileHelper;
import cn.jcenterhome.util.JavaCenterHome;
import cn.jcenterhome.util.JcHomeCode;
import cn.jcenterhome.util.Serializer;
import cn.jcenterhome.vo.MessageVO;
public class SpaceAction extends BaseAction {
private String[] dos = {"feed", "doing", "mood", "blog", "album", "thread", "mtag", "friend", "wall",
"tag", "notice", "share", "topic", "home", "pm", "event", "poll", "top", "info", "videophoto",
"addrbook", "gift"};
private BlogService blogService = (BlogService) BeanFactory.getBean("blogService");
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Common.getCacheDate(request, response, "/data/cache/cache_magic.jsp", "globalMagic");
int supe_uid = (Integer) sGlobal.get("supe_uid");
String message = Common.checkClose(request, response, supe_uid);
if (message != null) {
return showMessage(request, response, message);
}
String reWrite = request.getParameter("rewrite");
if (!Common.empty(sConfig.get("allowrewrite")) && reWrite != null) {
Map<String, String[]> paramMap = request.getParameterMap();
String[] rws = reWrite.split("-");
int rw_uid = 0;
if ((rw_uid = Common.intval(rws[0])) > 0) {
paramMap.put("uid", new String[] {rw_uid + ""});
} else {
paramMap.put("do", new String[] {rws[0]});
}
int rw_count = rws.length;
if (rw_count >= 2) {
if (rws[1] != null) {
for (int i = 1; i < rw_count; i = i + 2) {
if (rw_count > i + 1) {
paramMap.put(rws[i], Common.empty(rws[i + 1]) ? new String[] {""}
: new String[] {rws[i + 1]});
} else {
paramMap.put(rws[i], new String[] {""});
}
}
}
}
paramMap.remove("rewrite");
}
int isInvite = 0;
int uid = Common.intval(request.getParameter("uid"));
String userName = request.getParameter("username");
userName = Common.empty(userName) ? "" : userName;
String doMain = request.getParameter("domain");
doMain = Common.empty(doMain) ? "" : doMain;
String action = request.getParameter("do");
if (Common.empty(action) || !Common.in_array(dos, action)) {
action = "index";
}
String code = request.getParameter("code");
code = Common.empty(code) ? "" : code;
if ("index".equals(action)) {
String inVite = request.getParameter("invite");
inVite = Common.empty(inVite) ? null : inVite;
Map<String, Integer> reWard = Common.getReward("invitecode", false, 0, "", true, request,
response);
int credit = reWard.get("credit");
if (!"".equals(code) && credit == 0) {
isInvite = -1;
} else if (inVite != null) {
List<Map<String, Object>> inviteList = dataBaseService.executeQuery("SELECT id FROM "
+ JavaCenterHome.getTableName("invite") + " WHERE uid='" + uid + "' AND code='"
+ inVite + "' AND fuid='0'");
if (inviteList.size() > 0) {
isInvite = (Integer) inviteList.get(0).get("id");
}
}
}
if (isInvite == 0 && Common.empty(sConfig.get("networkpublic"))) {
if (supe_uid == 0) {
CookieHelper.setCookie(request, response, "_refer", Common.urlEncode((String) request
.getAttribute("requestURI")));
return showMessage(request, response, "to_login", "do.jsp?ac=" + sConfig.get("login_action"));
}
}
if("addrbook".equals(action) && supe_uid == 0) {
return showMessage(request, response, "to_login", "do.jsp?ac="+sConfig.get("login_action"));
}
Map<String, Object> space = null;
if (uid > 0) {
space = Common.getSpace(request, sGlobal, sConfig, uid, "uid", false);
} else if (!"".equals(userName)) {
space = Common.getSpace(request, sGlobal, sConfig, userName, "username", false);
} else if (!"".equals(doMain)) {
space = Common.getSpace(request, sGlobal, sConfig, doMain, "domain", false);
} else if (supe_uid > 0) {
space = Common.getSpace(request, sGlobal, sConfig, supe_uid, "uid", false);
}
if (space != null) {
if ((Integer) space.get("flag") == -1) {
return showMessage(request, response, "space_has_been_locked");
}
if (isInvite == 0
|| (isInvite < 0 && !code.equals(Common.spaceKey(space, sConfig, Common.intval(request
.getParameter("app")))))) {
if (Common.empty(sConfig.get("networkpublic"))) {
if (supe_uid == 0) {
CookieHelper.setCookie(request, response, "_refer", Common.urlEncode((String) request
.getAttribute("requestURI")));
return showMessage(request, response, "to_login", "do.jsp?ac="
+ sConfig.get("login_action"));
}
}
if (!Common.ckPrivacy(sGlobal, sConfig, space, action, 0)) {
if(supe_uid!=0){
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
Map<String, Object> member=Common.getMember(request);
Common.realname_set(sGlobal, sConfig, sNames, supe_uid, (String)member.get("username"), (String)member.get("name"), (Integer)member.get("namestatus"));
Common.realname_get(sGlobal, sConfig, sNames, null);
}
request.setAttribute("space", space);
setPrivacy(sGlobal, space);
return include(request, response, sConfig, sGlobal, "space_privacy.jsp");
}
}
Map<String, String[]> paramMap = request.getParameterMap();
if (!(Boolean) space.get("self")) {
paramMap.put("view", new String[] {"me"});
} else if (Common.empty(space.get("feedfriend")) && Common.empty(request.getParameter("view"))) {
paramMap.put("view", new String[] {"all"});
}
if ("me".equals(request.getParameter("view"))) {
space.put("feedfriend", "");
}
} else if (uid > 0) {
if (dataBaseService.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("spacelog")
+ " WHERE uid='" + uid + "' AND flag='-1'") > 0) {
if(supe_uid!=0){
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
Map<String, Object> member=Common.getMember(request);
Common.realname_set(sGlobal, sConfig, sNames, supe_uid, (String)member.get("username"), (String)member.get("name"), (Integer)member.get("namestatus"));
Common.realname_get(sGlobal, sConfig, sNames, null);
}
return showMessage(request, response, "the_space_has_been_closed");
}
}
if (Common.empty(space)) {
space = new HashMap<String, Object>();
space.put("uid", 0);
space.put("username", "guest");
space.put("self", true);
if ("index".equals(action)) {
action = "feed";
}
}
request.setAttribute("do", action);
request.setAttribute("space", space);
if (supe_uid > 0) {
Common.getMember(request);
if ((Integer) ((Map) sGlobal.get("member")).get("flag") == -1) {
return showMessage(request, response, "space_has_been_locked");
}
if (Common.checkPerm(request, response, "banvisit")) {
MessageVO msgVO = Common.ckSpaceLog(request);
if (msgVO != null) {
return showMessage(request, response, msgVO);
} else {
return showMessage(request, response, "you_do_not_have_permission_to_visit");
}
}
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("session")
+ " SET lastactivity='" + sGlobal.get("timestamp") + "' WHERE uid='" + supe_uid + "'");
}
Integer cronnextrun = (Integer) sConfig.get("cronnextrun");
if (!Common.empty(cronnextrun) && cronnextrun <= (Integer) sGlobal.get("timestamp")) {
cronService.runCron(request, response);
}
return invokeMethod(this, "space_" + action, request, response);
}
public ActionForward space_album(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
Map<Integer, String> friendsName = new TreeMap<Integer, String>();
friendsName.put(1, "�����ѿɼ�");
friendsName.put(2, "ָ�����ѿɼ�");
friendsName.put(3, "���Լ��ɼ�");
friendsName.put(4, "ƾ����ɼ�");
request.setAttribute("friendsName", friendsName);
int id = Common.intval(request.getParameter("id"));
Integer picId = Common.intval(request.getParameter("picid"));
int page = Common.intval(request.getParameter("page"));
page = page < 1 ? 1 : page;
if (id != 0) {
int perPage = 20;
perPage = Common.mobPerpage(request, perPage);
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
String whereSql = null;
int count = 0;
Map<String, Object> album = null;
if (id > 0) {
List<Map<String, Object>> albumList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("album") + " WHERE albumid='" + id + "' AND uid='"
+ space.get("uid") + "' LIMIT 1");
if (albumList.size() > 0) {
album = albumList.get(0);
}
if (album == null) {
return showMessage(request, response, "to_view_the_photo_does_not_exist");
}
if (ckFriendAlbum(album, sGlobal, sConfig, space, request, response) == null) {
return null;
}
whereSql = "albumid='" + id + "'";
count = (Integer) album.get("picnum");
} else {
whereSql = "albumid='0' AND uid='" + space.get("uid") + "'";
count = dataBaseService.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("pic")
+ " WHERE `albumid`='0' AND `uid`='" + space.get("uid") + "' LIMIT 1 ");
album = new HashMap<String, Object>();
album.put("uid", space.get("uid"));
album.put("albumid", -1);
album.put("albumname", Common.getMessage(request, "default_albumname"));
album.put("picnum", count);
}
if (count > 0) {
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("pic") + " WHERE " + whereSql
+ " ORDER BY dateline DESC LIMIT " + start + "," + perPage);
for (Map<String, Object> value : list) {
value.put("pic", Common.pic_get(sConfig, (String) value.get("filepath"), (Integer) value
.get("thumb"), (Integer) value.get("remote"), true));
}
request.setAttribute("list", list);
}
if (!(Boolean) space.get("self")) {
Map<String, Object> TPL = new HashMap<String, Object>();
TPL.put("spacetitle", "��� - " + album.get("albumname"));
TPL.put("spacemenus", new String[] {
"<a href=\"space.jsp?uid=" + space.get("uid") + "&do=album&view=me\">TA���������</a>",
"<a href=\"space.jsp?uid=" + space.get("uid") + "&do=album&id=" + id + "\">"
+ album.get("albumname") + "</a>"});
request.setAttribute("TPL", TPL);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage,
"space.jsp?uid=" + album.get("uid") + "&do=" + request.getAttribute("do") + "&id=" + id,
null, null));
request.setAttribute("managealbum", Common.checkPerm(request, response, "managealbum"));
request.setAttribute("tpl_css", "album");
request.setAttribute("album", album);
request.setAttribute("navtitle", album.get("albumname") + " - " + "��� - ");
return include(request, response, sConfig, sGlobal, "space_album_view.jsp");
} else if (picId > 0) {
String gotoStr = request.getParameter("goto");
if (Common.empty(gotoStr)) {
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("goto", null);
gotoStr = "";
}
int eventId = Common.intval(request.getAttribute("eventId") + "");
Map<String, Object> pic = null;
if (eventId == 0) {
List<Map<String, Object>> picList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("pic") + " WHERE picid='" + picId + "' AND uid='"
+ space.get("uid") + "' LIMIT 1");
if (picList.size() > 0) {
pic = picList.get(0);
}
} else {
pic = (Map<String, Object>) request.getAttribute("eventPic");
}
if (pic == null) {
return showMessage(request, response, "view_images_do_not_exist");
}
if ("up".equals(gotoStr)) {
if (eventId > 0) {
List<Map<String, Object>> eventPicList = dataBaseService
.executeQuery("SELECT pic.*, ep.* FROM "
+ JavaCenterHome.getTableName("eventpic") + " ep LEFT JOIN "
+ JavaCenterHome.getTableName("pic")
+ " pic ON ep.picid = pic.picid WHERE ep.eventid='" + eventId
+ "' AND ep.picid > '" + pic.get("picid")
+ "' ORDER BY ep.picid ASC LIMIT 0,1");
if (eventPicList.size() == 0) {
List<Map<String, Object>> eventPicList2 = dataBaseService
.executeQuery("SELECT pic.*, ep.* FROM "
+ JavaCenterHome.getTableName("eventpic") + " ep LEFT JOIN "
+ JavaCenterHome.getTableName("pic")
+ " pic ON ep.picid = pic.picid WHERE ep.eventid='" + eventId
+ "' ORDER BY ep.picid ASC LIMIT 1");
if (eventPicList2.size() > 0) {
pic = eventPicList2.get(0);
}
} else {
pic = eventPicList.get(0);
}
} else {
List<Map<String, Object>> picList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("pic") + " WHERE albumid='" + pic.get("albumid")
+ "' AND uid='" + space.get("uid") + "' AND picid>" + picId
+ " ORDER BY picid LIMIT 1");
if (picList.size() == 0) {
List<Map<String, Object>> picList2 = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("pic") + " WHERE albumid='"
+ pic.get("albumid") + "' AND uid='" + space.get("uid")
+ "' ORDER BY picid LIMIT 1");
if (picList2.size() > 0) {
pic = picList2.get(0);
}
} else {
pic = picList.get(0);
}
}
} else if ("down".equals(gotoStr)) {
if (eventId > 0) {
List<Map<String, Object>> eventPicList = dataBaseService
.executeQuery("SELECT pic.*, ep.* FROM "
+ JavaCenterHome.getTableName("eventpic") + " ep LEFT JOIN "
+ JavaCenterHome.getTableName("pic")
+ " pic ON ep.picid = pic.picid WHERE ep.eventid='" + eventId
+ "' AND ep.picid < '" + pic.get("picid")
+ "' ORDER BY ep.picid DESC LIMIT 0,1");
if (eventPicList.size() == 0) {
List<Map<String, Object>> eventPicList2 = dataBaseService
.executeQuery("SELECT pic.*, ep.* FROM "
+ JavaCenterHome.getTableName("eventpic") + " ep LEFT JOIN "
+ JavaCenterHome.getTableName("pic")
+ " pic ON ep.picid = pic.picid WHERE ep.eventid='" + eventId
+ "' ORDER BY ep.picid DESC LIMIT 1");
if (eventPicList2.size() > 0) {
pic = eventPicList2.get(0);
}
} else {
pic = eventPicList.get(0);
}
} else {
List<Map<String, Object>> picList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("pic") + " WHERE albumid='" + pic.get("albumid")
+ "' AND uid='" + space.get("uid") + "' AND picid<" + picId
+ " ORDER BY picid DESC LIMIT 1");
if (picList.size() == 0) {
List<Map<String, Object>> picList2 = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("pic") + " WHERE albumid='"
+ pic.get("albumid") + "' AND uid='" + space.get("uid")
+ "' ORDER BY picid DESC LIMIT 1");
if (picList2.size() > 0) {
pic = picList2.get(0);
}
} else {
pic = picList.get(0);
}
}
}
picId = (Integer) pic.get("picid");
if (Common.empty(picId)) {
return showMessage(request, response, "view_images_do_not_exist");
}
String theURL = null;
if (eventId > 0) {
theURL = "space.jsp?do=event&id=" + eventId + "&view=pic&picid=" + picId;
} else {
theURL = "space.jsp?uid=" + pic.get("uid") + "&do=" + request.getParameter("do") + "&picid="
+ picId;
}
Map<String, Object> album = null;
if (!Common.empty(pic.get("albumid"))) {
List<Map<String, Object>> albumList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("album") + " WHERE albumid='" + pic.get("albumid")
+ "'");
if (albumList.size() == 0) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("pic")
+ " SET albumid='0' WHERE albumid='" + pic.get("albumid") + "'");
} else {
album = albumList.get(0);
}
}
if (Common.empty(album)) {
album = new HashMap<String, Object>();
album.put("picnum", dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("pic") + " WHERE `albumid`='0' AND `uid`='"
+ pic.get("uid") + "' LIMIT 1 "));
album.put("albumid", -1);
pic.put("albumid", -1);
} else {
if (eventId > 0) {
List<Map<String, Object>> eventPicList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("eventpic") + " WHERE eventid='" + eventId
+ "' AND picid='" + picId + "'");
if (eventPicList.size() == 0) {
return showMessage(request, response, "pic_not_share_to_event");
}
album.put("picnum", request.getAttribute("picCount"));
} else {
if (ckFriendAlbum(album, sGlobal, sConfig, space, request, response) == null) {
return null;
}
}
}
if (!Common.empty(album.get("picnum"))) {
int sequence = 0;
if ("down".equals(gotoStr)) {
Map<String, String> sCookie = (Map<String, String>) request.getAttribute("sCookie");
String picSequence = sCookie.get("pic_sequence");
Integer picNum = (Integer) album.get("picnum");
sequence = Common.empty(picSequence) ? picNum : Common.intval(picSequence);
sequence++;
if (sequence > picNum) {
sequence = 1;
}
} else if ("up".equals(gotoStr)) {
Map<String, String> sCookie = (Map<String, String>) request.getAttribute("sCookie");
String picSequence = sCookie.get("pic_sequence");
Integer picNum = (Integer) album.get("picnum");
sequence = Common.empty(picSequence) ? picNum : Common.intval(picSequence);
sequence--;
if (sequence < 1) {
sequence = picNum;
}
} else {
sequence = 1;
}
CookieHelper.setCookie(request, response, "pic_sequence", sequence + "");
request.setAttribute("sequence", sequence);
}
pic.put("pic", Common.pic_get(sConfig, (String) pic.get("filepath"), (Integer) pic.get("thumb"),
(Integer) pic.get("remote"), false));
pic.put("size", Common.formatSize((Integer) pic.get("size")));
if (request.getParameter("exif") != null) {
request.setAttribute("exifs", ExifUtil.getExif(request, (String) pic.get("pic")));
}
int perPage = 50;
perPage = Common.mobPerpage(request, perPage);
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
int cid = Common.intval(request.getParameter("cid"));
request.setAttribute("cid", cid);
String csql = cid > 0 ? "cid='" + cid + "' AND" : "";
int count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("comment") + " WHERE " + csql + " id='" + pic.get("picid")
+ "' AND idtype='picid'");
Map<Integer, String> sNames = null;
if (count > 0) {
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("comment") + " WHERE " + csql + " id='"
+ pic.get("picid") + "' AND idtype='picid' ORDER BY dateline LIMIT " + start + ","
+ perPage);
sNames = (Map<Integer, String>) request.getAttribute("sNames");
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("authorid"),
(String) value.get("author"), "", 0);
}
request.setAttribute("list", list);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL, "",
"pic_comment"));
if (Common.empty(album.get("albumname"))) {
album.put("albumname", Common.getMessage(request, "default_albumname"));
}
if (!(Boolean) space.get("self")) {
dataBaseService.executeUpdate("INSERT INTO " + JavaCenterHome.getTableName("log")
+ " (`id`, `idtype`) VALUES ('" + space.get("uid") + "', 'uid')");
}
if (eventId == 0) {
List<Map<String, Object>> eventPicList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("eventpic") + " ep LEFT JOIN "
+ JavaCenterHome.getTableName("event")
+ " e ON ep.eventid=e.eventid WHERE ep.picid='" + picId + "'");
if (eventPicList.size() > 0) {
request.setAttribute("event", eventPicList.get(0));
}
}
request.setAttribute("hash", Common.md5(pic.get("uid") + "\t" + pic.get("dateline")));
id = (Integer) pic.get("picid");
request.setAttribute("id", id);
String idtype = "picid";
request.setAttribute("idtype", idtype);
Map globalClick = Common.getCacheDate(request, response, "/data/cache/cache_click.jsp",
"globalClick");
Map<Object, Map> clicks = Common.empty(globalClick.get("picid")) ? new HashMap()
: (Map) globalClick.get("picid");
Set clicksKeys = clicks.keySet();
Map value = null;
int maxClickNum = 0;
for (Object clicksKey : clicksKeys) {
value = clicks.get(clicksKey);
value.put("clicknum", pic.get("click_" + clicksKey));
value.put("classid", Common.rand(1, 4));
if (value.get("clicknum") != null && (Integer) value.get("clicknum") > maxClickNum) {
maxClickNum = (Integer) value.get("clicknum");
}
}
request.setAttribute("maxclicknum", maxClickNum);
List<Map<String, Object>> clickUserList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("clickuser") + " WHERE id='" + id + "' AND idtype='"
+ idtype + "' ORDER BY dateline DESC LIMIT 0,18");
sNames = sNames == null ? (Map<Integer, String>) request.getAttribute("sNames") : sNames;
for (Map<String, Object> clickUser : clickUserList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) clickUser.get("uid"),
(String) clickUser.get("username"), "", 0);
clickUser.put("clickname", clicks.get(clickUser.get("clickid")).get("name"));
}
request.setAttribute("topic", Common.getTopic(request, (Integer) pic.get("topicid")));
if (!(Boolean) space.get("self")) {
Map<String, Object> TPL = new HashMap<String, Object>();
TPL.put("spacetitle", "��� - " + album.get("albumname"));
TPL.put("spacemenus", new String[] {
"<a href=\"space.jsp?uid=" + space.get("uid") + "&do=album&view=me\">TA���������</a>",
"<a href=\"space.jsp?uid=" + space.get("uid") + "&do=album&id=" + pic.get("albumid")
+ "\">" + album.get("albumname") + "</a>",
"<a href=\"space.jsp?uid=" + space.get("uid") + "&do=album&picid=" + pic.get("picid")
+ "\">�鿴ͼƬ</a>"});
request.setAttribute("TPL", TPL);
}
try {
String title = (String) pic.get("title");
title = title == null || "".equals(title) ? "" : Common.getStr(title, 60, false, false,
false, 0, -1, request, response);
title = "".equals(title) ? "" : title + " - ";
request.setAttribute("navtitle", title + album.get("albumname") + " - " + "��� - ");
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
request.setAttribute("clicks", clicks);
request.setAttribute("clickuserlist", clickUserList);
request.setAttribute("picid", picId);
request.setAttribute("theurl", theURL);
request.setAttribute("album", album);
request.setAttribute("pic", pic);
request.setAttribute("managealbum", Common.checkPerm(request, response, "managealbum"));
if (eventId == 0) {
sNames = sNames == null ? (Map<Integer, String>) request.getAttribute("sNames") : sNames;
Common.realname_get(sGlobal, sConfig, sNames, space);
request.setAttribute("tpl_css", "album");
return include(request, response, sConfig, sGlobal, "space_album_pic.jsp");
} else {
return null;
}
} else {
int perPage = 12;
perPage = Common.mobPerpage(request, perPage);
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
Map<String, String[]> paramMap = request.getParameterMap();
String view = request.getParameter("view");
if (Common.empty(view)
&& (space.get("friendnum") == null || (Integer) space.get("friendnum") < (Integer) sConfig
.get("showallfriendnum"))) {
paramMap.put("view", new String[] {"all"});
view = "all";
}
String theURL = null;
Map<String, String> actives = new HashMap<String, String>();
String whereSQL = null;
boolean picMode = false;
String fIndex = "";
int count = 0;
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
Map globalClick = Common.getCacheDate(request, response, "/data/cache/cache_click.jsp",
"globalClick");
Map<Object, Map> clicks = Common.empty(globalClick.get("picid")) ? new HashMap()
: (Map) globalClick.get("picid");
if ("click".equals(view)) {
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=click";
actives.put("click", " class=\"active\"");
int clickId = Common.intval(request.getParameter("clickid"));
Map clickActives = new HashMap();
if (clickId > 0) {
theURL += "&clickid=" + clickId;
whereSQL = " AND c.clickid='" + clickId + "'";
clickActives.put(clickId, " class=\"current\"");
} else {
whereSQL = "";
clickActives.put("all", " class=\"current\"");
}
request.setAttribute("click_actives", clickActives);
picMode = true;
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("clickuser") + " c WHERE c.uid='" + space.get("uid")
+ "' AND c.idtype='picid' " + whereSQL);
if (count > 0) {
List<Map<String, Object>> list = dataBaseService
.executeQuery("SELECT p.*,a.albumname, a.username, c.clickid FROM "
+ JavaCenterHome.getTableName("clickuser") + " c LEFT JOIN "
+ JavaCenterHome.getTableName("pic") + " p ON p.picid=c.id LEFT JOIN "
+ JavaCenterHome.getTableName("album")
+ " a ON a.albumid=p.albumid WHERE c.uid='" + space.get("uid")
+ "' AND c.idtype='picid' " + whereSQL
+ " ORDER BY c.dateline DESC LIMIT " + start + "," + perPage);
String default_albumname=Common.getMessage(request, "default_albumname");
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
value.put("pic", Common.pic_get(sConfig, (String) value.get("filepath"),
(Integer) value.get("thumb"), (Integer) value.get("remote"), true));
if(Common.empty(value.get("albumid"))){
value.put("albumname", default_albumname);
value.put("albumid", -1);
}
}
request.setAttribute("list", list);
}
} else if ("all".equals(view)) {
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=all";
actives.put("all", " class=\"active\"");
whereSQL = "1";
List<String> orders = new ArrayList<String>();
orders.add("hot");
orders.add("dateline");
Set clicksKeys = clicks.keySet();
for (Object clicksKey : clicksKeys) {
orders.add("click_" + clicks.get(clicksKey).get("clickid"));
}
String orderby = request.getParameter("orderby");
if (!orders.contains(orderby)) {
paramMap.put("orderby", null);
orderby = "";
}
int day = Common.intval(request.getParameter("day"));
int hotday = 7;
paramMap.put("day", new String[] {day + ""});
paramMap.put("hotday", new String[] {hotday + ""});
Map<String, String> allActives = new HashMap<String, String>();
if ("dateline".equals(orderby)) {
allActives.put("dateline", " class=\"current\"");
theURL = "space.jsp?uid=" + space.get("uid") + "&do=album&view=all&orderby=" + orderby;
} else {
String orderSQL = null;
if (!Common.empty(orderby)) {
orderSQL = "p." + orderby;
theURL = "space.jsp?uid=" + space.get("uid") + "&do=album&view=all&orderby="
+ orderby;
allActives.put(orderby, " class=\"current\"");
Map<String, String> dayActives = new HashMap<String, String>();
if (day > 0) {
hotday = day;
paramMap.put("hotday", new String[] {hotday + ""});
int dayTime = (Integer) sGlobal.get("timestamp") - day * 3600 * 24;
whereSQL += " AND p.dateline>='" + dayTime + "'";
theURL += "&day=" + day;
dayActives.put(day + "", " class=\"active\"");
} else {
dayActives.put("0", " class=\"active\"");
}
request.setAttribute("day_actives", dayActives);
} else {
orderSQL = "p.dateline";
int feedHotMin = (Integer) sConfig.get("feedhotmin");
int minHot = feedHotMin < 1 ? 3 : feedHotMin;
whereSQL += " AND p.hot>='" + minHot + "'";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=album&view=all";
allActives.put("all", " class=\"current\"");
}
picMode = true;
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("pic") + " p WHERE " + whereSQL);
if (count > 0) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(count);
List<Map<String, Object>> picList = dataBaseService
.executeQuery("SELECT p.*, a.username, a.albumname, a.friend, a.target_ids FROM "
+ JavaCenterHome.getTableName("pic")
+ " p LEFT JOIN "
+ JavaCenterHome.getTableName("album")
+ " a ON a.albumid=p.albumid WHERE "
+ whereSQL
+ " ORDER BY "
+ orderSQL + " DESC LIMIT " + start + "," + perPage);
int priCount = 0;
String default_albumname=Common.getMessage(request, "default_albumname");
for (Map<String, Object> value : picList) {
if ((Integer) value.get("friend") != 4
&& Common.ckFriend(sGlobal, space, (Integer) value.get("uid"),
(Integer) value.get("friend"), (String) value.get("target_ids"))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
value.put("pic", Common.pic_get(sConfig, (String) value.get("filepath"),
(Integer) value.get("thumb"), (Integer) value.get("remote"), true));
list.add(value);
if(Common.empty(value.get("albumid"))){
value.put("albumname", default_albumname);
value.put("albumid", -1);
}
} else {
priCount++;
}
}
request.setAttribute("pricount", priCount);
request.setAttribute("list", list);
}
}
request.setAttribute("all_actives", allActives);
} else {
if (Common.empty(space.get("feedfriend"))) {
paramMap.put("view", new String[] {"me"});
view = "me";
}
if ("me".equals(view)) {
whereSQL = "uid='" + space.get("uid") + "'";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=me";
actives.put("me", " class=\"active\"");
} else {
whereSQL = "uid IN (" + space.get("feedfriend") + ")";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=we";
fIndex = "USE INDEX(updatetime)";
actives.put("we", " class=\"active\"");
String fUserName = Common.trim(request.getParameter("fusername"));
int fuid = Common.intval(request.getParameter("fuid"));
if (!Common.empty(fUserName)) {
fuid = Common.getUid(sConfig, fUserName);
}
if (fuid > 0 && Common.in_array((String[]) space.get("friends"), fuid)) {
whereSQL = "uid='" + fuid + "'";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&fuid=" + fuid;
Map<Integer, String> fuidActives = new HashMap<Integer, String>();
fuidActives.put(fuid, " selected");
request.setAttribute("fuid_actives", fuidActives);
}
List<Map<String, Object>> userList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("friend") + " WHERE uid='" + space.get("uid")
+ "' AND status='1' ORDER BY num DESC, dateline DESC LIMIT 0,500");
for (Map<String, Object> value : userList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("fuid"),
(String) value.get("fusername"), "", 0);
}
request.setAttribute("userlist", userList);
}
}
if (picMode == false) {
int friend = Common.intval(request.getParameter("friend"));
paramMap.put("friend", new String[] {friend + ""});
if (friend > 0) {
whereSQL += " AND friend='" + friend + "'";
theURL += "&friend=" + friend;
}
String searchKey = Common.stripSearchKey(request.getParameter("searchkey"));
if (!Common.empty(searchKey)) {
whereSQL += " AND albumname LIKE '%" + searchKey + "%'";
theURL += "&searchkey=" + searchKey;
Map<String, Object> resultMap = Common.ckSearch(theURL, request, response);
if (resultMap != null) {
return showMessage(request, response, (String) resultMap.get("msgkey"),
(String) resultMap.get("url_forward"), (Integer) resultMap.get("second"),
(String[]) resultMap.get("args"));
}
}
request.setAttribute("searchkey", searchKey);
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("album") + " WHERE " + whereSQL);
int picNum=0;
boolean isOnlyDefault=false;
if("me".equals(view)){
if (!(Boolean) space.get("self")) {
picNum= dataBaseService.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("pic")
+ " WHERE `albumid`='0' AND `uid`='" + space.get("uid") + "' LIMIT 1 ");
if (picNum > 0) {
if(count==0){
isOnlyDefault=true;
}
count+=1;
}
}
}
if (("uid='" + space.get("uid") + "'").equals(whereSQL)){
Integer albumNum=(Integer) space.get("albumnum");
albumNum=albumNum==null ? 0 : albumNum;
if(albumNum != count){
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET albumnum='" + count + "' WHERE uid='" + space.get("uid") + "'");
}
}
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
if (count > 0 && !isOnlyDefault) {
list = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("album") + " " + fIndex + " WHERE " + whereSQL
+ " ORDER BY updatetime DESC LIMIT " + start + "," + perPage);
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
if ((Integer) value.get("friend") != 4
&& Common.ckFriend(sGlobal, space, (Integer) value.get("uid"),
(Integer) value.get("friend"), (String) value.get("target_ids"))) {
value.put("pic", Common.pic_cover_get(sConfig, (String) value.get("pic"),
(Integer) value.get("picflag")));
} else {
value.put("pic", "image/nopublish.jpg");
}
}
}
if (picNum > 0) {
List<Map<String, Object>> picList = dataBaseService.executeQuery("SELECT filepath,thumb,remote,dateline FROM "
+ JavaCenterHome.getTableName("pic")+" WHERE `albumid`='0' AND `uid`='" + space.get("uid") + "' ORDER BY dateline DESC LIMIT 1");
Map<String, Object> defaultAlbum=picList.get(0);
defaultAlbum.put("pic", Common.pic_get(sConfig, (String) defaultAlbum.get("filepath"), (Integer) defaultAlbum
.get("thumb"), (Integer) defaultAlbum.get("remote"), true));
defaultAlbum.put("uid", space.get("uid"));
defaultAlbum.put("albumid", -1);
defaultAlbum.put("albumname", Common.getMessage(request, "default_albumname"));
defaultAlbum.put("picnum", picNum);
list.add(0,defaultAlbum);
}
request.setAttribute("list", list);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL, null,
null));
Common.realname_get(sGlobal, sConfig, sNames, space);
if (!(Boolean) space.get("self")) {
Map<String, Object> TPL = new HashMap<String, Object>();
TPL.put("spacetitle", "���");
TPL.put("spacemenus", new String[] {"<a href=\"space.jsp?uid=" + space.get("uid")
+ "&do=album&view=me\">TA���������</a>"});
request.setAttribute("TPL", TPL);
}
request.setAttribute("clicks", clicks);
request.setAttribute("picmode", picMode);
request.setAttribute("actives", actives);
request.setAttribute("count", count);
request.setAttribute("tpl_css", "album");
request.setAttribute("navtitle", "��� - ");
return include(request, response, sConfig, sGlobal, "space_album_list.jsp");
}
}
public ActionForward space_blog(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
int page = Common.intval(request.getParameter("page"));
page = page < 1 ? 1 : page;
int id = Common.intval(request.getParameter("id"));
String pageName = null;
String navTitle = null;
int classId = Common.intval(request.getParameter("classid"));
Map globalClick = Common
.getCacheDate(request, response, "/data/cache/cache_click.jsp", "globalClick");
Map<Object, Map> clicks = Common.empty(globalClick.get("blogid")) ? new HashMap() : (Map) globalClick
.get("blogid");
if (id > 0) {
List<Map<String, Object>> blogList = dataBaseService.executeQuery("SELECT bf.*, b.* FROM "
+ JavaCenterHome.getTableName("blog") + " b LEFT JOIN "
+ JavaCenterHome.getTableName("blogfield") + " bf ON bf.blogid=b.blogid WHERE b.blogid='"
+ id + "' AND b.uid='" + space.get("uid") + "'");
Map<String, Object> blog = null;
if (blogList.size() == 0) {
return showMessage(request, response, "view_to_info_did_not_exist");
} else {
blog = blogList.get(0);
}
Map<String, String> sCookie = (Map<String, String>) request.getAttribute("sCookie");
if (!Common.ckFriend(sGlobal, space, (Integer) blog.get("uid"), (Integer) blog.get("friend"),
(String) blog.get("target_ids"))) {
setPrivacy(sGlobal, space);
return include(request, response, sConfig, sGlobal, "space_privacy.jsp");
} else if (!(Boolean) space.get("self") && (Integer) blog.get("friend") == 4) {
String cookieName = "view_pwd_blog_" + blog.get("blogid");
String cookieValue = Common.empty(sCookie.get(cookieName)) ? "" : sCookie.get(cookieName);
if (!cookieValue.equals(Common.md5(Common.md5((String) blog.get("password"))))) {
request.setAttribute("invalue", blog);
return include(request, response, sConfig, sGlobal, "do_inputpwd.jsp");
}
}
blog.put("tag", Common.empty(blog.get("tag")) ? new HashMap() : Serializer.unserialize(
(String) blog.get("tag"), false));
blog.put("message", blogService.blogBBCode((String) blog.get("message")));
Integer jcTagRelatedTime = (Integer) sConfig.get("jc_tagrelatedtime");
if (!Common.empty(jcTagRelatedTime)
&& ((Integer) sGlobal.get("timestamp") - (Integer) blog.get("relatedtime") > jcTagRelatedTime)) {
blog.put("related", new HashMap());
}
if (!Common.empty(blog.get("tag")) && Common.empty(blog.get("related"))) {
blog.put("related", null);
int tagCount = -1;
Map<Object,Object> tagMap = (Map) blog.get("tag");
List bTags = new ArrayList(tagMap.size());
List bTagIds = new ArrayList(tagMap.size());
for (Map.Entry<Object, Object> entry : tagMap.entrySet()) {
bTags.add(entry.getValue());
bTagIds.add(entry.getKey());
tagCount++;
}
if (!Common.empty(jcTagRelatedTime) && !Common.empty(sConfig.get("jc_status"))) {
} else {
List<Map<String, Object>> tagBlogList = dataBaseService
.executeQuery("SELECT DISTINCT blogid FROM "
+ JavaCenterHome.getTableName("tagblog") + " WHERE tagid IN ("
+ Common.sImplode(bTagIds) + ") AND blogid<>'" + blog.get("blogid")
+ "' ORDER BY blogid DESC LIMIT 0,10");
List tagBlogIds = new ArrayList(tagBlogList.size());
for (Map<String, Object> value : tagBlogList) {
tagBlogIds.add(value.get("blogid"));
}
if (!tagBlogIds.isEmpty()) {
blogList = dataBaseService.executeQuery("SELECT uid,username,subject,blogid FROM "
+ JavaCenterHome.getTableName("blog") + " WHERE blogid IN ("
+ Common.sImplode(tagBlogIds) + ")");
Map appMap = null;
Map tempMap = null;
TreeMap<Integer, Map<String, Object>> tempList = null;
int JC_APPID = Common.intval(JavaCenterHome.jchConfig.get("JC_APPID"));
for (Map<String, Object> value : blogList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
value.put("url", "space.jsp?uid=" + value.get("uid") + "&do=blog&id="
+ value.get("blogid"));
appMap = (Map) blog.get("related");
if (appMap == null) {
appMap = new HashMap();
}
tempMap = (Map) appMap.get(JC_APPID);
if (tempMap == null) {
tempMap = new HashMap();
}
tempList = (TreeMap) tempMap.get("data");
if (tempList == null) {
tempList = new TreeMap<Integer, Map<String, Object>>();
}
if (tempList.size() == 0) {
tempList.put(0, value);
} else {
tempList.put(tempList.lastKey() + 1, value);
}
tempMap.put("data", tempList);
appMap.put(JC_APPID, tempMap);
blog.put("related", appMap);
}
appMap = (Map) blog.get("related");
if (appMap == null) {
appMap = new HashMap();
}
tempMap = (Map) appMap.get(JC_APPID);
if (tempMap == null) {
tempMap = new HashMap();
}
tempMap.put("type", "JCHOME");
appMap.put(JC_APPID, tempMap);
blog.put("related", appMap);
}
}
if (!Common.empty(blog.get("related")) && blog.get("related") instanceof Map) {
Map appMap = (Map) blog.get("related");
Set appKeys = appMap.keySet();
Map values = null;
Map globalTagTpl=null;
if(new File(Common.getSiteUrl(request)+"data/cache/cache_tagtpl.jsp").exists()){
globalTagTpl = Common.getCacheDate(request, response, "/data/cache/cache_tagtpl.jsp",
"globalTagTpl");
}
Map dataMap =globalTagTpl==null ? null : (Map) globalTagTpl.get("data");
Map tempMap = null;
Object itemObject = null;
Map itemValue = null;
List<String> searchs = null;
List replaces = null;
Map newMap = null;
String template = null;
for (Object appId : appKeys) {
values = (Map) appMap.get(appId);
if (!Common.empty(values.get("data"))
&& !Common.empty(dataMap)
&& !Common.empty(dataMap.get(appId))
&& !Common.empty((template = (String) ((Map) dataMap.get(appId))
.get("template")))) {
tempMap = (Map) values.get("data");
Set itemKeys = tempMap.keySet();
for (Object itemKey : itemKeys) {
itemObject = tempMap.get(itemKey);
if (!Common.empty(itemObject) && itemObject instanceof Map) {
itemValue = (Map) itemObject;
searchs = new ArrayList<String>();
replaces = new ArrayList();
Set keys = itemValue.keySet();
for (Object key : keys) {
searchs.add("{" + key + "}");
replaces.add(itemValue.get(key));
}
for (int j = 0; j < searchs.size(); j++) {
template = template.replace(searchs.get(j), replaces.get(j) + "");
}
newMap = new HashMap();
newMap.put("html", Common.stripSlashes(template));
tempMap.put(itemKey, newMap);
} else {
tempMap.remove(itemKey);
}
}
} else {
values.put("data", "");
}
if (Common.empty(values.get("data"))) {
appMap.remove(appId);
}
}
}
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("blogfield")
+ " SET related='"
+ Common.addSlashes(Serializer.serialize(Common.sStripSlashes(blog.get("related"))))
+ "',relatedtime='" + sGlobal.get("timestamp") + "' WHERE blogid='"
+ blog.get("blogid") + "'");
} else {
blog.put("related", Common.empty(blog.get("related")) ? new HashMap() : Serializer
.unserialize((String) blog.get("related"), false));
}
List<Map<String, Object>> otherList = new ArrayList<Map<String, Object>>();
blogList = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("blog")
+ " WHERE uid='" + space.get("uid") + "' ORDER BY dateline DESC LIMIT 0,6");
for (Map<String, Object> value : blogList) {
if (value.get("blogid") != blog.get("blogid") && Common.empty(value.get("friend"))) {
otherList.add(value);
}
}
List<Map<String, Object>> newList = new ArrayList<Map<String, Object>>();
blogList = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("blog")
+ " WHERE hot>=3 ORDER BY dateline DESC LIMIT 0,6");
for (Map<String, Object> value : blogList) {
if (value.get("blogid") != blog.get("blogid") && Common.empty(value.get("friend"))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
newList.add(value);
}
}
int perPage = 30;
perPage = Common.mobPerpage(request, perPage);
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
int count = (Integer) blog.get("replynum");
if (count > 0) {
int cid = Common.intval(request.getParameter("cid"));
request.setAttribute("cid", cid);
String cSql = cid > 0 ? "cid='" + cid + "' AND" : "";
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("comment") + " WHERE " + cSql + " id='" + id
+ "' AND idtype='blogid' ORDER BY dateline LIMIT " + start + "," + perPage);
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("authorid"),
(String) value.get("author"), "", 0);
}
request.setAttribute("list", list);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage,
"space.jsp?uid=" + blog.get("uid") + "&do=" + request.getAttribute("do") + "&id=" + id,
"", "content"));
if (!(Boolean) space.get("self")
&& !blog.get("blogid").toString().equals(sCookie.get("view_blogid"))) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("blog")
+ " SET viewnum=viewnum+1 WHERE blogid='" + blog.get("blogid") + "'");
dataBaseService.executeUpdate("INSERT INTO " + JavaCenterHome.getTableName("log")
+ " (id, idtype) VALUES ('" + space.get("uid") + "', 'uid')");
CookieHelper.setCookie(request, response, "view_blogid", blog.get("blogid").toString());
}
Set clickKeys = clicks.keySet();
Map value = null;
int maxClickNum = 0;
for (Object clickKey : clickKeys) {
value = clicks.get(clickKey);
value.put("clicknum", blog.get("click_" + clickKey));
value.put("classid", Common.rand(1, 4));
if (value.get("clicknum") != null && (Integer) value.get("clicknum") > maxClickNum) {
maxClickNum = (Integer) value.get("clicknum");
}
}
request.setAttribute("maxclicknum", maxClickNum);
id = (Integer) blog.get("blogid");
String idType = "blogid";
String hash = Common.md5(blog.get("uid") + "\t" + blog.get("dateline"));
request.setAttribute("id", id);
request.setAttribute("idtype", idType);
request.setAttribute("hash", hash);
List<Map<String, Object>> clickUserList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("clickuser") + " WHERE id='" + id + "' AND idtype='"
+ idType + "' ORDER BY dateline DESC LIMIT 0,18");
for (Map<String, Object> clickUser : clickUserList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) clickUser.get("uid"),
(String) clickUser.get("username"), "", 0);
clickUser.put("clickname", clicks.get(clickUser.get("clickid")).get("name"));
}
request.setAttribute("topic", Common.getTopic(request, (Integer) blog.get("topicid")));
Common.realname_get(sGlobal, sConfig, sNames, space);
if (!(Boolean) space.get("self")) {
Map TPL = new HashMap();
TPL.put("spacetitle", "��־");
TPL.put("spacemenus", new String[] {
"<a href=\"space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=me\">TA��������־</a>",
"<a href=\"space.jsp?uid=" + space.get("uid") + "&do=blog&id=" + blog.get("blogid")
+ "\">�鿴��־</a>"});
request.setAttribute("TPL", TPL);
}
navTitle = blog.get("subject") + " - " + "��־ - ";
pageName = "space_blog_view.jsp";
request.setAttribute("manageBlog", Common.checkPerm(request, response, "manageblog"));
request.setAttribute("blog", blog);
request.setAttribute("otherlist", otherList);
request.setAttribute("newlist", newList);
request.setAttribute("clickuserlist", clickUserList);
} else {
int perPage = 10;
perPage = Common.mobPerpage(request, perPage);
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
Integer count = 0;
String orderSql = "b.dateline";
String view = request.getParameter("view");
if (Common.empty(view)
&& (space.get("friendnum") == null || (Integer) space.get("friendnum") < (Integer) sConfig
.get("showallfriendnum"))) {
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("view", new String[] {"all"});
view = "all";
}
String fIndex = "";
List<Map<String, Object>> blogList = null;
String whereSQL = null;
String theURL = null;
Map actives = new HashMap();
if ("click".equals(view)) {
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=click";
actives.put("click", " class=\"active\"");
int clickId = Common.intval(request.getParameter("clickid"));
Map clickActives = new HashMap();
if (clickId > 0) {
theURL += "&clickid=" + clickId;
whereSQL = " AND c.clickid='" + clickId + "'";
clickActives.put(clickId, " class=\"current\"");
} else {
whereSQL = "";
clickActives.put("all", " class=\"current\"");
}
request.setAttribute("click_actives", clickActives);
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("clickuser") + " c WHERE c.uid='" + space.get("uid")
+ "' AND c.idtype='blogid' " + whereSQL);
if (count > 0) {
blogList = dataBaseService
.executeQuery("SELECT b.*, bf.message, bf.target_ids, bf.magiccolor FROM "
+ JavaCenterHome.getTableName("clickuser") + " c LEFT JOIN "
+ JavaCenterHome.getTableName("blog") + " b ON b.blogid=c.id LEFT JOIN "
+ JavaCenterHome.getTableName("blogfield")
+ " bf ON bf.blogid=c.id WHERE c.uid='" + space.get("uid")
+ "' AND c.idtype='blogid' " + whereSQL
+ " ORDER BY c.dateline DESC LIMIT " + start + "," + perPage);
}
} else {
Map<String, String[]> paramMap = request.getParameterMap();
if ("all".equals(view)) {
whereSQL = "1";
actives.put("all", " class=\"active\"");
List<String> orders = new ArrayList<String>();
orders.add("dateline");
orders.add("replynum");
orders.add("viewnum");
orders.add("hot");
Set clickKeys = clicks.keySet();
for (Object clickKey : clickKeys) {
orders.add("click_" + clicks.get(clickKey).get("clickid"));
}
String orderby = request.getParameter("orderby");
if (!orders.contains(orderby)) {
paramMap.put("orderby", null);
orderby = "";
}
int day = Common.intval(request.getParameter("day"));
paramMap.put("day", new String[] {day + ""});
paramMap.put("hotday", new String[] {"7"});
Map allActives = new HashMap();
request.setAttribute("all_actives", allActives);
if (!Common.empty(orderby)) {
orderSql = "b." + orderby;
theURL = "space.jsp?uid=" + space.get("uid") + "&do=blog&view=all&orderby=" + orderby;
allActives.put(orderby, " class=\"current\"");
Map dayActives = new HashMap();
request.setAttribute("day_actives", dayActives);
if (day > 0) {
paramMap.put("hotday", new String[] {day + ""});
int dayTime = (Integer) sGlobal.get("timestamp") - day * 3600 * 24;
whereSQL += " AND b.dateline>='" + dayTime + "'";
theURL += "&day=" + day;
dayActives.put(day + "", " class=\"active\"");
} else {
dayActives.put("0", " class=\"active\"");
}
} else {
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=all";
int feedHotMin = (Integer) sConfig.get("feedhotmin");
int minHot = feedHotMin < 1 ? 3 : feedHotMin;
whereSQL += " AND b.hot>='" + minHot + "'";
allActives.put("all", " class=\"current\"");
}
} else {
if (Common.empty(space.get("feedfriend")) || classId > 0) {
paramMap.put("view", new String[] {"me"});
view = "me";
}
if ("me".equals(view)) {
whereSQL = "b.uid='" + space.get("uid") + "'";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=me";
actives.put("me", " class=\"active\"");
List<Map<String, Object>> classList = dataBaseService
.executeQuery("SELECT classid, classname FROM "
+ JavaCenterHome.getTableName("class") + " WHERE uid='"
+ space.get("uid") + "'");
Map classArr = new LinkedHashMap();
for (Map<String, Object> value : classList) {
classArr.put(value.get("classid"), value.get("classname"));
}
request.setAttribute("classarr", classArr);
} else {
whereSQL = "b.uid IN (" + space.get("feedfriend") + ")";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=we";
fIndex = "USE INDEX(dateline)";
String fUserName = request.getParameter("fusername");
int fUid = Common.intval(request.getParameter("fuid"));
if (!Common.empty(fUserName)) {
fUid = Common.getUid(sConfig, fUserName);
}
if (fUid > 0 && Common.in_array((String[]) space.get("friends"), fUid)) {
whereSQL = "b.uid = '" + fUid + "'";
theURL = "space.jsp?uid=" + space.get("uid") + "&do="
+ request.getAttribute("do") + "&view=we&fuid=" + fUid;
fIndex = "";
Map fuidActives = new HashMap();
fuidActives.put(fUid, " selected");
request.setAttribute("fuid_actives", fuidActives);
}
actives.put("we", " class=\"active\"");
List<Map<String, Object>> userList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("friend") + " WHERE uid='" + space.get("uid")
+ "' AND status='1' ORDER BY num DESC, dateline DESC LIMIT 0,500");
for (Map<String, Object> value : userList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("fuid"),
(String) value.get("fusername"), "", 0);
}
request.setAttribute("userlist", userList);
}
}
if (classId > 0) {
whereSQL += " AND b.classid='" + classId + "'";
theURL += "&classid=" + classId;
}
int friend = Common.intval(request.getParameter("friend"));
paramMap.put("friend", new String[] {friend + ""});
if (friend > 0) {
whereSQL += " AND b.friend='" + friend + "'";
theURL += "&friend=" + friend;
}
String searchKey = Common.stripSearchKey(request.getParameter("searchkey"));
if (!Common.empty(searchKey)) {
whereSQL += " AND b.subject LIKE '%" + searchKey + "%'";
theURL += "&searchkey=" + request.getParameter("searchkey");
Map<String, Object> resultMap = Common.ckSearch(theURL, request, response);
if (resultMap != null) {
return showMessage(request, response, (String) resultMap.get("msgkey"),
(String) resultMap.get("url_forward"), (Integer) resultMap.get("second"),
(String[]) resultMap.get("args"));
}
}
request.setAttribute("searchkey", searchKey);
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("blog") + " b WHERE " + whereSQL);
if (("b.uid='" + space.get("uid") + "'").equals(whereSQL)
&& (Integer) space.get("blognum") != count) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET blognum='" + count + "' WHERE uid='" + space.get("uid") + "'");
}
if (count > 0) {
blogList = dataBaseService
.executeQuery("SELECT bf.message, bf.target_ids, bf.magiccolor, b.* FROM "
+ JavaCenterHome.getTableName("blog") + " b " + fIndex + " LEFT JOIN "
+ JavaCenterHome.getTableName("blogfield")
+ " bf ON bf.blogid=b.blogid WHERE " + whereSQL + " ORDER BY " + orderSql
+ " DESC LIMIT " + start + "," + perPage);
}
}
if (count > 0) {
int inAjax = (Integer) sGlobal.get("inajax");
int sumMarylen = 300;
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
int priCount = 0;
for (Map<String, Object> value : blogList) {
if (Common.ckFriend(sGlobal, space, (Integer) value.get("uid"), (Integer) value
.get("friend"), (String) value.get("target_ids"))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
if ((Integer) value.get("friend") == 4) {
value.remove("message");
value.remove("pic");
} else {
try {
value.put("message", Common.getStr((String) value.get("message"), sumMarylen,
false, false, false, 0, -1, request, response));
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
}
if (!Common.empty(value.get("pic"))) {
value.put("pic", Common.pic_cover_get(sConfig, (String) value.get("pic"),
(Integer) value.get("picflag")));
}
list.add(value);
} else {
priCount++;
}
}
request.setAttribute("list", list);
request.setAttribute("pricount", priCount);
}
request.setAttribute("multi", Common
.multi(request, count, perPage, page, maxPage, theURL, "", ""));
Common.realname_get(sGlobal, sConfig, sNames, space);
if (!(Boolean) space.get("self")) {
Map TPL = new HashMap();
TPL.put("spacetitle", "��־");
TPL.put("spacemenus", new String[] {"<a href=\"space.jsp?uid=" + space.get("uid") + "&do="
+ request.getAttribute("do") + "&view=me\">TA��������־</a>"});
request.setAttribute("TPL", TPL);
}
navTitle = "��־ - ";
pageName = "space_blog_list.jsp";
request.setAttribute("count", count);
request.setAttribute("theurl", theURL);
request.setAttribute("actives", actives);
}
Map<Integer, String> friendsName = new TreeMap<Integer, String>();
friendsName.put(1, "�����ѿɼ�");
friendsName.put(2, "ָ�����ѿɼ�");
friendsName.put(3, "���Լ��ɼ�");
friendsName.put(4, "ƾ����ɼ�");
request.setAttribute("friendsName", friendsName);
request.setAttribute("tpl_css", "blog");
request.setAttribute("navtitle", navTitle);
request.setAttribute("clicks", clicks);
return include(request, response, sConfig, sGlobal, pageName);
}
public ActionForward space_doing(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
request.setAttribute("navtitle", "��¼ - ");
int perPage = 20;
perPage = Common.mobPerpage(request, perPage);
int page = Common.intval(request.getParameter("page"));
page = page < 1 ? 1 : page;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
String view = request.getParameter("view");
if (Common.empty(view)
&& (space.get("friendnum") == null || (Integer) space.get("friendnum") < (Integer) sConfig
.get("showallfriendnum"))) {
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("view", new String[] {"all"});
view = "all";
}
String fIndex = "";
String whereSQL = null;
String theURL = null;
Map<String, String> actives = new HashMap<String, String>();
if ("all".equals(view)) {
whereSQL = "1";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do") + "&view=all";
fIndex = "USE INDEX(dateline)";
actives.put("all", " class=\"active\"");
} else {
if (Common.empty(space.get("feedfriend"))) {
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("view", new String[] {"me"});
view = "me";
}
if ("me".equals(view)) {
whereSQL = "uid='" + (Integer) space.get("uid") + "'";
theURL = "space.jsp?uid=" + (Integer) space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=me";
actives.put("me", " class=\"active\"");
} else {
whereSQL = "uid IN (" + space.get("feedfriend") + "," + (Integer) space.get("uid") + ")";
theURL = "space.jsp?uid=" + (Integer) space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=we";
fIndex = "USE INDEX(dateline)";
actives.put("we", " class=\"active\"");
}
}
int count = 0;
int doid = Common.intval(request.getParameter("doid"));
if (doid > 0) {
count = 1;
whereSQL = "doid='" + doid + "'";
theURL += "&doid=" + doid;
}
if (count == 0) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("doing")
+ " WHERE " + whereSQL);
if (("uid='" + space.get("uid") + "'").equals(whereSQL) && space.get("doingnum") != null
&& (Integer) space.get("doingnum") != count) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET doingnum='" + count + "' WHERE uid='" + space.get("uid") + "'");
}
}
List doIds = null;
List<Map<String, Object>> doList = null;
Map<Integer, String> sNames = null;
if (count > 0) {
doList = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("doing")
+ " " + fIndex + " WHERE " + whereSQL + " ORDER BY dateline DESC LIMIT " + start + ","
+ perPage);
sNames = (Map<Integer, String>) request.getAttribute("sNames");
doIds = new ArrayList(doList.size());
for (Map<String, Object> value : doList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
doIds.add(value.get("doid"));
}
}
if (doid > 0) {
Map doValue = Common.empty(doList) ? null : doList.get(0);
if (doValue != null && !doValue.isEmpty()) {
if (doValue.get("uid").equals(sGlobal.get("supe_uid"))) {
actives.clear();
actives.put("me", " class=\"active\"");
} else {
space = Common.getSpace(request, sGlobal, sConfig, doValue.get("uid"));
request.setAttribute("space", space);
actives.put("all", " class=\"active\"");
}
}
}
Map newDoIds = null;
TreeService tree = null;
if (doIds != null && !doIds.isEmpty()) {
tree = new TreeService();
newDoIds = new HashMap();
List<Map<String, Object>> docommentList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("docomment") + " USE INDEX(dateline) WHERE doid IN ("
+ Common.sImplode(doIds) + ") ORDER BY dateline");
for (Map<String, Object> value : docommentList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
newDoIds.put(value.get("doid"), value.get("doid"));
if (Common.empty(value.get("upid"))) {
value.put("upid", "do" + value.get("doid"));
}
tree.setNode((Integer) value.get("id"), value.get("upid"), value);
}
}
if (newDoIds != null && !newDoIds.isEmpty()) {
Set doIdKeys = newDoIds.keySet();
List<Object> values = null;
Map one = null;
String highlight = request.getParameter("highlight");
Map<Object, List> clist = new HashMap<Object, List>();
List tempList = null;
for (Object doIdKey : doIdKeys) {
values = tree.getChilds("do" + doIdKey);
for (Object id : values) {
one = tree.getValue(id);
one.put("layer", tree.getLayer(id, 0) * 2 - 2);
one.put("style", "padding-left:" + one.get("layer") + "em;");
if (!Common.empty(highlight) && highlight.equals(one.get("id") + "")) {
one.put("style", "color:red;font-weight:bold;");
}
tempList = clist.get(doIdKey);
if (tempList == null) {
tempList = new ArrayList(doIdKeys.size());
}
tempList.add(one);
clist.put(doIdKey, tempList);
}
}
request.setAttribute("clist", clist);
}
request.setAttribute("multi", Common
.multi(request, count, perPage, page, maxPage, theURL, null, null));
if (!Common.empty(space.get("mood")) && Common.empty(start)) {
List<Map<String, Object>> ssfList = dataBaseService
.executeQuery("SELECT s.uid,s.username,s.name,s.namestatus,s.mood,s.updatetime,s.groupid,sf.note,sf.sex FROM "
+ JavaCenterHome.getTableName("space")
+ " s LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " sf ON sf.uid=s.uid WHERE s.mood='"
+ space.get("mood")
+ "' ORDER BY s.updatetime DESC LIMIT 0,13");
sNames = sNames == null ? (Map<Integer, String>) request.getAttribute("sNames") : sNames;
List<Map<String, Object>> moodList = new ArrayList<Map<String, Object>>();
for (Map<String, Object> value : ssfList) {
if ((Integer) value.get("uid") != (Integer) space.get("uid")) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), (String) value.get("name"), (Integer) value.get("namestatus"));
moodList.add(value);
if (moodList.size() == 12) {
break;
}
}
}
request.setAttribute("moodlist", moodList);
}
if (!(Boolean) space.get("self")) {
Map TPL = new HashMap();
TPL.put("spacetitle", "��¼");
TPL.put("spacemenus", new String[] {"<a href=\"space.jsp?uid=" + space.get("uid")
+ "&do=doing&view=me\">TA�����м�¼</a>"});
request.setAttribute("TPL", TPL);
}
Common.realname_get(sGlobal, sConfig, sNames, space);
request.setAttribute("tpl_css", "doing");
request.setAttribute("count", count);
request.setAttribute("dolist", doList);
request.setAttribute("actives", actives);
request.setAttribute("theurl", theURL);
return include(request, response, sConfig, sGlobal, "space_doing.jsp");
}
public ActionForward space_event(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
int eventId = Common.intval(request.getParameter("id"));
String view = Common.trim(request.getParameter("view"));
Map<Integer, Map<String, Object>> globalEventClass = Common.getCacheDate(request, response,
"/data/cache/cache_eventclass.jsp", "globalEventClass");
view = Common.empty(view) ? "all" : view;
if (eventId > 0) {
if ("me".equals(view)) {
view = "all";
}
List<Map<String, Object>> eventList = dataBaseService.executeQuery("SELECT e.*, ef.* FROM "
+ JavaCenterHome.getTableName("event") + " e LEFT JOIN "
+ JavaCenterHome.getTableName("eventfield")
+ " ef ON e.eventid=ef.eventid WHERE e.eventid='" + eventId + "'");
if (eventList.isEmpty()) {
return showMessage(request, response, "event_does_not_exist");
}
Map<String, Object> event = eventList.get(0);
if ((Integer) event.get("grade") == 0 && event.get("uid") != sGlobal.get("supe_uid")
&& !Common.checkPerm(request, response, "manageevent")) {
return showMessage(request, response, "event_under_verify");
}
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
Common.realname_set(sGlobal, sConfig, sNames, (Integer) event.get("uid"), (String) event
.get("username"), "", 0);
List<Map<String, Object>> userEventList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("userevent") + " WHERE eventid='" + eventId + "' AND uid='"
+ sGlobal.get("supe_uid") + "'");
Map<String, Object> supeUserEvent = null;
if (userEventList.isEmpty()) {
sGlobal.put("supe_userevent", null);
} else {
supeUserEvent = userEventList.get(0);
sGlobal.put("supe_userevent", supeUserEvent);
}
boolean allowManage = false;
if ((supeUserEvent != null && (Integer) supeUserEvent.get("status") >= 3)
|| Common.checkPerm(request, response, "manageevent")) {
allowManage = true;
}
if ((Integer) event.get("public") == 0
&& (supeUserEvent == null || (Integer) supeUserEvent.get("status") < 2) && !allowManage) {
List<Map<String, Object>> eventinvite = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("eventinvite") + " WHERE eventid = '" + eventId
+ "' AND touid = '" + sGlobal.get("supe_uid") + "' LIMIT 1");
if (eventinvite.isEmpty()) {
return showMessage(request, response, "event_not_public");
}
}
if ("thread".equals(view) && (Integer) event.get("tagid") == 0) {
view = "all";
}
if ("member".equals(view)) {
String statusStr = request.getParameter("status");
int status = statusStr != null ? Common.intval(statusStr) : 2;
Map<String, String> submenus = new HashMap<String, String>();
if (status > 1) {
submenus.put("member", "class=\"active\"");
} else if (status > 0) {
submenus.put("follow", " class=\"active\"");
} else if (status == 0) {
submenus.put("verify", " class=\"active\"");
}
String statusSQL = null;
String orderby = " ORDER BY ue.dateline ASC";
if (status >= 2) {
statusSQL = " AND ue.status >= 2";
orderby = " ORDER BY ue.status DESC";
} else {
statusSQL = " AND ue.status = '" + status + "'";
}
String filter = "";
String key = request.getParameter("key");
if (!Common.empty(key)) {
key = Common.stripSearchKey(key);
filter = " AND ue.username LIKE '%" + key + "%' ";
}
int perPage = 10;
int page = Common.intval(request.getParameter("page"));
if (page < 1) {
page = 1;
}
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
int count = dataBaseService.findRows("SELECT count(*) FROM "
+ JavaCenterHome.getTableName("userevent") + " ue WHERE ue.eventid = '" + eventId
+ "' " + statusSQL + " " + filter);
List fuids = null;
List<Map<String, Object>> members = null;
if (count > 0) {
members = dataBaseService.executeQuery("SELECT ue.*, sf.* FROM "
+ JavaCenterHome.getTableName("userevent") + " ue LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " sf ON ue.uid = sf.uid WHERE ue.eventid = '" + eventId + "' " + statusSQL
+ " " + filter + " " + orderby + " LIMIT " + start + ", " + perPage);
fuids = new ArrayList(members.size());
for (Map<String, Object> value : members) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
fuids.add(value.get("uid"));
if (!Common.empty("template") && supeUserEvent != null
&& (Integer) supeUserEvent.get("status") >= 3) {
try {
value.put("template", Common.nl2br(Common.getStr((String) value
.get("template"), 255, true, false, false, 0, 0, request, response)));
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
}
}
}
if (fuids != null && fuids.size() > 0) {
List<Map<String, Object>> sessionList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("session") + " WHERE uid IN ("
+ Common.sImplode(fuids) + ")");
Map ols = new HashMap();
for (Map<String, Object> value : sessionList) {
if (Common.empty(value.get("magichidden"))) {
ols.put(value.get("uid"), value.get("lastactivity"));
}
}
request.setAttribute("ols", ols);
}
if (supeUserEvent != null && (Integer) supeUserEvent.get("status") >= 3) {
int verifyNum = 0;
if (status == 0) {
verifyNum = members == null ? 0 : members.size();
} else {
verifyNum = dataBaseService.findRows("SELECT count(*) FROM "
+ JavaCenterHome.getTableName("userevent") + " WHERE eventid = '" + eventId
+ "' AND status=0");
}
request.setAttribute("verifynum", verifyNum);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage,
"space.jsp?do=event&id=" + eventId + "&view=member&status=" + status, null, null));
request.setAttribute("status", status);
request.setAttribute("submenus", submenus);
request.setAttribute("members", members);
} else if ("pic".equals(view)) {
int picId = Common.intval(request.getParameter("picid"));
int picCount = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("eventpic") + " WHERE eventid = '" + eventId + "'");
if (picId > 0) {
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("id", new String[] {"0"});
List<Map<String, Object>> picList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("pic") + " WHERE picid='" + picId + "' LIMIT 1");
if (picList.size() > 0) {
Map<String, Object> pic = picList.get(0);
Common.realname_set(sGlobal, sConfig, sNames, (Integer) pic.get("uid"), (String) pic
.get("username"), "", 0);
request.setAttribute("eventId", eventId);
request.setAttribute("eventPic", pic);
request.setAttribute("picCount", picCount);
try {
invokeMethod(this, "space_album", request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
} else {
int perPage = 12;
int page = Common.intval(request.getParameter("page"));
if (page < 1) {
page = 1;
}
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
String theURL = "space.jsp?do=event&id=" + eventId + "&view=pic";
List badPicIds = new ArrayList();
List<Map<String, Object>> eventpicList = dataBaseService
.executeQuery("SELECT pic.*, ep.* FROM "
+ JavaCenterHome.getTableName("eventpic") + " ep LEFT JOIN "
+ JavaCenterHome.getTableName("pic")
+ " pic ON ep.picid=pic.picid WHERE ep.eventid='" + eventId
+ "' ORDER BY ep.picid DESC LIMIT " + start + ", " + perPage);
List<Map<String, Object>> photoList = new ArrayList<Map<String, Object>>();
for (Map<String, Object> value : eventpicList) {
if (Common.empty(value.get("filepath"))) {
badPicIds.add(value.get("picid"));
continue;
}
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
value.put("pic", Common.pic_get(sConfig, (String) value.get("filepath"),
(Integer) value.get("thumb"), (Integer) value.get("remote"), true));
photoList.add(value);
}
request.setAttribute("photolist", photoList);
if (badPicIds.size() > 0) {
picCount = picCount - badPicIds.size();
dataBaseService.executeUpdate("DELETE FROM "
+ JavaCenterHome.getTableName("eventpic") + " WHERE eventid='" + eventId
+ "' AND picid IN (" + Common.sImplode(badPicIds) + ")");
}
if (picCount != (Integer) event.get("picnum")) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("event")
+ " SET picnum='" + picCount + "' WHERE eventid='" + eventId + "'");
}
request.setAttribute("multi", Common.multi(request, picCount, perPage, page, maxPage,
theURL, null, null));
request.setAttribute("piccount", picCount);
}
request.setAttribute("picid", picId);
} else if ("thread".equals(view)) {
int perPage = 20;
int page = Common.intval(request.getParameter("page"));
if (page < 1) {
page = 1;
}
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
String theURL = "space.jsp?do=event&id=" + eventId + "&view=thread";
int count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("thread") + " WHERE eventid='" + eventId + "'");
if (count > 0) {
List<Map<String, Object>> threadList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("thread") + " WHERE eventid='" + eventId
+ "' ORDER BY lastpost DESC LIMIT " + start + "," + perPage);
for (Map<String, Object> value : threadList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
if (!Common.empty(value.get("magicegg"))) {
StringBuffer magiceggImage = new StringBuffer();
for (int i = 0; i < (Integer) value.get("magicegg"); i++) {
magiceggImage.append("<img src=\"image/magic/egg/" + Common.rand(1, 6)
+ ".gif\" />");
}
value.put("magiceggImage", magiceggImage.toString());
}
}
request.setAttribute("threadlist", threadList);
}
if (count != (Integer) event.get("threadnum")) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("event")
+ " SET threadnum='" + count + "' WHERE eventid='" + eventId + "'");
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL,
null, null));
} else if ("comment".equals(view)) {
int perPage = 20;
int page = Common.intval(request.getParameter("page"));
if (page < 1) {
page = 1;
}
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
String theURL = "space.jsp?do=event&id=" + eventId + "&view=comment";
int cid = Common.intval(request.getParameter("cid"));
String csql = cid != 0 ? "cid='" + cid + "' AND" : "";
request.setAttribute("cid", cid);
int count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("comment") + " WHERE " + csql + " id='" + eventId
+ "' AND idtype='eventid'");
if (count > 0) {
List<Map<String, Object>> comments = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("comment") + " WHERE " + csql + " id='" + eventId
+ "' AND idtype='eventid' ORDER BY dateline DESC LIMIT " + start + "," + perPage);
for (Map<String, Object> value : comments) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("authorid"),
(String) value.get("author"), "", 0);
}
request.setAttribute("comments", comments);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL,
"", "comment_ul"));
} else {
event.put("detail", blogService.blogBBCode((String) event.get("detail")));
if (!Common.empty(event.get("poster"))) {
event.put("pic", Common.pic_get(sConfig, (String) event.get("poster"), (Integer) event
.get("thumb"), (Integer) event.get("remote"), false));
} else {
event.put("pic", globalEventClass.get(event.get("classid")).get("poster"));
}
List<Map<String, Object>> admins = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("userevent") + " WHERE eventid = '" + eventId
+ "' AND status IN ('3', '4') ORDER BY status DESC");
List relateduids = new ArrayList(admins.size());
for (Map<String, Object> value : admins) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
relateduids.add(value.get("uid"));
}
request.setAttribute("admins", admins);
List<Map<String, Object>> members = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("userevent") + " WHERE eventid = '" + eventId
+ "' AND status=2 ORDER BY dateline DESC LIMIT 14");
for (Map<String, Object> value : members) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
relateduids.add(value.get("uid"));
}
request.setAttribute("members", members);
List<Map<String, Object>> follows = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("userevent") + " WHERE eventid = '" + eventId
+ "' AND status=1 ORDER BY dateline DESC LIMIT 12");
for (Map<String, Object> value : follows) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
}
request.setAttribute("follows", follows);
int verifyNum = 0;
if (supeUserEvent != null && (Integer) supeUserEvent.get("status") >= 3) {
verifyNum = dataBaseService.findRows("SELECT count(*) FROM "
+ JavaCenterHome.getTableName("userevent") + " WHERE eventid = '" + eventId
+ "' AND status=0");
}
Map<Object, Map<String, Object>> relatedEvents = new LinkedHashMap<Object, Map<String, Object>>();
if (relateduids.size() > 0) {
List<Map<String, Object>> userEventList2 = dataBaseService
.executeQuery("SELECT e.*, ue.* FROM " + JavaCenterHome.getTableName("userevent")
+ " ue LEFT JOIN " + JavaCenterHome.getTableName("event")
+ " e ON ue.eventid=e.eventid WHERE ue.uid IN ("
+ Common.sImplode(relateduids) + ") ORDER BY ue.dateline DESC LIMIT 0,8");
for (Map<String, Object> value : userEventList2) {
relatedEvents.put(value.get("eventid"), value);
if ((Integer) sGlobal.get("timestamp") <= (Integer) value.get("endtime")) {
}
}
}
request.setAttribute("relatedevents", relatedEvents);
List<Map<String, Object>> comments = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("comment") + " WHERE id = '" + eventId
+ "' AND idtype='eventid' ORDER BY dateline DESC LIMIT 20");
for (Map<String, Object> value : comments) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("authorid"),
(String) value.get("author"), "", 0);
}
request.setAttribute("comments", comments);
List badPicIds = new ArrayList();
List<Map<String, Object>> eventpicList = dataBaseService
.executeQuery("SELECT pic.*, ep.* FROM " + JavaCenterHome.getTableName("eventpic")
+ " ep LEFT JOIN " + JavaCenterHome.getTableName("pic")
+ " pic ON ep.picid = pic.picid WHERE ep.eventid='" + eventId
+ "' ORDER BY ep.picid DESC LIMIT 10");
List<Map<String, Object>> photoList = new ArrayList<Map<String, Object>>();
for (Map<String, Object> value : eventpicList) {
if (Common.empty(value.get("filepath"))) {
badPicIds.add(value.get("picid"));
continue;
}
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
value.put("pic", Common.pic_get(sConfig, (String) value.get("filepath"), (Integer) value
.get("thumb"), (Integer) value.get("remote"), true));
photoList.add(value);
}
request.setAttribute("photolist", photoList);
if (badPicIds.size() > 0) {
dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("eventpic")
+ " WHERE eventid='" + eventId + "' AND picid IN (" + Common.sImplode(badPicIds)
+ ")");
}
if (!Common.empty(event.get("tagid"))) {
int count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("thread") + " WHERE eventid='" + eventId + "'");
if (count > 0) {
List<Map<String, Object>> threadList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("thread") + " WHERE eventid='" + eventId
+ "' ORDER BY lastpost DESC LIMIT 10");
for (Map<String, Object> value : threadList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
}
request.setAttribute("threadlist", threadList);
}
}
if (event.get("uid") != sGlobal.get("supe_uid")) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("event")
+ " SET viewnum=viewnum+1 WHERE eventid='" + eventId + "'");
event.put("viewnum", (Integer) event.get("viewnum") + 1);
}
if ((Integer) event.get("starttime") > (Integer) sGlobal.get("timestamp")) {
int starttime = (Integer) event.get("starttime");
int timestamp = (Integer) sGlobal.get("timestamp");
String[] startTimes = Common.gmdate("MM-dd-yyyy", starttime, "0").split("-");
String[] timeStamps = Common.gmdate("MM-dd-yyyy", timestamp, "0").split("-");
int countdown = (Common.mkTime(0, 0, 0, Integer.valueOf(startTimes[0]), Integer
.valueOf(startTimes[1]), Integer.valueOf(startTimes[2])) - Common.mkTime(0, 0, 0,
Integer.valueOf(timeStamps[0]), Integer.valueOf(timeStamps[1]), Integer
.valueOf(timeStamps[2]))) / 86400;
request.setAttribute("countdown", countdown);
}
request.setAttribute("verifynum", verifyNum);
request.setAttribute("topic", Common.getTopic(request, (Integer) event.get("topicid")));
}
Common.realname_get(sGlobal, sConfig, sNames, space);
Map<String, String> menu = new HashMap<String, String>();
menu.put(view, " class=\"active\"");
request.setAttribute("menu", menu);
request.setAttribute("event", event);
request.setAttribute("tpl_css", "event");
request.setAttribute("eventid", eventId);
request.setAttribute("view", view);
request.setAttribute("manageevent", Common.checkPerm(request, response, "manageevent"));
request.setAttribute("navtitle", Common.empty(event.get("title")) ? "" : event.get("title")
+ " - " + "� - ");
return include(request, response, sConfig, sGlobal, "space_event_view.jsp");
} else {
if (!Common.in_array(new String[] {"friend", "me", "all", "recommend", "city"}, view)) {
view = "all";
}
if ("friend".equals(view) && Common.empty(space.get("friendnum"))) {
view = "me";
}
String type = request.getParameter("type");
if ("all".equals(view) || "city".equals(view)) {
type = "over".equals(type) ? type : "going";
} else if ("me".equals(view) || "friend".equals(view)) {
type = Common.in_array(new String[] {"join", "follow", "org", "self"}, type) ? type : "all";
} else if ("recommend".equals(view)) {
type = "admin".equals(type) ? type : "hot";
}
Map<String, String[]> paramMap = request.getParameterMap();
Map<String, String> menu = new HashMap<String, String>();
menu.put(view, " class=\"active\"");
request.setAttribute("menu", menu);
request.setAttribute("tpl_css", "event");
request.setAttribute("navtitle", "� - ");
request.setAttribute("type", type);
request.setAttribute("view", view);
if ("city".equals(view)) {
String province = request.getParameter("province");
if (Common.empty(province)) {
province = (String) space.get("resideprovince");
paramMap.put("province", new String[] {province});
paramMap.put("city", new String[] {(String) space.get("residecity")});
if (Common.empty(province)) {
Map<String, String> submenus = new HashMap<String, String>();
submenus.put(type, " class=\"active\"");
request.setAttribute("submenus", submenus);
return include(request, response, sConfig, sGlobal, "space_event_list.jsp");
}
}
}
if ("all".equals(view)) {
List<Map<String, Object>> eventList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("event")
+ " WHERE grade = 2 ORDER BY recommendtime DESC LIMIT 4");
List<Map<String, Object>> recommendEvents = new ArrayList<Map<String, Object>>();
for (Map<String, Object> value : eventList) {
if ((Integer) value.get("deadline") > (Integer) sGlobal.get("timestamp")) {
if (!Common.empty(value.get("poster"))) {
value.put("pic", Common.pic_get(sConfig, (String) value.get("poster"),
(Integer) value.get("thumb"), (Integer) value.get("remote"), true));
} else {
value.put("pic", globalEventClass.get(value.get("classid")).get("poster"));
}
recommendEvents.add(value);
}
}
request.setAttribute("recommendevents", recommendEvents);
}
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if ("friend".equals(view)) {
List<Map<String, Object>> hotEvents = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("event") + " WHERE endtime > '"
+ sGlobal.get("timestamp") + "' ORDER BY membernum LIMIT 6");
for (Map<String, Object> value : hotEvents) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
}
request.setAttribute("hotevents", hotEvents);
}
if (!Common.empty(space.get("feedfriend")) && !"friend".equals(view) && !"me".equals(view)) {
List<Map<String, Object>> friendEventList = dataBaseService
.executeQuery("SELECT ue.*, e.*, ue.uid as fuid, ue.username as fusername FROM "
+ JavaCenterHome.getTableName("userevent") + " ue LEFT JOIN "
+ JavaCenterHome.getTableName("event")
+ " e ON ue.eventid=e.eventid WHERE ue.uid IN (" + space.get("feedfriend")
+ ") AND ue.status >= 2 ORDER BY ue.dateline DESC LIMIT 6");
LinkedHashMap<Object, Map<String, Object>> friendEvents = new LinkedHashMap<Object, Map<String, Object>>();
Map<String, Object> tempMap = null;
List tempList = null;
for (Map<String, Object> value : friendEventList) {
if (friendEvents.get(value.get("eventid")) != null) {
tempMap = friendEvents.get(value.get("eventid"));
tempList = (List) tempMap.get("friends");
tempList.add(value.get("fuid"));
tempMap.put("friends", tempList);
friendEvents.put(value.get("eventid"), tempMap);
} else {
tempList = new ArrayList();
tempList.add(value.get("fuid"));
value.put("friends", tempList);
friendEvents.put(value.get("eventid"), value);
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("fuid"),
(String) value.get("fusername"), "", 0);
}
}
request.setAttribute("friendevents", friendEvents);
}
if (!"me".equals(view)) {
List<Map<String, Object>> followEvents = dataBaseService
.executeQuery("SELECT ue.*, e.* FROM " + JavaCenterHome.getTableName("userevent")
+ " ue LEFT JOIN " + JavaCenterHome.getTableName("event")
+ " e ON ue.eventid=e.eventid WHERE ue.uid = '" + sGlobal.get("supe_uid")
+ "' AND ue.status = 1 ORDER BY ue.dateline LIMIT 6");
for (Map<String, Object> value : followEvents) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
}
request.setAttribute("followevents", followEvents);
}
int perPage = 10;
int page = Common.intval(request.getParameter("page"));
if (page < 1) {
page = 1;
}
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
String uidStr = request.getParameter("uid");
int uid = Common.empty(uidStr) ? (Integer) sGlobal.get("supe_uid") : Common.intval(uidStr);
String theURL = "space.jsp?uid=" + uid + "&do=event&view=" + view;
List<String> wheres = new ArrayList<String>();
String fromSQL = "";
String joinSQL = "";
String orderby = "";
String SQL = "";
boolean needQuery = true;
int count = 0;
if ("recommend".equals(view)) {
fromSQL = JavaCenterHome.getTableName("event") + " e";
if ("admin".equals(type)) {
wheres.add("e.grade = 2");
orderby = "e.recommendtime DESC";
theURL += "&type=admin";
} else {
wheres.add("e.endtime > '" + sGlobal.get("timestamp") + "'");
orderby = "e.membernum DESC";
theURL += "&type=hot";
}
} else if ("city".equals(view) || "all".equals(view)) {
fromSQL = JavaCenterHome.getTableName("event") + " e";
if ("over".equals(type)) {
wheres.add("e.endtime < '" + sGlobal.get("timestamp") + "'");
orderby = "e.eventid DESC";
theURL += "&type=over";
} else {
wheres.add("e.endtime >= '" + sGlobal.get("timestamp") + "'");
orderby = "e.eventid DESC";
theURL += "&type=going";
}
} else if ("friend".equals(view)) {
SQL = "SELECT DISTINCT(eventid) FROM " + JavaCenterHome.getTableName("userevent")
+ " WHERE uid IN (" + space.get("feedfriend") + ")";
if ("follow".equals(type)) {
SQL += " AND status IN (0,1)";
theURL += "&type=follow";
} else if ("org".equals(type)) {
SQL += " AND status IN (3,4)";
theURL += "&type=org";
} else if ("join".equals(type)) {
SQL += " AND status IN (2,3,4)";
theURL += "&type=join";
}
Map<String, Object> sucess = dataBaseService.execute(SQL);
count = (Integer) sucess.get("sucess");
if (count > 0) {
SQL += " ORDER BY eventid DESC LIMIT " + start + ", " + perPage;
List<Map<String, Object>> userEventList = dataBaseService.executeQuery(SQL);
List ids = new ArrayList(userEventList.size());
for (Map<String, Object> value : userEventList) {
ids.add(value.get("eventid"));
}
fromSQL = JavaCenterHome.getTableName("event") + " e";
joinSQL = "LEFT JOIN " + JavaCenterHome.getTableName("userevent")
+ " ue ON e.eventid = ue.eventid";
wheres.add("e.eventid IN (" + Common.sImplode(ids) + ")");
orderby = " e.eventid DESC";
SQL = "SELECT e.*, ue.uid as fuid, ue.username as fusername, ue.status FROM " + fromSQL
+ " " + joinSQL + " WHERE " + Common.implode(wheres, " AND ");
}
needQuery = false;
} else if ("me".equals(view)) {
fromSQL = JavaCenterHome.getTableName("userevent") + " ue";
joinSQL = "LEFT JOIN " + JavaCenterHome.getTableName("event") + " e ON e.eventid=ue.eventid";
orderby = "ue.dateline DESC";
wheres.add("ue.uid = '" + space.get("uid") + "'");
if ("follow".equals(type)) {
wheres.add("ue.status IN (0,1)");
theURL += "&type=follow";
} else if ("org".equals(type)) {
wheres.add("ue.status IN (3,4)");
theURL += "&type=org";
} else if ("join".equals(type)) {
wheres.add("ue.status IN (2,3,4)");
theURL += "&type=join";
} else if ("self".equals(type)) {
needQuery = false;
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("event") + " WHERE uid='" + space.get("uid")
+ "' LIMIT 1");
if ((Integer) space.get("eventnum") != count) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET eventnum='" + count + "' WHERE uid='" + space.get("uid") + "'");
}
SQL = "SELECT * FROM " + JavaCenterHome.getTableName("event") + " e WHERE e.uid='"
+ space.get("uid") + "' ORDER BY e.dateline DESC LIMIT " + start + ", " + perPage;
}
if (!Common.empty(request.getParameter("classid"))
|| !Common.empty(request.getParameter("date"))
|| !Common.empty(request.getParameter("province"))
|| !Common.empty(request.getParameter("city"))) {
fromSQL = JavaCenterHome.getTableName("userevent") + " ue, "
+ JavaCenterHome.getTableName("event") + " e";
wheres.add(" ue.eventid = e.eventid");
joinSQL = "";
}
}
String classIdStr = request.getParameter("classid");
if (!Common.empty(classIdStr)) {
int classId = Common.intval(classIdStr);
paramMap.put("classid", new String[] {classId + ""});
wheres.add("e.classid = '" + classId + "'");
theURL += "&classid=" + classId;
}
String date = request.getParameter("date");
if (!Common.empty(date)) {
int dayStart = Common.strToTime(date, Common.getTimeOffset(sGlobal, sConfig));
int dayEnd = dayStart + 86400;
wheres.add("e.starttime <= '" + dayEnd + "' AND e.endtime >= '" + dayStart + "'");
theURL += "&date=" + date;
}
String province = request.getParameter("province");
if (!Common.empty(province)) {
try {
province = Common.getStr(province, 20, true, true, false, 0, 0, request, response);
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
paramMap.put("province", new String[] {province});
wheres.add("e.province ='" + province + "'");
theURL += "&province=" + province;
}
String city = request.getParameter("city");
if (!Common.empty(city)) {
try {
city = Common.getStr(city, 20, true, true, false, 0, 0, request, response);
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
paramMap.put("city", new String[] {city});
wheres.add("e.city ='" + city + "'");
theURL += "&city=" + city;
}
Map<String, String> submenus = new HashMap<String, String>();
submenus.put(type, " class=\"active\"");
String searchKey = Common.stripSearchKey(request.getParameter("searchkey"));
if (!Common.empty(searchKey)) {
wheres = new ArrayList<String>();
submenus = null;
wheres.add("e.title LIKE '%" + searchKey + "%'");
theURL += "&searchkey=" + searchKey;
Map<String, Object> resultMap = Common.ckSearch(theURL, request, response);
if (resultMap != null) {
return showMessage(request, response, (String) resultMap.get("msgkey"),
(String) resultMap.get("url_forward"), (Integer) resultMap.get("second"),
(String[]) resultMap.get("args"));
}
request.setAttribute("searchkey", searchKey);
}
if (wheres.isEmpty()) {
wheres.add("1");
}
if (needQuery) {
SQL = "SELECT COUNT(*) FROM " + fromSQL + " WHERE " + Common.implode(wheres, " AND ");
count = dataBaseService.findRows(SQL);
}
if (count > 0) {
if (needQuery) {
SQL = "SELECT e.* FROM " + fromSQL + " " + joinSQL + " WHERE "
+ Common.implode(wheres, " AND ") + " ORDER BY " + orderby + " LIMIT " + start
+ ", " + perPage;
}
LinkedHashMap<Object, Map<String, Object>> eventMap = new LinkedHashMap<Object, Map<String, Object>>();
LinkedHashMap<Object, List<Map<String, Object>>> fevents = new LinkedHashMap<Object, List<Map<String, Object>>>();
List<Map<String, Object>> eventList = dataBaseService.executeQuery(SQL);
List<Map<String, Object>> tempList = null;
LinkedHashMap<String, Object> tempMap = null;
for (Map<String, Object> event : eventList) {
if (!Common.empty(event.get("poster"))) {
event.put("pic", Common.pic_get(sConfig, (String) event.get("poster"),
(Integer) event.get("thumb"), (Integer) event.get("remote"), true));
} else {
event.put("pic", globalEventClass.get(event.get("classid")).get("poster"));
}
Common.realname_set(sGlobal, sConfig, sNames, (Integer) event.get("uid"), (String) event
.get("username"), "", 0);
if ("friend".equals(view)) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) event.get("fuid"),
(String) event.get("fusername"), "", 0);
tempList = fevents.get(event.get("eventid"));
if (tempList == null) {
tempList = new ArrayList<Map<String, Object>>();
}
tempMap = new LinkedHashMap<String, Object>();
tempMap.put("fuid", event.get("fuid"));
tempMap.put("fusername", event.get("fusername"));
tempMap.put("status", event.get("status"));
tempList.add(tempMap);
fevents.put(event.get("eventid"), tempList);
}
eventMap.put(event.get("eventid"), event);
}
request.setAttribute("fevents", fevents);
request.setAttribute("eventlist", eventMap);
}
if (!Common.empty(sGlobal.get("inajax"))) {
request.setAttribute("count", count);
} else {
if (!(Boolean) (space.get("self"))) {
Map TPL = new HashMap();
TPL.put("spacetitle", "�");
TPL.put("spacemenus", new String[] {"<a href=\"space.jsp?uid=" + space.get("uid")
+ "&do=event&view=me\">TA�����л</a>"});
request.setAttribute("TPL", TPL);
}
request.setAttribute("theurl", theURL);
}
Common.realname_get(sGlobal, sConfig, sNames, space);
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL, null,
null));
request.setAttribute("submenus", submenus);
return include(request, response, sConfig, sGlobal, "space_event_list.jsp");
}
}
public ActionForward space_feed(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
if (Common.empty(sConfig.get("showallfriendnum")) || (Integer) sConfig.get("showallfriendnum") < 1) {
sConfig.put("showallfriendnum", 10);
}
if (Common.empty(sConfig.get("feedhotday"))) {
sConfig.put("feedhotday", 2);
}
boolean isNewer = space.get("friendnum") == null
|| (Integer) space.get("friendnum") < (Integer) sConfig.get("showallfriendnum") ? true
: false;
Map<String, String[]> paramMap = request.getParameterMap();
String view = request.getParameter("view");
if (Common.empty(view) && (Boolean) space.get("self") && isNewer) {
paramMap.put("view", new String[] {"all"});
view = "all";
}
int feedMaxNum = (Integer) sConfig.get("feedmaxnum");
int perPage = feedMaxNum < 50 ? 50 : feedMaxNum;
perPage = Common.mobPerpage(request, perPage);
if ("hot".equals(view)) {
perPage = 50;
}
int start = Common.intval(request.getParameter("start"));
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
sGlobal.put("today", Common.strToTime(Common.sgmdate(request, "yyyy-MM-dd", 0), Common.getTimeOffset(
sGlobal, sConfig)));
int feedHotMin = (Integer) sConfig.get("feedhotmin");
int minHot = feedHotMin < 1 ? 3 : feedHotMin;
sGlobal.put("gift_appid", "1027468");
String action = (String) request.getAttribute("do");
String whereSQL = null;
String orderSQL = null;
String theURL = null;
String f_index = null;
Map TPL = request.getAttribute("TPL") != null ? (Map) request.getAttribute("TPL") : new HashMap();
if ("all".equals(view)) {
whereSQL = "1";
orderSQL = "dateline DESC";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + action + "&view=all";
f_index = "";
} else if ("hot".equals(view)) {
whereSQL = "hot>=" + minHot;
orderSQL = "dateline DESC";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + action + "&view=hot";
f_index = "";
} else {
if (Common.empty(space.get("feedfriend"))) {
paramMap.put("view", new String[] {"me"});
view = "me";
}
if ("me".equals(view)) {
whereSQL = "uid='" + space.get("uid") + "'";
orderSQL = "dateline DESC";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + action + "&view=me";
f_index = "";
} else {
whereSQL = "uid IN ('0'," + space.get("feedfriend") + ")";
orderSQL = "dateline DESC";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + action + "&view=we";
f_index = "USE INDEX(dateline)";
paramMap.put("view", new String[] {"we"});
view = "we";
TPL.put("hidden_time", 1);
}
}
int appId = Common.intval(request.getParameter("appid"));
if (appId > 0) {
whereSQL += " AND appid='" + appId + "'";
}
String icon = Common.trim(request.getParameter("icon"));
if (!Common.empty(icon)) {
whereSQL += " AND icon='" + icon + "'";
}
String filter = Common.trim(request.getParameter("filter"));
if ("site".equals(filter)) {
whereSQL += " AND appid>0";
} else if ("myapp".equals(filter)) {
whereSQL += " AND appid='0'";
}
int count = 0;
List<Map<String, Object>> feedList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("feed") + " " + f_index + " WHERE " + whereSQL + " ORDER BY "
+ orderSQL + " LIMIT " + start + "," + perPage);
LinkedHashMap<Object, Map> feed_list = new LinkedHashMap<Object, Map>();
LinkedHashMap<Object, LinkedHashMap> appfeedList = new LinkedHashMap<Object, LinkedHashMap>();
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if (view.equals("me") || view.equals("hot")) {
for (Map<String, Object> value : feedList) {
if (Common.ckFriend(sGlobal, space, (Integer) value.get("uid"),
(Integer) value.get("friend"), (String) value.get("target_ids"))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
feed_list.put(value.get("feedid"), value);
}
count++;
}
} else {
String[] hidden_icons = null;
String feedHiddenIcon = (String) sConfig.get("feedhiddenicon");
if (!Common.empty(feedHiddenIcon)) {
sConfig.put("feedhiddenicon", (feedHiddenIcon = feedHiddenIcon.replace(" ", "")));
hidden_icons = feedHiddenIcon.split(",");
}
Map privacy = (Map) space.get("privacy");
Map filterIcon = privacy == null ? null : (Map) privacy.get("filter_icon");
space.put("filter_icon", Common.empty(filterIcon) ? new HashSet() : filterIcon.keySet());
LinkedHashMap hashData = new LinkedHashMap();
LinkedHashMap icon_num = new LinkedHashMap();
List tempList = null;
boolean isMyApp = false;
LinkedHashMap hashDataMap = null;
int filterCount = 0;
List<Map<String, Object>> filter_list = new ArrayList<Map<String, Object>>();
LinkedHashMap hiddenfeed_num = new LinkedHashMap();
LinkedHashMap<Object, List<Map>> hiddenfeed_list = new LinkedHashMap<Object, List<Map>>();
for (Map<String, Object> value : feedList) {
LinkedHashMap tempMap = (LinkedHashMap) feed_list.get(value.get("hash_data"));
if (Common.empty(tempMap) || Common.empty(tempMap.get(value.get("uid")))) {
if (Common.ckFriend(sGlobal, space, (Integer) value.get("uid"), (Integer) value
.get("friend"), (String) value.get("target_ids"))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
if (ckIconUid(value, space)) {
isMyApp = Common.isNumeric(value.get("icon")) ? true : false;
if (!Common.empty(sConfig.get("my_showgift"))
&& value.get("icon").toString().equals(sGlobal.get("gift_appid"))) {
isMyApp = false;
}
if (((isMyApp && Common.in_array(hidden_icons, "myop")) || Common.in_array(
hidden_icons, value.get("icon")))
&& !Common.empty(icon_num.get(value.get("icon")))) {
hiddenfeed_num.put(value.get("icon"),
hiddenfeed_num.get(value.get("icon")) == null ? 1
: ((Integer) hiddenfeed_num.get(value.get("icon"))) + 1);
tempList = hiddenfeed_list.get(value.get("icon"));
if (tempList == null) {
tempList = new ArrayList();
}
Common.mkFeed(sNames, sConfig, request, value, null);
tempList.add(value);
hiddenfeed_list.put(value.get("icon"), tempList);
} else {
if (isMyApp) {
if (appfeedList.get(value.get("hash_data")) == null) {
hashDataMap = new LinkedHashMap();
}
hashDataMap.put(value.get("uid"), value);
appfeedList.put(value.get("hash_data"), hashDataMap);
} else {
if ((hashDataMap = (LinkedHashMap) feed_list.get(value.get("hash_data"))) == null) {
hashDataMap = new LinkedHashMap();
}
hashDataMap.put(value.get("uid"), value);
feed_list.put(value.get("hash_data"), hashDataMap);
}
}
icon_num.put(value.get("icon"), icon_num.get(value.get("icon")) == null ? 1
: ((Integer) icon_num.get(value.get("icon"))) + 1);
} else {
filterCount++;
value = Common.mkFeed(sNames, sConfig, request, value, null);
filter_list.add(value);
}
}
}
count++;
}
request.setAttribute("hiddenfeed_list", hiddenfeed_list);
request.setAttribute("hiddenfeed_num", hiddenfeed_num);
request.setAttribute("filtercount", filterCount);
request.setAttribute("filter_list", filter_list);
}
LinkedHashMap<Object, Map<String, Object>> hotList = new LinkedHashMap<Object, Map<String, Object>>();
if ((Boolean) space.get("self") && Common.empty(start)){
LinkedHashMap<Object, Map<String, Object>> hotListAll = new LinkedHashMap<Object, Map<String, Object>>();
if ((Integer) sConfig.get("feedhotnum") > 0 && (view.equals("we") || view.equals("all"))) {
double hotStartTime = (Integer) sGlobal.get("timestamp") - Double.parseDouble(sConfig.get("feedhotday").toString())
* 3600 * 24;
List<Map<String, Object>> feeds = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("feed") + " USE INDEX(hot) WHERE dateline>='"
+ hotStartTime + "' ORDER BY hot DESC LIMIT 0,10");
for (Map<String, Object> value : feeds) {
if ((Integer) value.get("hot") > 0
&& Common.ckFriend(sGlobal, space, (Integer) value.get("uid"), (Integer) value
.get("friend"), (String) value.get("target_ids"))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
value = Common.mkFeed(sNames, sConfig, request, value, null);
if (Common.empty(hotList)) {
hotList.put(value.get("feedid"), value);
} else {
hotListAll.put(value.get("feedid"), value);
}
}
}
int nextHotNum = (Integer) sConfig.get("feedhotnum") - 1;
if (nextHotNum > 0) {
if (hotListAll.size() > nextHotNum) {
Object[] hotListKey = Common.arrayRand(hotListAll, nextHotNum);
if (nextHotNum == 1) {
hotList.put(hotListKey[0], hotListAll.get(hotListKey[0]));
} else {
for (Object key : hotListKey) {
hotList.put(key, hotListAll.get(key));
}
}
} else {
hotList = hotListAll;
}
}
}
}
Common.realname_get(sGlobal, sConfig, sNames, space);
LinkedHashMap list = new LinkedHashMap();
Set feedKeys = feed_list.keySet();
if (view.equals("hot")) {
Map value = null;
List tempList = null;
for (Object feedKey : feedKeys) {
value = feed_list.get(feedKey);
value = Common.mkFeed(sNames, sConfig, request, value, null);
if (list.get("today") == null) {
tempList = new ArrayList(feedKeys.size());
}
tempList.add(value);
list.put("today", tempList);
}
} else if ("me".equals(view)) {
int dateline = 0;
int today = (Integer) sGlobal.get("today");
String theday = null;
Map value = null;
List todayList = null;
List yesterdayList = null;
List thedayList = null;
for (Object feedKey : feedKeys) {
value = feed_list.get(feedKey);
if (!Common.empty(hotList.get(value.get("feedid")))) {
continue;
}
value = Common.mkFeed(sNames, sConfig, request, value, null);
dateline = (Integer) value.get("dateline");
if (dateline >= today) {
if (list.get("today") == null) {
todayList = new ArrayList();
}
todayList.add(value);
list.put("today", todayList);
} else if (dateline >= today - 3600 * 24) {
if (list.get("yesterday") == null) {
yesterdayList = new ArrayList();
}
yesterdayList.add(value);
list.put("yesterday", yesterdayList);
} else {
theday = Common.sgmdate(request, "yyyy-MM-dd", dateline);
if (list.get(theday) == null) {
thedayList = new ArrayList();
}
thedayList.add(value);
list.put(theday, thedayList);
}
}
} else {
int dateline = 0;
int today = (Integer) sGlobal.get("today");
String theday = null;
List todayList = null;
List yesterdayList = null;
List thedayList = null;
for (Object feedKey : feedKeys) {
Map<Object, Map> values = feed_list.get(feedKey);
Set keys = values.keySet();
List actors = new ArrayList(keys.size());
Map a_value = null;
for (Object key : keys) {
Map value = values.get(key);
if (Common.empty(a_value)) {
a_value = value;
}
actors.add("<a href=\"space.jsp?uid=" + value.get("uid") + "\">"
+ sNames.get((Integer) value.get("uid")) + "</a>");
}
if (!Common.empty(hotList.get(a_value.get("feedid")))) {
continue;
}
a_value = Common.mkFeed(sNames, sConfig, request, a_value, actors);
dateline = (Integer) a_value.get("dateline");
if (dateline >= today) {
if (list.get("today") == null) {
todayList = new ArrayList();
}
todayList.add(a_value);
list.put("today", todayList);
} else if (dateline >= today - 3600 * 24) {
if (list.get("yesterday") == null) {
yesterdayList = new ArrayList();
}
yesterdayList.add(a_value);
list.put("yesterday", yesterdayList);
} else {
theday = Common.sgmdate(request, "yyyy-MM-dd", dateline);
if (list.get(theday) == null) {
thedayList = new ArrayList();
}
thedayList.add(a_value);
list.put(theday, thedayList);
}
}
Map value = null;
List appList = null;
Set appFeedKeys = appfeedList.keySet();
for (Object appFeedKey : appFeedKeys) {
Map<Object, Map> values = appfeedList.get(appFeedKey);
Set keys = values.keySet();
Map a_value = null;
List actors = new ArrayList(keys.size());
for (Object key : keys) {
value = values.get(key);
if (Common.empty(a_value)) {
a_value = value;
}
actors.add("<a href=\"space.jsp?uid=" + value.get("uid") + "\">"
+ sNames.get((Integer) value.get("uid")) + "</a>");
}
a_value = Common.mkFeed(sNames, sConfig, request, a_value, actors);
if (list.get("app") == null) {
appList = new ArrayList();
}
appList.add(a_value);
list.put("app", appList);
}
}
Map myActives = new LinkedHashMap();
myActives.put(Common.in_array(new String[] {"site", "myapp"}, filter) ? filter : "all",
" class=\"active\"");
Map actives = new LinkedHashMap();
actives.put(Common.in_array(new String[] {"me", "all", "hot"}, view) ? view : "we",
" class=\"active\"");
LinkedHashMap<String,String> icons=new LinkedHashMap<String, String>();
icons.put("doing", "��¼");
icons.put("blog", "д��־");
icons.put("album", "�ϴ�ͼƬ");
icons.put("share", "��ӷ���");
icons.put("poll", "����/����ͶƱ");
icons.put("thread", "������");
icons.put("post", "�Ի���ظ�");
icons.put("mtag", "����Ⱥ��");
icons.put("event", "����/����");
icons.put("friend", "��Ӻ���");
icons.put("comment", "��������");
icons.put("wall", "��������");
icons.put("show", "��������");
icons.put("task", "�������");
icons.put("profile", "���¸�������");
icons.put("click", "����־/ͼƬ/�����̬");
Map feedIcon_actives=new HashMap();
feedIcon_actives.put(icons.keySet().contains(icon) ? icon : "all"," class=\"current\"");
request.setAttribute("icons", icons);
request.setAttribute("feedIcon_actives", feedIcon_actives);
if ((Integer) space.get("uid") > 0 && !(Boolean) space.get("self")) {
request.setAttribute("isAdmin", Common.checkPerm(request, response, "admin"));
request.setAttribute("allowstat", Common.checkPerm(request, response, "allowstat"));
Map userGroup = (Map) request.getAttribute("usergroup" + space.get("groupid"));
if (userGroup != null) {
request.setAttribute("gColor", Common.getColor(userGroup));
request.setAttribute("gIcon", Common.getIcon(userGroup));
}
TPL.put("spacetitle", "��̬");
TPL.put("spacemenus", new String[] {"<a href=\"space.jsp?uid=" + space.get("uid")
+ "&do=feed&view=me\">TA�Ľ��ڶ�̬</a>"});
}
request.setAttribute("count", count);
request.setAttribute("perpage", perPage);
request.setAttribute("start", start);
request.setAttribute("navtitle", "��̬ - ");
request.setAttribute("isnewer", isNewer);
request.setAttribute("actives", actives);
request.setAttribute("hotlist", hotList);
request.setAttribute("TPL", TPL);
request.setAttribute("list", list);
return include(request, response, sConfig, sGlobal, "space_feed.jsp");
}
public ActionForward space_friend(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
int perPage = 24;
perPage = Common.mobPerpage(request, perPage);
int count = 0;
int page = Common.intval(request.getParameter("page"));
if (page < 1)
page = 1;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
LinkedHashMap<Object, Map<String, Object>> list = new LinkedHashMap<Object, Map<String, Object>>();
Map<String, String> actives = new HashMap<String, String>();
List fuids = new ArrayList();
String view = request.getParameter("view");
String type = request.getParameter("type");
if ("online".equals(view)) {
String theURL = "space.jsp?uid=" + space.get("uid") + "&do=friend&view=online";
actives.put("me", " class=\"active\"");
String whereSQL = null;
if ("near".equals(type)) {
theURL += "&type=near";
whereSQL = " WHERE main.ip='" + Common.getOnlineIP(request, true) + "'";
} else if ("friend".equals(type) && !Common.empty(space.get("feedfriend"))) {
theURL += "&type=friend";
whereSQL = " WHERE main.uid IN (" + space.get("feedfriend") + ")";
} else {
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("type", new String[] {"all"});
theURL += "&type=all";
whereSQL = " WHERE 1";
}
count = dataBaseService.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("session")
+ " main " + whereSQL);
if (count > 0) {
List<Map<String, Object>> sessionList = dataBaseService
.executeQuery("SELECT f.resideprovince, f.residecity, f.sex, f.note, f.spacenote, main.* FROM "
+ JavaCenterHome.getTableName("session")
+ " main LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " f ON f.uid=main.uid "
+ whereSQL
+ " ORDER BY main.lastactivity DESC LIMIT "
+ start
+ ","
+ perPage);
Map ols = new HashMap();
request.setAttribute("ols", ols);
for (Map<String, Object> value : sessionList) {
if (!Common.empty(value.get("magichidden"))) {
count = count - 1;
continue;
}
if ("near".equals(type)) {
if (value.get("uid") == space.get("uid")) {
count = count - 1;
continue;
}
}
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
value.put("p", Common.urlEncode((String) value.get("resideprovince")));
value.put("c", Common.urlEncode((String) value.get("residecity")));
value.put("isfriend", (value.get("uid").equals(space.get("uid")) || (!Common.empty(space
.get("friends")) && Common.in_array((String[]) space.get("friends"), value
.get("uid")))) ? true : false);
ols.put(value.get("uid"), value.get("lastactivity"));
try {
value.put("note", Common.getStr((String) value.get("note"), 35, false, false, false,
0, -1, request, response));
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
list.put(value.get("uid"), value);
}
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL, null,
null));
} else if ("visitor".equals(view) || "trace".equals(view)) {
String theURL = "space.jsp?uid=" + space.get("uid") + "&do=friend&view=" + view;
actives.put("me", " class=\"active\"");
List<Map<String, Object>> visitorList = null;
if ("visitor".equals(view)) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("visitor") + " main WHERE main.uid='"
+ space.get("uid") + "'");
visitorList = dataBaseService
.executeQuery("SELECT f.resideprovince, f.residecity, f.note, f.spacenote, f.sex, main.vuid AS uid, main.vusername AS username, main.dateline FROM "
+ JavaCenterHome.getTableName("visitor")
+ " main LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " f ON f.uid=main.vuid WHERE main.uid='"
+ space.get("uid")
+ "' ORDER BY main.dateline DESC LIMIT " + start + "," + perPage);
} else {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("visitor") + " main WHERE main.vuid='"
+ space.get("uid") + "'");
visitorList = dataBaseService
.executeQuery("SELECT s.username, s.name, s.namestatus, s.groupid, f.resideprovince, f.residecity, f.note, f.spacenote, f.sex, main.uid AS uid, main.dateline FROM "
+ JavaCenterHome.getTableName("visitor")
+ " main LEFT JOIN "
+ JavaCenterHome.getTableName("space")
+ " s ON s.uid=main.uid LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " f ON f.uid=main.uid WHERE main.vuid='"
+ space.get("uid")
+ "' ORDER BY main.dateline DESC LIMIT " + start + "," + perPage);
}
if (count > 0) {
for (Map<String, Object> value : visitorList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), (String) value.get("name"), value.get("namestatus") == null ? 0
: (Integer) value.get("namestatus"));
value.put("p", Common.urlEncode((String) value.get("resideprovince")));
value.put("c", Common.urlEncode((String) value.get("residecity")));
value.put("isfriend", (value.get("uid").equals(space.get("uid")) || (!Common.empty(space
.get("friends")) && Common.in_array((String[]) space.get("friends"), value
.get("uid")))) ? true : false);
fuids.add(value.get("uid"));
try {
value.put("note", Common.getStr((String) value.get("note"), 28, false, false, false,
0, -1, request, response));
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
list.put(value.get("uid"), value);
}
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL, null,
null));
} else if ("blacklist".equals(view)) {
String theURL = "space.jsp?uid=" + space.get("uid") + "&do=friend&view=" + view;
actives.put("me", " class=\"active\"");
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("blacklist") + " main WHERE main.uid='" + space.get("uid")
+ "'");
if (count > 0) {
List<Map<String, Object>> blacklist = dataBaseService
.executeQuery("SELECT s.username, s.name, s.namestatus, s.groupid, main.dateline, main.buid AS uid FROM "
+ JavaCenterHome.getTableName("blacklist")
+ " main LEFT JOIN "
+ JavaCenterHome.getTableName("space")
+ " s ON s.uid=main.buid WHERE main.uid='"
+ space.get("uid")
+ "' ORDER BY main.dateline DESC LIMIT " + start + "," + perPage);
for (Map<String, Object> value : blacklist) {
value.put("isfriend", false);
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), (String) value.get("name"), (Integer) value.get("namestatus"));
fuids.add(value.get("uid"));
list.put(value.get("uid"), value);
}
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL, null,
null));
} else {
String theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do");
actives.put("me", " class=\"active\"");
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("view", new String[] {"me"});
view = "me";
String whereSQL = null;
Map<Integer, String> groups = null;
int group = 0;
if ((Boolean) space.get("self")) {
groups = Common.getFriendGroup(request);
request.setAttribute("groups", groups);
String groupStr = request.getParameter("group");
group = groupStr == null ? -1 : Common.intval(groupStr);
if (group > -1) {
whereSQL = "AND main.gid='" + group + "'";
theURL += "&group=" + group;
}
}
String searchKey = request.getParameter("searchkey");
if (!Common.empty(searchKey)) {
whereSQL = "AND main.fusername='" + searchKey + "'";
theURL += "&searchkey=" + searchKey;
}
if (!Common.empty(space.get("friendnum"))) {
if (whereSQL != null) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("friend") + " main WHERE main.uid='"
+ space.get("uid") + "' AND main.status='1' " + whereSQL);
} else {
whereSQL = "";
count = (Integer) space.get("friendnum");
}
if (count > 0) {
List<Map<String, Object>> friendList = dataBaseService
.executeQuery("SELECT s.*, f.resideprovince, f.residecity, f.note, f.spacenote, f.sex, main.gid, main.num FROM "
+ JavaCenterHome.getTableName("friend")
+ " main LEFT JOIN "
+ JavaCenterHome.getTableName("space")
+ " s ON s.uid=main.fuid LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " f ON f.uid=main.fuid WHERE main.uid='"
+ space.get("uid")
+ "' AND main.status='1' "
+ whereSQL
+ " ORDER BY main.num DESC, main.dateline DESC LIMIT "
+ start
+ ","
+ perPage);
for (Map<String, Object> value : friendList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), (String) value.get("name"), (Integer) value
.get("namestatus"));
value.put("p", Common.urlEncode((String) value.get("resideprovince")));
value.put("c", Common.urlEncode((String) value.get("residecity")));
value.put("isfriend", true);
value.put("group", groups != null ? groups.get(value.get("gid")) : "");
fuids.add(value.get("uid"));
try {
value.put("note", Common.getStr((String) value.get("note"), 28, false, false,
false, 0, -1, request, response));
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
list.put(value.get("uid"), value);
}
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL,
null, null));
}
if ((Boolean) space.get("self")) {
Map groupSelect = new HashMap();
groupSelect.put(group, " class=\"current\"");
request.setAttribute("groupselect", groupSelect);
int maxFriendNum = (Integer) Common.checkPerm(request, response, sGlobal, "maxfriendnum");
if (maxFriendNum > 0) {
maxFriendNum = maxFriendNum
+ (space.get("addfriend") == null ? 0 : (Integer) space.get("addfriend"));
request.setAttribute("maxfriendnum", maxFriendNum);
}
}
}
if (fuids.size() > 0) {
List<Map<String, Object>> sessionList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("session") + " WHERE uid IN (" + Common.sImplode(fuids)
+ ")");
Map ols = new HashMap();
String[] source = new String[] {"me", "trace", "blacklist"};
for (Map<String, Object> value : sessionList) {
if (Common.empty(value.get("magichidden"))) {
ols.put(value.get("uid"), value.get("lastactivity"));
} else if (list.get(value.get("uid")) != null && !Common.in_array(source, view)) {
list.remove((value.get("uid")));
count = count - 1;
}
}
request.setAttribute("ols", ols);
}
Common.realname_get(sGlobal, sConfig, sNames, space);
if (Common.empty(view) || "all".equals(view)) {
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("view", new String[] {"me"});
view = "me";
}
Map<String, String> a_actives = new HashMap<String, String>();
a_actives.put(view + (type == null ? "" : type), " class=\"current\"");
request.setAttribute("list", list);
List<Map<String, Object>> listForSpaceList = null;
if (Common.empty(sGlobal.get("inajax")) && !(Boolean) space.get("self")) {
Map<String, Object> TPL = new HashMap<String, Object>();
TPL.put("spacetitle", "����");
TPL.put("spacemenus", new String[] {"<a href=\"space.jsp?uid=" + space.get("uid")
+ "&do=friend&view=me\">TA�ĺ����б�</a>"});
request.setAttribute("TPL", TPL);
listForSpaceList = new ArrayList<Map<String, Object>>();
request.setAttribute("list", listForSpaceList);
}
Set keys = list.keySet();
Map<String, Object> value = null;
for (Object key : keys) {
value = list.get(key);
value.put("gColor", value.get("groupid") == null ? "" : Common.getColor(request, response,
(Integer) value.get("groupid")));
value.put("gIcon", value.get("groupid") == null ? "" : Common.getIcon(request, response,
(Integer) value.get("groupid")));
if (Common.empty(sGlobal.get("inajax")) && !(Boolean) space.get("self")) {
listForSpaceList.add(value);
}
}
request.setAttribute("actives", actives);
request.setAttribute("a_actives", a_actives);
request.setAttribute("count", count);
request.setAttribute("navtitle", "���� - ");
return include(request, response, sConfig, sGlobal, "space_friend.jsp");
}
public ActionForward space_index(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
if (!Common.empty(space.get("namestatus"))) {
if (!cpService.checkRealName(request, "viewspace")) {
sGlobal.put("realname_privacy", true);
setPrivacy(sGlobal, space);
return include(request, response, sConfig, sGlobal, "space_privacy.jsp");
}
}
sGlobal.put("space_theme", space.get("theme"));
sGlobal.put("space_css", space.get("css"));
space.put("isfriend", space.get("self"));
if (Common.in_array((String[]) space.get("friends"), sGlobal.get("supe_uid"))) {
space.put("isfriend", true);
}
space.put("sex_org", space.get("sex"));
space
.put(
"sex",
space.get("sex") != null ? (Integer) space.get("sex") == 1 ? "<a href=\"cp.jsp?ac=friend&op=search&sex=1&searchmode=1\">"
+ Common.getMessage(request, "man") + "</a>"
: ((Integer) space.get("sex") == 2 ? "<a href=\"cp.jsp?ac=friend&op=search&sex=2&searchmode=1\">"
+ Common.getMessage(request, "woman") + "</a>"
: "")
: "");
space.put("birth", (!Common.empty(space.get("birthyear")) ? space.get("birthyear")
+ Common.getMessage(request, "year") : "")
+ (!Common.empty(space.get("birthmonth")) ? space.get("birthmonth")
+ Common.getMessage(request, "month") : "")
+ (!Common.empty(space.get("birthday")) ? space.get("birthday")
+ Common.getMessage(request, "day") : ""));
space
.put(
"marry",
"1".equals(space.get("marry") + "") ? "<a href=\"cp.jsp?ac=friend&op=search&marry=1&searchmode=1\">"
+ Common.getMessage(request, "unmarried") + "</a>"
: ("2".equals(space.get("marry") + "") ? "<a href=\"cp.jsp?ac=friend&op=search&marry=2&searchmode=1\">"
+ Common.getMessage(request, "married") + "</a>"
: ""));
space
.put(
"birthcity",
Common
.trim((!Common.empty(space.get("birthprovince")) ? "<a href=\"cp.jsp?ac=friend&op=search&birthprovince="
+ Common.urlEncode((String) space.get("birthprovince"))
+ "&searchmode=1\">" + space.get("birthprovince") + "</a>"
: "")
+ (!Common.empty(space.get("birthcity")) ? " <a href=\"cp.jsp?ac=friend&op=search&birthcity="
+ Common.urlEncode((String) space.get("birthcity"))
+ "&searchmode=1\">" + space.get("birthcity") + "</a>"
: "")));
space
.put(
"residecity",
Common
.trim((!Common.empty(space.get("resideprovince")) ? "<a href=\"cp.jsp?ac=friend&op=search&resideprovince="
+ Common.urlEncode((String) space.get("resideprovince"))
+ "&searchmode=1\">" + space.get("resideprovince") + "</a>"
: "")
+ (!Common.empty(space.get("residecity")) ? " <a href=\"cp.jsp?ac=friend&op=search&residecity="
+ Common.urlEncode((String) space.get("residecity"))
+ "&searchmode=1\">" + space.get("residecity") + "</a>"
: "")));
space.put("qq", Common.empty(space.get("qq")) ? ""
: "<a target=\"_blank\" href=\"http://wpa.qq.com/msgrd?V=1&Uin=" + space.get("qq") + "&Site="
+ space.get("username") + "&Menu=yes\">" + space.get("qq") + "</a>");
List<Map<String, Object>> spaceInfoList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("spaceinfo") + " WHERE uid='" + space.get("uid")
+ "' AND type IN ('base', 'contact')");
boolean v_friend = false;
for (Map<String, Object> value : spaceInfoList) {
v_friend = Common.ckFriend(sGlobal, space, (Integer) value.get("uid"), (Integer) value
.get("friend"), null);
if (!v_friend) {
space.put((String) value.get("subtype"), null);
}
}
Common.getCacheDate(request, response, "/data/cache/usergroup.jsp", "globalGroupTitle");
space.put("star", Common.getStar(sConfig, space.get("experience") == null ? 0 : (Integer) space
.get("experience")));
space.put("domainurl", Common.spaceDomain(request, space, sConfig));
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if (Common.ckPrivacy(sGlobal, sConfig, space, "feed", 0)) {
List<Map<String, Object>> feed = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("feed") + " WHERE uid='" + space.get("uid")
+ "' ORDER BY dateline DESC LIMIT 0,20");
List<Map<String, Object>> feedList = new ArrayList<Map<String, Object>>();
for (Map<String, Object> value : feed) {
if (Common.ckFriend(sGlobal, space, (Integer) value.get("uid"),
(Integer) value.get("friend"), (String) value.get("target_ids"))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
Common.mkFeed(sNames, sConfig, request, value, null);
feedList.add(value);
}
}
int feedNum = feedList.size();
Map TPL = new HashMap();
TPL.put("hidden_hot", 1);
request.setAttribute("TPL", TPL);
request.setAttribute("feedlist", feedList);
}
Map olUids = new HashMap();
if (Common.ckPrivacy(sGlobal, sConfig, space, "friend", 0)) {
List<Map<String, Object>> friendList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("friend") + " WHERE uid='" + space.get("uid")
+ "' AND status='1' ORDER BY num DESC, dateline DESC LIMIT 0,16");
for (Map<String, Object> value : friendList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("fuid"), (String) value
.get("fusername"), "", 0);
olUids.put(value.get("fuid"), value.get("fuid"));
}
if (friendList.size() > 0 && Common.empty(space.get("friendnum"))) {
cpService.friendCache(request, sGlobal, sConfig, (Integer) space.get("uid"));
}
request.setAttribute("friendlist", friendList);
}
Map<Object, Map<String, Object>> visitorList = new LinkedHashMap<Object, Map<String, Object>>();
List<Map<String, Object>> visitors = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("visitor") + " WHERE uid='" + space.get("uid")
+ "' ORDER BY dateline DESC LIMIT 0,16");
for (Map<String, Object> value : visitors) {
if (!Common.empty(value.get("vusername"))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("vuid"), (String) value
.get("vusername"), "", 0);
}
value.put("isfriend", false);
if (Common.in_array((String[]) space.get("friends"), value.get("vuid"))) {
value.put("isfriend", true);
}
olUids.put(value.get("vuid"), value.get("vuid"));
visitorList.put(value.get("vuid"), value);
}
Map<String, String> sCookie = (Map<String, String>) request.getAttribute("sCookie");
String[] viewUids = !Common.empty(sCookie.get("viewuids")) ? sCookie.get("viewuids").split("_")
: null;
if ((Integer) sGlobal.get("supe_uid") > 0 && !(Boolean) space.get("self")
&& !Common.in_array(viewUids, space.get("uid"))) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET viewnum=viewnum+1 WHERE uid='" + space.get("uid") + "'");
HashSet<String> viewUidHs = new HashSet<String>();
if (viewUids != null) {
CollectionUtils.addAll(viewUidHs, viewUids);
}
viewUidHs.add(space.get("uid").toString());
CookieHelper.setCookie(request, response, "viewuids", Common.implode(viewUidHs, "_"));
}
if (space.get("blognum") != null && (Integer) space.get("blognum") > 0
&& Common.ckPrivacy(sGlobal, sConfig, space, "blog", 0)) {
List<Map<String, Object>> bbfList = dataBaseService
.executeQuery("SELECT b.uid, b.blogid, b.subject, b.dateline, b.pic, b.picflag, b.viewnum, b.replynum, b.friend, b.password, bf.message, bf.target_ids FROM "
+ JavaCenterHome.getTableName("blog")
+ " b LEFT JOIN "
+ JavaCenterHome.getTableName("blogfield")
+ " bf ON bf.blogid=b.blogid WHERE b.uid='"
+ space.get("uid")
+ "' ORDER BY b.dateline DESC LIMIT 0,5");
List<Map<String, Object>> blogList = new ArrayList<Map<String, Object>>();
for (Map<String, Object> value : bbfList) {
if (Common.ckFriend(sGlobal, space, (Integer) value.get("uid"),
(Integer) value.get("friend"), (String) value.get("target_ids"))) {
if (!Common.empty(value.get("pic"))) {
value.put("pic", Common.pic_cover_get(sConfig, (String) value.get("pic"),
(Integer) value.get("picflag")));
}
try {
value.put("message", (Integer) value.get("friend") == 4 ? "" : Common.getStr(
(String) value.get("message"), 150, false, false, false, 0, -1, request,
response));
} catch (Exception e) {
e.printStackTrace();
return showMessage(request, response, e.getMessage());
}
blogList.add(value);
}
}
request.setAttribute("bloglist", blogList);
int blogNum = blogList.size();
}
if (space.get("albumnum") != null && (Integer) space.get("albumnum") > 0
&& Common.ckPrivacy(sGlobal, sConfig, space, "album", 0)) {
List<Map<String, Object>> album = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("album") + " WHERE uid='" + space.get("uid")
+ "' ORDER BY updatetime DESC LIMIT 0,6");
List<Map<String, Object>> albumList = new ArrayList<Map<String, Object>>();
for (Map<String, Object> value : album) {
if (Common.ckFriend(sGlobal, space, (Integer) value.get("uid"),
(Integer) value.get("friend"), (String) value.get("target_ids"))) {
value.put("pic", Common.pic_cover_get(sConfig, (String) value.get("pic"), (Integer) value
.get("picflag")));
albumList.add(value);
}
}
request.setAttribute("albumlist", albumList);
}
if (Common.ckPrivacy(sGlobal, sConfig, space, "wall", 0)) {
List<Map<String, Object>> wallList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("comment") + " WHERE id='" + space.get("uid")
+ "' AND idtype='uid' ORDER BY dateline DESC LIMIT 0,5");
for (Map<String, Object> value : wallList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("authorid"), (String) value
.get("author"), "", 0);
try {
value.put("message", Common.strlen((String) value.get("message")) > 500 ? Common
.getStr((String) value.get("message"), 500, false, false, false, 0, -1, request,
response)
+ " ..." : value.get("message"));
} catch (Exception e) {
e.printStackTrace();
return showMessage(request, response, e.getMessage());
}
}
request.setAttribute("wallList", wallList);
}
List<Map<String, Object>> sessionList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("session") + " WHERE uid = '" + space.get("uid") + "'");
Map<String, Object> sessionOnLine = null;
if (sessionList.size() > 0) {
sessionOnLine = sessionList.get(0);
}
String OnLine = (sessionOnLine == null || !Common.empty(sessionOnLine.get("magichidden"))) ? null
: Common.sgmdate(request, "HH:mm:ss", (Integer) sessionOnLine.get("lastactivity"), true);
request.setAttribute("isonline", OnLine);
String theme = request.getParameter("theme");
theme = Common.empty(theme) ? null : theme.replaceAll("(?i)[^(0-9a-z)]", "");
if ("jchomedefault".equals(theme)) {
sGlobal.remove("space_theme");
sGlobal.remove("space_css");
} else if (theme != null && !"".equals(theme)) {
File cssFile = new File(JavaCenterHome.jchRoot + "/theme/" + theme + "/style.css");
if (cssFile.exists()) {
sGlobal.put("space_theme", theme);
sGlobal.remove("space_css");
}
} else {
Map<String, Object> member = (Map<String, Object>) sGlobal.get("member");
if (!(Boolean) space.get("self") && member != null && !Common.empty(member.get("nocss"))) {
sGlobal.remove("space_theme");
sGlobal.remove("space_css");
}
}
if (!(Boolean) space.get("self") && (Integer) sGlobal.get("supe_uid") > 0) {
List<Map<String, Object>> visitorByUid = dataBaseService.executeQuery("SELECT dateline FROM "
+ JavaCenterHome.getTableName("visitor") + " WHERE uid='" + space.get("uid")
+ "' AND vuid='" + sGlobal.get("supe_uid") + "'");
Map<String, Object> visitor = null;
if (visitorByUid.size() > 0) {
visitor = visitorByUid.get(0);
}
boolean is_anonymous = Common.empty(sCookie.get("anonymous_visit_" + sGlobal.get("supe_uid")
+ "_" + space.get("uid"))) ? false : true;
if (visitor == null || Common.empty(visitor.get("dateline"))) {
dataBaseService.executeUpdate("REPLACE INTO " + JavaCenterHome.getTableName("visitor")
+ " (`uid`, `vuid`, `vusername`, `dateline`) VALUES ('" + space.get("uid") + "', '"
+ sGlobal.get("supe_uid") + "', '"
+ (is_anonymous ? "" : sGlobal.get("supe_username")) + "', '"
+ sGlobal.get("timestamp") + "') ");
showCredit(request, sGlobal, sConfig, space);
} else {
if ((Integer) sGlobal.get("timestamp") - (Integer) visitor.get("dateline") >= 300) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("visitor")
+ " SET dateline='" + sGlobal.get("timestamp") + "',vusername='"
+ (is_anonymous ? "" : sGlobal.get("supe_username")) + "' WHERE uid='"
+ space.get("uid") + "' AND vuid='" + sGlobal.get("supe_uid") + "'");
}
if ((Integer) sGlobal.get("timestamp") - (Integer) visitor.get("dateline") >= 3600) {
showCredit(request, sGlobal, sConfig, space);
}
}
Common.getReward("visit", true, 0, space.get("uid") + "", true, request, response);
}
space.put("magiccredit", 0);
Map globalMagic = (Map) request.getAttribute("globalMagic");
if (!Common.empty(globalMagic.get("gift")) && (Integer) sGlobal.get("supe_uid") > 0) {
List<Map<String, Object>> magicuselogList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("magicuselog") + " WHERE uid='" + space.get("uid")
+ "' AND mid='gift' LIMIT 1");
if (magicuselogList.size() > 0) {
Map<String, Object> value = magicuselogList.get(0);
Map data = Common.empty(value.get("data")) ? new HashMap() : Serializer.unserialize(
(String) value.get("data"), false);
if (data.get("left") == null || (Integer) data.get("left") <= 0) {
dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("magicuselog")
+ " WHERE uid = '" + space.get("uid") + "' AND mid = 'gift'");
}
Map<Integer, Integer> receiver = (Map<Integer, Integer>) data.get("receiver");
if (Common.empty(data.get("receiver")) || !receiver.containsValue(sGlobal.get("supe_uid"))) {
space.put("magiccredit", (Integer) data.get("left") >= (Integer) data.get("chunk") ? data
.get("chunk") : data.get("left"));
}
}
}
request.setAttribute("mids", new String[] {"viewmagiclog", "viewmagic", "viewvisitor"});
if (olUids.size() > 0) {
List<Map<String, Object>> sessions = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("session") + " WHERE uid IN (" + Common.sImplode(olUids)
+ ")");
Map ols = new HashMap();
for (Map<String, Object> value : sessions) {
if (Common.empty(value.get("magichidden"))) {
ols.put(value.get("uid"), true);
} else if (!Common.empty(visitorList.get(value.get("uid")))) {
visitorList.remove(value.get("uid"));
}
}
request.setAttribute("ols", ols);
}
request.setAttribute("visitorlist", visitorList);
Map<Object, Map<String, Object>> userApp = new LinkedHashMap<Object, Map<String, Object>>();
if (!Common.empty(sConfig.get("my_status"))) {
List<Map<String, Object>> userappList = dataBaseService
.executeQuery("SELECT main.*, field.* FROM " + JavaCenterHome.getTableName("userapp")
+ " main LEFT JOIN " + JavaCenterHome.getTableName("userappfield")
+ " field ON field.uid=main.uid AND field.appid=main.appid WHERE main.uid='"
+ space.get("uid") + "' ORDER BY main.displayorder DESC");
Map<String, Object> temp = new LinkedHashMap<String, Object>();
for (Map<String, Object> value : userappList) {
userApp.put(value.get("appid"), value);
}
space.put("userapp", userApp);
}
if (userApp.size() > 0) {
Map<String, Object> value = null;
List guideList = new ArrayList();
List narrowList = new ArrayList();
List wideList = new ArrayList();
for (Map.Entry<Object, Map<String, Object>> entry : userApp.entrySet()) {
value = entry.getValue();
if (!Common.empty(value.get("allowprofilelink")) && !Common.empty(value.get("profilelink"))) {
guideList.add(value);
}
if (Common.ckAppPrivacy(sGlobal, space, (Integer) value.get("privacy"))
&& !Common.empty(value.get("myml"))) {
value.put("appurl", "userapp.jsp?id=" + value.get("appid"));
if (!Common.empty(value.get("narrow"))) {
narrowList.add(value);
} else {
wideList.add(value);
}
}
}
request.setAttribute("guidelist", guideList);
request.setAttribute("narrowlist", narrowList);
request.setAttribute("widelist", wideList);
}
Common.realname_get(sGlobal, sConfig, sNames, space);
if (!(Boolean) space.get("self") && (Integer) sGlobal.get("supe_uid") > 0) {
cpService.addFriendNum(sGlobal, (Integer) space.get("uid"), (String) space.get("username"));
}
request.removeAttribute("globalAd");
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("view", new String[] {"me"});
request.setAttribute("tpl_css", "space");
boolean manageName = Common.checkPerm(request, response, "managename");
request.setAttribute("manageName", manageName);
if (!manageName) {
boolean manageSpaceGroup = Common.checkPerm(request, response, "managespacegroup");
request.setAttribute("manageSpaceGroup", manageSpaceGroup);
if (!manageSpaceGroup) {
boolean manageSpaceInfo = Common.checkPerm(request, response, "managespaceinfo");
request.setAttribute("manageSpaceInfo", manageSpaceInfo);
if (!manageSpaceInfo) {
boolean manageSpaceCredit = Common.checkPerm(request, response, "managespacecredit");
request.setAttribute("manageSpaceCredit", manageSpaceCredit);
if (!manageSpaceCredit) {
boolean manageSpaceNote = Common.checkPerm(request, response, "managespacenote");
request.setAttribute("manageSpaceNote", manageSpaceNote);
}
}
}
}
if (space.get("groupid") != null) {
request
.setAttribute("gColor", Common
.getColor(request, response, (Integer) space.get("groupid")));
request.setAttribute("gIcon", Common.getIcon(request, response, (Integer) space.get("groupid")));
}
return include(request, response, sConfig, sGlobal, "space_index.jsp");
}
public ActionForward space_info(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
if (!Common.empty(space.get("namestatus"))) {
if (!cpService.checkRealName(request, "viewspace")) {
return showMessage(request, response, "no_privilege_realname");
}
}
space.put("sex_org", space.get("sex"));
space
.put(
"sex",
space.get("sex") != null ? (Integer) space.get("sex") == 1 ? "<a href=\"cp.jsp?ac=friend&op=search&sex=1&searchmode=1\">"
+ Common.getMessage(request, "man") + "</a>"
: ((Integer) space.get("sex") == 2 ? "<a href=\"cp.jsp?ac=friend&op=search&sex=2&searchmode=1\">"
+ Common.getMessage(request, "woman") + "</a>"
: "")
: "");
space.put("birth", (!Common.empty(space.get("birthyear")) ? space.get("birthyear")
+ Common.getMessage(request, "year") : "")
+ (!Common.empty(space.get("birthmonth")) ? space.get("birthmonth")
+ Common.getMessage(request, "month") : "")
+ (!Common.empty(space.get("birthday")) ? space.get("birthday")
+ Common.getMessage(request, "day") : ""));
space
.put(
"marry",
"1".equals(space.get("marry") + "") ? "<a href=\"cp.jsp?ac=friend&op=search&marry=1&searchmode=1\">"
+ Common.getMessage(request, "unmarried") + "</a>"
: ("2".equals(space.get("marry") + "") ? "<a href=\"cp.jsp?ac=friend&op=search&marry=2&searchmode=1\">"
+ Common.getMessage(request, "married") + "</a>"
: ""));
space
.put(
"birthcity",
Common
.trim((!Common.empty(space.get("birthprovince")) ? "<a href=\"cp.jsp?ac=friend&op=search&birthprovince="
+ Common.urlEncode((String) space.get("birthprovince"))
+ "&searchmode=1\">" + space.get("birthprovince") + "</a>"
: "")
+ (!Common.empty(space.get("birthcity")) ? " <a href=\"cp.jsp?ac=friend&op=search&birthcity="
+ Common.urlEncode((String) space.get("birthcity"))
+ "&searchmode=1\">" + space.get("birthcity") + "</a>"
: "")));
space
.put(
"residecity",
Common
.trim((!Common.empty(space.get("resideprovince")) ? "<a href=\"cp.jsp?ac=friend&op=search&resideprovince="
+ Common.urlEncode((String) space.get("resideprovince"))
+ "&searchmode=1\">" + space.get("resideprovince") + "</a>"
: "")
+ (!Common.empty(space.get("residecity")) ? " <a href=\"cp.jsp?ac=friend&op=search&residecity="
+ Common.urlEncode((String) space.get("residecity"))
+ "&searchmode=1\">" + space.get("residecity") + "</a>"
: "")));
space.put("qq", Common.empty(space.get("qq")) ? ""
: "<a target=\"_blank\" href=\"http://wpa.qq.com/msgrd?V=1&Uin=" + space.get("qq") + "&Site="
+ space.get("username") + "&Menu=yes\">" + space.get("qq") + "</a>");
Common.getCacheDate(request, response, "/data/cache/usergroup.jsp", "globalGroupTitle");
Map fields = Common.getCacheDate(request, response, "/data/cache/cache_profilefield.jsp",
"globalProfilefield");
List<Map<String, Object>> spaceInfoList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("spaceinfo") + " WHERE uid='" + space.get("uid") + "'");
boolean v_friend = false;
List<Map<String, Object>> tempList = null;
for (Map<String, Object> value : spaceInfoList) {
v_friend = Common.ckFriend(sGlobal, space, (Integer) value.get("uid"), (Integer) value
.get("friend"), "");
if ("base".equals(value.get("type")) || "contact".equals(value.get("type"))) {
if (!v_friend) {
space.put((String) value.get("subtype"), "");
}
} else {
if (v_friend) {
tempList = (List) space.get((String) value.get("type"));
if (tempList == null) {
tempList = new ArrayList<Map<String, Object>>();
}
tempList.add(value);
space.put((String) value.get("type"), tempList);
}
}
}
space.put("profile_base", false);
String[] baseInfos = new String[] {"sex", "birthday", "blood", "marry", "residecity", "birthcity"};
for (String value : baseInfos) {
if (!Common.empty(space.get(value))) {
space.put("profile_base", true);
}
}
Set keys = fields.keySet();
String fieldValue = null;
Map tempMap = null;
for (Object fieldId : keys) {
tempMap = (Map) fields.get(fieldId);
if (!Common.empty(fieldValue = (String) space.get("field_" + fieldId))
&& Common.empty(tempMap.get("invisible"))) {
space.put("profile_base", true);
tempMap.put("fieldvalue", fieldValue);
tempMap.put("urlvalue", Common.urlEncode(fieldValue));
}
}
space.put("profile_contact", false);
String[] contactInfos = new String[] {"mobile", "qq", "msn"};
for (String value : contactInfos) {
if (!Common.empty(space.get(value))) {
space.put("profile_contact", true);
}
}
space.put("star", Common.getStar(sConfig, space.get("experience") == null ? 0 : (Integer) space
.get("experience")));
request.setAttribute("tpl_css", "space");
if (!Common.empty(space.get("info"))) {
Map<String, String> infos = new HashMap<String, String>();
infos.put("trainwith", "����ύ");
infos.put("interest", "��Ȥ����");
infos.put("book", "ϲ�����鼮");
infos.put("movie", "ϲ���ĵ�Ӱ");
infos.put("tv", "ϲ���ĵ���");
infos.put("music", "ϲ��������");
infos.put("game", "ϲ������Ϸ");
infos.put("sport", "ϲ�����˶�");
infos.put("idol", "ż��");
infos.put("motto", "������");
infos.put("wish", "�����Ը");
infos.put("intro", "�ҵļ��");
request.setAttribute("infos", infos);
}
request.setAttribute("gIcon", space.get("groupid") == null ? "" : Common.getIcon(request, response,
(Integer) space.get("groupid")));
request.setAttribute("fields", fields);
return include(request, response, sConfig, sGlobal, "space_info.jsp");
}
public ActionForward space_mood(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
int perPage = 20;
int page = Common.intval(request.getParameter("page"));
page = page < 1 ? 1 : page;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
if (!Common.empty(space.get("mood"))) {
String theURL = "space.jsp?uid=" + space.get("uid") + "&do=mood";
int count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("space") + " s WHERE s.mood='" + space.get("mood") + "'");
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if (count > 0) {
List<Map<String, Object>> list = dataBaseService
.executeQuery("SELECT s.*,sf.note,sf.sex FROM "
+ JavaCenterHome.getTableName("space") + " s LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " sf ON sf.uid=s.uid WHERE s.mood='" + space.get("mood")
+ "' ORDER BY s.updatetime DESC LIMIT " + start + "," + perPage);
for (Map<String, Object> value : list) {
value.put("isfriend", (value.get("uid").equals(space.get("uid")) || (!Common.empty(space
.get("friends")) && Common.in_array((String[]) space.get("friends"), value
.get("uid")))) ? true : false);
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), (String) value.get("name"), (Integer) value.get("namestatus"));
value.put("gColor", Common.getColor(request, response, (Integer) value.get("groupid")));
value.put("gIcon", Common.getIcon(request, response, (Integer) value.get("groupid")));
}
request.setAttribute("list", list);
}
Common.realname_get(sGlobal, sConfig, sNames, space);
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL, null,
null));
}
request.setAttribute("navtitle", "ͬ���� - ");
return include(request, response, sConfig, sGlobal, "space_mood.jsp");
}
public ActionForward space_mtag(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
int page = Common.intval(request.getParameter("page"));
page = page < 1 ? 1 : page;
int id = Common.intval(request.getParameter("id"));
int tagId = Common.intval(request.getParameter("tagid"));
String tagName = Common.trim(request.getParameter("tagname"));
int fieldId = Common.intval(request.getParameter("fieldid"));
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("fieldid", new String[] {fieldId + ""});
Map<Integer, Map<String, Object>> globalProfield = Common.getCacheDate(request, response,
"/data/cache/cache_profield.jsp", "globalProfield");
if (!Common.empty(tagName)) {
Set<Integer> keys = globalProfield.keySet();
Map<String, Object> value = null;
List<Map<String, Object>> fields = new ArrayList<Map<String, Object>>();
for (Integer key : keys) {
value = globalProfield.get(key);
if ("text".equals(value.get("formtype"))) {
fields.add(value);
}
}
String plusSQL = null;
Map<String, Object> field = null;
if (fieldId > 0) {
plusSQL = " AND fieldid='" + fieldId + "'";
field = globalProfield.get(fieldId);
} else {
plusSQL = "";
field = new HashMap<String, Object>();
}
List<Map<String, Object>> tagList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("mtag") + " WHERE tagname='" + tagName + "' " + plusSQL);
if (Common.empty(tagList)) {
boolean allowmk = false;
if (field.size() > 0 && !"text".equals(field.get("formtype"))) {
List<Map<String, Object>> profieldList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("profield") + " WHERE fieldid='" + fieldId + "'");
if (profieldList.size() > 0) {
field = profieldList.get(0);
String[] choice = ((String) field.get("choice")).split("\n");
field.put("choice", choice);
String s = Common.stripSlashes(tagName);
for (String subValue : choice) {
subValue = Common.trim(subValue);
if (s.equals(subValue)) {
tagId = dataBaseService.insert("INSERT INTO "
+ JavaCenterHome.getTableName("mtag")
+ " (tagname, fieldid,announcement,pic,moderator) VALUES ('"
+ Common.addSlashes(s) + "', '" + fieldId + "','','','')");
return showMessage(request, response, "do_sucess", "space.jsp?do=mtag&tagid="
+ tagId, 0);
}
}
}
} else if (fields.size() > 0) {
allowmk = true;
}
if (!allowmk) {
return showMessage(request, response, "mtag_creat_error");
}
} else if (tagList.size() == 1) {
return showMessage(request, response, "do_sucess", "space.jsp?do=mtag&tagid="
+ tagList.get(0).get("tagid"), 0);
}
request.setAttribute("fields", fields);
request.setAttribute("tagname", tagName);
request.setAttribute("taglist", tagList);
request.setAttribute("tpl_css", "thread");
return include(request, response, sConfig, sGlobal, "space_mtag_tagname.jsp");
} else if (id != 0) {
int perPage = 20;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
int count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("mtag") + " WHERE fieldid='" + id + "'");
if (count > 0) {
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("mtag") + " WHERE fieldid='" + id
+ "' ORDER BY membernum DESC LIMIT " + start + "," + perPage);
for (Map<String, Object> value : list) {
if (Common.empty(value.get("pic"))) {
value.put("pic", "image/nologo.jpg");
}
}
request.setAttribute("list", list);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage,
"space.jsp?uid=" + space.get("uid") + "&do=mtag&id=" + id, null, null));
Map sub_actives = new HashMap();
sub_actives.put(id, " class=\"active\"");
Map fieldids = new HashMap();
fieldids.put(id, " selected");
request.setAttribute("sub_actives", sub_actives);
request.setAttribute("navtitle", (globalProfield.get(id) == null ? "" : (String) globalProfield
.get(id).get("title")
+ " - ")
+ "Ⱥ�� - ");
request.setAttribute("tpl_css", "thread");
return include(request, response, sConfig, sGlobal, "space_mtag_field.jsp");
} else if (tagId > 0) {
String view = request.getParameter("view");
Map<String, String> actives = new HashMap<String, String>();
actives.put(view, " class=\"active\"");
request.setAttribute("actives", actives);
Map mtag = null;
try {
mtag = Common.getMtag(request, response, (Integer) sGlobal.get("supe_uid"), tagId);
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
if (!Common.empty(mtag.get("close"))) {
return showMessage(request, response, "mtag_close");
}
int eventNum = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("event") + " WHERE tagid='" + tagId + "'");
if ("list".equals(view) || "digest".equals(view)) {
int perPage = 30;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
String theURL = "space.jsp?uid=" + space.get("uid") + "&do=mtag&tagid=" + tagId + "&view="
+ view;
String whereSQL = "list".equals(view) ? "" : " AND main.digest='1'";
String searchKey = Common.stripSearchKey(request.getParameter("searchkey"));
if (!Common.empty(searchKey)) {
whereSQL += "AND main.subject LIKE '%" + searchKey + "%' ";
theURL += "&searchkey=" + searchKey;
request.setAttribute("searchkey", searchKey);
}
int count = 0;
if (!Common.empty(mtag.get("allowview"))) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("thread") + " main WHERE main.tagid='" + tagId
+ "' " + whereSQL);
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if (count > 0) {
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT main.* FROM "
+ JavaCenterHome.getTableName("thread") + " main WHERE main.tagid='" + tagId
+ "' " + whereSQL
+ " ORDER BY main.displayorder DESC, main.lastpost DESC LIMIT " + start + ","
+ perPage);
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
Common.realname_set(sGlobal, sConfig, sNames,
(Integer) value.get("lastauthorid"), (String) value.get("lastauthor"),
"", 0);
if (!Common.empty(value.get("magicegg"))) {
StringBuffer magiceggImage = new StringBuffer();
for (int i = 0; i < (Integer) value.get("magicegg"); i++) {
magiceggImage.append("<img src=\"image/magic/egg/" + Common.rand(1, 6)
+ ".gif\" />");
}
value.put("magiceggImage", magiceggImage.toString());
}
}
request.setAttribute("list", list);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage,
theURL, null, null));
Common.realname_get(sGlobal, sConfig, sNames, space);
}
request.setAttribute("tpl_css", "thread");
String title = (Common.empty(mtag.get("tagname")) ? "" : mtag.get("tagname") + " - ")
+ (Common.empty(mtag.get("title")) ? "" : mtag.get("title") + " - ");
if ("list".equals(view)) {
request.setAttribute("navtitle", title + "������ - ");
} else if ("digest".equals(view)) {
request.setAttribute("navtitle", title + "������ - ");
}
request.setAttribute("mtag", mtag);
request.setAttribute("eventnum", eventNum);
return include(request, response, sConfig, sGlobal, "space_mtag_list.jsp");
} else if ("member".equals(view)) {
int perPage = 50;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
String whereSQL = "";
String key = Common.stripSearchKey(request.getParameter("key"));
if (!Common.empty(key)) {
whereSQL = " AND main.username LIKE '%" + key + "%' ";
}
int count = 0;
if (!Common.empty(mtag.get("allowview"))) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("tagspace") + " main WHERE main.tagid='" + tagId
+ "' " + whereSQL);
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
List fuids = null;
if (count > 0) {
List<Map<String, Object>> list = dataBaseService
.executeQuery("SELECT field.*, main.username, main.grade FROM "
+ JavaCenterHome.getTableName("tagspace") + " main LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " field ON field.uid=main.uid WHERE main.tagid='" + tagId + "' "
+ whereSQL + " ORDER BY main.grade DESC LIMIT " + start + ","
+ perPage);
fuids = new ArrayList(list.size());
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
value.put("p", Common.urlEncode((String) value.get("resideprovince")));
value.put("c", Common.urlEncode((String) value.get("residecity")));
fuids.add(value.get("uid"));
}
request.setAttribute("list", list);
}
if (fuids != null && fuids.size() > 0) {
List<Map<String, Object>> sessionList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("session") + " WHERE uid IN ("
+ Common.sImplode(fuids) + ")");
Map ols = new HashMap();
for (Map<String, Object> value : sessionList) {
if (Common.empty(value.get("magichidden"))) {
ols.put(value.get("uid"), value.get("lastactivity"));
}
}
request.setAttribute("ols", ols);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage,
"space.jsp?uid=" + space.get("uid") + "&do=mtag&tagid=" + tagId + "&view=member",
null, null));
Common.realname_get(sGlobal, sConfig, sNames, space);
}
request.setAttribute("tagid", tagId);
request.setAttribute("eventnum", eventNum);
request.setAttribute("mtag", mtag);
request.setAttribute("navtitle", (Common.empty(mtag.get("tagname")) ? "" : mtag
.get("tagname")
+ " - ")
+ (Common.empty(mtag.get("title")) ? "" : mtag.get("title") + " - ") + "��Ա - ");
request.setAttribute("tpl_css", "thread");
return include(request, response, sConfig, sGlobal, "space_mtag_member.jsp");
} else if ("event".equals(view)) {
int perPage = 10;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
if (eventNum > 0) {
Map<Integer, Map<String, Object>> globalEventClass = Common.getCacheDate(request,
response, "/data/cache/cache_eventclass.jsp", "globalEventClass");
List<Map<String, Object>> eventList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("event") + " WHERE tagid='" + tagId
+ "' ORDER BY eventid DESC LIMIT " + start + ", " + perPage);
for (Map<String, Object> value : eventList) {
if (!Common.empty(value.get("poster"))) {
value.put("pic", Common.pic_get(sConfig, (String) value.get("poster"),
(Integer) value.get("thumb"), (Integer) value.get("remote"), true));
} else {
value
.put(
"pic",
globalEventClass.get(value.get("classid")) == null ? "image/event/default.jpg"
: globalEventClass.get(value.get("classid"))
.get("poster"));
}
}
request.setAttribute("eventlist", eventList);
}
request.setAttribute("multi", Common.multi(request, eventNum, perPage, page, maxPage,
"space.jsp?uid=" + space.get("uid") + "&do=mtag&tagid=" + tagId + "&view=event",
null, null));
request.setAttribute("navtitle", (Common.empty(mtag.get("tagname")) ? "" : mtag
.get("tagname")
+ " - ")
+ (Common.empty(mtag.get("title")) ? "" : mtag.get("title") + " - ") + "� - ");
request.setAttribute("mtag", mtag);
if (!Common.empty(mtag.get("allowpost"))) {
request.setAttribute("tagid", tagId);
}
request.setAttribute("eventnum", eventNum);
request.setAttribute("tpl_css", "thread");
request.setAttribute("view", view);
return include(request, response, sConfig, sGlobal, "space_mtag_event.jsp");
} else {
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if (!Common.empty(mtag.get("allowview"))) {
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT main.* FROM "
+ JavaCenterHome.getTableName("thread") + " main WHERE main.tagid='" + tagId
+ "' ORDER BY main.displayorder DESC, main.lastpost DESC LIMIT 0,50");
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("lastauthorid"),
(String) value.get("lastauthor"), "", 0);
if (!Common.empty(value.get("magicegg"))) {
StringBuffer magiceggImage = new StringBuffer();
for (int i = 0; i < (Integer) value.get("magicegg"); i++) {
magiceggImage.append("<img src=\"image/magic/egg/" + Common.rand(1, 6)
+ ".gif\" />");
}
value.put("magiceggImage", magiceggImage.toString());
}
}
request.setAttribute("list", list);
List<Map<String, Object>> starList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("tagspace") + " WHERE tagid='" + tagId
+ "' AND grade='1'");
for (Map<String, Object> value : starList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
}
starList = (List) Common.sarrayRand(starList, 12);
request.setAttribute("starlist", starList);
List<Map<String, Object>> memberList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("tagspace") + " WHERE tagid='" + tagId
+ "' AND grade='0' LIMIT 0,12");
for (Map<String, Object> value : memberList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
}
request.setAttribute("memberlist", memberList);
}
List<Map<String, Object>> modList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("tagspace") + " WHERE tagid='" + tagId
+ "' AND grade>'7' ORDER BY grade DESC LIMIT 0,12");
for (Map<String, Object> value : modList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
}
request.setAttribute("modlist", modList);
if ((Integer) mtag.get("grade") >= 8) {
List<Map<String, Object>> checkList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("tagspace") + " WHERE tagid='" + tagId
+ "' AND grade='-2' LIMIT 0,12");
for (Map<String, Object> value : checkList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
}
request.setAttribute("checklist", checkList);
}
Common.realname_get(sGlobal, sConfig, sNames, space);
request.setAttribute("eventnum", eventNum);
request.setAttribute("managemtag", Common.checkPerm(request, response, "managemtag"));
request.setAttribute("mtag", mtag);
request.setAttribute("navtitle", (Common.empty(mtag.get("tagname")) ? "" : mtag
.get("tagname")
+ " - ")
+ (Common.empty(mtag.get("title")) ? "" : mtag.get("title") + " - ") + "��ҳ - ");
request.setAttribute("tpl_css", "thread");
return include(request, response, sConfig, sGlobal, "space_mtag_index.jsp");
}
} else {
String theURL = "space.jsp?uid=" + space.get("uid") + "&do=mtag";
String view = request.getParameter("view");
if (Common.empty(view)) {
view = "me";
paramMap.put("view", new String[] {"me"});
}
if (!Common.in_array(new String[] {"me", "hot", "recommend", "manage"}, view)) {
view = "hot";
paramMap.put("view", new String[] {"hot"});
}
theURL += "&view=" + view;
Map<String, String> actives = new HashMap<String, String>();
actives.put(view, " class=\"active\"");
request.setAttribute("actives", actives);
String orderby = request.getParameter("orderby");
if (!Common.in_array(new String[] {"threadnum", "postnum", "membernum"}, orderby)) {
orderby = "threadnum";
paramMap.put("orderby", new String[] {"threadnum"});
} else {
theURL += "&orderby=" + orderby;
}
Map<String, String> orderbys = new HashMap<String, String>();
orderbys.put(orderby, " class=\"active\"");
request.setAttribute("orderbys", orderbys);
List<String> wheres = new ArrayList<String>();
Map pro_actives = new HashMap();
if (fieldId > 0) {
wheres.add("mt.fieldid='" + fieldId + "'");
theURL += "&fieldid=" + fieldId;
pro_actives.put(fieldId, " class=\"current\"");
} else {
pro_actives.put("all", " class=\"current\"");
}
request.setAttribute("pro_actives", pro_actives);
int perPage = 20;
int start = (page - 1) * perPage;
String SQL = null;
String countSQL = null;
if ("me".equals(view) || "manage".equals(view)) {
String sqlPlus = "manage".equals(view) ? " AND main.grade='9'" : "";
if (fieldId > 0) {
countSQL = "SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("tagspace") + " main, "
+ JavaCenterHome.getTableName("mtag") + " mt WHERE main.uid='" + space.get("uid")
+ "' " + sqlPlus + " AND mt.tagid=main.tagid AND "
+ Common.implode(wheres, " AND ");
SQL = "SELECT main.*,mt.* FROM " + JavaCenterHome.getTableName("tagspace") + " main, "
+ JavaCenterHome.getTableName("mtag") + " mt WHERE main.uid='" + space.get("uid")
+ "' " + sqlPlus + " AND mt.tagid=main.tagid AND "
+ Common.implode(wheres, " AND ") + " ORDER BY mt." + orderby + " DESC LIMIT "
+ start + "," + perPage;
} else {
countSQL = "SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("tagspace")
+ " main WHERE main.uid='" + space.get("uid") + "' " + sqlPlus;
SQL = "SELECT main.*,mt.* FROM " + JavaCenterHome.getTableName("tagspace")
+ " main LEFT JOIN " + JavaCenterHome.getTableName("mtag")
+ " mt ON mt.tagid=main.tagid WHERE main.uid='" + space.get("uid") + "' "
+ sqlPlus + " ORDER BY mt." + orderby + " DESC LIMIT " + start + "," + perPage;
}
} else {
if ("recommend".equals(view)) {
wheres.add("mt.recommend='1'");
}
String searchKey = Common.stripSearchKey(request.getParameter("searchkey"));
if (!Common.empty(searchKey)) {
wheres.add("mt.tagname LIKE '%" + searchKey + "%'");
theURL += "&searchkey=" + searchKey;
request.setAttribute("searchkey", searchKey);
}
String whereSQL = Common.empty(wheres) ? "1" : Common.implode(wheres, " AND ");
countSQL = "SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("mtag") + " mt WHERE "
+ whereSQL;
SQL = "SELECT mt.* FROM " + JavaCenterHome.getTableName("mtag") + " mt WHERE " + whereSQL
+ " ORDER BY mt." + orderby + " DESC LIMIT " + start + "," + perPage;
}
int count = dataBaseService.findRows(countSQL);
List tagIds = null;
Map tagNames = null;
if (count > 0) {
tagNames = new HashMap();
List<Map<String, Object>> list = dataBaseService.executeQuery(SQL);
tagIds = new ArrayList(list.size());
for (Map<String, Object> value : list) {
Map<String, Object> profield = globalProfield.get(value.get("fieldid"));
value.put("title", profield == null ? "" : profield.get("title").toString());
if (Common.empty(value.get("pic"))) {
value.put("pic", "image/nologo.jpg");
}
tagIds.add(value.get("tagid"));
tagNames.put(value.get("tagid"), value.get("tagname"));
}
request.setAttribute("list", list);
int maxPage = (Integer) sConfig.get("maxpage");
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL,
null, null));
}
if (tagIds != null && tagIds.size() > 0) {
List<Map<String, Object>> threadList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("thread") + " WHERE tagid IN ("
+ Common.sImplode(tagIds) + ") ORDER BY dateline DESC LIMIT 0,10");
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
for (Map<String, Object> value : threadList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("lastauthorid"),
(String) value.get("lastauthor"), "", 0);
try {
value.put("tagname", Common.getStr((String) tagNames.get(value.get("tagid")), 20,
false, false, false, 0, 0, request, response));
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
}
request.setAttribute("threadlist", threadList);
}
request.setAttribute("navtitle", "Ⱥ�� - ");
request.setAttribute("tpl_css", "thread");
return include(request, response, sConfig, sGlobal, "space_mtag.jsp");
}
}
public ActionForward space_notice(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
int perPage = 30;
perPage = Common.mobPerpage(request, perPage);
int page = Common.intval(request.getParameter("page"));
page = page <= 1 ? 1 : page;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
int count = 0;
String view = request.getParameter("view");
view = !Common.empty(view) && "userapp".equals(view) ? view : "notice";
Map<String, String> actives = new HashMap<String, String>();
actives.put(view, " class=\"active\"");
if ("userapp".equals(view)) {
if ("del".equals(request.getParameter("op"))) {
int appId = Common.intval(request.getParameter("appid"));
dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("myinvite")
+ " WHERE appid='" + appId + "' AND touid='" + sGlobal.get("supe_uid") + "'");
return showMessage(request, response, "do_success", "space.jsp?do=notice&view=userapp", 0);
}
start = Common.intval(request.getParameter("start"));
int filtrate = start;
int type = Common.intval(request.getParameter("type"));
List<Map<String, Object>> myInviteList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("myinvite") + " WHERE touid='" + sGlobal.get("supe_uid")
+ "' ORDER BY dateline DESC");
String key = null;
Map<String, List<Map<String, Object>>> apps = new LinkedHashMap<String, List<Map<String, Object>>>();
Map<String, List<Map<String, Object>>> list = new LinkedHashMap<String, List<Map<String, Object>>>();
List<Map<String, Object>> appTempList = null;
List<Map<String, Object>> tempList = null;
for (Map<String, Object> value : myInviteList) {
key = Common.md5(value.get("typename") + "" + value.get("type"));
appTempList = apps.get(key);
if (appTempList == null) {
appTempList = new ArrayList<Map<String, Object>>();
}
appTempList.add(value);
apps.put(key, appTempList);
if (filtrate > 0) {
filtrate--;
} else {
if (count < perPage) {
if ((type > 0 && (Integer) value.get("appid") == type) || type == 0) {
tempList = list.get(key);
if (tempList == null) {
tempList = new ArrayList<Map<String, Object>>();
}
tempList.add(value);
list.put(key, tempList);
count++;
}
}
}
}
int myInviteNum = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("myinvite") + " WHERE touid='" + space.get("uid")
+ "' LIMIT 1 ");
if (myInviteNum != (space.get("myinvitenum") == null ? 0 : (Integer) space.get("myinvitenum"))) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET myinvitenum='" + myInviteNum + "' WHERE uid='" + space.get("uid") + "'");
}
try {
request.setAttribute("multi", Common.smulti(sGlobal, start, perPage, count, "space.jsp?do="
+ request.getAttribute("do") + "&view=userapp", null));
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
request.setAttribute("apparr", apps);
request.setAttribute("list", list);
} else {
if (!Common.empty(request.getParameter("ignore"))) {
dataBaseService.execute("UPDATE " + JavaCenterHome.getTableName("notification")
+ " SET new=0 WHERE new='1' AND uid='" + sGlobal.get("supe_uid") + "'");
dataBaseService.execute("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET notenum='0' WHERE uid='" + sGlobal.get("supe_uid") + "'");
space.put("notenum", 0);
}
Map<String, String> noticeTypes = new LinkedHashMap<String, String>();
noticeTypes.put("wall", Common.getMessage(request, "wall"));
noticeTypes.put("piccomment", Common.getMessage(request, "pic_comment"));
noticeTypes.put("blogcomment", Common.getMessage(request, "blog_comment"));
noticeTypes.put("clickblog", Common.getMessage(request, "clickblog"));
noticeTypes.put("clickpic", Common.getMessage(request, "clickpic"));
noticeTypes.put("clickthread", Common.getMessage(request, "clickthread"));
noticeTypes.put("sharecomment", Common.getMessage(request, "share_comment"));
noticeTypes.put("sharenotice", Common.getMessage(request, "share_notice"));
noticeTypes.put("doing", Common.getMessage(request, "doing_comment"));
noticeTypes.put("friend", Common.getMessage(request, "friend_notice"));
noticeTypes.put("post", Common.getMessage(request, "thread_comment"));
noticeTypes.put("credit", Common.getMessage(request, "credit"));
noticeTypes.put("mtag", Common.getMessage(request, "mtag"));
noticeTypes.put("event", Common.getMessage(request, "event"));
noticeTypes.put("eventcomment", Common.getMessage(request, "event_comment"));
noticeTypes.put("eventmember", Common.getMessage(request, "event_member"));
noticeTypes.put("eventmemberstatus", Common.getMessage(request, "event_memberstatus"));
noticeTypes.put("poll", Common.getMessage(request, "poll"));
noticeTypes.put("pollcomment", Common.getMessage(request, "poll_comment"));
noticeTypes.put("pollinvite", Common.getMessage(request, "poll_invite"));
String type = Common.trim(request.getParameter("type"));
String typeSQL = Common.empty(type) ? "" : "AND type='" + type + "'";
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("notification") + " WHERE uid='" + sGlobal.get("supe_uid")
+ "' " + typeSQL);
List newIds = new ArrayList();
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if (count > 0) {
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("notification") + " WHERE uid='"
+ sGlobal.get("supe_uid") + "' " + typeSQL + " ORDER BY dateline DESC LIMIT " + start
+ "," + perPage);
for (Map<String, Object> value : list) {
if (!Common.empty(value.get("authorid"))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("authorid"),
(String) value.get("author"), "", 0);
if (value.get("authorid") != space.get("uid") && !Common.empty(space.get("friends"))
&& !Common.in_array((String[]) space.get("friends"), value.get("authorid"))) {
value.put("isfriend", false);
} else {
value.put("isfriend", true);
}
}
if (!Common.empty(value.get("new"))) {
newIds.add(value.get("id"));
value.put("style", "color:#000;font-weight:bold;");
} else {
value.put("style", null);
}
}
request.setAttribute("multi", Common.multi(request, count, perPage, count, maxPage,
"space.jsp?do=" + request.getAttribute("do"), null, null));
request.setAttribute("list", list);
}
if (newIds.size() > 0) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("notification")
+ " SET new='0' WHERE id IN (" + Common.sImplode(newIds) + ")");
int newCount = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("notification") + " WHERE uid='"
+ sGlobal.get("supe_uid") + "' AND new='1'");
space.put("notenum", newCount);
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET notenum='" + newCount + "' WHERE uid='" + sGlobal.get("supe_uid") + "'");
}
int newNum = 0;
Map member = null;
Integer newpm = (member = (Map) sGlobal.get("member")) == null ? 0 : (Integer) member
.get("newpm");
space.put("pmnum", newpm);
String[] nums = new String[] {"notenum", "pokenum", "addfriendnum", "mtaginvitenum",
"eventinvitenum", "myinvitenum"};
for (String value : nums) {
newNum = newNum + (space.get(value) == null ? 0 : (Integer) space.get(value));
}
member = member == null ? new HashMap() : member;
member.put("notenum", space.get("notenum"));
member.put("allnotenum", newNum);
sGlobal.put("member", member);
Common.realname_get(sGlobal, sConfig, sNames, space);
request.setAttribute("newnum", newNum);
request.setAttribute("noticetypes", noticeTypes);
}
request.setAttribute("actives", actives);
request.setAttribute("view", view);
request.setAttribute("navtitle", "֪ͨ - ");
return include(request, response, sConfig, sGlobal, "space_notice.jsp");
}
public ActionForward space_pm(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
List<Map<String, Object>> list = null;
int pmid = Common.intval(request.getParameter("pmid"));
int toUid = Common.intval(request.getParameter("touid"));
int dateRange = Common.intval(request.getParameter("daterange"));
if (dateRange == 0) {
dateRange = 1;
}
String subop = request.getParameter("subop");
Map actives = new HashMap();
if ("view".equals(subop)) {
if (toUid > 0) {
int timeStamp = (Integer) sGlobal.get("timestamp");
int today = (int) (timeStamp - (timeStamp + Float.valueOf(Common.getTimeOffset(sGlobal,
sConfig))) % 86400);
int startTime = 0;
if (dateRange == 1) {
startTime = today;
} else if (dateRange == 2) {
startTime = today - 86400;
} else if (dateRange == 3) {
startTime = today - 172800;
} else if (dateRange == 4) {
startTime = today - 604800;
} else if (dateRange == 5) {
startTime = 0;
}
int endTime = timeStamp;
list = pmService.getPmByToUid((Integer) sGlobal.get("supe_uid"), toUid, startTime, endTime);
boolean status = false;
JcHomeCode jcHomeCode = new JcHomeCode();
for (Map<String, Object> pm : list) {
pm.put("message", jcHomeCode.complie((String) pm.get("message")));
if (!status) {
status = (!Common.empty(pm.get("msgtoid")) && !Common.empty(pm.get("new")));
}
}
if (status) {
pmService.setPmStatus((Integer) sGlobal.get("supe_uid"), toUid, pmid, 0);
}
pmid = list.size() == 0 ? 0 : (Integer) list.get(0).get("pmid");
request.setAttribute("pmid", pmid);
request.setAttribute("daterange", dateRange);
} else if (pmid > 0) {
list = pmService.getPmByPmid((Integer) sGlobal.get("supe_uid"), pmid);
boolean status = false;
JcHomeCode jcHomeCode = new JcHomeCode();
for (Map<String, Object> pm : list) {
pm.put("message", jcHomeCode.complie((String) pm.get("message")));
if (!status) {
status = (!Common.empty(pm.get("msgtoid")) && !Common.empty(pm.get("new")));
}
}
if (status) {
pmService.setPmStatus((Integer) sGlobal.get("supe_uid"), toUid, pmid, 0);
}
}
actives.put(dateRange + "", " class=\"active\"");
} else if ("ignore".equals(subop)) {
Map ignorelist = pmService.getBlackls((Integer) sGlobal.get("supe_uid"), null);
actives.put("ignore", " class=\"active\"");
request.setAttribute("ignorelist", ignorelist);
} else {
String filter = request.getParameter("filter");
filter = Common.in_array(new String[] {"newpm", "privatepm", "systempm", "announcepm"}, filter) ? filter
: (!Common.empty(space.get("newpm")) ? "newpm" : "privatepm");
int perPage = 10;
perPage = Common.mobPerpage(request, perPage);
int page = Common.intval(request.getParameter("page"));
if (page < 1)
page = 1;
String folder = "inbox";
int count = pmService.getNum((Integer) sGlobal.get("supe_uid"), folder, filter);
int start = pmService.getPageStart(page, perPage, count);
int msgLen = 100;
list = pmService.getPmList((Integer) sGlobal.get("supe_uid"), count, folder, filter, start,
perPage);
for (Map<String, Object> pm : list) {
pm.put("message", Common.htmlSpecialChars(pmService.removeCode((String) pm.get("message"),
msgLen)));
pm.remove("folder");
}
int maxPage = (Integer) sConfig.get("maxpage");
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage,
"space.jsp?do=pm&filter=" + filter, null, null));
Map<String, Object> member = (Map<String, Object>) sGlobal.get("member");
if (member != null) {
if (!Common.empty(member.get("newpm"))) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET newpm='0' WHERE uid='" + sGlobal.get("supe_uid") + "'");
dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("newpm")
+ " WHERE uid='" + sGlobal.get("supe_uid") + "'");
}
}
actives.put(filter, " class=\"active\"");
request.setAttribute("count", count);
}
if (list != null && list.size() > 0) {
int today = (int) ((Integer) sGlobal.get("timestamp") - ((Integer) sGlobal.get("timestamp") + Float
.valueOf(Common.getTimeOffset(sGlobal, sConfig)) * 3600) % 86400);
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
for (Map<String, Object> value : list) {
if (value.get("msgfromid") != null) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("msgfromid"),
(String) value.get("msgfrom"), "", 0);
}
value.put("daterange", 5);
if ((Integer) value.get("dateline") >= today) {
value.put("daterange", 1);
} else if ((Integer) value.get("dateline") >= today - 86400) {
value.put("daterange", 2);
} else if ((Integer) value.get("dateline") >= today - 172800) {
value.put("daterange", 3);
}
}
Common.realname_get(sGlobal, sConfig, sNames, space);
}
request.setAttribute("navtitle", "����Ϣ - ");
request.setAttribute("touid", toUid);
request.setAttribute("actives", actives);
request.setAttribute("list", list);
return include(request, response, sConfig, sGlobal, "space_pm.jsp");
}
public ActionForward space_poll(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
int pid = Common.intval(request.getParameter("pid"));
int page = Common.intval(request.getParameter("page"));
page = page <= 1 ? 1 : page;
if (pid > 0) {
int perPage = 20;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
Map<String, Object> poll = null;
List<Map<String, Object>> pollList = dataBaseService.executeQuery("SELECT pf.*, p.* FROM "
+ JavaCenterHome.getTableName("poll") + " p LEFT JOIN "
+ JavaCenterHome.getTableName("pollfield") + " pf ON pf.pid=p.pid WHERE p.pid='" + pid
+ "'");
if (pollList.size() > 0) {
poll = pollList.get(0);
}
if (poll == null) {
return showMessage(request, response, "view_to_info_did_not_exist");
}
if (!Common.empty(poll.get("credit")) && !Common.empty(poll.get("percredit"))
&& (Integer) poll.get("credit") < (Integer) poll.get("percredit")) {
poll.put("percredit", poll.get("credit"));
}
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
Common.realname_set(sGlobal, sConfig, sNames, (Integer) poll.get("uid"), (String) poll
.get("username"), "", 0);
boolean allowedVote = true;
if (!Common.empty(poll.get("sex")) && poll.get("sex") != ((Map) sGlobal.get("member")).get("sex")) {
allowedVote = false;
}
boolean expiration = false;
if (!Common.empty(poll.get("expiration"))
&& (Integer) poll.get("expiration") < (Integer) sGlobal.get("timestamp")) {
allowedVote = false;
expiration = true;
if (Common.empty(poll.get("summary")) && Common.empty(poll.get("notify"))) {
String note = Common.getMessage(request, "cp_note_poll_finish", new String[] {
"space.jsp?uid=" + poll.get("uid") + "&do=poll&pid=" + poll.get("pid"),
(String) poll.get("subject")});
int supe_uid = (Integer) sGlobal.get("supe_uid");
String supe_username = (String) sGlobal.get("supe_username");
sGlobal.put("supe_uid", 0);
sGlobal.put("supe_username", "");
cpService.addNotification(request, sGlobal, sConfig, (Integer) poll.get("uid"), "poll",
note, false);
sGlobal.put("supe_uid", supe_uid);
sGlobal.put("supe_username", supe_username);
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("pollfield")
+ " SET notify='1' WHERE pid='" + poll.get("pid") + "'");
}
}
request.setAttribute("allowedvote", allowedVote);
request.setAttribute("hasvoted", dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("polluser") + " WHERE uid='" + sGlobal.get("supe_uid")
+ "' AND pid='" + pid + "' "));
float allVote = 0;
List<Map<String, Object>> option = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("polloption") + " WHERE pid='" + pid + "' ORDER BY oid");
for (Map<String, Object> value : option) {
allVote += (Integer) value.get("votenum");
}
request.setAttribute("option", option);
NumberFormat formater = DecimalFormat.getInstance();
formater.setMaximumFractionDigits(2);
String percent = null;
for (Map<String, Object> value : option) {
if (!Common.empty(value.get("votenum")) && allVote > 0) {
percent = formater.format((Integer) value.get("votenum") / allVote);
value.put("width", Math.round(Float.valueOf(percent) * 160));
value.put("percent", Math.round(Float.valueOf(percent) * 100));
} else {
value.put("width", 0);
value.put("percent", 0);
}
}
boolean isFriend = true;
if (!Common.empty(poll.get("noreply"))) {
isFriend = (Boolean) space.get("self");
if (!Common.empty(space.get("friends"))
&& Common.in_array((String[]) space.get("friends"), sGlobal.get("supe_uid"))) {
isFriend = true;
}
}
if (isFriend) {
int count = (Integer) poll.get("replynum");
if (count > 0) {
int cid = Common.intval(request.getParameter("cid"));
request.setAttribute("cid", cid);
String csql = cid > 0 ? "cid='" + cid + "' AND" : "";
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("comment") + " WHERE " + csql + " id='" + pid
+ "' AND idtype='pid' ORDER BY dateline LIMIT " + start + "," + perPage);
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("authorid"),
(String) value.get("author"), "", 0);
}
request.setAttribute("list", list);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage,
"space.jsp?uid=" + poll.get("uid") + "&do=" + request.getAttribute("do")
+ "&pid=$pid", null, "div_main_content"));
}
List<Map<String, Object>> newPoll = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("poll") + " ORDER BY dateline DESC LIMIT 0, 10");
for (Map<String, Object> value : newPoll) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
}
request.setAttribute("newpoll", newPoll);
int timeRange = (Integer) sGlobal.get("timestamp") - 2592000;
List<Map<String, Object>> hotPoll = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("poll") + " WHERE lastvote >= '" + timeRange
+ "' ORDER BY voternum DESC LIMIT 0, 10");
for (Map<String, Object> value : hotPoll) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
}
request.setAttribute("hotpoll", hotPoll);
request.setAttribute("topic", Common.getTopic(request, (Integer) poll.get("topicid")));
if (!(Boolean) space.get("self")) {
Map<String, Object> TPL = new HashMap<String, Object>();
TPL.put("spacetitle", "ͶƱ");
TPL.put("spacemenus", new String[] {
"<a href=\"space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=me\">TA������ͶƱ</a>",
"<a href=\"space.jsp?uid=" + space.get("uid") + "&do=poll&pid=" + pid
+ "\">�鿴ͶƱ����</a>"});
request.setAttribute("TPL", TPL);
}
Common.realname_get(sGlobal, sConfig, sNames, space);
request.setAttribute("pid", pid);
request.setAttribute("isfriend", isFriend);
request.setAttribute("expiration", expiration);
request.setAttribute("managepoll", Common.checkPerm(request, response, "managepoll"));
request.setAttribute("tpl_css", "poll");
request.setAttribute("poll", poll);
request.setAttribute("navtitle", poll.get("subject") + " - " + "ͶƱ - ");
return include(request, response, sConfig, sGlobal, "space_poll_view.jsp");
} else {
String view = request.getParameter("view");
Map<String, String[]> paramMap = request.getParameterMap();
if (Common.empty(view)) {
paramMap.put("view", new String[] {"new"});
view = "new";
} else {
view = Common.trim(view);
paramMap.put("view", new String[] {view});
}
if ("all".equals(view)) {
view = "new";
paramMap.put("view", new String[] {"new"});
}
int perPage = 10;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
int count = 0;
String whereSQL = null;
String indexSQL = null;
String leftSQL = null;
String orderSQL = "p.dateline";
String countTable = JavaCenterHome.getTableName("poll") + " p ";
String theURL = null;
List<String> wheres = new ArrayList<String>();
if ("new".equals(view)) {
indexSQL = "USE INDEX (dateline)";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=new";
} else if ("hot".equals(view)) {
String filtrateStr = request.getParameter("filtrate");
if (Common.empty(filtrateStr)) {
paramMap.put("filtrate", new String[] {"all"});
filtrateStr = "all";
} else {
filtrateStr = Common.trim(filtrateStr);
paramMap.put("filtrate", new String[] {filtrateStr});
}
indexSQL = "USE INDEX (voternum)";
orderSQL = "p.voternum";
int timeRange = 0;
int timestamp = (Integer) sGlobal.get("timestamp");
if ("week".equals(filtrateStr)) {
timeRange = timestamp - 604800;
} else if ("month".equals(filtrateStr)) {
timeRange = timestamp - 2592000;
}
if (timeRange > 0) {
wheres.add("p.lastvote >= '" + timeRange + "'");
}
Map<String, String> filtrate = new HashMap<String, String>();
filtrate.put(filtrateStr, " class=\"active\"");
request.setAttribute("filtrate", filtrate);
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=hot";
} else if ("friend".equals(view)) {
indexSQL = "USE INDEX (dateline)";
wheres.add("p.uid IN (" + space.get("feedfriend") + ")");
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=friend";
} else if ("reward".equals(view)) {
indexSQL = "USE INDEX (percredit)";
orderSQL = "p.percredit DESC, p.dateline";
wheres.add("p.percredit > 0");
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=reward";
} else {
String filtrateStr = request.getParameter("filtrate");
if (Common.empty(filtrateStr)) {
paramMap.put("filtrate", new String[] {"me"});
filtrateStr = "me";
} else {
filtrateStr = Common.trim(filtrateStr);
paramMap.put("filtrate", new String[] {filtrateStr});
}
if ("join".equals(filtrateStr)) {
leftSQL = JavaCenterHome.getTableName("polluser") + " pu LEFT JOIN ";
indexSQL = " ON p.pid=pu.pid ";
wheres.add("pu.uid='" + space.get("uid") + "'");
orderSQL = "pu.dateline";
countTable = JavaCenterHome.getTableName("polluser") + " pu ";
} else if ("expiration".equals(filtrateStr)) {
countTable = JavaCenterHome.getTableName("polluser") + " pu, "
+ JavaCenterHome.getTableName("poll") + " p";
orderSQL = "pu.dateline";
wheres.add("pu.uid='" + space.get("uid")
+ "' AND pu.pid=p.pid AND p.expiration>0 AND p.expiration<='"
+ sGlobal.get("timestamp") + "'");
} else {
wheres.add("p.uid='" + space.get("uid") + "'");
}
Map<String, String> filtrate = new HashMap<String, String>();
filtrate.put(filtrateStr, " class=\"active\"");
request.setAttribute("filtrate", filtrate);
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do")
+ "&view=me&filtrate=" + filtrateStr;
}
String searchKey = Common.stripSearchKey(request.getParameter("searchkey"));
if (!Common.empty(searchKey)) {
wheres.add("p.subject LIKE '%" + searchKey + "%'");
theURL += "&searchkey=" + request.getParameter("searchkey");
Map<String, Object> resultMap = Common.ckSearch(theURL, request, response);
if (resultMap != null) {
return showMessage(request, response, (String) resultMap.get("msgkey"),
(String) resultMap.get("url_forward"), (Integer) resultMap.get("second"),
(String[]) resultMap.get("args"));
}
request.setAttribute("searchkey", searchKey);
}
if (wheres.size() > 0) {
whereSQL = " WHERE " + Common.implode(wheres, " AND ");
}
whereSQL = whereSQL == null ? "" : whereSQL;
count = dataBaseService.findRows("SELECT COUNT(*) FROM " + countTable + " " + whereSQL);
if (("p.uid=" + space.get("uid") + "'").equals(whereSQL)
&& (Integer) space.get("pollnum") != count) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET pollnum='" + count + "' WHERE uid='" + space.get("uid") + "'");
}
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if (count > 0) {
String filtrate = request.getParameter("filtrate");
List<Map<String, Object>> list = null;
if ("expiration".equals(filtrate)) {
list = dataBaseService.executeQuery("SELECT p.*,pf.* FROM "
+ JavaCenterHome.getTableName("polluser") + " pu, "
+ JavaCenterHome.getTableName("poll") + " p,"
+ JavaCenterHome.getTableName("pollfield") + " pf " + whereSQL
+ " AND p.pid=pf.pid ORDER BY " + orderSQL + " DESC LIMIT " + start + ","
+ perPage);
} else {
indexSQL = indexSQL == null ? "" : indexSQL;
leftSQL = leftSQL == null ? "" : leftSQL;
list = dataBaseService.executeQuery("SELECT p.*,pf.* FROM " + leftSQL + " "
+ JavaCenterHome.getTableName("poll") + " p " + indexSQL + " LEFT JOIN "
+ JavaCenterHome.getTableName("pollfield") + " pf ON pf.pid=p.pid " + whereSQL
+ " ORDER BY " + orderSQL + " DESC LIMIT " + start + "," + perPage);
}
Map userList = new HashMap();
for (Map<String, Object> value : list) {
if (!Common.empty(value.get("credit")) && !Common.empty(value.get("percredit"))
&& (Integer) value.get("credit") < (Integer) value.get("percredit")) {
value.put("percredit", value.get("credit"));
}
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
value.put("option", Serializer.unserialize((String) value.get("option")));
userList.put(value.get("uid"), value.get("username"));
}
request.setAttribute("list", list);
request.setAttribute("userList", userList);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL, null,
null));
Common.realname_get(sGlobal, sConfig, sNames, space);
if (Common.empty(sGlobal.get("inajax"))) {
if (!(Boolean) space.get("self")) {
Map<String, Object> TPL = new HashMap<String, Object>();
TPL.put("spacetitle", "ͶƱ");
TPL.put("spacemenus", new String[] {"<a href=\"space.jsp?uid=" + space.get("uid")
+ "&do=" + request.getAttribute("do") + "&view=me\">TA������ͶƱ</a>"});
request.setAttribute("TPL", TPL);
}
Map<String, String> actives = new HashMap<String, String>();
actives.put(view, " class=\"active\"");
request.setAttribute("actives", actives);
}
request.setAttribute("count", count);
request.setAttribute("tpl_css", "poll");
request.setAttribute("navtitle", "ͶƱ - ");
return include(request, response, sConfig, sGlobal, "space_poll_list.jsp");
}
}
public ActionForward space_share(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
int id = Common.intval(request.getParameter("id"));
int page = Common.intval(request.getParameter("page"));
page = page < 1 ? 1 : page;
if (id > 0) {
List<Map<String, Object>> shareList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("share") + " WHERE sid='" + id + "' AND uid='"
+ space.get("uid") + "'");
if (shareList.size() == 0) {
return showMessage(request, response, "share_does_not_exist");
}
Map<String, Object> share = shareList.get(0);
Common.mkShare(share);
int perPage = 50;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
int cid = Common.intval(request.getParameter("cid"));
request.setAttribute("cid", cid);
String csql = cid > 0 ? "cid='" + cid + "' AND" : "";
int count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("comment") + " WHERE " + csql + " id='" + id
+ "' AND idtype='sid'");
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if (count > 0) {
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("comment") + " WHERE " + csql + " id='" + id
+ "' AND idtype='sid' ORDER BY dateline LIMIT " + start + "," + perPage);
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("authorid"),
(String) value.get("author"), "", 0);
}
request.setAttribute("list", list);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage,
"space.jsp?uid=" + share.get("uid") + "&do=share&id=" + id, null, "comment_ul"));
request.setAttribute("topic", Common.getTopic(request, (Integer) share.get("topicid")));
Common.realname_get(sGlobal, sConfig, sNames, space);
String tplTitle = null;
try {
tplTitle = Common.getStr((String) share.get("title_template"), 0, false, false, false, 0, -1,
request, response);
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
if (!(Boolean) space.get("self")) {
Map TPL = new HashMap();
TPL.put("spacetitle", "����");
TPL.put("spacemenus", new String[] {
"<a href=\"space.jsp?uid=" + space.get("uid") + "&do=share&view=me\">TA�������</a>",
"<a href=\"space.jsp?uid=" + space.get("uid") + "&do=share&id=" + share.get("sid")
+ "\">�鿴����</a>"});
request.setAttribute("TPL", TPL);
}
request.setAttribute("id", id);
request.setAttribute("manageshare", Common.checkPerm(request, response, "manageshare"));
request.setAttribute("share", share);
request.setAttribute("navtitle", (Common.empty(tplTitle) ? "" : tplTitle + " - ") + "���� - ");
return include(request, response, sConfig, sGlobal, "space_share_view.jsp");
} else {
String view = request.getParameter("view");
if (Common.empty(view)
&& (space.get("friendnum") == null || (Integer) space.get("friendnum") < (Integer) sConfig
.get("showallfriendnum"))) {
view = "all";
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("view", new String[] {"all"});
}
int perPage = 20;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
String f_index = "";
String whereSQL = null;
String theURL = null;
String action = (String) request.getAttribute("do");
Map<String, String> actives = new HashMap<String, String>();
if ("all".equals(view)) {
whereSQL = "1";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + action + "&view=all";
actives.put("all", " class=\"active\"");
} else if (Common.empty(space.get("feedfriend"))) {
whereSQL = "uid='" + space.get("uid") + "'";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + action + "&view=me";
actives.put("me", " class=\"active\"");
} else {
whereSQL = "uid IN (" + space.get("feedfriend") + ")";
theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + action + "&view=we";
f_index = "USE INDEX(dateline)";
actives.put("we", " class=\"active\"");
}
String type = Common.trim(request.getParameter("type"));
Map<String, String> sub_actives = new HashMap<String, String>();
if (!Common.empty(type)) {
sub_actives.put("type_" + type, " class=\"active\"");
whereSQL += " AND type='" + type + "'";
} else {
sub_actives.put("type_all", " class=\"active\"");
}
int sid = Common.intval(request.getParameter("sid"));
String shareSQL = sid > 0 ? "sid='" + sid + "' AND" : "";
int count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("share") + " WHERE " + shareSQL + " " + whereSQL);
if ("".equals(shareSQL) && ("uid='" + space.get("uid") + "'").equals(whereSQL)
&& space.get("sharenum") != null && (Integer) space.get("sharenum") != count) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET sharenum='" + count + "' WHERE uid='" + space.get("uid") + "'");
}
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if (count > 0) {
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("share") + " " + f_index + " WHERE " + shareSQL + " "
+ whereSQL + " ORDER BY dateline DESC LIMIT " + start + "," + perPage);
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
Common.mkShare(value);
}
request.setAttribute("list", list);
}
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theURL
+ "&type=" + type, null, null));
Common.realname_get(sGlobal, sConfig, sNames, space);
if (!Common.empty(sGlobal.get("inajax"))) {
request.setAttribute("count", count);
} else {
if (!(Boolean) space.get("self")) {
Map TPL = new HashMap();
TPL.put("spacetitle", "����");
TPL.put("spacemenus", new String[] {"<a href=\"space.jsp?uid=" + space.get("uid")
+ "&do=share&view=me\">TA�������</a>"});
request.setAttribute("TPL", TPL);
} else {
request.setAttribute("actives", actives);
}
}
request.setAttribute("theurl", theURL);
request.setAttribute("sub_actives", sub_actives);
request.setAttribute("navtitle", "���� - ");
return include(request, response, sConfig, sGlobal, "space_share_list.jsp");
}
}
public ActionForward space_tag(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
int id = Common.intval(request.getParameter("id"));
String name = request.getParameter("name");
name = Common.empty(name) ? null : Common.stripSearchKey(name);
int start = Common.intval(request.getParameter("start"));
int maxPage = (Integer) sConfig.get("maxpage");
int count = 0;
if (id > 0 || !Common.empty(name)) {
int perPage = 30;
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
List<Map<String, Object>> tagList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("tag") + " WHERE "
+ (id > 0 ? "tagid='" + id + "'" : "tagname='" + name + "'") + " LIMIT 1");
if (tagList.isEmpty()) {
return showMessage(request, response, "tag_does_not_exist");
}
Map<String, Object> tag = tagList.get(0);
if ((Integer) tag.get("close") > 0) {
return showMessage(request, response, "tag_locked");
}
int priNum = 0;
List<Map<String, Object>> tagBlogList = dataBaseService.executeQuery("SELECT blog.* FROM "
+ JavaCenterHome.getTableName("tagblog") + " tb , " + JavaCenterHome.getTableName("blog")
+ " blog WHERE tb.tagid='" + tag.get("tagid") + "' AND blog.blogid=tb.blogid LIMIT "
+ start + "," + perPage);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
for (Map<String, Object> value : tagBlogList) {
if (Common.empty(value.get("friend"))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
list.add(value);
} else {
priNum++;
}
count++;
}
request.setAttribute("list", list);
request.setAttribute("prinum", priNum);
Common.realname_get(sGlobal, sConfig, sNames, space);
try {
request.setAttribute("multi", Common.smulti(sGlobal, start, perPage, count, "space.jsp?uid="
+ space.get("uid") + "&do=" + request.getAttribute("do") + "&id=" + id, null));
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
request.setAttribute("tag", tag);
request.setAttribute("navtitle", (Common.empty(tag.get("tagname")) ? "" : tag.get("tagname")
+ " - ")
+ "��ǩ - ");
return include(request, response, sConfig, sGlobal, "space_tag_view.jsp");
} else {
int perPage = 100;
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("tag") + " ORDER BY blognum DESC LIMIT " + start + ","
+ perPage);
count = list.size();
try {
request.setAttribute("multi", Common.smulti(sGlobal, start, perPage, count, "space.jsp?uid="
+ space.get("uid") + "&do=" + request.getAttribute("do"), null));
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
request.setAttribute("list", list);
request.setAttribute("navtitle", "��ǩ - ");
return include(request, response, sConfig, sGlobal, "space_tag_list.jsp");
}
}
public ActionForward space_thread(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
int page = Common.intval(request.getParameter("page"));
page = page < 1 ? 1 : page;
int id = Common.intval(request.getParameter("id"));
if (id > 0) {
int eventId = Common.intval(request.getParameter("eventid"));
Map<String, Object> event = null;
Map<String, Object> userEvent = null;
if (eventId > 0) {
List<Map<String, Object>> eventList = dataBaseService.executeQuery("SELECT e.* FROM "
+ JavaCenterHome.getTableName("event") + " e WHERE e.eventid='" + eventId + "'");
if (eventList.size() == 0) {
return showMessage(request, response, "event_does_not_exist");
}
event = eventList.get(0);
List<Map<String, Object>> userEventList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("userevent") + " WHERE uid = '"
+ sGlobal.get("supe_uid") + "' AND eventid = '" + eventId + "'");
if (userEventList.size() > 0) {
userEvent = userEventList.get(0);
}
}
Map<String, Object> thread = null;
List<Map<String, Object>> threadList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("thread") + " WHERE tid='" + id + "' LIMIT 1");
if (threadList.size() == 0) {
return showMessage(request, response, "topic_does_not_exist");
}
thread = threadList.get(0);
space = Common.getSpace(request, sGlobal, sConfig, thread.get("uid"));
if ((Integer) space.get("flag") == -1) {
return showMessage(request, response, "space_has_been_locked");
}
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
Common.realname_set(sGlobal, sConfig, sNames, (Integer) thread.get("uid"), (String) thread
.get("username"), "", 0);
int tagid = (Integer) thread.get("tagid");
if (eventId > 0 && (Integer) event.get("tagid") != tagid) {
return showMessage(request, response, "event_mtag_not_match");
}
if (eventId == 0 && !Common.empty(thread.get("eventid"))) {
List<Map<String, Object>> eventList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("event") + " WHERE eventid='" + thread.get("eventid")
+ "' LIMIT 1");
if (eventList.size() == 0) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("thread")
+ " SET eventid='0' WHERE ");
} else {
event = eventList.get(0);
}
}
Map<String, Object> mtag = null;
try {
mtag = Common.getMtag(request, response, (Integer) sGlobal.get("supe_uid"), tagid);
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
if (!Common.empty(mtag.get("close"))) {
return showMessage(request, response, "mtag_close");
}
if (eventId > 0 && Common.empty(event.get("public"))
&& (userEvent == null || (Integer) userEvent.get("status") < 2)) {
return showMessage(request, response, "event_memberstatus_limit", "space.jsp?do=event");
} else if (Common.empty(mtag.get("allowview"))) {
return showMessage(request, response, "mtag_not_allow_to_do", "space.jsp?do=mtag&tagid="
+ tagid);
}
int perPage = 30;
int start = (page - 1) * perPage;
int count = (Integer) thread.get("replynum");
if (count % perPage == 0) {
perPage = perPage + 1;
}
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
int pid = Common.intval(request.getParameter("pid"));
String pSQL = pid > 0 ? "(isthread='1' OR pid='" + pid + "') AND" : "";
int postNum = start;
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("post") + " WHERE " + pSQL + " tid='" + thread.get("tid")
+ "' ORDER BY dateline LIMIT " + start + "," + perPage);
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
value.put("num", postNum);
postNum++;
}
if (list.size() > 0 && !Common.empty(list.get(0).get("isthread"))) {
Map<String, Object> content = list.get(0);
thread.put("content", content);
content.put("message", blogService.blogBBCode((String) content.get("message")));
list.remove(0);
} else {
thread.put("content", null);
}
request.setAttribute("list", list);
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage,
"space.jsp?uid=" + thread.get("uid") + "&do=" + request.getAttribute("do") + "&id=" + id,
null, null));
Map<String, String> sCookie = (Map<String, String>) request.getAttribute("sCookie");
if (!(Boolean) space.get("self") && !("" + id).equals(sCookie.get("view_tid"))) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("thread")
+ " SET viewnum=viewnum+1 WHERE tid='" + id + "'");
dataBaseService.executeUpdate("INSERT INTO " + JavaCenterHome.getTableName("log")
+ " (`id`, `idtype`) VALUES ('" + space.get("uid") + "', 'uid') ");
CookieHelper.setCookie(request, response, "view_tid", id + "");
}
request.setAttribute("hash", Common.md5(thread.get("uid") + "\t" + thread.get("dateline")));
id = (Integer) thread.get("tid");
request.setAttribute("id", id);
String idtype = "tid";
request.setAttribute("idtype", idtype);
Map globalClick = Common.getCacheDate(request, response, "/data/cache/cache_click.jsp",
"globalClick");
Map<Object, Map> clicks = Common.empty(globalClick.get("tid")) ? new HashMap()
: (Map) globalClick.get("tid");
Set clickKeys = clicks.keySet();
Map value = null;
int maxclicknum = 0;
for (Object clickKey : clickKeys) {
value = clicks.get(clickKey);
value.put("clicknum", thread.get("click_" + clickKey));
value.put("classid", Common.rand(1, 4));
if (value.get("clicknum") != null && (Integer) value.get("clicknum") > maxclicknum) {
maxclicknum = (Integer) value.get("clicknum");
}
}
request.setAttribute("maxclicknum", maxclicknum);
List<Map<String, Object>> clickUserList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("clickuser") + " WHERE id='" + id + "' AND idtype='"
+ idtype + "' ORDER BY dateline DESC LIMIT 0,18");
for (Map<String, Object> clickUser : clickUserList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) clickUser.get("uid"),
(String) clickUser.get("username"), "", 0);
clickUser.put("clickname", clicks.get(clickUser.get("clickid")).get("name"));
}
request.setAttribute("clickuserlist", clickUserList);
request.setAttribute("topic", Common.getTopic(request, (Integer) thread.get("topicid")));
Common.realname_get(sGlobal, sConfig, sNames, space);
request.setAttribute("eventid", eventId);
request.setAttribute("event", event);
if (eventId > 0) {
request.setAttribute("userevent", userEvent);
}
if (!Common.empty(thread.get("magicegg"))) {
StringBuffer magiceggImage = new StringBuffer();
for (int i = 0; i < (Integer) thread.get("magicegg"); i++) {
magiceggImage.append("<img src=\"image/magic/egg/" + Common.rand(1, 6) + ".gif\" />");
}
thread.put("magiceggImage", magiceggImage.toString());
}
request.setAttribute("mtag", mtag);
request.setAttribute("thread", thread);
request.setAttribute("managethread", Common.checkPerm(request, response, "managethread"));
request.setAttribute("pid", pid);
request.setAttribute("clicks", clicks);
request.setAttribute("navtitle", (!Common.empty(thread.get("subject")) ? thread.get("subject")
+ " - " : "")
+ (!Common.empty(mtag.get("tagname")) ? mtag.get("tagname") + " - " : "")
+ (!Common.empty(mtag.get("title")) ? mtag.get("title") + " - " : "") + "���� - ");
request.setAttribute("tpl_css", "thread");
return include(request, response, sConfig, sGlobal, "space_thread_view.jsp");
} else {
int perPage = 30;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
String view = request.getParameter("view");
Map<String, String[]> paramMap = request.getParameterMap();
if (!Common.in_array(new String[] {"hot", "new", "me", "all"}, view)) {
paramMap.put("view", new String[] {"hot"});
view = "hot";
}
String whereSQL = null;
String f_index = "";
if ("hot".equals(view)) {
int minHot = (Integer) sConfig.get("feedhotmin");
minHot = minHot < 1 ? 3 : minHot;
whereSQL = "main.hot>='" + minHot + "'";
if (page == 1) {
Map<Object, Map> globalProfield = Common.getCacheDate(request, response,
"/data/cache/cache_profield.jsp", "globalProfield");
List<Map<String, Object>> rlist = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("mtag")
+ " mt ORDER BY mt.threadnum DESC LIMIT 0,6");
for (Map<String, Object> value : rlist) {
value.put("title", globalProfield.get(value.get("fieldid")).get("title"));
if (Common.empty(value.get("pic"))) {
value.put("pic", "image/nologo.jpg");
}
}
request.setAttribute("rlist", rlist);
}
} else if ("me".equals(view)) {
whereSQL = "main.uid='" + space.get("uid") + "'";
} else {
whereSQL = "1";
f_index = "USE INDEX (lastpost)";
}
String theURL = "space.jsp?uid=" + space.get("uid") + "&do=thread&view=" + view;
int count = 0;
String searchKey = Common.stripSearchKey(request.getParameter("searchkey"));
if (!Common.empty(searchKey)) {
whereSQL = "main.subject LIKE '%" + searchKey + "%'";
theURL += "&searchkey=" + searchKey;
Map<String, Object> resultMap = Common.ckSearch(theURL, request, response);
if (resultMap != null) {
return showMessage(request, response, (String) resultMap.get("msgkey"),
(String) resultMap.get("url_forward"), (Integer) resultMap.get("second"),
(String[]) resultMap.get("args"));
}
request.setAttribute("searchkey", searchKey);
}
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if (whereSQL != null) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("thread") + " main WHERE " + whereSQL);
if (("main.uid='" + space.get("uid") + "'").equals(whereSQL)
&& space.get("threadnum") != null && (Integer) space.get("threadnum") != count) {
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
+ " SET threadnum='" + count + "' WHERE uid='" + space.get("uid") + "'");
}
if (count > 0) {
List<Map<String, Object>> list = dataBaseService
.executeQuery("SELECT main.*,field.tagname,field.membernum,field.fieldid,field.pic FROM "
+ JavaCenterHome.getTableName("thread")
+ " main "
+ f_index
+ " LEFT JOIN "
+ JavaCenterHome.getTableName("mtag")
+ " field ON field.tagid=main.tagid WHERE "
+ whereSQL
+ " ORDER BY main.lastpost DESC LIMIT " + start + "," + perPage);
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("lastauthorid"),
(String) value.get("lastauthor"), "", 0);
try {
value.put("tagname", Common.getStr((String) value.get("tagname"), 20, false,
false, false, 0, 0, request, response));
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
if (Common.empty(value.get("pic"))) {
value.put("pic", "image/nologo.jpg");
}
if (Common.empty(sGlobal.get("inajax"))) {
if (!Common.empty(value.get("magicegg"))) {
StringBuffer magiceggImage = new StringBuffer();
for (int i = 0; i < (Integer) value.get("magicegg"); i++) {
magiceggImage.append("<img src=\"image/magic/egg/" + Common.rand(1, 6)
+ ".gif\" />");
}
value.put("magiceggImage", magiceggImage.toString());
}
}
}
request.setAttribute("list", list);
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage,
theURL, null, null));
}
}
Common.realname_get(sGlobal, sConfig, sNames, space);
if (Common.empty(sGlobal.get("inajax"))) {
if (!(Boolean) space.get("self")) {
Map TPL = new HashMap();
TPL.put("spacetitle", "����");
TPL.put("spacemenus", new String[] {"<a href=\"space.jsp?uid=" + space.get("uid")
+ "&do=thread&view=me\">TA�������</a>"});
request.setAttribute("TPL", TPL);
} else {
Map<String, String> actives = new HashMap<String, String>();
actives.put(view, " class=\"active\"");
request.setAttribute("actives", actives);
}
}
request.setAttribute("count", count);
request.setAttribute("tpl_css", "thread");
request.setAttribute("navtitle", "Ⱥ�黰�� - ");
return include(request, response, sConfig, sGlobal, "space_thread_list.jsp");
}
}
public ActionForward space_top(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
int perPage = 20;
int page = Common.intval(request.getParameter("page"));
page = page <= 1 ? 1 : page;
int start = (page - 1) * perPage;
if (Common.empty(sConfig.get("networkpage"))) {
start = 0;
}
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
String cacheFile = null;
double cacheTime = Double.parseDouble(sConfig.get("topcachetime").toString());
if (cacheTime < 5){
cacheTime = 5;
sConfig.put("topcachetime", "5");
}
int count = 0;
int now_pos = 0;
String view = request.getParameter("view");
if (!Common.in_array(new String[] {"online", "mm", "gg", "credit", "experience", "friendnum",
"viewnum", "updatetime"}, view)) {
view = "show";
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("view", new String[] {"show"});
}
String cSQL = null;
String SQL = null;
String cookieName = null;
Map<String, String> sCookie = (Map<String, String>) request.getAttribute("sCookie");
if ("show".equals(view)) {
cSQL = "SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("show");
SQL = "SELECT main.*,space.*, field.* FROM " + JavaCenterHome.getTableName("show")
+ " main LEFT JOIN " + JavaCenterHome.getTableName("space")
+ " space ON space.uid=main.uid LEFT JOIN " + JavaCenterHome.getTableName("spacefield")
+ " field ON field.uid=main.uid ORDER BY main.credit DESC";
String timestamp = sGlobal.get("timestamp").toString();
if (timestamp.substring(timestamp.length() - 1, timestamp.length()) == "0") {
dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("show")
+ " WHERE credit<1");
}
Map<String, Object> whereArr = new HashMap<String, Object>();
whereArr.put("uid", space.get("uid"));
space.put("showcredit", Common.intval(Common.getCount("show", whereArr, "credit")));
cookieName = "space_top_" + view;
if (!Common.empty(sCookie.get(cookieName))) {
now_pos = Integer.valueOf(sCookie.get(cookieName));
} else {
now_pos = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("show") + " WHERE credit>'" + space.get("showcredit")
+ "'");
now_pos++;
CookieHelper.setCookie(request, response, cookieName, now_pos + "");
}
} else if ("mm".equals(view)) {
count = 100;
cacheFile = JavaCenterHome.jchRoot + "/data/cache/cache_top_mm.txt";
SQL = "SELECT main.*, field.* FROM " + JavaCenterHome.getTableName("space") + " main, "
+ JavaCenterHome.getTableName("spacefield")
+ " field WHERE field.sex='2' AND field.uid=main.uid ORDER BY main.viewnum DESC";
cookieName = "space_top_" + view;
if (!Common.empty(sCookie.get(cookieName))) {
now_pos = Integer.valueOf(sCookie.get(cookieName));
} else {
if (space.get("sex") != null && (Integer) space.get("sex") == 2) {
now_pos = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("space") + " s, "
+ JavaCenterHome.getTableName("spacefield") + " f WHERE s.viewnum>'"
+ space.get("viewnum") + "' AND f.sex='2' AND f.uid=s.uid");
now_pos++;
} else {
now_pos = -1;
}
CookieHelper.setCookie(request, response, cookieName, now_pos + "");
}
} else if ("gg".equals(view)) {
count = 100;
cacheFile = JavaCenterHome.jchRoot + "/data/cache/cache_top_gg.txt";
SQL = "SELECT main.*, field.* FROM " + JavaCenterHome.getTableName("space") + " main, "
+ JavaCenterHome.getTableName("spacefield")
+ " field WHERE field.sex='1' AND field.uid=main.uid ORDER BY main.viewnum DESC";
cookieName = "space_top_" + view;
if (!Common.empty(sCookie.get(cookieName))) {
now_pos = Integer.valueOf(sCookie.get(cookieName));
} else {
if (space.get("sex") != null && (Integer) space.get("sex") == 1) {
now_pos = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("space") + " s, "
+ JavaCenterHome.getTableName("spacefield") + " f WHERE s.viewnum>'"
+ space.get("viewnum") + "' AND f.sex='1' AND f.uid=s.uid");
now_pos++;
} else {
now_pos = -1;
}
CookieHelper.setCookie(request, response, cookieName, now_pos + "");
}
} else if ("credit".equals(view)) {
count = 100;
cacheFile = JavaCenterHome.jchRoot + "/data/cache/cache_top_credit.txt";
SQL = "SELECT main.*, field.* FROM " + JavaCenterHome.getTableName("space") + " main LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " field ON field.uid=main.uid ORDER BY main.credit DESC";
cookieName = "space_top_" + view;
if (!Common.empty(sCookie.get(cookieName))) {
now_pos = Integer.valueOf(sCookie.get(cookieName));
} else {
now_pos = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("space") + " s WHERE s.credit>'" + space.get("credit")
+ "'");
now_pos++;
CookieHelper.setCookie(request, response, cookieName, now_pos + "");
}
} else if ("experience".equals(view)) {
count = 100;
cacheFile = JavaCenterHome.jchRoot + "/data/cache/cache_top_experience.txt";
SQL = "SELECT main.*, field.* FROM " + JavaCenterHome.getTableName("space") + " main LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " field ON field.uid=main.uid ORDER BY main.experience DESC";
cookieName = "space_top_" + view;
if (!Common.empty(sCookie.get(cookieName))) {
now_pos = Integer.valueOf(sCookie.get(cookieName));
} else {
now_pos = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("space") + " s WHERE s.experience>'"
+ space.get("experience") + "'");
now_pos++;
CookieHelper.setCookie(request, response, cookieName, now_pos + "");
}
} else if ("friendnum".equals(view)) {
count = 100;
cacheFile = JavaCenterHome.jchRoot + "/data/cache/cache_top_friendnum.txt";
SQL = "SELECT main.*, field.* FROM " + JavaCenterHome.getTableName("space") + " main LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " field ON field.uid=main.uid ORDER BY main.friendnum DESC";
cookieName = "space_top_" + view;
if (!Common.empty(sCookie.get(cookieName))) {
now_pos = Integer.valueOf(sCookie.get(cookieName));
} else {
now_pos = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("space") + " s WHERE s.friendnum>'"
+ space.get("friendnum") + "'");
now_pos++;
CookieHelper.setCookie(request, response, cookieName, now_pos + "");
}
} else if ("viewnum".equals(view)) {
count = 100;
cacheFile = JavaCenterHome.jchRoot + "/data/cache/cache_top_viewnum.txt";
SQL = "SELECT main.*, field.* FROM " + JavaCenterHome.getTableName("space") + " main LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " field ON field.uid=main.uid ORDER BY main.viewnum DESC";
cookieName = "space_top_" + view;
if (!Common.empty(sCookie.get(cookieName))) {
now_pos = Integer.valueOf(sCookie.get(cookieName));
} else {
now_pos = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("space") + " s WHERE s.viewnum>'"
+ space.get("viewnum") + "'");
now_pos++;
CookieHelper.setCookie(request, response, cookieName, now_pos + "");
}
} else if ("online".equals(view)) {
cSQL = "SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("session");
SQL = "SELECT field.*, space.*, main.* FROM " + JavaCenterHome.getTableName("session")
+ " main USE INDEX (lastactivity) LEFT JOIN " + JavaCenterHome.getTableName("space")
+ " space ON space.uid=main.uid LEFT JOIN " + JavaCenterHome.getTableName("spacefield")
+ " field ON field.uid=main.uid ORDER BY main.lastactivity DESC";
now_pos = -1;
} else if ("updatetime".equals(view)) {
cSQL = "SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("space");
SQL = "SELECT main.*, field.* FROM " + JavaCenterHome.getTableName("space")
+ " main USE INDEX (updatetime) LEFT JOIN " + JavaCenterHome.getTableName("spacefield")
+ " field ON field.uid=main.uid ORDER BY main.updatetime DESC";
now_pos = -1;
}
List<Map<String, Object>> forSpaceList = null;
boolean cacheMode = false;
if (count == 0) {
count = Common.empty(sConfig.get("networkpage")) ? 1 : dataBaseService.findRows(cSQL);
String multi = Common.multi(request, count, perPage, page, maxPage, "space.jsp?do=top&view=" + view,
null, null);
request.setAttribute("multi", multi);
} else {
cacheMode = true;
start = 0;
perPage = count;
File file = null;
if (cacheFile != null) {
file = new File(cacheFile);
}
int timestamp = (Integer) sGlobal.get("timestamp");
if (cacheFile != null && file.exists()
&& timestamp - (file.lastModified() / 1000) < cacheTime * 60) {
forSpaceList = Serializer.unserialize(FileHelper.readFile(cacheFile));
}
}
if (count > 0 && Common.empty(forSpaceList)) {
forSpaceList = dataBaseService.executeQuery(SQL + " LIMIT " + start + "," + perPage);
if (cacheMode && cacheFile != null) {
FileHelper.writeFile(cacheFile, Serializer.serialize(forSpaceList));
}
}
List fuids = null;
Map<Object, Map<String, Object>> list = null;
if (forSpaceList != null) {
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
fuids = new ArrayList(forSpaceList.size());
list = new HashMap<Object, Map<String, Object>>();
for (Map<String, Object> value : forSpaceList) {
value.put("isfriend", (value.get("uid").equals(space.get("uid")) || (!Common.empty(space
.get("friends")) && Common
.in_array((String[]) space.get("friends"), value.get("uid")))) ? true : false);
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), (String) value.get("name"), value.get("namestatus") == null ? 0
: (Integer) value.get("namestatus"));
fuids.add(value.get("uid"));
value.put("gColor", Common.getColor(request, response, (Integer) value.get("groupid")));
value.put("gIcon", Common.getIcon(request, response, (Integer) value.get("groupid")));
list.put(value.get("uid"), value);
}
}
if (fuids != null && fuids.size() > 0) {
List<Map<String, Object>> sessionList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("session") + " WHERE uid IN (" + Common.sImplode(fuids)
+ ")");
Map ols = new HashMap();
for (Map<String, Object> value : sessionList) {
if (Common.empty(value.get("magichidden"))) {
ols.put(value.get("uid"), value.get("lastactivity"));
} else if ("online".equals(view) && !Common.empty(list.get(value.get("uid")))) {
forSpaceList.remove(list.get(value.get("uid")));
}
}
request.setAttribute("ols", ols);
}
Map<String, String> actives = new HashMap<String, String>();
request.setAttribute("list", forSpaceList);
actives.put(view, " class=\"active\"");
request.setAttribute("cache_mode", cacheMode);
request.setAttribute("cache_time", cacheTime);
request.setAttribute("actives", actives);
request.setAttribute("now_pos", now_pos);
request.setAttribute("navtitle", "���� - ");
return include(request, response, sConfig, sGlobal, "space_top.jsp");
}
public ActionForward space_topic(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
int page = Common.intval(request.getParameter("page"));
if (page < 1) {
page = 1;
}
int perPage = 10;
int start = (page - 1) * perPage;
int topicId = Common.intval(request.getParameter("topicid"));
if (topicId == 0) {
String view = request.getParameter("view");
List<Map<String, Object>> list = null;
int count = 0;
if ("hot".equals(view)) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("topic") + " WHERE 1 LIMIT 1");
list = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("topic")
+ " ORDER BY joinnum DESC LIMIT " + start + "," + perPage);
} else if ("me".equals(view)) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("topicuser") + " WHERE uid='" + sGlobal.get("supe_uid")
+ "' LIMIT 1");
list = dataBaseService.executeQuery("SELECT t.* FROM "
+ JavaCenterHome.getTableName("topicuser") + " tu LEFT JOIN "
+ JavaCenterHome.getTableName("topic") + " t ON t.topicid=tu.topicid WHERE tu.uid='"
+ sGlobal.get("supe_uid") + "' ORDER BY tu.dateline DESC LIMIT " + start + ","
+ perPage);
} else {
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("view", new String[] {"new"});
view = "new";
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("topic") + " WHERE 1 LIMIT 1");
list = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("topic")
+ " ORDER BY lastpost DESC LIMIT " + start + "," + perPage);
}
Map<String, String> actives = new HashMap<String, String>();
actives.put(view, " class=\"active\"");
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if (count > 0) {
for (Map<String, Object> value : list) {
value.put("pic", Common.pic_get(sConfig, (String) value.get("pic"), (Integer) value
.get("thumb"), (Integer) value.get("remote"), true));
value.put("lastpost", Common.sgmdate(request, "MM-dd HH:mm", (Integer) value
.get("lastpost")));
value.put("dateline", Common.sgmdate(request, "MM-dd HH:mm", (Integer) value
.get("dateline")));
value.put("endtime", Common.empty(value.get("endtime")) ? null : Common.sgmdate(request,
"MM-dd HH:mm", (Integer) value.get("endtime")));
try {
value.put("message", Common.getStr((String) value.get("message"), 200, false, false,
false, 0, -1, request, response));
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
}
request.setAttribute("list", list);
int maxPage = (Integer) sConfig.get("maxpage");
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage,
"space.jsp?do=topic", null, null));
}
Common.realname_get(sGlobal, sConfig, sNames, space);
request.setAttribute("actives", actives);
request.setAttribute("allowtopic", Common.checkPerm(request, response, "allowtopic"));
request.setAttribute("tpl_css", "event");
request.setAttribute("navtitle", "���� - ");
return include(request, response, sConfig, sGlobal, "space_topic_list.jsp");
} else {
Map<String, Object> topic = Common.getTopic(request, topicId);
if (topic.isEmpty()) {
return showMessage(request, response, "topic_no_found");
}
boolean manageTopic = Common.checkPerm(request, response, "managetopic");
if (topic.get("uid").equals(sGlobal.get("supe_uid"))) {
manageTopic = true;
}
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
Common.realname_set(sGlobal, sConfig, sNames, (Integer) topic.get("uid"), (String) topic
.get("username"), "", 0);
Map<String, Integer> perPages = new HashMap<String, Integer>();
start = 0;
String view = request.getParameter("view");
String[] joinType = (String[]) topic.get("jointype");
if (!Common.empty(view) && Common.in_array(joinType, view)) {
perPages.put(view, 30);
start = (page - 1) * perPages.get(view);
} else if ("space".equals(view)) {
perPages.put("space", 20);
start = (page - 1) * perPages.get(view);
} else {
Map<String, String[]> paramMap = request.getParameterMap();
paramMap.put("view", new String[] {"index"});
view = "index";
perPages.put("blog", 10);
perPages.put("pic", 15);
perPages.put("thread", 10);
perPages.put("poll", 10);
perPages.put("event", 10);
perPages.put("share", 10);
perPages.put("space", 21);
}
boolean isQuery = false;
int count = 0;
if (perPages.get("blog") != null && Common.in_array(joinType, "blog")) {
if ("blog".equals(view)) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("blog") + " WHERE topicid='" + topicId
+ "' LIMIT 1");
} else {
isQuery = true;
}
if (count > 0 || isQuery) {
List<Map<String, Object>> blogList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("blog") + " WHERE topicid='" + topicId
+ "' ORDER BY dateline DESC LIMIT " + start + "," + perPages.get("blog"));
for (Map<String, Object> value : blogList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
}
request.setAttribute("bloglist", blogList);
}
}
if (perPages.get("pic") != null && Common.in_array(joinType, "pic")) {
if ("pic".equals(view)) {
count = dataBaseService
.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("pic")
+ " WHERE topicid='" + topicId + "' LIMIT 1");
} else {
isQuery = true;
}
if (count > 0 || isQuery) {
List<Map<String, Object>> picList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("pic") + " WHERE topicid='" + topicId
+ "' ORDER BY dateline DESC LIMIT " + start + "," + perPages.get("pic"));
for (Map<String, Object> value : picList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
value.put("pic", Common.pic_get(sConfig, (String) value.get("filepath"),
(Integer) value.get("thumb"), (Integer) value.get("remote"), true));
}
request.setAttribute("piclist", picList);
}
}
if (perPages.get("thread") != null && Common.in_array(joinType, "thread")) {
if ("thread".equals(view)) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("thread") + " WHERE topicid='" + topicId
+ "' LIMIT 1");
} else {
isQuery = true;
}
if (count > 0 || isQuery) {
List<Map<String, Object>> threadList = dataBaseService
.executeQuery("SELECT t.*, m.tagname FROM "
+ JavaCenterHome.getTableName("thread") + " t LEFT JOIN "
+ JavaCenterHome.getTableName("mtag")
+ " m ON m.tagid=t.tagid WHERE t.topicid='" + topicId
+ "' ORDER BY t.dateline DESC LIMIT " + start + ","
+ perPages.get("thread"));
for (Map<String, Object> value : threadList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
}
request.setAttribute("threadlist", threadList);
}
}
if (perPages.get("poll") != null && Common.in_array(joinType, "poll")) {
if ("poll".equals(view)) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("poll") + " WHERE topicid='" + topicId
+ "' LIMIT 1");
} else {
isQuery = true;
}
if (count > 0 || isQuery) {
List<Map<String, Object>> pollList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("poll") + " WHERE topicid='" + topicId
+ "' ORDER BY dateline DESC LIMIT " + start + "," + perPages.get("poll"));
for (Map<String, Object> value : pollList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
}
request.setAttribute("polllist", pollList);
}
}
if (perPages.get("event") != null && Common.in_array(joinType, "event")) {
if ("event".equals(view)) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("event") + " WHERE topicid='" + topicId
+ "' LIMIT 1");
} else {
isQuery = true;
}
if (count > 0 || isQuery) {
List<Map<String, Object>> eventList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("event") + " WHERE topicid='" + topicId
+ "' ORDER BY dateline DESC LIMIT " + start + "," + perPages.get("event"));
for (Map<String, Object> value : eventList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
}
request.setAttribute("eventlist", eventList);
}
}
if (perPages.get("share") != null && Common.in_array(joinType, "share")) {
if ("share".equals(view)) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("share") + " WHERE topicid='" + topicId
+ "' LIMIT 1");
} else {
isQuery = true;
}
if (count > 0 || isQuery) {
List<Map<String, Object>> shareList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("share") + " WHERE topicid='" + topicId
+ "' ORDER BY dateline DESC LIMIT " + start + "," + perPages.get("share"));
for (Map<String, Object> value : shareList) {
Common.mkShare(value);
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
}
request.setAttribute("sharelist", shareList);
}
}
if (perPages.get("space") != null) {
List<Map<String, Object>> spaceList = null;
if ("space".equals(view)) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("topicuser") + " WHERE topicid='" + topicId
+ "' LIMIT 1");
spaceList = dataBaseService.executeQuery("SELECT s.* FROM "
+ JavaCenterHome.getTableName("topicuser") + " tu LEFT JOIN "
+ JavaCenterHome.getTableName("space") + " s ON s.uid=tu.uid WHERE tu.topicid='"
+ topicId + "' ORDER BY tu.dateline DESC LIMIT " + start + ","
+ perPages.get("space"));
} else {
spaceList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("topicuser") + " WHERE topicid='" + topicId
+ "' ORDER BY dateline DESC LIMIT " + start + "," + perPages.get("space"));
}
for (Map<String, Object> value : spaceList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), (String) value.get("name"), value.get("namestatus") == null ? 0
: (Integer) value.get("namestatus"));
value.put("isfriend", (value.get("uid").equals(space.get("uid")) || (!Common.empty(space
.get("friends")) && Common.in_array((String[]) space.get("friends"), value
.get("uid")))) ? true : false);
value.put("gColor", value.get("groupid") == null ? null : Common.getColor(request,
response, (Integer) value.get("groupid")));
value.put("gIcon", value.get("groupid") == null ? null : Common.getIcon(request,
response, (Integer) value.get("groupid")));
}
request.setAttribute("list", spaceList);
}
if (count > 0) {
int maxPage = (Integer) sConfig.get("maxpage");
request.setAttribute("multi", Common.multi(request, count, perPages.get(view), page, maxPage,
"space.jsp?do=topic&topicid=" + topicId + "&view=" + view, null, null));
}
Common.realname_get(sGlobal, sConfig, sNames, space);
Map<String, String> sub_actives = new HashMap<String, String>();
sub_actives.put(view, " style=\"font-weight:bold;\"");
request.setAttribute("sub_actives", sub_actives);
request.setAttribute("tpl_css", "event");
request.setAttribute("topic", topic);
request.setAttribute("topicid", topicId);
request.setAttribute("managetopic", manageTopic);
request.setAttribute("navtitle", (Common.empty(topic.get("subject")) ? "" : topic.get("subject")
+ " - ")
+ "���� - ");
return include(request, response, sConfig, sGlobal, "space_topic_view.jsp");
}
}
public ActionForward space_videophoto(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
if (Common.empty(sConfig.get("videophoto"))) {
return showMessage(request, response, "no_open_videophoto");
}
if (!cpService.checkVideoPhoto(request, response, "viewphoto", space)) {
return showMessage(request, response, "no_privilege_videophoto");
}
request.setAttribute("videophoto", cpService.getVideoPic((String) space.get("videopic")));
return include(request, response, sConfig, sGlobal, "space_videophoto.jsp");
}
public ActionForward space_wall(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
int perPage = 20;
perPage = Common.mobPerpage(request, perPage);
int page = Common.intval(request.getParameter("page"));
if (page < 1) {
page = 1;
}
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
String theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + request.getAttribute("do");
int cid = Common.intval(request.getParameter("cid"));
request.setAttribute("cid", cid);
String csql = cid > 0 ? "cid='" + cid + "' AND" : "";
int count = dataBaseService.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("comment")
+ " WHERE " + csql + " id='" + space.get("uid") + "' AND idtype='uid'");
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
if (count > 0) {
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("comment") + " WHERE " + csql + " id='" + space.get("uid")
+ "' AND idtype='uid' ORDER BY dateline DESC LIMIT " + start + "," + perPage);
for (Map<String, Object> value : list) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("authorid"), (String) value
.get("author"), "", 0);
}
request.setAttribute("list", list);
}
request.setAttribute("multi", Common
.multi(request, count, perPage, page, maxPage, theURL, null, null));
Common.realname_get(sGlobal, sConfig, sNames, space);
if (!(Boolean) space.get("self")) {
Map TPL = new HashMap();
TPL.put("spacetitle", "����");
TPL.put("spacemenus", new String[] {"<a href=\"space.jsp?uid=" + space.get("uid")
+ "&do=wall&view=me\">TA����������</a>"});
request.setAttribute("TPL", TPL);
}
request.setAttribute("navtitle", "���� - ");
return include(request, response, sConfig, sGlobal, "space_wall.jsp");
}
public ActionForward space_addrbook(HttpServletRequest request, HttpServletResponse response) throws IOException {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
String op = request.getParameter("op");
Map currUser = (Map) sGlobal.get("member");
int userid = (Integer) sGlobal.get("supe_uid");
String username = (String) sGlobal.get("supe_username");
String name = (String) currUser.get("name");
String friends = Common.implode(currUser.get("friends"), ",");
boolean friendEmpty = friends.length() == 0 ? true : false;
if("visitor".equals(op) || "visitorlist".equals(op)) {
boolean visitorSubmit = false;
try {
visitorSubmit = submitCheck(request, "visitorsubmit");
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
if(visitorSubmit) {
int fromUid = (Integer) sGlobal.get("supe_uid");
String refer = request.getParameter("refer");
String users = request.getParameter("touid");
if(users == null) {
users = request.getParameter("tousers");
List<Map<String, Object>> friendList = null;
if("friend".equals(users) && !friendEmpty) {
friendList = dataBaseService.executeQuery("SELECT sf.uid FROM "+JavaCenterHome.getTableName("spacefield")+" sf WHERE sf.uid IN("+friends+") AND sf.mobile=''");
} else if("online".equals(users) && !friendEmpty) {
friendList = dataBaseService.executeQuery("SELECT sf.uid FROM "+JavaCenterHome.getTableName("spacefield")+" sf INNER JOIN "+JavaCenterHome.getTableName("session")+" s ON sf.uid=s.uid WHERE sf.uid IN("+friends+") AND sf.mobile=''");
} else if("near".equals(users)) {
friendList = dataBaseService.executeQuery("SELECT sf.uid FROM "+JavaCenterHome.getTableName("spacefield")+" sf INNER JOIN "+JavaCenterHome.getTableName("session")+" s ON sf.uid=s.uid WHERE s.ip='"+Common.getOnlineIP(request, true)+"' AND sf.uid<>'"+userid+"' AND sf.mobile=''");
} else if("visitor".equals(users)) {
friendList = dataBaseService.executeQuery("SELECT sf.uid FROM "+JavaCenterHome.getTableName("spacefield")+" sf INNER JOIN "+JavaCenterHome.getTableName("visitor")+" v ON sf.uid=v.vuid WHERE v.uid='"+userid+"' AND sf.mobile=''");
} else if("trace".equals(users)) {
friendList = dataBaseService.executeQuery("SELECT sf.uid FROM "+JavaCenterHome.getTableName("spacefield")+" sf INNER JOIN "+JavaCenterHome.getTableName("visitor")+" v ON sf.uid=v.uid WHERE v.vuid='"+userid+"' AND sf.mobile=''");
}
if(friendList != null && friendList.size() > 0) {
String temp = "";
users = "";
for(Map<String, Object> of : friendList) {
users += temp+of.get("uid");
temp = ",";
}
} else {
users = null;
}
}
if(users == null || users.length() == 0) {
return showMessage(request, response, "visitor_donot", refer, 0);
}
if(name == null || name.length() == 0) {
name = username;
}
String message = name+" ������������ϵ��ʽ����������ϵ!\n"+Common.getSiteUrl(request)+"cp.jsp?ac=profile&op=contact\n(������ܵ�������ӵ�ַ���븴�Ʋ�ճ����������ĵ�ַ�����)";
try {
int pid = pmService.jcSendPm(request, response, fromUid, users, "", message, 0, false, true);
if(pid > 0) {
return showMessage(request, response, "visitor_success", refer, 0);
} else {
return showMessage(request, response, "visitor_failed", refer, 0);
}
} catch (Exception e) {
e.printStackTrace();
}
}
request.setAttribute("op", op);
return include(request, response, sConfig, sGlobal, "space_addrbook.jsp");
} else if("export".equals(op)) {
boolean fillSubmit = false;
boolean exportSubmit = false;
try {
if(!(fillSubmit = submitCheck(request, "fillsubmit")))
exportSubmit = submitCheck(request, "exportsubmit");
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
if(fillSubmit) {
String mobile = request.getParameter("mobile");
String refer = request.getParameter("refer");
if(mobile.length() > 11) {
mobile = mobile.substring(0, 11);
}
if(mobile.trim().length() > 0) {
dataBaseService.execute("UPDATE "+JavaCenterHome.getTableName("spacefield")+" SET mobile='"+mobile+"' WHERE uid='"+userid+"'");
request.setAttribute("op", "export");
return showMessage(request, response, "export_addrbook_fill_success", refer, 0);
} else {
request.setAttribute("op", "fill");
return showMessage(request, response, "export_addrbook_mobile_empty", refer, 0);
}
} else if(exportSubmit) {
String exportusers = request.getParameter("exportusers");
List<Map<String, Object>> userList = new ArrayList<Map<String, Object>>();
String sql = "SELECT s.uid, s.username, s.name, sf.mobile, sf.email FROM "+JavaCenterHome.getTableName("space")+" s LEFT JOIN "+JavaCenterHome.getTableName("spacefield")+" sf ON s.uid=sf.uid";
if("online".equals(exportusers) && !friendEmpty) {
userList = dataBaseService.executeQuery(sql+" LEFT JOIN "+JavaCenterHome.getTableName("session")+" se ON s.uid=se.uid WHERE s.uid IN("+friends+")");
} else if("near".equals(exportusers)) {
userList = dataBaseService.executeQuery(sql+" LEFT JOIN "+JavaCenterHome.getTableName("session")+" se ON s.uid=se.uid WHERE se.ip='"+Common.getOnlineIP(request, true)+"'");
} else if("visitor".equals(exportusers)) {
userList = dataBaseService.executeQuery(sql+" LEFT JOIN "+JavaCenterHome.getTableName("visitor")+" v ON s.uid=v.vuid WHERE v.uid='"+userid+"'");
} else if("trace".equals(exportusers)) {
userList = dataBaseService.executeQuery(sql+" LEFT JOIN "+JavaCenterHome.getTableName("visitor")+" v ON s.uid=v.uid WHERE v.vuid='"+userid+"'");
} else if(!friendEmpty) {
userList = dataBaseService.executeQuery(sql+" WHERE s.uid IN("+friends+")");
}
List<String[]> rows = new ArrayList<String[]>();
Map<String, String> mobile = new HashMap<String, String>();
String uids = "", temp = "";
for(int i = 0; i < userList.size(); i++) {
uids += temp+userList.get(i).get("uid");
temp = ",";
}
if(uids.length() > 0) {
List<Map<String, Object>> infoList = dataBaseService.executeQuery("SELECT uid, subtype, friend FROM "+JavaCenterHome.getTableName("spaceinfo")+" WHERE uid IN("+uids+") AND subtype='mobile'");
for(Map<String, Object> info : infoList) {
String infoUid = String.valueOf(info.get("uid"));
String privacy = String.valueOf(info.get("friend"));
String userFriends = (String) friends;
if((privacy.equals("3") || (privacy.equals("1") && (userFriends.indexOf(infoUid) == -1)))) {
mobile.put(infoUid, "����");
}
}
}
for(int i = 0; i < userList.size(); i++) {
Map<String, Object> user = userList.get(i);
String uid = String.valueOf(user.get("uid"));
String rowMobile = mobile.get(uid) != null ? "����" : (String) user.get("mobile");
String[] row = {(String) user.get("username"), (String) user.get("name"), rowMobile , (String) user.get("email")};
rows.add(row);
}
String excelPath = JavaCenterHome.jchRoot+"./data/temp/addrbook.xls";
File excelFile = writeToExcel(rows, excelPath, "addrbook");
if(excelFile != null && excelFile.exists()) {
response.reset();
response.setHeader("Content-disposition", "attachment; filename=addrbook.xls");
response.setHeader("Content-Type", "application/octet-stream");
response.setHeader("Pragma", "no-store");
response.setHeader("Robots", "none");
InputStream input = null;
OutputStream output = null;
BufferedInputStream buffInput = null;
BufferedOutputStream buffOutput = null;
try {
byte[] bytes = new byte[1024];
int len = 0;
input = new FileInputStream(excelFile);
output = response.getOutputStream();
buffInput = new BufferedInputStream(input);
buffOutput = new BufferedOutputStream(output);
while((len = buffInput.read(bytes)) > 0) {
buffOutput.write(bytes, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
buffInput.close();
input.close();
buffOutput.flush();
buffOutput.close();
output.close();
excelFile.delete();
}
return null;
}
}
String myMobile = (String) currUser.get("mobile");
if(myMobile == null || myMobile.length() == 0) {
op = "fill";
}
request.setAttribute("op", op);
return include(request, response, sConfig, sGlobal, "space_addrbook.jsp");
}
int count = 0;
int perPage = 20;
perPage = Common.mobPerpage(request, perPage);
int page = Common.intval(request.getParameter("page"));
if(page < 1) page = 1;
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) return showMessage(request, response, result);
String addrType = request.getParameter("addr_type");
String dataType = request.getParameter("data_type");
String sql = null;
String url = null;
String permSql = null;
String whereSql = "";
String rightTbl = "";
String queryUrl = "";
if(dataType != null) {
if("visitor".equals(addrType)) {
rightTbl = " LEFT JOIN "+JavaCenterHome.getTableName("spacefield")+" sf ON main.vuid=sf.uid";
} else {
rightTbl = " LEFT JOIN "+JavaCenterHome.getTableName("spacefield")+" sf ON main.uid=sf.uid";
}
if("mobile".equals(dataType)) {
whereSql = " AND sf.mobile<>''";
queryUrl = "&data_type=mobile";
}
}
List<Map<String, Object>> addrList = null;
if("online".equals(addrType) && !friendEmpty) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("session")+" main"+rightTbl+" WHERE main.uid IN("+friends+")"+whereSql);
url = "space.jsp?uid="+userid+"&do=addrbook&addr_type=online"+queryUrl;
sql = "SELECT s.uid, s.username, s.name, sf.sex, sf.email, sf.mobile, sf.birthprovince, sf.birthcity, sf.resideprovince, sf.residecity, sf.marry"+
" FROM "+JavaCenterHome.getTableName("session")+" main"+
" LEFT JOIN "+JavaCenterHome.getTableName("space")+" s ON main.uid=s.uid"+
" LEFT JOIN "+JavaCenterHome.getTableName("spacefield")+" sf ON main.uid=sf.uid"+
" WHERE main.uid IN("+friends+")"+whereSql+
" ORDER BY main.lastactivity DESC"+
" LIMIT "+start+", "+perPage;
addrList = dataBaseService.executeQuery(sql);
} else if("near".equals(addrType)) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("session")+" main"+rightTbl+" WHERE main.ip='"+Common.getOnlineIP(request, true)+"' AND main.uid<>'"+userid+"'"+whereSql);
url = "space.jsp?uid="+userid+"&do=addrbook&addr_type=near"+queryUrl;
sql = "SELECT s.uid, s.username, s.name, sf.sex, sf.email, sf.mobile, sf.birthprovince, sf.birthcity, sf.resideprovince, sf.residecity, sf.marry"+
" FROM "+JavaCenterHome.getTableName("session")+" main"+
" LEFT JOIN "+JavaCenterHome.getTableName("space")+" s ON main.uid=s.uid"+
" LEFT JOIN "+JavaCenterHome.getTableName("spacefield")+" sf ON main.uid=sf.uid"+
" WHERE main.ip='"+Common.getOnlineIP(request, true)+"' AND main.uid<>'"+userid+"'"+whereSql+
" ORDER BY main.lastactivity DESC"+
" LIMIT "+start+", "+perPage;
addrList = dataBaseService.executeQuery(sql);
} else if("visitor".equals(addrType)) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("visitor")+" main"+rightTbl+" WHERE main.uid='"+userid+"'"+whereSql);
url = "space.jsp?uid="+userid+"&do=addrbook&addr_type=visitor"+queryUrl;
sql = "SELECT s.uid, s.username, s.name, sf.sex, sf.email, sf.mobile, sf.birthprovince, sf.birthcity, sf.resideprovince, sf.residecity, sf.marry"+
" FROM "+JavaCenterHome.getTableName("visitor")+" main"+
" LEFT JOIN "+JavaCenterHome.getTableName("space")+" s ON main.vuid=s.uid"+
" LEFT JOIN "+JavaCenterHome.getTableName("spacefield")+" sf ON main.vuid=sf.uid"+
" WHERE main.uid='"+userid+"'"+whereSql+
" ORDER BY main.dateline DESC"+
" LIMIT "+start+", "+perPage;
addrList = dataBaseService.executeQuery(sql);
} else if("trace".equals(addrType)) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("visitor")+" main"+rightTbl+" WHERE main.vuid='"+userid+"'"+whereSql);
url = "space.jsp?uid="+userid+"&do=addrbook&addr_type=trace"+queryUrl;
sql = "SELECT s.uid, s.username, s.name, sf.sex, sf.email, sf.mobile, sf.birthprovince, sf.birthcity, sf.resideprovince, sf.residecity, sf.marry"+
" FROM "+JavaCenterHome.getTableName("visitor")+" main"+
" LEFT JOIN "+JavaCenterHome.getTableName("space")+" s ON main.uid=s.uid"+
" LEFT JOIN "+JavaCenterHome.getTableName("spacefield")+" sf ON main.uid=sf.uid"+
" WHERE main.vuid='"+userid+"'"+whereSql+
" ORDER BY main.dateline DESC"+
" LIMIT "+start+", "+perPage;
addrList = dataBaseService.executeQuery(sql);
} else if(!friendEmpty) {
count = dataBaseService.findRows("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("friend")+" main"+rightTbl+" WHERE main.fuid='"+userid+"'"+whereSql);
url = "space.jsp?uid="+userid+"&do=addrbook&addr_type=friend"+queryUrl;
sql = "SELECT s.uid, s.username, s.name, sf.sex, sf.email, sf.mobile, sf.birthprovince, sf.birthcity, sf.resideprovince, sf.residecity, sf.marry"+
" FROM "+JavaCenterHome.getTableName("space")+" s"+
" LEFT JOIN "+JavaCenterHome.getTableName("spacefield")+" sf ON s.uid=sf.uid"+
" WHERE s.uid IN("+friends+")"+whereSql+
" ORDER BY s.uid"+
" LIMIT "+start+", "+perPage;
addrType = "friend";
addrList = dataBaseService.executeQuery(sql);
}
String multi = Common.multi(request, count, perPage, page, maxPage, url, null, null);
int addrSize = addrList != null ? addrList.size() : 0;
Object[] uids = new Object[addrSize];
for(int i = 0; i < addrSize; i++) {
Map addr = addrList.get(i);
addr.put("uid", String.valueOf(addr.get("uid")));
uids[i] = addr.get("uid");
}
Map<String, Object> marry = new HashMap<String, Object>();
Map<String, Object> email = new HashMap<String, Object>();
Map<String, Object> mobile = new HashMap<String, Object>();
Map<String, Object> birthcity = new HashMap<String, Object>();
Map<String, Object> residecity = new HashMap<String, Object>();
if(uids.length != 0) {
List<Map<String, Object>> infoList = dataBaseService.executeQuery("SELECT uid, subtype, friend FROM "+JavaCenterHome.getTableName("spaceinfo")+" WHERE uid IN("+Common.implode(uids, ",")+") AND subtype IN('marry', 'mobile', 'email', 'birthcity', 'residecity')");
for(Map<String, Object> info : infoList) {
String subType = (String) info.get("subtype");
String infoUid = String.valueOf(info.get("uid"));
String privacy = String.valueOf(info.get("friend"));
String userFriends = (String) friends;
if("marry".equals(subType) && (privacy.equals("3") || (privacy.equals("1") && (userFriends.indexOf(infoUid) == -1)))) {
marry.put(infoUid, "����");
} else if("email".equals(subType) && (privacy.equals("3") || (privacy.equals("1") && (userFriends.indexOf(infoUid) == -1)))) {
email.put(infoUid, "����");
} else if("mobile".equals(subType) && (privacy.equals("3") || (privacy.equals("1") && (userFriends.indexOf(infoUid) == -1)))) {
mobile.put(infoUid, "����");
} else if("birthcity".equals(subType) && (privacy.equals("3") || (privacy.equals("1") && (userFriends.indexOf(infoUid) == -1)))) {
birthcity.put(infoUid, "����");
} else if("residecity".equals(subType) && (privacy.equals("3") || (privacy.equals("1") && (userFriends.indexOf(infoUid) == -1)))) {
residecity.put(infoUid, "����");
}
}
}
request.setAttribute("marry", marry);
request.setAttribute("email", email);
request.setAttribute("mobile", mobile);
request.setAttribute("birthcity", birthcity);
request.setAttribute("residecity", residecity);
request.setAttribute("active_"+addrType, " class=\"current\"");
request.setAttribute("addrlist", addrList);
request.setAttribute("addrtype", addrType);
request.setAttribute("multi", multi);
request.setAttribute("refer", "space.jsp?do=addrbook");
request.setAttribute("tpl_css", "addrbook");
return include(request, response, sConfig, sGlobal, "space_addrbook.jsp");
}
public ActionForward space_gift(HttpServletRequest request, HttpServletResponse response) throws IOException {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
String view = request.getParameter("view");
int perPage = 18;
int count = 0;
if("list".equals(view)) {
perPage = 10;
}
perPage = Common.mobPerpage(request, perPage);
int page = Common.intval(request.getParameter("page"));
if(page < 1) {
page = 1;
}
int start = (page - 1) * perPage;
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
if("setting".equals(view)) {
if(sGlobal.get("member")!=null){
request.setAttribute("showgiftlink", ((Map) sGlobal.get("member")).get("showgiftlink"));
}
} else if("list".equals(view)){
boolean isAjaxPost = Common.empty(sGlobal.get("inajax")) ? false : true;
String reqType = request.getParameter("reqtype");
String giftType = request.getParameter("type");
if(giftType == null) {
giftType = "defGift";
}
if(isAjaxPost && reqType != null) {
if(reqType.equals("tips")) {
int advGiftCount = (Integer) ((Map) sGlobal.get("member")).get("advgiftcount");
request.setAttribute("advgiftcount", advGiftCount);
} else if(reqType.equals("balance")){
request.setAttribute("balance", 0);
} else if(reqType.equals("feescate")) {
List<Map<String, Object>> feeCategories = dataBaseService.executeQuery("SELECT * FROM "+JavaCenterHome.getTableName("gifttype")+" WHERE fee=1 ORDER BY `order` ASC");
request.setAttribute("feecatelist", feeCategories);
request.setAttribute("gifttype", giftType);
}
return include(request, response, sConfig, sGlobal, "space_gift_list.jsp");
}
if(isAjaxPost) {
List<Map<String, Object>> giftList;
List<String> countTotal;
if(giftType.equals("feeGift") || giftType.equals("feesAll")) {
giftList = dataBaseService.executeQuery("SELECT * FROM "+JavaCenterHome.getTableName("gift")+" g INNER JOIN "+JavaCenterHome.getTableName("gifttype")+" gt ON g.typeid=gt.typeid WHERE g.price>0 LIMIT "+start+", "+perPage);
countTotal = dataBaseService.executeQuery("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("gift")+" WHERE price>0", 1);
} else {
giftList = dataBaseService.executeQuery("SELECT * FROM "+JavaCenterHome.getTableName("gift")+" g INNER JOIN "+JavaCenterHome.getTableName("gifttype")+" gt ON g.typeid=gt.typeid WHERE g.typeid='"+giftType+"' LIMIT "+start+", "+perPage);
countTotal = dataBaseService.executeQuery("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("gift")+" WHERE typeid='"+giftType+"'", 1);
}
count = Common.intval(countTotal.get(0));
String multi = Common.multi(request, count, perPage, page, maxPage, "space.jsp?do=gift&view=list&type="+giftType, "giftData", null);
request.setAttribute("multi", multi);
request.setAttribute("giftlist", giftList);
return include(request, response, sConfig, sGlobal, "space_gift_list.jsp");
}
}else if("sent".equals(view)) {
List<String> countTotal = dataBaseService.executeQuery("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("giftsent")+" WHERE senderid='"+sGlobal.get("supe_uid")+"'", 1);
count = Common.intval(countTotal.get(0));
List<Map<String, Object>> giveList = dataBaseService.executeQuery("SELECT * FROM "+JavaCenterHome.getTableName("giftsent")+" gs INNER JOIN "+JavaCenterHome.getTableName("gift")+" g ON gs.giftid=g.giftid WHERE gs.senderid='"+sGlobal.get("supe_uid")+"' ORDER BY sendtime DESC LIMIT "+start+","+perPage);
request.setAttribute("giftnum", count);
request.setAttribute("giftlist", giveList);
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, "space.jsp?uid="+sGlobal.get("supe_uid")+"&do=gift&view=sent", null, null));
}else{
view = "got";
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
List<String> countTotal = dataBaseService.executeQuery("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("giftreceived")+" WHERE receiverid='"+space.get("uid")+"'", 1);
count = Common.intval(countTotal.get(0));
List<String> countFee = dataBaseService.executeQuery("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("giftreceived")+" WHERE receiverid='"+space.get("uid")+"' AND fee='1'", 1);
int feeNum = Common.intval(countFee.get(0));
List<Map<String, Object>> receiveList = dataBaseService.executeQuery("SELECT * FROM "+JavaCenterHome.getTableName("giftreceived")+" gr INNER JOIN "+JavaCenterHome.getTableName("gift")+" g ON gr.giftid=g.giftid WHERE gr.receiverid='"+space.get("uid")+"' ORDER BY gr.fee DESC, gr.receipttime DESC LIMIT "+start+","+perPage);
if((Boolean) space.get("self")) {
dataBaseService.executeUpdate("UPDATE "+JavaCenterHome.getTableName("giftreceived")+" SET status='0' WHERE status='1' AND receiverid='"+space.get("uid")+"'");
}
request.setAttribute("feenum", feeNum);
request.setAttribute("giftnum", count);
request.setAttribute("giftlist", receiveList);
if(Common.empty(sGlobal.get("inajax")) == false) {
String theUrl = "space.jsp?uid="+space.get("uid")+"&do="+request.getAttribute("do")+"&view=me";
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theUrl, null, null));
return include(request, response, sConfig, sGlobal, "space_gift_list.jsp");
} else {
String theUrl = "space.jsp?uid="+sGlobal.get("supe_uid")+"&do=gift&view=got";
request.setAttribute("multi", Common.multi(request, count, perPage, page, maxPage, theUrl, null, null));
}
}
request.setAttribute("active_"+view, " class=\"active\"");
return include(request, response, sConfig, sGlobal, "space_gift.jsp");
}
private void setPrivacy(Map<String, Object> sGlobal,Map<String, Object> space) {
space.put("isfriend", space.get("self"));
if (Common.in_array((String[]) space.get("friends"), sGlobal.get("supe_uid"))) {
space.put("isfriend", true);
}
}
private boolean ckIconUid(Map feed, Map space) {
if (!Common.empty(space.get("filter_icon"))) {
String key = feed.get("icon") + "|0";
if (((Set) space.get("filter_icon")).contains(key)) {
return false;
} else {
key = feed.get("icon") + "|" + feed.get("uid");
if (((Set) space.get("filter_icon")).contains(key)) {
return false;
}
}
}
return true;
}
private Object ckFriendAlbum(Map<String, Object> album, Map<String, Object> sGlobal,
Map<String, Object> sConfig, Map<String, Object> space, HttpServletRequest request,
HttpServletResponse response) {
if (!Common.ckFriend(sGlobal, space, (Integer) album.get("uid"), (Integer) album.get("friend"),
(String) album.get("target_ids"))) {
setPrivacy(sGlobal, space);
return include(request, response, sConfig, sGlobal, "space_privacy.jsp");
} else if (!(Boolean) space.get("self") && (Integer) album.get("friend") == 4) {
String cookieName = "view_pwd_album_" + album.get("albumid");
Map<String, String> sCookie = (Map<String, String>) request.getAttribute("sCookie");
String cookieValue = Common.empty(sCookie.get(cookieName)) ? "" : sCookie.get(cookieName);
if (!cookieValue.equals(Common.md5(Common.md5((String) album.get("password"))))) {
request.setAttribute("invalue", album);
return include(request, response, sConfig, sGlobal, "do_inputpwd.jsp");
}
}
return false;
}
private String myShowGift(Map<String, Object> sGlobal, Map<String, Object> sConfig) {
Map myUserApp = (Map) sGlobal.get("my_userapp");
if ((Integer) sConfig.get("my_showgift") > 0 && !Common.empty(myUserApp)
&& !Common.empty(myUserApp.get("gift_appid"))) {
return "<script language=\"javascript\" type=\"text/javascript\" src=\"http://gift.jsprun-apps.com/recommend.js\"></script>";
} else {
return null;
}
}
private void showCredit(HttpServletRequest request, Map<String, Object> sGlobal,
Map<String, Object> sConfig, Map<String, Object> space) {
Map whereArr = new HashMap();
whereArr.put("uid", space.get("uid"));
String showCredit = Common.getCount("show", whereArr, "credit");
if (Common.intval(showCredit) > 0) {
if ("1".equals(showCredit)) {
cpService.addNotification(request, sGlobal, sConfig, (Integer) space.get("uid"), "show",
Common.getMessage(request, "cp_note_show_out"), false);
}
dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("show")
+ " SET credit=credit-1 WHERE uid='" + space.get("uid") + "' AND credit>0");
}
}
public File writeToExcel(List<String[]> rows, String excelPath, String sheetName) {
WritableWorkbook workbook = null;
WritableSheet sheet = null;
File excelFile = null;
try {
excelFile = new File(excelPath);
workbook = Workbook.createWorkbook(excelFile);
sheet = workbook.createSheet(sheetName, 0);
for(int i = 0; i < rows.size(); i++) {
String[] row = rows.get(i);
for(int j = 0; j < row.length; j++) {
String value = row[j];
Label label = new Label(j, i, value);
sheet.addCell(label);
}
}
if(workbook != null) workbook.write();
} catch(Exception e) {
e.printStackTrace();
return null;
} finally {
try {
if(workbook != null) workbook.close();
} catch(Exception e) {
e.printStackTrace();
}
}
return excelFile;
}
public ActionForward space_home(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
if (Common.empty(sConfig.get("showallfriendnum")) || (Integer) sConfig.get("showallfriendnum") < 1) {
sConfig.put("showallfriendnum", 10);
}
if (Common.empty(sConfig.get("feedhotday"))) {
sConfig.put("feedhotday", 2);
}
boolean isNewer = space.get("friendnum") == null
|| (Integer) space.get("friendnum") < (Integer) sConfig.get("showallfriendnum") ? true
: false;
Map<String, String[]> paramMap = request.getParameterMap();
String view = "all";
paramMap.put("view", new String[]{view});
int feedMaxNum = (Integer) sConfig.get("feedmaxnum");
int perPage = feedMaxNum < 50 ? 50 : feedMaxNum;
perPage = Common.mobPerpage(request, perPage);
int start = Common.intval(request.getParameter("start"));
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perPage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
sGlobal.put("today", Common.strToTime(Common.sgmdate(request, "yyyy-MM-dd", 0), Common.getTimeOffset(
sGlobal, sConfig)));
int feedHotMin = (Integer) sConfig.get("feedhotmin");
int minHot = feedHotMin < 1 ? 3 : feedHotMin;
sGlobal.put("gift_appid", "1027468");
String action = (String) request.getAttribute("do");
Map TPL = request.getAttribute("TPL") != null ? (Map) request.getAttribute("TPL") : new HashMap();
String whereSQL = "1";
String orderSQL = "dateline DESC";
String theURL = "space.jsp?uid=" + space.get("uid") + "&do=" + action + "&view=all";
int appId = Common.intval(request.getParameter("appid"));
if (appId > 0) {
whereSQL += " AND appid='" + appId + "'";
}
String icon = Common.trim(request.getParameter("icon"));
if (!Common.empty(icon)) {
whereSQL += " AND icon='" + icon + "'";
}
String filter = Common.trim(request.getParameter("filter"));
if ("site".equals(filter)) {
whereSQL += " AND appid>0";
} else if ("myapp".equals(filter)) {
whereSQL += " AND appid='0'";
}
int count = 0;
List<Map<String, Object>> feedList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("feed") +" WHERE " + whereSQL + " ORDER BY "
+ orderSQL + " LIMIT " + start + "," + perPage);
LinkedHashMap<Object, Map> feed_list = new LinkedHashMap<Object, Map>();
LinkedHashMap<Object, LinkedHashMap> appfeedList = new LinkedHashMap<Object, LinkedHashMap>();
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
String[] hidden_icons = null;
String feedHiddenIcon = (String) sConfig.get("feedhiddenicon");
if (!Common.empty(feedHiddenIcon)) {
sConfig.put("feedhiddenicon", (feedHiddenIcon = feedHiddenIcon.replace(" ", "")));
hidden_icons = feedHiddenIcon.split(",");
}
Map privacy = (Map) space.get("privacy");
Map filterIcon = privacy == null ? null : (Map) privacy.get("filter_icon");
space.put("filter_icon", Common.empty(filterIcon) ? new HashSet() : filterIcon.keySet());
LinkedHashMap hashData = new LinkedHashMap();
LinkedHashMap icon_num = new LinkedHashMap();
boolean isMyApp = false;
LinkedHashMap hashDataMap = null;
int filterCount = 0;
List<Map<String, Object>> filter_list = new ArrayList<Map<String, Object>>();
LinkedHashMap hiddenfeed_num = new LinkedHashMap();
LinkedHashMap<Object, List<Map>> hiddenfeed_list = new LinkedHashMap<Object, List<Map>>();
for (Map<String, Object> value : feedList) {
LinkedHashMap tempMap = (LinkedHashMap) feed_list.get(value.get("hash_data"));
if (Common.empty(tempMap) || Common.empty(tempMap.get(value.get("uid")))) {
if (Common.ckFriend(sGlobal, space, (Integer) value.get("uid"), (Integer) value
.get("friend"), (String) value.get("target_ids"))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
if (ckIconUid(value, space)) {
isMyApp = Common.isNumeric(value.get("icon")) ? true : false;
if (!Common.empty(sConfig.get("my_showgift"))
&& value.get("icon").toString().equals(sGlobal.get("gift_appid"))) {
isMyApp = false;
}
if (((isMyApp && Common.in_array(hidden_icons, "myop")) || Common.in_array(
hidden_icons, value.get("icon")))
&& !Common.empty(icon_num.get(value.get("icon")))) {
hiddenfeed_num.put(value.get("icon"),
hiddenfeed_num.get(value.get("icon")) == null ? 1
: ((Integer) hiddenfeed_num.get(value.get("icon"))) + 1);
List tempList = hiddenfeed_list.get(value.get("icon"));
if (tempList == null) {
tempList = new ArrayList();
}
Common.mkFeed(sNames, sConfig, request, value, null);
tempList.add(value);
hiddenfeed_list.put(value.get("icon"), tempList);
} else {
if (isMyApp) {
if (appfeedList.get(value.get("hash_data")) == null) {
hashDataMap = new LinkedHashMap();
}
hashDataMap.put(value.get("uid"), value);
appfeedList.put(value.get("hash_data"), hashDataMap);
} else {
if ((hashDataMap = (LinkedHashMap) feed_list.get(value.get("hash_data"))) == null) {
hashDataMap = new LinkedHashMap();
}
hashDataMap.put(value.get("uid"), value);
feed_list.put(value.get("hash_data"), hashDataMap);
}
}
icon_num.put(value.get("icon"), icon_num.get(value.get("icon")) == null ? 1
: ((Integer) icon_num.get(value.get("icon"))) + 1);
} else {
filterCount++;
value = Common.mkFeed(sNames, sConfig, request, value, null);
filter_list.add(value);
}
}
}
count++;
}
request.setAttribute("hiddenfeed_list", hiddenfeed_list);
request.setAttribute("hiddenfeed_num", hiddenfeed_num);
request.setAttribute("filtercount", filterCount);
request.setAttribute("filter_list", filter_list);
LinkedHashMap<Object, Map<String, Object>> hotList = new LinkedHashMap<Object, Map<String, Object>>();
if ((Boolean) space.get("self") && Common.empty(start)) {
space.put("pmnum", ((Map) sGlobal.get("member")) == null ? 0 : ((Map) sGlobal.get("member"))
.get("newpm"));
if (Common.checkPerm(request, response, "managereport")) {
space.put("reportnum", dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("report") + " WHERE new='1'"));
}
if (Common.checkPerm(request, response, "manageevent")) {
space.put("eventverifynum", dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("event") + " WHERE grade='0'"));
}
if (!Common.empty(sConfig.get("realname")) && Common.checkPerm(request, response, "managename")) {
space.put("namestatusnum", dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("space") + " WHERE namestatus='0' AND name!=''"));
}
List olUids = new ArrayList();
if ((Integer) sConfig.get("newspacenum") > 0) {
List<Map<String, Object>> newSpaceList = (List<Map<String, Object>>) Serializer
.unserialize(Common.getData("newspacelist"));
int uid = 0;
if (newSpaceList != null) {
for (Map<String, Object> value : newSpaceList) {
uid = Integer.valueOf(value.get("uid").toString());
value.put("uid", uid);
olUids.add(uid);
Common.realname_set(sGlobal, sConfig, sNames, uid, (String) value.get("username"),
(String) value.get("name"), Integer.valueOf(value.get("namestatus").toString()));
}
request.setAttribute("newspacelist", newSpaceList);
}
}
List<Map<String, Object>> visitors = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("visitor") + " WHERE uid='" + space.get("uid")
+ "' ORDER BY dateline DESC LIMIT 0,12");
LinkedHashMap<Object, Map> visitorList = new LinkedHashMap<Object, Map>();
for (Map<String, Object> value : visitors) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("vuid"), (String) value
.get("vusername"), "", 0);
visitorList.put(value.get("vuid"), value);
olUids.add(value.get("vuid"));
}
Map ols = new LinkedHashMap();
request.setAttribute("ols", ols);
if (olUids.size() > 0) {
List<Map<String, Object>> sessionList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("session") + " WHERE uid IN ("
+ Common.sImplode(olUids) + ")");
for (Map<String, Object> value : sessionList) {
if ((Integer) value.get("magichidden") == 0) {
ols.put(value.get("uid"), 1);
} else if (visitorList.get(value.get("uid")) != null) {
visitorList.remove(value.get("uid"));
}
}
}
request.setAttribute("visitorlist", visitorList);
LinkedHashMap olUidsMap = new LinkedHashMap();
List<Map<String, Object>> olFriendList = new ArrayList<Map<String, Object>>();
int olfCount = 0;
if (!Common.empty(space.get("feedfriend"))) {
List<Map<String, Object>> sessionList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("session") + " WHERE uid IN ("
+ space.get("feedfriend") + ") ORDER BY lastactivity DESC LIMIT 0,15");
for (Map<String, Object> value : sessionList) {
if ((Integer) value.get("magichidden") == 0) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
olFriendList.add(value);
ols.put(value.get("uid"), 1);
olUidsMap.put(value.get("uid"), value.get("uid"));
olfCount++;
}
}
}
if (olfCount < 15) {
List<Map<String, Object>> friendList = dataBaseService
.executeQuery("SELECT fuid AS uid, fusername AS username, num FROM "
+ JavaCenterHome.getTableName("friend") + " WHERE uid='" + space.get("uid")
+ "' AND status='1' ORDER BY num DESC, dateline DESC LIMIT 0,30");
for (Map<String, Object> value : friendList) {
if (Common.empty(olUidsMap.get(value.get("uid")))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
olFriendList.add(value);
olfCount++;
if (olfCount == 15) {
break;
}
}
}
}
request.setAttribute("olfriendlist", olFriendList);
request.setAttribute("task", spaceService.getTask(request, response));
if (!Common.empty(space.get("feedfriend"))) {
Integer timesTamp = (Integer) sGlobal.get("timestamp");
String[] ss = Common.sgmdate(request, "M-d", timesTamp - 3600 * 24 * 3).split("-");
int s_month = Integer.valueOf(ss[0]);
int s_day = Integer.valueOf(ss[1]);
String[] ns = Common.sgmdate(request, "M-d", timesTamp).split("-");
int n_month = Integer.valueOf(ns[0]);
int n_day = Integer.valueOf(ns[1]);
String[] es = Common.sgmdate(request, "M-d", timesTamp + 3600 * 24 * 7).split("-");
int e_month = Integer.valueOf(es[0]);
int e_day = Integer.valueOf(es[1]);
if (e_month == s_month) {
whereSQL = "sf.birthmonth='" + s_month + "' AND sf.birthday>='" + s_day
+ "' AND sf.birthday<='" + e_day + "'";
} else {
whereSQL = "(sf.birthmonth='" + s_month + "' AND sf.birthday>='" + s_day
+ "') OR (sf.birthmonth='" + e_month + "' AND sf.birthday<='" + e_day
+ "' AND sf.birthday>'0')";
}
List<Map<String, Object>> spaceField = dataBaseService
.executeQuery("SELECT s.uid,s.username,s.name,s.namestatus,s.groupid,sf.birthyear,sf.birthmonth,sf.birthday FROM "
+ JavaCenterHome.getTableName("spacefield")
+ " sf LEFT JOIN "
+ JavaCenterHome.getTableName("space")
+ " s ON s.uid=sf.uid WHERE (sf.uid IN ("
+ space.get("feedfriend")
+ ")) AND (" + whereSQL + ")");
String key = null;
List tempList = null;
TreeMap birthList = new TreeMap();
for (Map<String, Object> value : spaceField) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), (String) value.get("name"), (Integer) value.get("namestatus"));
key = Common.sprintf("00", (Integer) value.get("birthmonth"))
+ Common.sprintf("00", (Integer) value.get("birthday"));
if ((Integer) value.get("birthmonth") == n_month
&& (Integer) value.get("birthday") == n_day) {
value.put("birth", "����");
} else {
value.put("birth", value.get("birthmonth") + "-" + value.get("birthday"));
}
if ((tempList = (List) birthList.get(key)) == null) {
tempList = new ArrayList<Map<String, Object>>(spaceField.size());
}
tempList.add(value);
birthList.put(key, tempList);
}
request.setAttribute("birthList", birthList);
}
space.put("star", Common.getStar(sConfig, space.get("experience") == null ? 0 : (Integer) space
.get("experience")));
space.put("domainurl", Common.spaceDomain(request, space, sConfig));
if(Common.empty(icon)){
LinkedHashMap<Object, Map<String, Object>> hotListAll = new LinkedHashMap<Object, Map<String, Object>>();
if ((Integer) sConfig.get("feedhotnum") > 0 && view.equals("all")) {
double hotStartTime = (Integer) sGlobal.get("timestamp") - Double.parseDouble(sConfig.get("feedhotday").toString())
* 3600 * 24;
List<Map<String, Object>> feeds = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("feed") + " USE INDEX(hot) WHERE dateline>='"
+ hotStartTime + "' ORDER BY hot DESC LIMIT 0,10");
for (Map<String, Object> value : feeds) {
if ((Integer) value.get("hot") > 0
&& Common.ckFriend(sGlobal, space, (Integer) value.get("uid"), (Integer) value
.get("friend"), (String) value.get("target_ids"))) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
(String) value.get("username"), "", 0);
value = Common.mkFeed(sNames, sConfig, request, value, null);
if (Common.empty(hotList)) {
hotList.put(value.get("feedid"), value);
} else {
hotListAll.put(value.get("feedid"), value);
}
}
}
int nextHotNum = (Integer) sConfig.get("feedhotnum") - 1;
if (nextHotNum > 0) {
if (hotListAll.size() > nextHotNum) {
Object[] hotListKey = Common.arrayRand(hotListAll, nextHotNum);
if (nextHotNum == 1) {
hotList.put(hotListKey[0], hotListAll.get(hotListKey[0]));
} else {
for (Object key : hotListKey) {
hotList.put(key, hotListAll.get(key));
}
}
} else {
hotList = hotListAll;
}
}
}
}
List<Map<String, Object>> topicList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("topic") + " ORDER BY lastpost DESC LIMIT 0,1");
for (Map<String, Object> value : topicList) {
value.put("pic", !Common.empty(value.get("pic")) ? Common.pic_get(sConfig, (String) value
.get("pic"), (Integer) value.get("thumb"), (Integer) value.get("remote"), true) : "");
}
request.setAttribute("topiclist", topicList);
space.put("allnum", 0);
String[] strNum = new String[] {"notenum", "addfriendnum", "mtaginvitenum", "eventinvitenum",
"myinvitenum", "pokenum", "reportnum", "namestatusnum", "eventverifynum"};
for (String value : strNum) {
space.put("allnum", (Integer) space.get("allnum")
+ (space.get(value) == null ? 0 : (Integer) space.get(value)));
}
}
Common.realname_get(sGlobal, sConfig, sNames, space);
LinkedHashMap list = new LinkedHashMap();
Set feedKeys = feed_list.keySet();
int dateline = 0;
int today = (Integer) sGlobal.get("today");
String theday = null;
List todayList = null;
List yesterdayList = null;
List thedayList = null;
for (Object feedKey : feedKeys) {
Map<Object, Map> values = feed_list.get(feedKey);
Set keys = values.keySet();
List actors = new ArrayList(keys.size());
Map a_value = null;
for (Object key : keys) {
Map value = values.get(key);
if (Common.empty(a_value)) {
a_value = value;
}
actors.add("<a href=\"space.jsp?uid=" + value.get("uid") + "\">"
+ sNames.get((Integer) value.get("uid")) + "</a>");
}
if (!Common.empty(hotList.get(a_value.get("feedid")))) {
continue;
}
a_value = Common.mkFeed(sNames, sConfig, request, a_value, actors);
dateline = (Integer) a_value.get("dateline");
if (dateline >= today) {
if (list.get("today") == null) {
todayList = new ArrayList();
}
todayList.add(a_value);
list.put("today", todayList);
} else if (dateline >= today - 3600 * 24) {
if (list.get("yesterday") == null) {
yesterdayList = new ArrayList();
}
yesterdayList.add(a_value);
list.put("yesterday", yesterdayList);
} else {
theday = Common.sgmdate(request, "yyyy-MM-dd", dateline);
if (list.get(theday) == null) {
thedayList = new ArrayList();
}
thedayList.add(a_value);
list.put(theday, thedayList);
}
}
Map value = null;
List appList = null;
Set appFeedKeys = appfeedList.keySet();
for (Object appFeedKey : appFeedKeys) {
Map<Object, Map> values = appfeedList.get(appFeedKey);
Set keys = values.keySet();
Map a_value = null;
List actors = new ArrayList(keys.size());
for (Object key : keys) {
value = values.get(key);
if (Common.empty(a_value)) {
a_value = value;
}
actors.add("<a href=\"space.jsp?uid=" + value.get("uid") + "\">"
+ sNames.get((Integer) value.get("uid")) + "</a>");
}
a_value = Common.mkFeed(sNames, sConfig, request, a_value, actors);
if (list.get("app") == null) {
appList = new ArrayList();
}
appList.add(a_value);
list.put("app", appList);
}
String templateDir = JavaCenterHome.jchRoot + "template";
File[] tplDir = Common.readDir(templateDir);
if (tplDir != null) {
Map<String, String> templates = new LinkedHashMap<String, String>();
Map<String, String> defaultTemplate = new HashMap<String, String>();
for (File dir : tplDir) {
File styleFile = new File(templateDir + "/" + dir.getName() + "/style.css");
if (styleFile.exists()) {
File templateImageFile = new File(templateDir + "/" + dir.getName()
+ "/image/template.gif");
String tplIcon = templateImageFile.exists() ? "template/" + dir.getName()
+ "/image/template.gif" : "image/tlpicon.gif";
if (dir.getName().equals(sConfig.get("template"))) {
defaultTemplate.put("name", dir.getName());
defaultTemplate.put("icon", tplIcon);
} else {
templates.put(dir.getName(), tplIcon);
}
}
}
TPL.put("templates", templates);
TPL.put("defaultTemplate", defaultTemplate);
}
Map myActives = new HashMap();
myActives.put(Common.in_array(new String[] {"site", "myapp"}, filter) ? filter : "all",
" class=\"active\"");
Map actives = new HashMap();
String key=null;
if(Common.in_array(new String[] {"doing", "album", "blog", "poll", "thread", "event", "share"}, icon)){
key=icon;
}else{
key="all";
}
actives.put(key," class=\"active\"");
if ((Integer) space.get("uid") > 0 && !(Boolean) space.get("self")) {
Map userGroup = (Map) request.getAttribute("usergroup" + space.get("groupid"));
if (userGroup != null) {
request.setAttribute("gColor", Common.getColor(userGroup));
request.setAttribute("gIcon", Common.getIcon(userGroup));
}
TPL.put("spacetitle", "��̬");
TPL.put("spacemenus", new String[] {"<a href=\"space.jsp?uid=" + space.get("uid")
+ "&do=feed&view=me\">TA�Ľ��ڶ�̬</a>"});
}
request.setAttribute("count", count);
request.setAttribute("perpage", perPage);
request.setAttribute("start", start);
request.setAttribute("navtitle", "��ҳ - ");
request.setAttribute("isnewer", isNewer);
request.setAttribute("actives", actives);
request.setAttribute("hotlist", hotList);
request.setAttribute("TPL", TPL);
request.setAttribute("list", list);
request.setAttribute("my_checkupdate", Common.myCheckUpdate(request, response));
request.setAttribute("my_showgift", myShowGift(sGlobal, sConfig));
return include(request, response, sConfig, sGlobal, "space_home.jsp");
}
}