mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Allow admins to schedule a topic to be published in the future.
This commit is contained in:
@@ -951,8 +951,10 @@ SQL
|
||||
# * `nil` to delete the topic's status update.
|
||||
# Options:
|
||||
# * by_user: User who is setting the topic's status update.
|
||||
# * timezone_offset: (Integer) offset from UTC in minutes of the given argument. Default 0.
|
||||
def set_or_create_status_update(status_type, time, by_user: nil, timezone_offset: 0, based_on_last_post: false)
|
||||
# * timezone_offset: (Integer) offset from UTC in minutes of the given argument.
|
||||
# * 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.
|
||||
def set_or_create_status_update(status_type, time, by_user: nil, timezone_offset: 0, based_on_last_post: false, category_id: SiteSetting.uncategorized_category_id)
|
||||
topic_status_update = TopicStatusUpdate.find_or_initialize_by(
|
||||
status_type: status_type,
|
||||
topic: self
|
||||
@@ -966,6 +968,10 @@ SQL
|
||||
time_now = Time.zone.now
|
||||
topic_status_update.based_on_last_post = !based_on_last_post.blank?
|
||||
|
||||
if status_type == TopicStatusUpdate.types[:publish_to_category]
|
||||
topic_status_update.category_id = category_id
|
||||
end
|
||||
|
||||
if topic_status_update.based_on_last_post
|
||||
num_hours = time.to_f
|
||||
|
||||
@@ -1191,51 +1197,56 @@ end
|
||||
#
|
||||
# Table name: topics
|
||||
#
|
||||
# id :integer not null, primary key
|
||||
# title :string not null
|
||||
# last_posted_at :datetime
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# views :integer default(0), not null
|
||||
# posts_count :integer default(0), not null
|
||||
# user_id :integer
|
||||
# last_post_user_id :integer not null
|
||||
# reply_count :integer default(0), not null
|
||||
# featured_user1_id :integer
|
||||
# featured_user2_id :integer
|
||||
# featured_user3_id :integer
|
||||
# avg_time :integer
|
||||
# deleted_at :datetime
|
||||
# highest_post_number :integer default(0), not null
|
||||
# image_url :string
|
||||
# like_count :integer default(0), not null
|
||||
# incoming_link_count :integer default(0), not null
|
||||
# category_id :integer
|
||||
# visible :boolean default(TRUE), not null
|
||||
# moderator_posts_count :integer default(0), not null
|
||||
# closed :boolean default(FALSE), not null
|
||||
# archived :boolean default(FALSE), not null
|
||||
# bumped_at :datetime not null
|
||||
# has_summary :boolean default(FALSE), not null
|
||||
# vote_count :integer default(0), not null
|
||||
# archetype :string default("regular"), not null
|
||||
# featured_user4_id :integer
|
||||
# notify_moderators_count :integer default(0), not null
|
||||
# spam_count :integer default(0), not null
|
||||
# pinned_at :datetime
|
||||
# score :float
|
||||
# percent_rank :float default(1.0), not null
|
||||
# subtype :string
|
||||
# slug :string
|
||||
# deleted_by_id :integer
|
||||
# participant_count :integer default(1)
|
||||
# word_count :integer
|
||||
# excerpt :string(1000)
|
||||
# pinned_globally :boolean default(FALSE), not null
|
||||
# pinned_until :datetime
|
||||
# fancy_title :string(400)
|
||||
# highest_staff_post_number :integer default(0), not null
|
||||
# featured_link :string
|
||||
# id :integer not null, primary key
|
||||
# title :string not null
|
||||
# last_posted_at :datetime
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# views :integer default(0), not null
|
||||
# posts_count :integer default(0), not null
|
||||
# user_id :integer
|
||||
# last_post_user_id :integer not null
|
||||
# reply_count :integer default(0), not null
|
||||
# featured_user1_id :integer
|
||||
# featured_user2_id :integer
|
||||
# featured_user3_id :integer
|
||||
# avg_time :integer
|
||||
# deleted_at :datetime
|
||||
# highest_post_number :integer default(0), not null
|
||||
# image_url :string
|
||||
# like_count :integer default(0), not null
|
||||
# incoming_link_count :integer default(0), not null
|
||||
# category_id :integer
|
||||
# visible :boolean default(TRUE), not null
|
||||
# moderator_posts_count :integer default(0), not null
|
||||
# closed :boolean default(FALSE), not null
|
||||
# archived :boolean default(FALSE), not null
|
||||
# bumped_at :datetime not null
|
||||
# has_summary :boolean default(FALSE), not null
|
||||
# vote_count :integer default(0), not null
|
||||
# archetype :string default("regular"), not null
|
||||
# featured_user4_id :integer
|
||||
# notify_moderators_count :integer default(0), not null
|
||||
# spam_count :integer default(0), not null
|
||||
# pinned_at :datetime
|
||||
# score :float
|
||||
# percent_rank :float default(1.0), not null
|
||||
# subtype :string
|
||||
# slug :string
|
||||
# auto_close_at :datetime
|
||||
# auto_close_user_id :integer
|
||||
# auto_close_started_at :datetime
|
||||
# deleted_by_id :integer
|
||||
# participant_count :integer default(1)
|
||||
# word_count :integer
|
||||
# excerpt :string(1000)
|
||||
# pinned_globally :boolean default(FALSE), not null
|
||||
# auto_close_based_on_last_post :boolean default(FALSE)
|
||||
# auto_close_hours :float
|
||||
# pinned_until :datetime
|
||||
# fancy_title :string(400)
|
||||
# highest_staff_post_number :integer default(0), not null
|
||||
# featured_link :string
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user