aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/java/com/juick/http/www/PageTemplates.java35
-rw-r--r--src/java/com/juick/http/www/SignUp.java30
-rw-r--r--src/java/com/juick/http/www/User.java29
-rw-r--r--src/java/com/juick/http/www/UserThread.java4
4 files changed, 97 insertions, 1 deletions
diff --git a/src/java/com/juick/http/www/PageTemplates.java b/src/java/com/juick/http/www/PageTemplates.java
index c76ded41..f9cce99e 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("<!DOCTYPE html>");
out.print("<html>");
out.print("<head>");
- out.print("<link rel=\"stylesheet\" href=\"/style.2014022100.css\"/>");
+ out.print("<link rel=\"stylesheet\" href=\"/style.2014030800.css\"/>");
out.print("<script type=\"text/javascript\" src=\"//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\" defer=\"defer\"></script>");
out.print("<script type=\"text/javascript\" src=\"/scripts.2014021500.js\" defer=\"defer\"></script>");
if (headers != null) {
@@ -136,6 +136,7 @@ public class PageTemplates {
out.println("<aside id=\"column\">");
out.println(" <p class=\"tags\">" + tagsHTML + "</p>");
+ printContestRating(out, sql);
out.println("</aside>");
}
@@ -188,6 +189,38 @@ public class PageTemplates {
return ret;
}
+ public static void printContestRating(PrintWriter out, Connection sql) {
+ out.println("<hr/>");
+ out.println("<!--noindex-->");
+ out.println("<p style=\"font-size: 14pt\">Кто <a href=\"/help/ru/contest\">выиграет iPod</a>?</p>");
+ out.println("<table width=\"100%\">");
+
+ int i = 0;
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ try {
+ stmt = sql.prepareStatement("SELECT users.id,users.nick,COUNT(users_refs.user_id) AS cnt FROM users INNER JOIN users_refs ON users.id=users_refs.ref GROUP BY users_refs.ref ORDER BY cnt DESC LIMIT 10");
+ rs = stmt.executeQuery();
+ rs.beforeFirst();
+ while (rs.next()) {
+ String uname = rs.getString(2);
+ if (i == 0) {
+ out.println(" <tr><td><b><a href=\"/" + uname + "/\">" + uname + "</a></b></td><td align=\"right\"><b>" + rs.getInt(3) + "</b></td></tr>");
+ } else {
+ out.println(" <tr><td><a href=\"/" + uname + "/\">" + uname + "</a></td><td align=\"right\">" + rs.getInt(3) + "</td></tr>");
+ }
+ i++;
+ }
+ } catch (SQLException e) {
+ System.err.println(e);
+ } finally {
+ Utils.finishSQL(rs, stmt);
+ }
+
+ out.println("</table>");
+ out.println("<!--/noindex-->");
+ }
+
public static void pageDialogTemplate(PrintWriter out) {
out.println("<div id=\"dialogb\" onclick=\"$('#dialogb').hide();$('#dialogw').hide()\"></div>");
out.println("<div id=\"dialogw\">Ссылка на сообщение:");
diff --git a/src/java/com/juick/http/www/SignUp.java b/src/java/com/juick/http/www/SignUp.java
index 2fbe2e2d..cf6679ce 100644
--- a/src/java/com/juick/http/www/SignUp.java
+++ b/src/java/com/juick/http/www/SignUp.java
@@ -172,6 +172,19 @@ public class SignUp {
return;
}
+ int ref = 0;
+ String sRef = Utils.getCookie(request, "ref");
+ if (sRef != null) {
+ try {
+ ref = Integer.parseInt(sRef);
+ } catch (Exception e) {
+ }
+ }
+
+ if (ref > 0) {
+ setUserRef(sql, uid, ref);
+ }
+
visitor = null;
}
@@ -185,6 +198,23 @@ public class SignUp {
response.sendRedirect("/");
}
+ private boolean setUserRef(Connection sql, int uid, int ref) {
+ boolean ret = false;
+ PreparedStatement stmt = null;
+ try {
+ stmt = sql.prepareStatement("INSERT INTO users_refs(user_id,ref) VALUES (?,?)");
+ stmt.setInt(1, uid);
+ stmt.setInt(2, ref);
+ stmt.executeUpdate();
+ ret = true;
+ } catch (SQLException e) {
+ System.err.println(e);
+ } finally {
+ Utils.finishSQL(null, stmt);
+ }
+ return ret;
+ }
+
private String getFacebookNameByHash(Connection sql, String hash) {
String ret = null;
diff --git a/src/java/com/juick/http/www/User.java b/src/java/com/juick/http/www/User.java
index 90a558cc..b517af8e 100644
--- a/src/java/com/juick/http/www/User.java
+++ b/src/java/com/juick/http/www/User.java
@@ -31,6 +31,7 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import javax.servlet.ServletException;
+import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -105,6 +106,10 @@ public class User {
return;
}
+ if (visitor == null) {
+ pageUserRefCookie(request, response, user.UID);
+ }
+
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
try {
@@ -151,6 +156,10 @@ public class User {
protected void doGetTags(Connection sql, HttpServletRequest request, HttpServletResponse response, com.juick.User user) throws ServletException, IOException {
com.juick.User visitor = Utils.getVisitorUser(sql, request, response);
+ if (visitor == null) {
+ pageUserRefCookie(request, response, user.UID);
+ }
+
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
try {
@@ -180,6 +189,10 @@ public class User {
protected void doGetFriends(Connection sql, HttpServletRequest request, HttpServletResponse response, com.juick.User user) throws ServletException, IOException {
com.juick.User visitor = Utils.getVisitorUser(sql, request, response);
+ if (visitor == null) {
+ pageUserRefCookie(request, response, user.UID);
+ }
+
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
try {
@@ -232,6 +245,10 @@ public class User {
protected void doGetReaders(Connection sql, HttpServletRequest request, HttpServletResponse response, com.juick.User user) throws ServletException, IOException {
com.juick.User visitor = Utils.getVisitorUser(sql, request, response);
+ if (visitor == null) {
+ pageUserRefCookie(request, response, user.UID);
+ }
+
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
try {
@@ -281,6 +298,18 @@ public class User {
}
}
+ public static void pageUserRefCookie(HttpServletRequest request, HttpServletResponse response, int uid) {
+ String hReferer = request.getHeader("Referer");
+ String ref = Utils.getCookie(request, "ref");
+
+ if (ref == null && (hReferer == null || !(hReferer.startsWith("http://juick.com/") || hReferer.startsWith("https://juick.com/")))) {
+ Cookie c = new Cookie("ref", Integer.toString(uid));
+ c.setMaxAge(7 * 24 * 60 * 60);
+ c.setPath("/");
+ response.addCookie(c);
+ }
+ }
+
public static void pageUserColumn(PrintWriter out, Connection sql, com.juick.User user, com.juick.User visitor) {
out.println("<aside id=\"column\">");
out.println(" <div id=\"ctitle\"><a href=\"./\"><img src=\"//i.juick.com/as/" + user.UID + ".png\" alt=\"\"/>" + user.UName + "</a></div>");
diff --git a/src/java/com/juick/http/www/UserThread.java b/src/java/com/juick/http/www/UserThread.java
index cf1ae76a..541af344 100644
--- a/src/java/com/juick/http/www/UserThread.java
+++ b/src/java/com/juick/http/www/UserThread.java
@@ -60,6 +60,10 @@ public class UserThread {
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 {