DEV: Drop duration column from topic timers (#13543)
The duration column has been ignored since the commit4af77f1e38
for topic_timers, we use duration_minutes instead. Also removing the duration key from Topic.set_or_create_timer. The only plugin to use this was discourse-solved, which doesn't use it any longer sincec722b94a97
This commit is contained in:
parent
03338f9086
commit
d098f51ad3
|
@ -1319,19 +1319,13 @@ class Topic < ActiveRecord::Base
|
||||||
# * by_user: User who is setting the topic's status update.
|
# * by_user: User who is setting the topic's status update.
|
||||||
# * based_on_last_post: True if time should be based on timestamp of the last post.
|
# * based_on_last_post: True if time should be based on timestamp of the last post.
|
||||||
# * category_id: Category that the update will apply to.
|
# * category_id: Category that the update will apply to.
|
||||||
# * duration: TODO(2021-06-01): DEPRECATED - do not use
|
|
||||||
# * duration_minutes: The duration of the timer in minutes, which is used if the timer is based
|
# * duration_minutes: The duration of the timer in minutes, which is used if the timer is based
|
||||||
# on the last post or if the timer type is delete_replies.
|
# on the last post or if the timer type is delete_replies.
|
||||||
# * silent: Affects whether the close topic timer status change will be silent or not.
|
# * silent: Affects whether the close topic timer status change will be silent or not.
|
||||||
def set_or_create_timer(status_type, time, by_user: nil, based_on_last_post: false, category_id: SiteSetting.uncategorized_category_id, duration: nil, duration_minutes: nil, silent: nil)
|
def set_or_create_timer(status_type, time, by_user: nil, based_on_last_post: false, category_id: SiteSetting.uncategorized_category_id, duration_minutes: nil, silent: nil)
|
||||||
return delete_topic_timer(status_type, by_user: by_user) if time.blank? && duration_minutes.blank? && duration.blank?
|
return delete_topic_timer(status_type, by_user: by_user) if time.blank? && duration_minutes.blank?
|
||||||
|
|
||||||
duration_minutes = duration_minutes ? duration_minutes.to_i : 0
|
duration_minutes = duration_minutes ? duration_minutes.to_i : 0
|
||||||
|
|
||||||
# TODO(2021-06-01): deprecated - remove this when plugins calling set_or_create_timer
|
|
||||||
# have been fixed to use duration_minutes
|
|
||||||
duration = duration ? duration.to_i : 0
|
|
||||||
|
|
||||||
public_topic_timer = !!TopicTimer.public_types[status_type]
|
public_topic_timer = !!TopicTimer.public_types[status_type]
|
||||||
topic_timer_options = { topic: self, public_type: public_topic_timer }
|
topic_timer_options = { topic: self, public_type: public_topic_timer }
|
||||||
topic_timer_options.merge!(user: by_user) unless public_topic_timer
|
topic_timer_options.merge!(user: by_user) unless public_topic_timer
|
||||||
|
@ -1347,29 +1341,15 @@ class Topic < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
if topic_timer.based_on_last_post
|
if topic_timer.based_on_last_post
|
||||||
if duration > 0 || duration_minutes > 0
|
if duration_minutes > 0
|
||||||
last_post_created_at = self.ordered_posts.last.present? ? self.ordered_posts.last.created_at : time_now
|
last_post_created_at = self.ordered_posts.last.present? ? self.ordered_posts.last.created_at : time_now
|
||||||
|
|
||||||
# TODO(2021-06-01): deprecated - remove this when plugins calling set_or_create_timer
|
|
||||||
# have been fixed to use duration_minutes
|
|
||||||
if duration > 0
|
|
||||||
duration_minutes = duration * 60
|
|
||||||
end
|
|
||||||
|
|
||||||
topic_timer.duration_minutes = duration_minutes
|
topic_timer.duration_minutes = duration_minutes
|
||||||
topic_timer.execute_at = last_post_created_at + duration_minutes.minutes
|
topic_timer.execute_at = last_post_created_at + duration_minutes.minutes
|
||||||
topic_timer.created_at = last_post_created_at
|
topic_timer.created_at = last_post_created_at
|
||||||
end
|
end
|
||||||
elsif topic_timer.status_type == TopicTimer.types[:delete_replies]
|
elsif topic_timer.status_type == TopicTimer.types[:delete_replies]
|
||||||
if duration > 0 || duration_minutes > 0
|
if duration_minutes > 0
|
||||||
first_reply_created_at = (self.ordered_posts.where("post_number > 1").minimum(:created_at) || time_now)
|
first_reply_created_at = (self.ordered_posts.where("post_number > 1").minimum(:created_at) || time_now)
|
||||||
|
|
||||||
# TODO(2021-06-01): deprecated - remove this when plugins calling set_or_create_timer
|
|
||||||
# have been fixed to use duration_minutes
|
|
||||||
if duration > 0
|
|
||||||
duration_minutes = duration * 60 * 24
|
|
||||||
end
|
|
||||||
|
|
||||||
topic_timer.duration_minutes = duration_minutes
|
topic_timer.duration_minutes = duration_minutes
|
||||||
topic_timer.execute_at = first_reply_created_at + duration_minutes.minutes
|
topic_timer.execute_at = first_reply_created_at + duration_minutes.minutes
|
||||||
topic_timer.created_at = first_reply_created_at
|
topic_timer.created_at = first_reply_created_at
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class DropDurationColumnFromTopicTimers < ActiveRecord::Migration[6.1]
|
||||||
|
DROPPED_COLUMNS ||= {
|
||||||
|
topic_timers: %i{duration}
|
||||||
|
}
|
||||||
|
|
||||||
|
def up
|
||||||
|
DROPPED_COLUMNS.each do |table, columns|
|
||||||
|
Migration::ColumnDropper.execute_drop(table, columns)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
add_column :topic_timers, :duration, :string
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue