mirror of
https://github.com/discourse/discourse.git
synced 2026-08-10 04:58:31 -05:00
DEV: Remove UploadFixer and uploads:fix_all_extensions rake task (#33004)
The code being removed here was added 7 years ago and is stale at this point. We don't even know if it is safe to run since no tests have been written for it. Therefore, it is safer for us to remove it than to spend time reviewing it.
This commit is contained in:
@@ -1,9 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Jobs
|
||||
class FixInvalidUploadExtensions < ::Jobs::Onceoff
|
||||
def execute_onceoff(args)
|
||||
UploadFixer.fix_all_extensions
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -507,10 +507,6 @@ task "uploads:analyze", %i[cache_path limit] => :environment do |_, args|
|
||||
puts "Duration: #{Time.zone.now - now} seconds"
|
||||
end
|
||||
|
||||
task "uploads:fix_incorrect_extensions" => :environment do
|
||||
UploadFixer.fix_all_extensions
|
||||
end
|
||||
|
||||
task "uploads:recover_from_tombstone" => :environment do
|
||||
Rake::Task["uploads:recover"].invoke
|
||||
end
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class UploadFixer
|
||||
def self.fix_all_extensions
|
||||
Upload
|
||||
.where("uploads.extension IS NOT NULL")
|
||||
.find_each { |upload| fix_extension_on_upload(upload) }
|
||||
end
|
||||
|
||||
def self.fix_extension_on_upload(upload)
|
||||
is_external = Discourse.store.external?
|
||||
previous_url = upload.url.dup
|
||||
|
||||
source =
|
||||
if is_external
|
||||
"https:#{previous_url}"
|
||||
else
|
||||
Discourse.store.path_for(upload)
|
||||
end
|
||||
|
||||
correct_extension = FastImage.type(source).to_s.downcase
|
||||
current_extension = upload.extension.to_s.downcase
|
||||
|
||||
if correct_extension.present?
|
||||
correct_extension = "jpg" if correct_extension == "jpeg"
|
||||
current_extension = "jpg" if current_extension == "jpeg"
|
||||
|
||||
if correct_extension != current_extension
|
||||
new_filename = change_extension(upload.original_filename, correct_extension)
|
||||
|
||||
new_url = change_extension(previous_url, correct_extension)
|
||||
|
||||
if is_external
|
||||
new_url = "/#{new_url}"
|
||||
source = Discourse.store.get_path_for_upload(upload)
|
||||
destination = change_extension(source, correct_extension)
|
||||
|
||||
Discourse.store.copy_file(previous_url, source, destination)
|
||||
|
||||
upload.update!(
|
||||
original_filename: new_filename,
|
||||
url: new_url,
|
||||
extension: correct_extension,
|
||||
)
|
||||
|
||||
DbHelper.remap(previous_url, upload.url)
|
||||
Discourse.store.remove_file(previous_url, source)
|
||||
else
|
||||
destination = change_extension(source, correct_extension)
|
||||
FileUtils.copy(source, destination)
|
||||
|
||||
upload.update!(
|
||||
original_filename: new_filename,
|
||||
url: new_url,
|
||||
extension: correct_extension,
|
||||
)
|
||||
|
||||
DbHelper.remap(previous_url, upload.url)
|
||||
|
||||
tombstone_path = source.sub("/uploads/", "/uploads/tombstone/")
|
||||
FileUtils.mkdir_p(File.dirname(tombstone_path))
|
||||
|
||||
FileUtils.move(source, tombstone_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
rescue => e
|
||||
STDERR.puts "Skipping upload: failed to correct extension on upload id: #{upload.id} #{current_extension} => #{correct_extension}"
|
||||
STDERR.puts e
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def self.change_extension(path, extension)
|
||||
pathname = Pathname.new(path)
|
||||
dirname = pathname.dirname.to_s != "." ? "#{pathname.dirname}/" : ""
|
||||
basename = File.basename(path, File.extname(path))
|
||||
"#{dirname}#{basename}.#{extension}"
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user