From 18edc937fd7a96453a36131b088a4395d2a059e2 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Mon, 10 Mar 2014 16:31:38 -0700 Subject: [PATCH] Revert "implementation for #1469" This reverts commit 08b9b2771ff6e4f72b1d8886376ef674cecef503. --- app/controllers/forum_topics_controller.rb | 19 +++++++++---------- app/logical/session_creator.rb | 9 --------- app/models/forum_topic.rb | 16 ---------------- app/views/forum_topics/index.html.erb | 2 +- 4 files changed, 10 insertions(+), 36 deletions(-) diff --git a/app/controllers/forum_topics_controller.rb b/app/controllers/forum_topics_controller.rb index 16138b001..7d299601a 100644 --- a/app/controllers/forum_topics_controller.rb +++ b/app/controllers/forum_topics_controller.rb @@ -2,6 +2,7 @@ class ForumTopicsController < ApplicationController respond_to :html, :xml, :json before_filter :member_only, :except => [:index, :show] before_filter :normalize_search, :only => :index + after_filter :update_last_forum_read_at, :only => [:show] def new @forum_topic = ForumTopic.new @@ -18,7 +19,6 @@ class ForumTopicsController < ApplicationController def index @query = ForumTopic.active.search(params[:search]) @forum_topics = @query.order("is_sticky DESC, updated_at DESC").paginate(params[:page], :limit => params[:limit], :search_count => params[:search]) - @read_forum_topic_ids = read_forum_topic_ids respond_with(@forum_topics) do |format| format.xml do render :xml => @forum_topics.to_xml(:root => "forum-topics") @@ -31,7 +31,6 @@ class ForumTopicsController < ApplicationController @forum_posts = ForumPost.search(:topic_id => @forum_topic.id).order("forum_posts.id").paginate(params[:page]) @forum_posts.all respond_with(@forum_topic) - session[:read_forum_topics] = @forum_topic.mark_as_read(read_forum_topic_ids) end def create @@ -68,6 +67,14 @@ class ForumTopicsController < ApplicationController end private + def update_last_forum_read_at + return if CurrentUser.is_anonymous? + + if CurrentUser.last_forum_read_at.nil? || CurrentUser.last_forum_read_at < @forum_topic.updated_at + CurrentUser.update_column(:last_forum_read_at, @forum_topic.updated_at) + end + end + def normalize_search if params[:title_matches] params[:search] ||= {} @@ -80,14 +87,6 @@ private end end - def read_forum_topics - session[:read_forum_topics].to_s - end - - def read_forum_topic_ids - read_forum_topics.scan(/\S+/) - end - def check_privilege(forum_topic) if !forum_topic.editable_by?(CurrentUser.user) raise User::PrivilegeError diff --git a/app/logical/session_creator.rb b/app/logical/session_creator.rb index 829bac125..4ce44e334 100644 --- a/app/logical/session_creator.rb +++ b/app/logical/session_creator.rb @@ -13,7 +13,6 @@ class SessionCreator def authenticate if User.authenticate(name, password) user = User.find_by_name(name) - user.update_column(:last_forum_read_at, user.last_logged_in_at) user.update_column(:last_logged_in_at, Time.now) if remember.present? @@ -29,17 +28,9 @@ class SessionCreator end session[:user_id] = user.id - prune_read_forum_topics(user) return true else return false end end - - def prune_read_forum_topics(user) - # if user.last_forum_read_at - # read_forum_topic_ids = session[:read_forum_topics].to_s.scan(/\S+/) - # session[:read_forum_topics] = read_forum_topic_ids.select {|x| ForumTopic.where("updated_at >= ? and id = ?", user.last_forum_read_at, x).exists?}.join(" ") - # end - end end diff --git a/app/models/forum_topic.rb b/app/models/forum_topic.rb index 996d2d510..5df02c2d3 100644 --- a/app/models/forum_topic.rb +++ b/app/models/forum_topic.rb @@ -104,20 +104,4 @@ class ForumTopic < ActiveRecord::Base def hidden_attributes super + [:text_index] end - - def read_by?(user, read_forum_topic_ids) - return true if read_forum_topic_ids.include?(id.to_s) - return false if user.last_forum_read_at.nil? - return true if updated_at < user.last_forum_read_at - return false - end - - def mark_as_read(read_forum_topic_ids) - result = (read_forum_topic_ids + [id.to_s]).uniq.join(" ") - if result.size > 3000 - ids = result.scan(/\S+/) - result = ids[(ids.size / 2)..-1].join(" ") - end - result - end end diff --git a/app/views/forum_topics/index.html.erb b/app/views/forum_topics/index.html.erb index cacf5555d..c14969da5 100644 --- a/app/views/forum_topics/index.html.erb +++ b/app/views/forum_topics/index.html.erb @@ -24,7 +24,7 @@ Sticky: <% end %> - <% unless topic.read_by?(CurrentUser.user, @read_forum_topic_ids) %> + <% if topic.updated_at > (CurrentUser.last_forum_read_at || Time.now) %> NEW <% end %>