/*
* 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 java.util.Locale;
import java.util.ResourceBundle;
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, com.juick.User user, int MID) throws ServletException, IOException {
com.juick.User visitor = Utils.getVisitorUser(sql, request, response);
Locale locale = request.getLocale();
if (!MessagesQueries.canViewThread(sql, MID, visitor != null ? visitor.UID : 0)) {
response.sendError(403);
return;
}
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 = "@" + user.UName + " - #" + MID;
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
try {
PageTemplates.pageHead(out, title, "");
PageTemplates.pageNavigation(out, locale, visitor, null);
out.println("");
com.juick.Message msg = printMessage(out, sql, user, MID, visitor, locale);
printReplies(out, sql, msg, visitor, locale, listview);
out.println("");
PageTemplates.pageDialogTemplate(out, locale);
PageTemplates.pageFooter(request, out, locale, visitor, false);
PageTemplates.pageEnd(out);
} finally {
out.close();
}
}
public static com.juick.Message printMessage(PrintWriter out, Connection sql, com.juick.User user, int mid, com.juick.User visitor, Locale locale) {
ResourceBundle rb = ResourceBundle.getBundle("Global", locale);
ResourceBundle rbthread = ResourceBundle.getBundle("UserThread", locale);
com.juick.Message msg = MessagesQueries.getMessage(sql, mid);
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("