Fix feed not update when updating setting.

Change display update user instead of create user.
This commit is contained in:
BoHung Chiu 2022-06-21 11:11:33 +08:00
parent 2067444a7e
commit 2178bafe2a
4 changed files with 58 additions and 13 deletions

View File

@ -96,7 +96,7 @@ class AnnouncementsController < ApplicationController
locale = OrbitHelper.get_site_locale.to_s locale = OrbitHelper.get_site_locale.to_s
files = a.bulletin_files.to_fronted(locale) files = a.bulletin_files.to_fronted(locale)
links = a.bulletin_links.map{|link| { "link_url" => link.url, "link_title" => (link.title.blank? ? link.url : link.title) } } rescue [] links = a.bulletin_links.map{|link| { "link_url" => link.url, "link_title" => (link.title.blank? ? link.url : link.title) } } rescue []
author = tmp_enable_annc_dept ? annc_depts[a.annc_dept] : User.find(a.create_user_id).member_name rescue (User.find(a.create_user_id).member_profile.name rescue "") author = tmp_enable_annc_dept ? annc_depts[a.annc_dept] : User.find(a.update_user_id).member_name rescue (User.find(a.update_user_id).member_profile.name rescue "")
desc = a.image_description desc = a.image_description
desc = (desc.blank? ? "announcement image" : desc) desc = (desc.blank? ? "announcement image" : desc)
link_to_show = a.is_external_link ? a.external_link : OrbitHelper.url_to_show(a.to_param) link_to_show = a.is_external_link ? a.external_link : OrbitHelper.url_to_show(a.to_param)
@ -955,7 +955,7 @@ class AnnouncementsController < ApplicationController
locale = I18n.locale.to_s locale = I18n.locale.to_s
files = a.bulletin_files.to_fronted(locale) files = a.bulletin_files.to_fronted(locale)
links = a.bulletin_links.map{|link| { "link_url" => link.url, "link_title" => (link.title.blank? ? link.url : link.title) } } rescue [] links = a.bulletin_links.map{|link| { "link_url" => link.url, "link_title" => (link.title.blank? ? link.url : link.title) } } rescue []
author = tmp_enable_annc_dept ? annc_depts[a.annc_dept] : User.find(a.create_user_id).member_profile.name rescue "" author = tmp_enable_annc_dept ? annc_depts[a.annc_dept] : User.find(a.update_user_id).member_profile.name rescue ""
desc = a.image_description desc = a.image_description
desc = (desc.blank? ? "announcement image" : desc) desc = (desc.blank? ? "announcement image" : desc)
link_to_show = (a.is_external_link ? a.external_link : OrbitHelper.url_to_show(a.to_param)) rescue "" link_to_show = (a.is_external_link ? a.external_link : OrbitHelper.url_to_show(a.to_param)) rescue ""

View File

@ -32,7 +32,7 @@ module AnnouncementsHelper
files = a.bulletin_files.map{|file| { "file_url" => file.file.url, "file_title" => (file.title.blank? ? File.basename(file.file.path) : file.title rescue '') } if file.enabled_for?(locale) } rescue [] files = a.bulletin_files.map{|file| { "file_url" => file.file.url, "file_title" => (file.title.blank? ? File.basename(file.file.path) : file.title rescue '') } if file.enabled_for?(locale) } rescue []
files.delete(nil) files.delete(nil)
links = a.bulletin_links.map{|link| { "link_url" => link.url, "link_title" => (link.title.blank? ? link.url : link.title) } } rescue [] links = a.bulletin_links.map{|link| { "link_url" => link.url, "link_title" => (link.title.blank? ? link.url : link.title) } } rescue []
author = tmp_enable_annc_dept ? annc_depts[a.annc_dept] : User.find(a.create_user_id).member_profile.name rescue "" author = tmp_enable_annc_dept ? annc_depts[a.annc_dept] : User.find(a.update_user_id).member_profile.name rescue ""
desc = a.image_description desc = a.image_description
desc = (desc.nil? || desc == "" ? "announcement image" : desc) desc = (desc.nil? || desc == "" ? "announcement image" : desc)
link_to_show = (a.is_external_link? ? a.external_link : OrbitHelper.widget_item_url(a.to_param)) rescue "" link_to_show = (a.is_external_link? ? a.external_link : OrbitHelper.widget_item_url(a.to_param)) rescue ""
@ -188,7 +188,7 @@ module AnnouncementsHelper
else else
member_profile = MemberProfile.any_in(:uid=>params[:uids]) member_profile = MemberProfile.any_in(:uid=>params[:uids])
user_ids = member_profile.map{|m| m.user.id rescue nil}.select{|id| !id.nil?} user_ids = member_profile.map{|m| m.user.id rescue nil}.select{|id| !id.nil?}
announcements = Bulletin.where(:title.nin => ["",nil],:is_preview.in=>[false,nil],:create_user_id.in=>user_ids) announcements = Bulletin.where(:title.nin => ["",nil],:is_preview.in=>[false,nil],:update_user_id.in=>user_ids)
.can_display_and_sorted.is_approved .can_display_and_sorted.is_approved
.filter_by_categories(categories,false).filter_by_tags(tags).to_a .filter_by_categories(categories,false).filter_by_tags(tags).to_a
end end

View File

@ -37,21 +37,27 @@ class AnnouncementSetting
before_save do before_save do
can_update_shared_hash = (defined?(OrbitHelper::SharedHash) && OrbitHelper::SharedHash) can_update_shared_hash = (defined?(OrbitHelper::SharedHash) && OrbitHelper::SharedHash)
tmp_hash = {}
if self.enable_manually_sort_changed? && self.enable_manually_sort if self.enable_manually_sort_changed? && self.enable_manually_sort
AnnsCache.all.delete AnnsCache.all.delete
Bulletin.index({approved: -1,is_hidden: 1,is_preview: 1, is_top: -1,sort_number: 1,postdate: -1,_id: -1,deadline: -1}, { unique: false, background: true }) Bulletin.index({approved: -1,is_hidden: 1,is_preview: 1, is_top: -1,sort_number: 1,postdate: -1,_id: -1,deadline: -1}, { unique: false, background: true })
Bulletin.create_indexes Bulletin.create_indexes
tmp_hash[:enable_manually_sort] = self.enable_manually_sort OrbitHelper::SharedHash["announcement"][:enable_manually_sort] = self.enable_manually_sort if can_update_shared_hash
end
@need_update_bulletin = false
if self.enable_annc_dept_changed?
OrbitHelper::SharedHash["announcement"][:enable_annc_dept] = self.enable_annc_dept
@need_update_bulletin = true
end end
if self.annc_depts_changed? if self.annc_depts_changed?
tmp_hash[:annc_depts_translations] = self.annc_depts_translations OrbitHelper::SharedHash["announcement"][:annc_depts_translations] = self.annc_depts_translations
@need_update_bulletin = true
end end
if can_update_shared_hash end
if tmp_hash.count != 0 after_save do
tmp_hash[:enable_manually_sort] = self.enable_manually_sort if tmp_hash[:enable_manually_sort].nil? if @need_update_bulletin
tmp_hash[:annc_depts_translations] = self.annc_depts_translations if tmp_hash[:annc_depts_translations].nil? Thread.new do
OrbitHelper::SharedHash["announcement"] = ProcesssShareWraper.new(tmp_hash) AnnsCache.all.delete
Bulletin.notify_all_feed(true)
end end
end end
end end

View File

@ -354,7 +354,7 @@ class Bulletin
if tmp_enable_annc_dept if tmp_enable_annc_dept
author = annc_depts[self.annc_dept] rescue "" author = annc_depts[self.annc_dept] rescue ""
else else
user = User.find(self.create_user_id) rescue nil user = User.find(self.update_user_id) rescue nil
if !user.nil? if !user.nil?
author = user.member_name || user.user_name author = user.member_name || user.user_name
else else
@ -470,6 +470,45 @@ class Bulletin
end end
end end
end end
def self.notify_all_feed(force_update=false)
related_feeds = BulletinFeed.where(:remote_urls.nin=>[nil, []]).to_a
related_feeds.each do |feed|
uid = feed.uid
startdt = nil
enddt = nil
dt = nil
feed_cache = BulletinFeedCache.where(uid: uid, start: startdt, end: enddt, date: dt)
if force_update
feed_cache = nil
else
feed_cache_old = feed_cache.all_of([{:invalid_date.ne=>nil},{:invalid_date.lte => Time.now}]).last
feed_cache.all_of([{:invalid_date.ne=>nil},{:invalid_date.lte => Time.now}]).destroy
count = feed_cache.count
if count > 1
feed_cache.limit(count-1).destroy
end
feed_cache = feed_cache.first
anns = ''
end
if feed_cache.nil?
anns = feed.generate_one_cache_timeout(startdt: startdt,enddt: enddt,dt: dt,timeout: 20)
anns = (feed_cache_old.content rescue "") if anns.nil?
else
anns = feed_cache.content
end
request = Net::HTTP::Post.new('/xhr/feeds/notify_change', 'Content-Type' => 'application/json')
tmp_data = {'type'=>'update_all', 'uid'=> uid, 'data'=>anns}
request.body = tmp_data.to_json
feed.remote_urls.each do |remote_url|
uri = URI(remote_url)
http_req = Net::HTTP.new(uri.host, uri.port)
if remote_url.include?('https')
http_req.use_ssl = true
end
response = self.http_request( http_req , request )
end
end
end
def self.notify_feed_delete(ids) def self.notify_feed_delete(ids)
all_feeds = BulletinFeed.all.select{|feed| feed.remote_urls.count != 0} all_feeds = BulletinFeed.all.select{|feed| feed.remote_urls.count != 0}
if all_feeds.count != 0 if all_feeds.count != 0