/*
* Juick
* Copyright (C) 2008-2011, Ugnich Anton
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
package com.juick.http.www;
import com.juick.server.MessagesQueries;
import com.juick.server.UserQueries;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author Ugnich Anton
*/
public class UserThread {
protected void doGetThread(Connection sql, HttpServletRequest request, HttpServletResponse response, int MID) throws ServletException, IOException {
com.juick.User visitor = Utils.getVisitorUser(sql, request, response);
if (!MessagesQueries.canViewThread(sql, MID, visitor != null ? visitor.UID : 0)) {
response.sendError(403);
return;
}
com.juick.Message msg = MessagesQueries.getMessage(sql, MID);
boolean listview = false;
String paramView = request.getParameter("view");
if (paramView != null) {
if (paramView.equals("list")) {
listview = true;
if (visitor != null) {
UserQueries.setUserOptionInt(sql, visitor.UID, "repliesview", 1);
}
} else if (paramView.equals("tree") && visitor != null) {
UserQueries.setUserOptionInt(sql, visitor.UID, "repliesview", 0);
}
} else if (visitor != null && UserQueries.getUserOptionInt(sql, visitor.UID, "repliesview", 0) == 1) {
listview = true;
}
String title = msg.User.UName + ": " + msg.getTagsString();
if (visitor == null) {
User.pageUserRefCookie(request, response, msg.User.UID);
}
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
try {
PageTemplates.pageHead(out, title, "");
if (!Utils.isMobileRequest(request)) {
PageTemplates.pageNavigation(out, visitor, null);
}
out.println("");
printMessage(out, sql, msg, visitor);
printReplies(out, sql, msg, visitor, listview);
out.println("");
if (!Utils.isMobileRequest(request)) {
PageTemplates.pageFooter(request, out, visitor, false);
}
PageTemplates.pageDialogTemplate(out);
PageTemplates.pageEnd(out);
} finally {
out.close();
}
}
public static com.juick.Message printMessage(PrintWriter out, Connection sql, com.juick.Message msg, com.juick.User visitor) {
msg.VisitorCanComment = visitor != null;
String tags = (msg.Tags.isEmpty()) ? "" : PageTemplates.formatTags(msg.Tags, msg.User);
if (msg.ReadOnly) {
tags += " *readonly";
msg.VisitorCanComment = false;
}
switch (msg.Privacy) {
case 2:
tags += " *public";
break;
case -1:
tags += " *friends";
break;
case -2:
tags += " *friends";
break;
case -3:
tags += " *private";
break;
}
String txt;
if (!msg.Tags.isEmpty() && msg.Tags.contains("code")) {
txt = PageTemplates.formatMessageCode(msg.Text);
} else {
txt = PageTemplates.formatMessage(msg.Text);
}
if (!tags.isEmpty()) {
tags = "" + tags + "";
}
out.println("