diff --git a/app/models/artist.rb b/app/models/artist.rb index 6d5462ed6..b747eeefe 100644 --- a/app/models/artist.rb +++ b/app/models/artist.rb @@ -58,7 +58,7 @@ class Artist < ActiveRecord::Base module ClassMethods def normalize_name(name) - name.to_s.downcase.strip.gsub(/ /, '_') + name.to_s.mb_chars.downcase.strip.gsub(/ /, '_') end end diff --git a/app/models/ban.rb b/app/models/ban.rb index 98d5a5231..223705f2a 100644 --- a/app/models/ban.rb +++ b/app/models/ban.rb @@ -16,7 +16,7 @@ class Ban < ActiveRecord::Base return q if params.blank? if params[:banner_name] - q = q.where("banner_id = (select _.id from users _ where lower(_.name) = ?)", params[:banner_name].downcase) + q = q.where("banner_id = (select _.id from users _ where lower(_.name) = ?)", params[:banner_name].mb_chars.downcase) end if params[:banner_id] @@ -24,7 +24,7 @@ class Ban < ActiveRecord::Base end if params[:user_name] - q = q.where("user_id = (select _.id from users _ where lower(_.name) = ?)", params[:user_name].downcase) + q = q.where("user_id = (select _.id from users _ where lower(_.name) = ?)", params[:user_name].mb_chars.downcase) end if params[:user_id] diff --git a/app/models/dmail.rb b/app/models/dmail.rb index 2889a45d8..e79597bf4 100644 --- a/app/models/dmail.rb +++ b/app/models/dmail.rb @@ -111,11 +111,11 @@ class Dmail < ActiveRecord::Base end def to_name_matches(name) - where("to_id = (select _.id from users _ where lower(_.name) = ?)", name.downcase) + where("to_id = (select _.id from users _ where lower(_.name) = ?)", name.mb_chars.downcase) end def from_name_matches(name) - where("from_id = (select _.id from users _ where lower(_.name) = ?)", name.downcase) + where("from_id = (select _.id from users _ where lower(_.name) = ?)", name.mb_chars.downcase) end def search(params) diff --git a/app/models/janitor_trial.rb b/app/models/janitor_trial.rb index cd16c8a31..1ec3ab20c 100644 --- a/app/models/janitor_trial.rb +++ b/app/models/janitor_trial.rb @@ -12,7 +12,7 @@ class JanitorTrial < ActiveRecord::Base return q if params.blank? if params[:user_name] - q = q.where("user_id = (select _.id from users _ where lower(_.name) = ?)", params[:user_name].downcase) + q = q.where("user_id = (select _.id from users _ where lower(_.name) = ?)", params[:user_name].mb_chars.downcase) end if params[:user_id] diff --git a/app/models/pool.rb b/app/models/pool.rb index a5fcd0ad8..9983a70b6 100644 --- a/app/models/pool.rb +++ b/app/models/pool.rb @@ -58,7 +58,7 @@ class Pool < ActiveRecord::Base if name =~ /^\d+$/ name.to_i else - select_value_sql("SELECT id FROM pools WHERE lower(name) = ?", name.downcase.tr(" ", "_")).to_i + select_value_sql("SELECT id FROM pools WHERE lower(name) = ?", name.mb_chars.downcase.tr(" ", "_")).to_i end end @@ -91,7 +91,7 @@ class Pool < ActiveRecord::Base if name =~ /^\d+$/ where("id = ?", name.to_i).first elsif name - where("lower(name) = ?", normalize_name(name).downcase).first + where("lower(name) = ?", normalize_name(name).mb_chars.downcase).first else nil end diff --git a/app/models/pool_version.rb b/app/models/pool_version.rb index 04a419fa7..9755781e9 100644 --- a/app/models/pool_version.rb +++ b/app/models/pool_version.rb @@ -20,7 +20,7 @@ class PoolVersion < ActiveRecord::Base end if params[:updater_name].present? - q = q.where("updater_id = (select _.id from users _ where lower(_.name) = ?)", params[:updater_name].downcase) + q = q.where("updater_id = (select _.id from users _ where lower(_.name) = ?)", params[:updater_name].mb_chars.downcase) end if params[:pool_id].present? diff --git a/app/models/post.rb b/app/models/post.rb index a00338599..7ed140238 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -973,7 +973,7 @@ class Post < ActiveRecord::Base end def updater_name_matches(name) - where("updater_id = (select _.id from users _ where lower(_.name) = ?)", name.downcase) + where("updater_id = (select _.id from users _ where lower(_.name) = ?)", name.mb_chars.downcase) end def after_id(num) diff --git a/app/models/post_appeal.rb b/app/models/post_appeal.rb index ac9986b68..f44b3f6e5 100644 --- a/app/models/post_appeal.rb +++ b/app/models/post_appeal.rb @@ -27,7 +27,7 @@ class PostAppeal < ActiveRecord::Base end if params[:creator_name].present? - q = q.where("creator_id = (select _.id from users _ where lower(_.name) = ?)", params[:creator_name].downcase) + q = q.where("creator_id = (select _.id from users _ where lower(_.name) = ?)", params[:creator_name].mb_chars.downcase) end if params[:post_id].present? diff --git a/app/models/post_flag.rb b/app/models/post_flag.rb index 5d5aba1c2..800d8c988 100644 --- a/app/models/post_flag.rb +++ b/app/models/post_flag.rb @@ -36,7 +36,7 @@ class PostFlag < ActiveRecord::Base end if params[:creator_name].present? - q = q.where("creator_id = (select _.id from users _ where lower(_.name) = ?)", params[:creator_name].downcase) + q = q.where("creator_id = (select _.id from users _ where lower(_.name) = ?)", params[:creator_name].mb_chars.downcase) end if params[:post_id].present? diff --git a/app/models/post_version.rb b/app/models/post_version.rb index 73882d9cb..1e7dff2e8 100644 --- a/app/models/post_version.rb +++ b/app/models/post_version.rb @@ -9,7 +9,7 @@ class PostVersion < ActiveRecord::Base end def updater_name(name) - where("updater_id = (select _.id from users _ where lower(_.name) = ?)", name.downcase) + where("updater_id = (select _.id from users _ where lower(_.name) = ?)", name.mb_chars.downcase) end def search(params) diff --git a/app/models/tag.rb b/app/models/tag.rb index 442873390..eb8698e87 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -121,7 +121,7 @@ class Tag < ActiveRecord::Base module NameMethods def normalize_name(name) - name.downcase.tr(" ", "_").gsub(/\A[-~]+/, "").gsub(/\*/, "") + name.mb_chars.downcase.tr(" ", "_").gsub(/\A[-~]+/, "").gsub(/\*/, "").to_s end def find_or_create_by_name(name, options = {}) @@ -233,10 +233,10 @@ class Tag < ActiveRecord::Base def parse_tag(tag, output) if tag[0] == "-" && tag.size > 1 - output[:exclude] << tag[1..-1].downcase + output[:exclude] << tag[1..-1].mb_chars.downcase elsif tag[0] == "~" && tag.size > 1 - output[:include] << tag[1..-1].downcase + output[:include] << tag[1..-1].mb_chars.downcase elsif tag =~ /\*/ matches = Tag.name_matches(tag.downcase).all(:select => "name", :limit => Danbooru.config.tag_query_limit, :order => "post_count DESC").map(&:name) @@ -244,7 +244,7 @@ class Tag < ActiveRecord::Base output[:include] += matches else - output[:related] << tag.downcase + output[:related] << tag.mb_chars.downcase end end @@ -431,7 +431,7 @@ class Tag < ActiveRecord::Base module SearchMethods def name_matches(name) - where("name LIKE ? ESCAPE E'\\\\'", name.downcase.to_escaped_for_sql_like) + where("name LIKE ? ESCAPE E'\\\\'", name.mb_chars.downcase.to_escaped_for_sql_like) end def named(name) diff --git a/app/models/tag_alias.rb b/app/models/tag_alias.rb index fd18a3807..344f7216b 100644 --- a/app/models/tag_alias.rb +++ b/app/models/tag_alias.rb @@ -12,7 +12,7 @@ class TagAlias < ActiveRecord::Base module SearchMethods def name_matches(name) - where("(antecedent_name like ? escape E'\\\\' or consequent_name like ? escape E'\\\\')", name.downcase.to_escaped_for_sql_like, name.downcase.to_escaped_for_sql_like) + where("(antecedent_name like ? escape E'\\\\' or consequent_name like ? escape E'\\\\')", name.mb_chars.downcase.to_escaped_for_sql_like, name.downcase.to_escaped_for_sql_like) end def active diff --git a/app/models/tag_subscription.rb b/app/models/tag_subscription.rb index bdf733fce..3e9095342 100644 --- a/app/models/tag_subscription.rb +++ b/app/models/tag_subscription.rb @@ -71,7 +71,7 @@ class TagSubscription < ActiveRecord::Base end if params[:creator_name] - q = q.where("creator_id = (select _.id from users _ where lower(_.name) = ?)", params[:creator_name].downcase) + q = q.where("creator_id = (select _.id from users _ where lower(_.name) = ?)", params[:creator_name].mb_chars.downcase) end q @@ -113,7 +113,7 @@ class TagSubscription < ActiveRecord::Base relation = where("creator_id = ?", user_id) if name - relation = relation.where("lower(name) LIKE ? ESCAPE E'\\\\'", name.downcase.to_escaped_for_sql_like) + relation = relation.where("lower(name) LIKE ? ESCAPE E'\\\\'", name.mb_chars.downcase.to_escaped_for_sql_like) end relation.each do |tag_sub| diff --git a/app/models/upload.rb b/app/models/upload.rb index aa9c7e676..28fb80e8b 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -359,7 +359,7 @@ class Upload < ActiveRecord::Base end if params[:uploader_name].present? - q = q.where("uploader_id = (select _.id from users _ where lower(_.name) = ?)", params[:uploader_name].downcase) + q = q.where("uploader_id = (select _.id from users _ where lower(_.name) = ?)", params[:uploader_name].mb_chars.downcase) end if params[:source].present? diff --git a/app/models/user_feedback.rb b/app/models/user_feedback.rb index abf899f5c..85438b3b4 100644 --- a/app/models/user_feedback.rb +++ b/app/models/user_feedback.rb @@ -35,7 +35,7 @@ class UserFeedback < ActiveRecord::Base end if params[:user_name].present? - q = q.where("user_id = (select _.id from users _ where lower(_.name) = ?)", params[:user_name].downcase) + q = q.where("user_id = (select _.id from users _ where lower(_.name) = ?)", params[:user_name].mb_chars.downcase) end if params[:creator_id].present? @@ -43,7 +43,7 @@ class UserFeedback < ActiveRecord::Base end if params[:creator_name].present? - q = q.where("creator_id = (select _.id from users _ where lower(_.name) = ?)", params[:creator_name].downcase) + q = q.where("creator_id = (select _.id from users _ where lower(_.name) = ?)", params[:creator_name].mb_chars.downcase) end q diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb index b991b1dd5..a372545d6 100644 --- a/app/models/wiki_page.rb +++ b/app/models/wiki_page.rb @@ -14,7 +14,7 @@ class WikiPage < ActiveRecord::Base module SearchMethods def titled(title) - where("title = ?", title.downcase.tr(" ", "_")) + where("title = ?", title.mb_chars.downcase.tr(" ", "_")) end def recent @@ -30,7 +30,7 @@ class WikiPage < ActiveRecord::Base params = {} if params.blank? if params[:title].present? - q = q.where("title LIKE ? ESCAPE E'\\\\'", params[:title].downcase.tr(" ", "_").to_escaped_for_sql_like) + q = q.where("title LIKE ? ESCAPE E'\\\\'", params[:title].mb_chars.downcase.tr(" ", "_").to_escaped_for_sql_like) end if params[:creator_id].present? @@ -102,7 +102,7 @@ class WikiPage < ActiveRecord::Base end def normalize_title - self.title = title.downcase.tr(" ", "_") + self.title = title.mb_chars.downcase.tr(" ", "_") end def creator_name @@ -156,6 +156,6 @@ class WikiPage < ActiveRecord::Base else match end - end.map {|x| x.downcase.tr(" ", "_")} + end.map {|x| x.mb_chars.downcase.tr(" ", "_")} end end