From 6a6b574cd010f01b4d26907707a28e70d3e384c6 Mon Sep 17 00:00:00 2001
From: Ugnich Anton
Date: Wed, 9 Jan 2013 16:59:09 +0700
Subject: Blogs: related tags
---
src/java/com/juick/http/www/Blogs.java | 51 ++++++++++++++++++++++++++
src/java/com/juick/http/www/Main.java | 4 +-
src/java/com/juick/http/www/PageTemplates.java | 2 +-
src/java/com/juick/http/www/User.java | 3 ++
web/style3.css | 2 +
5 files changed, 60 insertions(+), 2 deletions(-)
diff --git a/src/java/com/juick/http/www/Blogs.java b/src/java/com/juick/http/www/Blogs.java
index 4af75cd3..527009a1 100644
--- a/src/java/com/juick/http/www/Blogs.java
+++ b/src/java/com/juick/http/www/Blogs.java
@@ -42,6 +42,24 @@ import javax.servlet.http.HttpServletResponse;
*/
public class Blogs {
+ private int relatedTagsStartMID = 0;
+
+ public Blogs(Connection sql) {
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ try {
+ stmt = sql.prepareStatement("SELECT MIN(message_id) FROM messages WHERE ts>DATE_ADD(NOW(),INTERVAL -6 MONTH)");
+ rs = stmt.executeQuery();
+ if (rs.first()) {
+ relatedTagsStartMID = rs.getInt(1);
+ }
+ } catch (SQLException e) {
+ System.err.println(e);
+ } finally {
+ Utils.finishSQL(rs, stmt);
+ }
+ }
+
protected void doGet(Connection sql, Connection sqlSearch, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String paramTagStrQuery = request.getParameter("tag");
if (paramTagStrQuery != null) {
@@ -218,6 +236,13 @@ public class Blogs {
out.println("
");
PageTemplates.pageYandexAd(out, visitor == null ? 2 : 3); // разный ID для залогиненых и нет
+ if (paramTag > 0 && relatedTagsStartMID > 0) {
+ String related = getRelatedTags(sql, paramTag, 10);
+ if (!related.isEmpty()) {
+ out.println("
Related tags: ");
+ out.println("
");
+ }
+ }
out.println("
");
out.println(""); // topwrapper
@@ -277,4 +302,30 @@ public class Blogs {
return ret;
}
+
+ private String getRelatedTags(Connection sql, int tag_id, int cnt) {
+ String ret = "";
+
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ try {
+ stmt = sql.prepareStatement("SELECT tags.name,COUNT(message_id) AS cnt FROM messages_tags INNER JOIN tags ON messages_tags.tag_id=tags.tag_id WHERE messages_tags.message_id>" + relatedTagsStartMID + " AND messages_tags.message_id IN (SELECT message_id FROM messages_tags WHERE tag_id=?) AND messages_tags.tag_id NOT IN (SELECT tag_id FROM tags_ignore) GROUP BY messages_tags.tag_id HAVING cnt>1 ORDER BY cnt DESC LIMIT 1,?");
+ stmt.setInt(1, tag_id);
+ stmt.setInt(2, cnt);
+ rs = stmt.executeQuery();
+ rs.beforeFirst();
+ while (rs.next()) {
+ try {
+ ret += "" + Utils.encodeHTML(rs.getString(1)) + " ";
+ } catch (UnsupportedEncodingException e) {
+ }
+ }
+ } catch (SQLException e) {
+ System.err.println(e);
+ } finally {
+ Utils.finishSQL(rs, stmt);
+ }
+
+ return ret;
+ }
}
diff --git a/src/java/com/juick/http/www/Main.java b/src/java/com/juick/http/www/Main.java
index e4b79962..226ac729 100644
--- a/src/java/com/juick/http/www/Main.java
+++ b/src/java/com/juick/http/www/Main.java
@@ -41,7 +41,7 @@ public class Main extends HttpServlet implements XmppListener {
Connection sql;
Connection sqlSearch;
XmppConnection xmpp;
- Blogs blogs = new Blogs();
+ Blogs blogs;
RootRedirects rootRedirects = new RootRedirects();
Login login = new Login();
Help help = new Help();
@@ -65,6 +65,8 @@ public class Main extends HttpServlet implements XmppListener {
xmpp.start();
*/
+ blogs = new Blogs(sql);
+
PageTemplates.sape = new Sape(conf.getProperty("sape_user"), "juick.com", 2000, 3600);
} catch (Exception e) {
log(null, e);
diff --git a/src/java/com/juick/http/www/PageTemplates.java b/src/java/com/juick/http/www/PageTemplates.java
index 9e4eff98..5851a3ee 100644
--- a/src/java/com/juick/http/www/PageTemplates.java
+++ b/src/java/com/juick/http/www/PageTemplates.java
@@ -52,7 +52,7 @@ public class PageTemplates {
out.println("");
out.println("");
out.println(" " + title + " ");
- out.println(" ");
+ out.println(" ");
out.println(" ");
out.println(" ");
out.println(" ");
diff --git a/src/java/com/juick/http/www/User.java b/src/java/com/juick/http/www/User.java
index 1d331956..8574eaab 100644
--- a/src/java/com/juick/http/www/User.java
+++ b/src/java/com/juick/http/www/User.java
@@ -127,6 +127,9 @@ public class User {
if (paramTag > 0) {
nextpage += "&tag=" + URLEncoder.encode(paramTagStr, "UTF-8");
}
+ if (paramSearch != null) {
+ nextpage += "&search=" + URLEncoder.encode(paramSearch, "UTF-8");
+ }
out.println("Older →
");
}
out.println("");
diff --git a/web/style3.css b/web/style3.css
index adb686f0..2e8efe5e 100644
--- a/web/style3.css
+++ b/web/style3.css
@@ -96,6 +96,8 @@ blockquote { border-left: 1px dashed #CCC; margin: 10px 0 10px 10px; padding-lef
/********/
#rcol { width: 190px; top: 0; margin: 10px 0 0 810px; padding-top: 10px; overflow: hidden; font-size: smaller; }
+#rcol h3 { margin: 8px 0; }
+#reltags li { font-size: larger; margin: 2px 0 2px 10px; }
/********/
--
cgit v1.2.3