package cn.jcenterhome.web.action;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import cn.jcenterhome.util.Common;
import cn.jcenterhome.util.CookieHelper;
import cn.jcenterhome.util.FileHelper;
import cn.jcenterhome.util.FileUploadUtil;
import cn.jcenterhome.util.JavaCenterHome;
import cn.jcenterhome.util.Serializer;
import cn.jcenterhome.util.XmlRpc;
import cn.jcenterhome.vo.MessageVO;
import com.huangzhimin.contacts.Contact;
import com.huangzhimin.contacts.ContactsImporter;
import com.huangzhimin.contacts.ContactsImporterFactory;
public class OtherAction extends BaseAction {
@SuppressWarnings("unchecked")
public ActionForward index(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String requestURI = (String) request.getAttribute("requestURI");
String queryString = null;
if (requestURI != null) {
queryString = requestURI.substring(requestURI.indexOf("?") + 1);
}
if (Common.isNumeric(queryString)) {
return showMessage(request, response, "enter_the_space", "space.jsp?uid=" + queryString, 0);
}
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
String paramDo = request.getParameter("do");
if (paramDo == null && !Common.empty(sConfig.get("allowdomain"))) {
String host = request.getServerName();
String domainRoot = (String) sConfig.get("domainroot");
String[] hostArr = host.split("\\.");
String[] domainRootArr = domainRoot.split("\\.");
int hostArrLen = hostArr.length;
int domainRootArrLen = domainRootArr.length;
if (hostArrLen > 2 && hostArrLen > domainRootArrLen && !hostArr[0].equals("www")
&& !Common.isHoldDomain(sConfig, hostArr[0])) {
return showMessage(request, response, "enter_the_space", sConfig.get("siteallurl")
+ "space.jsp?domain=" + hostArr[0], 0);
}
}
int supe_uid = (Integer) sGlobal.get("supe_uid");
if (supe_uid > 0) {
return showMessage(request, response, "enter_the_space", "space.jsp?do=home", 0);
}
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
if (Common.empty(sConfig.get("networkpublic"))) {
File cacheFile = new File(JavaCenterHome.jchRoot + "data/cache/cache_index.txt");
long cacheTime = (int) (cacheFile.lastModified() / 1000);
List<Map<String, Object>> spaces = null;
if ((Integer) sGlobal.get("timestamp") - cacheTime > 900) {
spaces = dataBaseService
.executeQuery("SELECT s.uid, s.username, s.name, s.namestatus, s.friendnum, sf.resideprovince, sf.residecity FROM "
+ JavaCenterHome.getTableName("space")
+ " s LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " sf ON sf.uid=s.uid ORDER BY s.friendnum DESC LIMIT 0,20");
FileHelper.writeFile(cacheFile, Serializer.serialize(spaces));
} else {
spaces = Serializer.unserialize(FileHelper.readFile(cacheFile));
}
request.setAttribute("spaces", spaces);
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
for (Map<String, Object> value : spaces) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), (String) value.get("name"), (Integer) value.get("namestatus"));
}
Common.realname_get(sGlobal, sConfig, sNames, space);
int myAppCount = 0;
if ((Integer) sConfig.get("my_status") == 1) {
myAppCount = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("myapp") + " WHERE flag>='0'");
if (myAppCount > 0) {
List<Map<String, Object>> myApps = dataBaseService
.executeQuery("SELECT appid,appname FROM " + JavaCenterHome.getTableName("myapp")
+ " WHERE flag>=0 ORDER BY flag DESC, displayorder LIMIT 0,7");
request.setAttribute("myApps", myApps);
}
}
request.setAttribute("myAppCount", myAppCount);
request.setAttribute("tpl_css", "network");
return include(request, response, sConfig, sGlobal, "index.jsp");
} else {
return network(request, response, sGlobal, sConfig, space);
}
}
public ActionForward app(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");
return include(request, response, sConfig, sGlobal, "iframe.jsp");
}
@SuppressWarnings("unchecked")
public ActionForward help(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");
String ac = request.getParameter("ac");
if (Common.empty(ac)) {
ac = "register";
}
int supe_uid=(Integer)sGlobal.get("supe_uid");
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("ac", ac);
request.setAttribute("active_" + ac, " style=\"font-weight:bold;\"");
request.setAttribute("navtitle", "���� - ");
return include(request, response, sConfig, sGlobal, "help.jsp");
}
public ActionForward invite(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
String message = Common.checkClose(request, response, (Integer) sGlobal.get("supe_uid"));
if (message != null) {
return showMessage(request, response, message);
}
Map<String, Integer> reward = Common.getReward("invitecode", false, 0, "", true, request, response);
int uid = Common.intval(request.getParameter("u"));
String code = Common.trim(request.getParameter("c"));
int app = Common.intval(request.getParameter("app"));
String requestURI = (String) request.getAttribute("requestURI");
String queryString = "";
if (requestURI != null) {
if (requestURI.indexOf("?") >= 0) {
queryString = requestURI.substring(requestURI.indexOf("?") + 1);
}
}
if (app != 0) {
reward.put("credit", 0);
}
Map<String, Object> invite = new HashMap<String, Object>();
String theURL = null;
String urlPlus = null;
if (uid != 0 && reward.get("credit") == 0) {
invite.put("uid", uid);
invite.put("id", 0);
theURL = "invite.jsp?u=" + uid + "&app=" + app + "&c=" + code;
urlPlus = "uid=" + uid + "&app=" + app + "&code=" + code;
} else {
int id = 0;
String c = "";
int inviteLength = Common.strlen(queryString);
if (inviteLength > 6) {
c = Common.addSlashes(queryString.substring(queryString.length() - 6, queryString.length()));
id = Common.intval(queryString.replace(c, ""));
}
if (id == 0) {
return showMessage(request, response, "invite_code_error");
}
List<Map<String, Object>> inviteList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("invite") + " WHERE id='" + id + "' AND code='" + c + "'");
if (inviteList.isEmpty()) {
return showMessage(request, response, "invite_code_error");
}
invite = inviteList.get(0);
if (!Common.empty(invite.get("fuid"))) {
return showMessage(request, response, "invite_code_fuid");
}
if (sGlobal.get("supe_uid").equals(invite.get("uid"))) {
return showMessage(request, response, "should_not_invite_your_own");
}
theURL = "invite.jsp?" + queryString;
urlPlus = "uid=" + invite.get("uid") + "&invite=" + invite.get("code");
}
Map<String, Object> space = Common.getSpace(request, sGlobal, sConfig, invite.get("uid"));
if (Common.empty(space)) {
return showMessage(request, response, "space_does_not_exist");
}
if (uid != 0 && reward.get("credit") == 0) {
if (!code.equals(Common.spaceKey(space, sConfig, app))) {
return showMessage(request, response, "invite_code_error");
}
}
if ((Boolean) space.get("self")) {
return showMessage(request, response, "should_not_invite_your_own");
}
if ((Integer) sGlobal.get("supe_uid") != 0
&& Common.in_array(space.get("friends"), sGlobal.get("supe_uid"))) {
space.put("isfriend", true);
} else {
space.put("isfriend", false);
}
String jumpURL = app != 0 ? "userapp.jsp?id=" + app + "&my_extra=invitedby_bi_" + uid + "_" + code
+ "&my_suffix=Lw%3D%3D" : "space.jsp?uid=" + space.get("uid");
if ((Boolean) space.get("isfriend")) {
return showMessage(request, response, "you_have_friends", jumpURL, 1);
}
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
try {
if (submitCheck(request, "invitesubmit")) {
if ((Integer) sGlobal.get("supe_uid") == 0) {
return showMessage(request, response, "invite_code_error");
}
cpService.updateInvite(request, response, sGlobal, sConfig, sNames, (Integer) invite
.get("id"), (Integer) sGlobal.get("supe_uid"), (String) sGlobal.get("supe_username"),
(Integer) space.get("uid"), (String) space.get("username"), app);
return showMessage(request, response, "friends_add", jumpURL, 1, sNames.get(space.get("uid")));
}
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
List<Map<String, Object>> fList = dataBaseService
.executeQuery("SELECT fuid AS uid, fusername AS username FROM "
+ JavaCenterHome.getTableName("friend") + " WHERE uid='" + invite.get("uid")
+ "' AND status='1' ORDER BY num DESC, dateline DESC LIMIT 0,12");
for (Map<String, Object> value : fList) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), null, 0);
}
Common.realname_get(sGlobal, sConfig, sNames, space);
request.setAttribute("flist", fList);
Map<String, Integer> numMap = new HashMap<String, Integer>();
for (String var : new String[] {"album", "doing", "blog", "thread", "tagspace"}) {
numMap.put(var, dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName(var) + " WHERE uid='" + invite.get("uid") + "'"));
}
request.setAttribute("numMap", numMap);
if (app != 0) {
List<Map<String, Object>> appList = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("myapp") + " WHERE appid='" + app + "'");
if (!appList.isEmpty()) {
request.setAttribute("userapp", appList.get(0));
}
}
request.setAttribute("theURL", theURL);
request.setAttribute("urlPlus", urlPlus);
request.setAttribute("space", space);
return include(request, response, sConfig, sGlobal, "invite.jsp");
}
public ActionForward js(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");
int id = Common.intval(request.getParameter("id"));
int adId = Common.intval(request.getParameter("adid"));
if (id > 0) {
Map<Integer, Integer> globalBlock = Common.getCacheDate(request, response,
"/data/cache/cache_block.jsp", "globalBlock");
if (globalBlock.get(id) == null) {
PrintWriter out = response.getWriter();
out.write("document.write(\'No data.\')");
out.flush();
out.close();
return null;
}
int updatetime = globalBlock.get(id);
String cachefilepath = JavaCenterHome.jchRoot + "./data/block_cache/block_" + id + ".js";
File cachefile = new File(cachefilepath);
if (updatetime > 0 && cachefile.exists()
&& (Integer) sGlobal.get("timestamp") - cachefile.lastModified() / 1000 < updatetime) {
String content = "document.writeln(\'No data.\')";
if (cachefile.exists()) {
content = FileHelper.readFile(cachefile);
}
PrintWriter out = response.getWriter();
out.write(content);
out.flush();
out.close();
return null;
}
sConfig.put("linkguide", 0);
sConfig.put("allowcache", 0);
include(request, response, sConfig, sGlobal, "/data/blocktpl/" + id + ".jsp");
request.setAttribute("updatetime", updatetime);
request.setAttribute("isWriteJsFile", true);
request.setAttribute("id", id);
} else if (adId > 0) {
String filePath = JavaCenterHome.jchRoot + "data/adtpl/" + adId + ".htm";
List<String> lines = FileHelper.readFileToList(new File(filePath));
PrintWriter out = response.getWriter();
if (lines.size() > 0) {
for (String line : lines) {
out.write("document.writeln('" + Common.addCSlashes(line.trim(), new char[] {'\'', '\\'})
+ "');\n");
}
} else {
out.write("document.writeln('NO AD.')");
}
out.flush();
out.close();
}
return null;
}
public ActionForward link(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");
String url = request.getParameter("url");
if (Common.empty(url)) {
return showMessage(request, response, "do_success", (String) request.getAttribute("refer"), 0);
} else {
if ((Integer) sConfig.get("linkguide") == 0) {
return showMessage(request, response, "do_success", url, 0);
}
}
Map<String, Object> space = null;
int supe_uid = (Integer) sGlobal.get("supe_uid");
if (supe_uid > 0) {
space = Common.getSpace(request, sGlobal, sConfig, supe_uid);
}
if (Common.empty(space)) {
return showMessage(request, response, "do_success", url, 0);
}
request.setAttribute("space", space);
url = (String) Common.sHtmlSpecialChars(url);
if (!Common.matches(url, "(?i)^http\\:\\/\\/")) {
url = "http://" + url;
}
request.setAttribute("url", url);
request.setAttribute("timestamp", Common.sgmdate(request, "yyyy-MM-dd HH:mm", (Integer) sGlobal
.get("timestamp"), true));
return include(request, response, sConfig, sGlobal, "iframe.jsp");
}
public ActionForward network(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");
int supe_uid = (Integer) sGlobal.get("supe_uid");
String message = Common.checkClose(request, response, supe_uid);
if (message != null) {
return showMessage(request, response, message);
}
Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
if (supe_uid > 0) {
space = Common.getSpace(request, sGlobal, sConfig, supe_uid);
if ((Integer) space.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");
}
}
}
return network(request, response, sGlobal, sConfig, space);
}
public ActionForward update(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
Map<String, String> jchConfig = JavaCenterHome.jchConfig;
if ("true".equals(jchConfig.get("updatetime"))) {
int timestamp = (int) (System.currentTimeMillis() / 1000);
dataBaseService.executeUpdate("REPLACE INTO "+JavaCenterHome.getTableName("config")+" VALUES ('jchid','" + jchConfig.get("jchid")
+ "'),('lastupdate','" + timestamp
+ "'),('status','" + jchConfig.get("status") + "')");
jchConfig.remove("updatetime");
}
return null;
}
public ActionForward rss(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");
response.setContentType("application/xml");
int uid = Common.intval(request.getParameter("uid"));
String rssDateFormat = "E, d MMM yyyy HH:mm:ss Z";
Map<String, Object> space = null;
if (uid > 0) {
space = Common.getSpace(request, sGlobal, sConfig, uid);
}
String siteURL = Common.getSiteUrl(request);
if (Common.empty(space)) {
space = new HashMap<String, Object>();
space.put("username", sConfig.get("sitename"));
space.put("name", sConfig.get("sitename"));
space.put("email", sConfig.get("adminemail"));
space.put("space_url", siteURL);
space.put("lastupdate", Common.sgmdate(request, rssDateFormat, 0));
Map privacy = new HashMap();
privacy.put("blog", 1);
space.put("privacy", privacy);
} else {
space.put("username", space.get("username") + "@" + sConfig.get("sitename"));
space.put("space_url", siteURL + "space.jsp?uid=" + space.get("uid"));
space.put("lastupdate", Common.sgmdate(request, rssDateFormat,
(space.get("lastupdate") != null ? (Integer) space.get("lastupdate") : 0)));
}
String uidSQL = Common.empty(space.get("uid")) ? "" : " AND b.uid='" + space.get("uid") + "'";
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
List<Map<String, Object>> list = dataBaseService.executeQuery("SELECT bf.message, b.* FROM "
+ JavaCenterHome.getTableName("blog") + " b LEFT JOIN "
+ JavaCenterHome.getTableName("blogfield") + " bf ON bf.blogid=b.blogid WHERE b.friend='0' "
+ uidSQL + " ORDER BY dateline DESC LIMIT 0, 10");
for (Map<String, Object> value : list) {
if (space.get("privacy") != null && !Common.empty(((Map) space.get("privacy")).get("blog"))) {
value.remove("message");
} else {
value.put("message", Common.getStr((String) value.get("message"), 300, false, false, false,
0, -1, request, response));
if (!Common.empty(value.get("pic"))) {
value.put("pic", Common.pic_cover_get(sConfig, (String) value.get("pic"), (Integer) value
.get("picflag")));
value.put("message", value.get("message") + "<br /><img src=\"" + value.get("pic")
+ "\">");
}
}
Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"), (String) value
.get("username"), "", 0);
value.put("dateline", Common.sgmdate(request, rssDateFormat, (Integer) value.get("dateline")));
}
Common.realname_get(sGlobal, sConfig, sNames, space);
request.setAttribute("space", space);
request.setAttribute("siteurl", siteURL);
request.setAttribute("list", list);
return include(request, response, sConfig, sGlobal, "space_rss.jsp");
}
public ActionForward userapp(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");
return include(request, response, sConfig, sGlobal, "userapp.jsp");
}
public ActionForward xmlrpc(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
if (Common.empty(sConfig.get("openxmlrpc"))) {
return showMessage(request, response, "no_privilege");
}
String siteURL = Common.getSiteUrl(request);
if (request.getParameter("rsd") != null) {
response.setHeader("Content-type", "text/xml, charset=utf-8");
String result = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<rsd version=\"1.0\" xmlns=\"http://archipelago.phrasewise.com/rsd\">" + "<service>"
+ "<engineName>JavaCenter Home</engineName>"
+ "<engineLink>http://j.jsprun.net/</engineLink>" + "<homePageLink>" + siteURL
+ "</homePageLink>" + "<apis>"
+ "<api name=\"MetaWeblog\" blogID=\"1\" preferred=\"false\" apiLink=\"" + siteURL
+ "xmlrpc.jsp\" />"
+ "<api name=\"WordPress\" blogID=\"1\" preferred=\"true\" apiLink=\"" + siteURL
+ "xmlrpc.jsp\" />" + "<api name=\"Blogger\" blogID=\"1\" preferred=\"false\" apiLink=\""
+ siteURL + "xmlrpc.jsp\" />" + "</apis>" + "</service>" + "</rsd>";
PrintWriter out = response.getWriter();
out.write(result);
out.flush();
} else {
try {
XmlRpc xmlRpc = new XmlRpc(request, response);
xmlRpc.xmlrpcServer();
} catch (Exception e) {
String message = e.getMessage();
if (message == null) {
message = e.getCause().getMessage();
}
PrintWriter out = response.getWriter();
out.write(message);
out.flush();
}
}
return null;
}
public ActionForward avatar(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "no-store, private, post-check=0, pre-check=0, max-age=0");
response.setHeader("Pragma", "no-cache");
String a = request.getParameter("a");
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
sGlobal.put("inajax", 0);
if ("uploadavatar".equals(a)) {
uploadAvatar(sGlobal, sConfig, request, response);
} else if ("rectavatar".equals(a)) {
response.setContentType("application/xml; charset=utf-8");
rectAvatar(sGlobal, sConfig, request, response);
}
return null;
}
public ActionForward contact(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
String[] emails = new String[] {"Sohu", "Sina", "139", "163", "126", "Yeah", "Yahoo", "Gmail", "MSN",
"Tom"};
String ab = request.getParameter("ab");
request.setAttribute("ta", request.getParameter("ta"));
if (Common.in_array(emails, ab)) {
request.setAttribute("abid", ab);
String errorMessage = null;
try {
if (submitCheck(request, "loginsubmit")) {
String email = Common.trim(request.getParameter("username"));
String password = Common.trim(request.getParameter("password"));
if (Common.empty(email) || Common.empty(password)) {
errorMessage = "�ʻ��������Dz���Ϊ����!!!";
} else if ("139".equals(ab) && !Common.matches(email, "^[1]\\d{10}$")) {
errorMessage = "��������ȷ���ֻ�����";
} else if (!"139".equals(ab) && !Common.isEmail(email)) {
errorMessage = "��������ȷ��������������";
} else {
try {
ContactsImporter importer = null;
if ("Sohu".equals(ab)) {
importer = ContactsImporterFactory.getSohuContacts(email, password);
} else if ("Sina".equals(ab)) {
importer = ContactsImporterFactory.getSinaContacts(email, password);
} else if ("163".equals(ab)) {
importer = ContactsImporterFactory.getOneSixThreeContacts(email, password);
} else if ("126".equals(ab)) {
importer = ContactsImporterFactory.getOneTwoSixContacts(email, password);
} else if ("Yeah".equals(ab)) {
importer = ContactsImporterFactory.getYeahContacts(email, password);
} else if ("Yahoo".equals(ab)) {
importer = ContactsImporterFactory.getYahooContacts(email, password);
} else if ("Gmail".equals(ab)) {
importer = ContactsImporterFactory.getGmailContacts(email, password);
} else if ("MSN".equals(ab)) {
if (email.toLowerCase().indexOf("@hotmail") > 0) {
importer = ContactsImporterFactory.getHotmailContacts(email, password);
} else {
importer = ContactsImporterFactory.getMSNContacts(email, password);
}
} else if ("139".equals(ab)) {
importer = ContactsImporterFactory.getOneThreeNineContacts(email, password);
} else if ("Tom".equals(ab)) {
importer = ContactsImporterFactory.getTomContacts(email, password);
}
if (importer == null) {
errorMessage = "��ָ����Ч������";
} else {
List<Contact> contacts = importer.getContacts();
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Object[] existEmails = Common.uniqueArray(Common.trim(
request.getParameter("emails")).split(","));
for (Contact contact : contacts) {
Map<String, Object> map = new HashMap<String, Object>();
String name = contact.getUsername();
map.put("name", name);
String addr = contact.getEmail();
map.put("addr", addr);
boolean exist = false;
for (Object existEmail : existEmails) {
if (Common.trim(existEmail.toString()).equalsIgnoreCase(addr.trim())) {
exist = true;
break;
}
}
map.put("isexist", exist);
list.add(map);
}
request.setAttribute("list", list);
}
} catch (Exception e) {
errorMessage = "��¼ʧ�ܣ������ʻ��������Ƿ�����!";
}
}
}
} catch (Exception e) {
errorMessage = e.getMessage();
}
request.setAttribute("errorMessage", errorMessage);
} else {
request.setAttribute("emails", emails);
}
return include(request, response, sConfig, sGlobal, "/api/contactlist.jsp");
}
private void uploadAvatar(Map<String, Object> sGlobal, Map<String, Object> sConfig,
HttpServletRequest request, HttpServletResponse response) {
PrintWriter out = null;
FileItem item = null;
try {
out = response.getWriter();
int uid = Common.intval(request.getParameter("uid"));
if (uid > 0) {
sGlobal.put("supe_uid", uid);
String hash = request.getParameter("hash");
String JC_KEY = JavaCenterHome.jchConfig.get("JC_KEY");
if (!Common.md5(sGlobal.get("supe_uid") + JC_KEY).equals(hash)) {
out.write("-1");
return;
}
} else if (Common.empty(uid = (Integer) sGlobal.get("supe_uid"))) {
showMessage(request, response, "to_login", "do.jsp?ac=" + sConfig.get("login_action"));
return;
}
String jchDataTemp = JavaCenterHome.jchRoot + "data/temp/";
File tempAvatarDir = new File(jchDataTemp + uid);
if (tempAvatarDir.exists()) {
if (deleteUploadFile(tempAvatarDir, false) == false) {
out.write("-4");
return;
}
} else {
tempAvatarDir.mkdir();
}
String fileType = ".jpg";
File tempAvatar = new File(jchDataTemp + uid + "/" + sGlobal.get("timestamp") + fileType);
FileUploadUtil upload = new FileUploadUtil(new File(jchDataTemp + uid), 4096);
upload.parse(request, JavaCenterHome.JCH_CHARSET);
item = upload.getFileItem("Filedata");
if (!item.isFormField()) {
item.write(tempAvatar);
}
String imgType = Common.getImageType(tempAvatar);
if (Common.empty(imgType)) {
tempAvatar.delete();
out.write("-2");
return;
}
out.write(Common.getSiteUrl(request) + "data/temp/" + uid + "/" + tempAvatar.getName());
} catch (IOException ioe) {
out.write("-5");
} catch (NullPointerException ne) {
out.write("-3");
} catch (Exception e) {
if (item != null) {
item.delete();
}
out.write("-4");
} finally {
out.flush();
out.close();
out = null;
item = null;
}
}
private void rectAvatar(Map<String, Object> sGlobal, Map<String, Object> sConfig,
HttpServletRequest request, HttpServletResponse response) {
PrintWriter out = null;
try {
out = response.getWriter();
int uid = Common.intval(request.getParameter("uid"));
if (uid > 0) {
sGlobal.put("supe_uid", uid);
String hash = request.getParameter("hash");
String JC_KEY = JavaCenterHome.jchConfig.get("JC_KEY");
if (!Common.md5(sGlobal.get("supe_uid") + JC_KEY).equals(hash)) {
out.write("<root><message type=\"error\" value=\"-1\" /></root>");
return;
}
} else if (Common.empty(uid = (Integer) sGlobal.get("supe_uid"))) {
showMessage(request, response, "to_login", "do.jsp?ac=" + sConfig.get("login_action"));
return;
}
String home = Common.get_home(uid);
String jchDataDir = JavaCenterHome.jchRoot + "data";
File avatarHomeFile = new File(jchDataDir + "/avatar/" + home);
if (!avatarHomeFile.isDirectory()) {
Common.set_home(uid, jchDataDir + "/avatar/");
}
String avatarType = "real".equals(request.getParameter("avatartype")) ? "real" : "virtual";
String avatarRoot = jchDataDir + "/avatar/";
File bigAvatarFile = new File(avatarRoot + Common.avatar_file(sGlobal, uid, "big", avatarType));
File middleAvatarfile = new File(avatarRoot
+ Common.avatar_file(sGlobal, uid, "middle", avatarType));
File smallAvatarfile = new File(avatarRoot
+ Common.avatar_file(sGlobal, uid, "small", avatarType));
boolean bigOK = writeAvatar(bigAvatarFile, request.getParameter("avatar1"));
boolean middleOK = writeAvatar(middleAvatarfile, request.getParameter("avatar2"));
boolean smallOK = writeAvatar(smallAvatarfile, request.getParameter("avatar3"));
if (!bigOK || !middleOK || !smallOK) {
out.write("<root><message type=\"error\" value=\"-2\" /></root>");
return;
}
boolean success = true;
String bigAvatarType = Common.getImageType(bigAvatarFile);
String middleAvatarType = Common.getImageType(middleAvatarfile);
String smallAvatarType = Common.getImageType(smallAvatarfile);
if (Common.empty(bigAvatarType) || Common.empty(middleAvatarType)
|| Common.empty(smallAvatarType)) {
if (bigAvatarFile.exists())
bigAvatarFile.delete();
if (middleAvatarfile.exists())
middleAvatarfile.delete();
if (smallAvatarfile.exists())
smallAvatarfile.delete();
success = false;
}
File tempAvatarFile = new File(jchDataDir + "/temp/" + uid);
if (tempAvatarFile.exists()) {
deleteUploadFile(tempAvatarFile, true);
}
if (success) {
out.write("<?xml version=\"1.0\" ?><root><face success=\"1\"/></root>");
} else {
out.write("<?xml version=\"1.0\" ?><root><face success=\"0\"/></root>");
}
} catch (Exception e) {
e.printStackTrace();
out.write("<?xml version=\"1.0\" ?><root><face success=\"0\"/></root>");
} finally {
out.flush();
out.close();
out = null;
}
}
private boolean deleteUploadFile(File file, boolean deleteDir) {
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File tempFile : files) {
if (tempFile.isFile()) {
if (!tempFile.delete()) {
return false;
}
}
}
if (deleteDir) {
file.delete();
}
}
return true;
}
private byte[] flashDataDecode(String dataStr) {
if ((dataStr.length() & 0x01) == 0x01) {
dataStr = new String(dataStr + "0");
}
BigInteger cI = new BigInteger(dataStr, 16);
byte[] data = cI.toByteArray();
return data;
}
private boolean writeAvatar(File avatarFile, String avatar) {
if (Common.empty(avatar)) {
return false;
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(avatarFile);
byte[] bs = flashDataDecode(avatar);
fos.write(bs, 1, bs.length - 1);
} catch (Exception e) {
return false;
} finally {
try {
if (fos != null) {
fos.flush();
fos.close();
fos = null;
}
} catch (Exception e) {
}
}
return true;
}
@SuppressWarnings("unchecked")
private ActionForward network(HttpServletRequest request, HttpServletResponse response,
Map<String, Object> sGlobal, Map<String, Object> sConfig, Map<String, Object> space)
throws Exception {
if (Common.empty(sConfig.get("networkpublic"))) {
if (Common.empty(sGlobal.get("supe_uid"))) {
CookieHelper.setCookie(request, response, "_refer", Common.urlEncode((String) request
.getAttribute("requestURI")));
return showMessage(request, response, "to_login", "do.jsp?ac=" + sConfig.get("login_action"));
}
}
int timestamp = (Integer) sGlobal.get("timestamp");
Map<String, Map<String, Object>> globalNetWork = Common.getCacheDate(request, response,
"/data/cache/cache_network.jsp", "globalNetWork");
String jchRoot = JavaCenterHome.jchRoot;
Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
List<Map<String, Object>> blogs = null;
String cachePath = jchRoot + "data/cache/cache_network_blog.txt";
Map<String, Object> netWork = getNetWork(globalNetWork, "blog");
if (check_network_cache(netWork, cachePath, timestamp)) {
blogs = Serializer.unserialize(FileHelper.readFile(cachePath));
} else {
Map<String, String> result = mk_network_sql(netWork, timestamp, new String[] {"blogid", "uid"},
new String[] {"hot", "viewnum", "replynum"}, new String[] {"dateline"}, new String[] {
"dateline", "viewnum", "replynum", "hot"});
String sql = "SELECT main.blogid, main.uid, main.username, main.subject, main.hot, main.dateline, field.message FROM "
+ JavaCenterHome.getTableName("blog")
+ " main LEFT JOIN "
+ JavaCenterHome.getTableName("blogfield")
+ " field ON field.blogid=main.blogid WHERE "
+ result.get("wheres")
+ " AND main.friend='0' ORDER BY main."
+ result.get("order")
+ " " + result.get("sc") + " LIMIT 0,6";
blogs = dataBaseService.executeQuery(sql);
for (Map<String, Object> blog : blogs) {
blog.put("subject", Common.getStr((String) blog.get("subject"), 50, false, false, false, 0,
-1, request, response));
blog.put("message", Common.getStr((String) blog.get("message"), 86, false, false, false, 0,
-1, request, response));
blog.put("dateline", Common.sgmdate(request, "MM-dd HH:mm", (Integer) blog.get("dateline"),
true));
}
if ((Integer) netWork.get("cache") > 0) {
FileHelper.writeFile(cachePath, Serializer.serialize(blogs));
}
}
if (!Common.empty(blogs)) {
for (Map<String, Object> blog : blogs) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) blog.get("uid"), (String) blog
.get("username"), null, 0);
}
request.setAttribute("blogs", blogs);
}
List<Map<String, Object>> pics = null;
cachePath = jchRoot + "data/cache/cache_network_pic.txt";
netWork = getNetWork(globalNetWork, "pic");
if (check_network_cache(netWork, cachePath, timestamp)) {
pics = Serializer.unserialize(FileHelper.readFile(cachePath));
} else {
pics = new ArrayList<Map<String, Object>>();
Map<String, String> result = mk_network_sql(netWork, timestamp, new String[] {"picid", "uid"},
new String[] {"hot"}, new String[] {"dateline"}, new String[] {"dateline", "hot"});
String sql = "SELECT album.albumname, album.friend, space.username, space.name, space.namestatus, main.picid, main.uid, main.dateline, main.filepath, main.thumb, main.remote, main.hot FROM "
+ JavaCenterHome.getTableName("pic")
+ " main LEFT JOIN "
+ JavaCenterHome.getTableName("album")
+ " album ON album.albumid=main.albumid LEFT JOIN "
+ JavaCenterHome.getTableName("space")
+ " space ON space.uid=main.uid WHERE "
+ result.get("wheres")
+ " ORDER BY main."
+ result.get("order")
+ " "
+ result.get("sc")
+ " LIMIT 0,28";
List<Map<String, Object>> picList = dataBaseService.executeQuery(sql);
for (Map<String, Object> pic : picList) {
if (Common.empty(pic.get("friend"))) {
pic.put("filepath", Common.pic_get(sConfig, (String) pic.get("filepath"), (Integer) pic
.get("thumb"), (Integer) pic.get("remote"), true));
pic.put("dateline", Common.sgmdate(request, "MM-dd HH:mm", (Integer) pic.get("dateline"),
true));
pic.remove("friend");
pic.remove("thumb");
pic.remove("remote");
pics.add(pic);
}
}
if ((Integer) netWork.get("cache") > 0) {
FileHelper.writeFile(cachePath, Serializer.serialize(pics));
}
}
if (!Common.empty(pics)) {
for (Map<String, Object> pic : pics) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) pic.get("uid"), (String) pic
.get("username"), (String) pic.get("name"), (Integer) pic.get("namestatus"));
}
request.setAttribute("pics", pics);
}
List<Map<String, Object>> threads = null;
cachePath = jchRoot + "data/cache/cache_network_thread.txt";
netWork = getNetWork(globalNetWork, "thread");
if (check_network_cache(netWork, cachePath, timestamp)) {
threads = Serializer.unserialize(FileHelper.readFile(cachePath));
} else {
Map<String, String> result = mk_network_sql(netWork, timestamp, new String[] {"tid", "uid"},
new String[] {"hot", "viewnum", "replynum"}, new String[] {"dateline", "lastpost"},
new String[] {"dateline", "viewnum", "replynum", "hot"});
String sql = "SELECT main.tid, main.tagid, main.subject, main.uid, main.username, main.hot, m.tagname FROM "
+ JavaCenterHome.getTableName("thread")
+ " main LEFT JOIN "
+ JavaCenterHome.getTableName("mtag")
+ " m ON m.tagid=main.tagid WHERE "
+ result.get("wheres")
+ " ORDER BY main."
+ result.get("order")
+ " "
+ result.get("sc")
+ " LIMIT 0,10";
threads = dataBaseService.executeQuery(sql);
for (Map<String, Object> thread : threads) {
thread.put("tagname", Common.getStr((String) thread.get("tagname"), 20, false, false, false,
0, 0, request, response));
thread.put("subject", Common.getStr((String) thread.get("subject"), 50, false, false, false,
0, 0, request, response));
}
if ((Integer) netWork.get("cache") > 0) {
FileHelper.writeFile(cachePath, Serializer.serialize(threads));
}
}
if (!Common.empty(threads)) {
for (Map<String, Object> thread : threads) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) thread.get("uid"), (String) thread
.get("username"), null, 0);
}
request.setAttribute("threads", threads);
}
String dateformat = "MM-dd HH:mm";
Map<Object, Map<String, Object>> globalEventClass = Common.getCacheDate(request, response,
"/data/cache/cache_eventclass.jsp", "globalEventClass");
List<Map<String, Object>> events = null;
cachePath = jchRoot + "data/cache/cache_network_event.txt";
netWork = getNetWork(globalNetWork, "event");
if (check_network_cache(netWork, cachePath, timestamp)) {
events = Serializer.unserialize(FileHelper.readFile(cachePath));
} else {
Map<String, String> result = mk_network_sql(netWork, timestamp, new String[] {"eventid", "uid"},
new String[] {"hot", "membernum", "follownum"}, new String[] {"dateline"}, new String[] {
"dateline", "membernum", "follownum", "hot"});
String sql = "SELECT main.eventid, main.uid, main.username, main.title, main.classid, main.province, main.city, main.location, main.poster, main.thumb, main.remote, main.starttime, main.endtime, main.membernum, main.follownum FROM "
+ JavaCenterHome.getTableName("event")
+ " main WHERE "
+ result.get("wheres")
+ " ORDER BY main." + result.get("order") + " " + result.get("sc") + " LIMIT 0,6";
events = dataBaseService.executeQuery(sql);
for (Map<String, Object> event : events) {
event.put("title", Common.getStr((String) event.get("title"), 45, false, false, false, 0, 0,
request, response));
String poster = (String) event.get("poster");
if (Common.empty(poster)) {
event.put("poster", globalEventClass.get(event.get("classid")).get("poster"));
} else {
event.put("poster", Common.pic_get(sConfig, poster, (Integer) event.get("thumb"),
(Integer) event.get("remote"), true));
}
event.put("starttime", Common.sgmdate(request, dateformat, (Integer) event.get("starttime"),
false));
event.put("endtime", Common.sgmdate(request, dateformat, (Integer) event.get("endtime"),
false));
event.remove("classid");
event.remove("thumb");
event.remove("remote");
}
if ((Integer) netWork.get("cache") > 0) {
FileHelper.writeFile(cachePath, Serializer.serialize(events));
}
}
if (!Common.empty(events)) {
for (Map<String, Object> event : events) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) event.get("uid"), (String) event
.get("username"), null, 0);
}
request.setAttribute("events", events);
}
List<Map<String, Object>> polls = null;
cachePath = jchRoot + "data/cache/cache_network_poll.txt";
netWork = getNetWork(globalNetWork, "poll");
if (check_network_cache(netWork, cachePath, timestamp)) {
polls = Serializer.unserialize(FileHelper.readFile(cachePath));
} else {
Map<String, String> result = mk_network_sql(netWork, timestamp, new String[] {"pid", "uid"},
new String[] {"hot", "voternum", "replynum"}, new String[] {"dateline"}, new String[] {
"dateline", "voternum", "replynum", "hot"});
String sql = "SELECT main.pid, main.uid, main.username, main.subject, main.voternum FROM "
+ JavaCenterHome.getTableName("poll") + " main WHERE " + result.get("wheres")
+ " ORDER BY main." + result.get("order") + " " + result.get("sc") + " LIMIT 0,9";
polls = dataBaseService.executeQuery(sql);
if ((Integer) netWork.get("cache") > 0) {
FileHelper.writeFile(cachePath, Serializer.serialize(polls));
}
}
if (!Common.empty(polls)) {
for (Map<String, Object> poll : polls) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) poll.get("uid"), (String) poll
.get("username"), null, 0);
}
request.setAttribute("polls", polls);
}
List<Map<String, Object>> doings = dataBaseService
.executeQuery("SELECT doid, uid, username, dateline, message FROM "
+ JavaCenterHome.getTableName("doing") + " ORDER BY dateline DESC LIMIT 0,5");
if (doings.size() > 0) {
for (Map<String, Object> doing : doings) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) doing.get("uid"), (String) doing
.get("username"), null, 0);
doing.put("title", Common.getStr((String) doing.get("message"), 0, false, false, false, 0,
-1, request, response));
doing.put("dateline", Common.sgmdate(request, "HH:mm", (Integer) (Integer) doing
.get("dateline"), true));
}
request.setAttribute("doings", doings);
}
List<Map<String, Object>> stars = null;
Object spaceBarUserName = sConfig.get("spacebarusername");
if (!Common.empty(spaceBarUserName)) {
stars = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("space")
+ " WHERE username IN (" + Common.sImplode(spaceBarUserName.toString().split(","))
+ ") ORDER BY rand() limit 1");
}
List<Map<String, Object>> shows = dataBaseService.executeQuery("SELECT sh.note, s.* FROM "
+ JavaCenterHome.getTableName("show") + " sh LEFT JOIN "
+ JavaCenterHome.getTableName("space")
+ " s ON s.uid=sh.uid ORDER BY sh.credit DESC LIMIT 0,23");
if (shows.size() > 0) {
for (Map<String, Object> show : shows) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) show.get("uid"), (String) show
.get("username"), (String) show.get("name"), (Integer) show.get("namestatus"));
show.put("note", Common.addSlashes(Common.getStr((String) show.get("note"), 80, false, false,
false, 0, -1, request, response)));
}
if (Common.empty(stars)) {
stars = Common.getRandList(shows, 1);
}
request.setAttribute("shows", shows);
}
List<Map<String, Object>> onlines = dataBaseService.executeQuery("SELECT s.*, sf.note FROM "
+ JavaCenterHome.getTableName("session") + " s LEFT JOIN "
+ JavaCenterHome.getTableName("spacefield")
+ " sf ON sf.uid=s.uid WHERE s.magichidden = 0 ORDER BY s.lastactivity DESC LIMIT 0,12");
if (onlines.size() > 0) {
for (Map<String, Object> online : onlines) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) online.get("uid"), (String) online
.get("username"), null, 0);
online.put("note", Common.sHtmlSpecialChars(Common.stripTags((String) online.get("note"))));
}
if (Common.empty(stars)) {
stars = Common.getRandList(onlines, 1);
for (Map<String, Object> value : stars) {
List<Map<String, Object>> query = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("space") + " WHERE uid='" + value.get("uid") + "'");
if (query.size() > 0) {
value.putAll(query.get(0));
}
}
}
request.setAttribute("onlines", onlines);
}
if (!Common.empty(stars)) {
Map<String, Object> star = stars.get(0);
Common.realname_set(sGlobal, sConfig, sNames, (Integer) star.get("uid"), (String) star
.get("username"), (String) star.get("name"), star.get("namestatus") == null ? 0
: (Integer) star.get("namestatus"));
star.put("updatetime", Common.sgmdate(request, "HH:mm", star.get("updatetime") == null ? 0
: (Integer) star.get("updatetime"), true));
request.setAttribute("star", star);
}
request.setAttribute("onlineCount", dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("session")));
int myAppCount = 0;
if ((Integer) sConfig.get("my_status") == 1) {
myAppCount = dataBaseService.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("myapp") + " WHERE flag>='0'");
if (myAppCount > 0) {
List<Map<String, Object>> myApps = dataBaseService.executeQuery("SELECT appid,appname FROM "
+ JavaCenterHome.getTableName("myapp")
+ " WHERE flag>=0 ORDER BY flag DESC, displayorder LIMIT 0,7");
request.setAttribute("myApps", myApps);
}
}
request.setAttribute("myAppCount", myAppCount);
List<Map<String, Object>> shares = null;
cachePath = jchRoot + "data/cache/cache_network_share.txt";
netWork = getNetWork(globalNetWork, "share");
if (check_network_cache(netWork, cachePath, timestamp)) {
shares = Serializer.unserialize(FileHelper.readFile(cachePath));
} else {
Map<String, String> result = mk_network_sql(netWork, timestamp, new String[] {"sid", "uid"},
new String[] {"hot"}, new String[] {"dateline"}, new String[] {"dateline", "hot"});
String sql = "SELECT * FROM " + JavaCenterHome.getTableName("share") + " main LEFT JOIN "
+ JavaCenterHome.getTableName("space") + " space ON space.uid=main.uid WHERE "
+ result.get("wheres") + " ORDER BY main." + result.get("order") + " " + result.get("sc")
+ " LIMIT 0,6";
shares = dataBaseService.executeQuery(sql);
for (Map<String, Object> share : shares) {
Map<String, String> bodyData = Serializer.unserialize((String) share.get("body_data"), false);
String type = (String) share.get("type");
boolean iscut = false;
if (!Common.empty(bodyData)) {
Set<String> keys = bodyData.keySet();
for (String key : keys) {
if (!iscut && ("blog".equals(type) || "thread".equals(type))) {
bodyData.put("message", Common.cutstr(bodyData.get("message"), 40));
iscut = true;
}
if (!iscut && "poll".equals(type)) {
String subject = bodyData.get("subject");
List<String> strList = Common.pregMatch(subject,
"(?is)<a href=\"(.+?)\">(.+?)</a>");
if (strList.size() > 0) {
subject = "<a href=\"" + strList.get(1) + "\">"
+ Common.cutstr(strList.get(2), 40) + "</a>";
}
bodyData.put("subject", subject);
iscut = true;
}
String body_template = ((String) share.get("body_template")).replace("{" + key + "}",
bodyData.get(key));
share.put("body_template", body_template);
}
}
share.put("body_data", bodyData);
share.put("dateline", Common.sgmdate(request, dateformat, (Integer) share.get("dateline"),
true));
share.put("body_general", Common.cutstr((String) share.get("body_general"), 40));
}
if ((Integer) netWork.get("cache") > 0) {
FileHelper.writeFile(cachePath, Serializer.serialize(shares));
}
}
if (!Common.empty(shares)) {
for (Map<String, Object> share : shares) {
Common.realname_set(sGlobal, sConfig, sNames, (Integer) share.get("uid"), (String) share
.get("username"), null, 0);
}
request.setAttribute("shares", shares);
}
Map<String, String> shareClasses = new LinkedHashMap<String, String>();
shareClasses.put("link", "��ַ");
shareClasses.put("video", "��Ƶ");
shareClasses.put("music", "����");
shareClasses.put("flash", "Flash");
shareClasses.put("blog", "��־");
shareClasses.put("album", "���");
shareClasses.put("pic", "ͼƬ");
shareClasses.put("mtag", "Ⱥ��");
shareClasses.put("thread", "����");
shareClasses.put("poll", "ͶƱ");
shareClasses.put("event", "�");
shareClasses.put("space", "�û�");
shareClasses.put("tag", "TAG");
request.setAttribute("shareClasses", shareClasses);
Common.realname_get(sGlobal, sConfig, sNames, space);
Map<String, String> sCookie = (Map<String, String>) request.getAttribute("sCookie");
String loginUser = sCookie.get("loginuser");
request.setAttribute("memberName", Common.empty(loginUser) ? "" : Common.stripSlashes(loginUser));
request.setAttribute("tpl_css", "network");
return include(request, response, sConfig, sGlobal, "network.jsp");
}
private Map<String, Object> getNetWork(Map<String, Map<String, Object>> globalNetWork, String type) {
Map<String, Object> netWork = globalNetWork.get(type);
if (Common.empty(netWork)) {
netWork = new HashMap<String, Object>();
}
Object cache = netWork.get("cache");
if (Common.empty(cache)) {
netWork.put("cache", 0);
}
return netWork;
}
private boolean check_network_cache(Map<String, Object> netWork, String filePath, int timestamp) {
File cacheFile = new File(filePath);
int cacheTime = (int) (cacheFile.lastModified() / 1000);
if (timestamp - cacheTime < (Integer) netWork.get("cache")) {
return true;
}
return false;
}
private Map<String, String> mk_network_sql(Map<String, Object> netWork, int timestamp, String[] ids,
String[] crops, String[] days, String[] orders) {
StringBuffer wheres = new StringBuffer();
wheres.append("1");
for (String id : ids) {
Object value = netWork.get(id);
if (!Common.empty(value)) {
wheres.append(" AND main." + id + " IN (" + value + ")");
}
}
for (String crop : crops) {
String crop1 = crop + "1";
String crop2 = crop + "2";
Object value1 = netWork.get(crop1);
Object value2 = netWork.get(crop2);
if (!Common.empty(value1)) {
wheres.append(" AND main." + crop + " >= '" + value1 + "'");
}
if (!Common.empty(value2)) {
wheres.append(" AND main." + crop + " <= '" + value2 + "'");
}
}
for (String day : days) {
Object value = netWork.get(day);
if (!Common.empty(value)) {
int daytime = timestamp - (Integer) value * 3600 * 24;
wheres.append(" AND main." + day + " >= '" + daytime + "'");
}
}
String order = Common.in_array(orders, netWork.get("order")) ? netWork.get("order").toString()
: orders[1];
String sc = Common.in_array(new String[] {"desc", "asc"}, netWork.get("sc")) ? netWork.get("sc")
.toString() : "desc";
Map<String, String> result = new HashMap<String, String>();
result.put("wheres", wheres.toString());
result.put("order", order);
result.put("sc", sc);
return result;
}
}