| @@ -2,8 +2,8 @@ class TagsController < ApplicationController | |||||
| def index | def index | ||||
| post_id = params[:post] | post_id = params[:post] | ||||
| name = params[:name].presence | |||||
| category = params[:category].presence | |||||
| name = params[:name].to_s.strip.presence | |||||
| category = params[:category].to_s.strip.presence | |||||
| post_count_between = (params[:post_count_gte].presence || -1).to_i, | post_count_between = (params[:post_count_gte].presence || -1).to_i, | ||||
| (params[:post_count_lte].presence || -1).to_i | (params[:post_count_lte].presence || -1).to_i | ||||
| post_count_between[0] = nil if post_count_between[0] < 0 | post_count_between[0] = nil if post_count_between[0] < 0 | ||||
| @@ -36,7 +36,9 @@ class TagsController < ApplicationController | |||||
| .includes(:tag_name, tag_name: :wiki_page) | .includes(:tag_name, tag_name: :wiki_page) | ||||
| q = q.where(posts: { id: post_id }) if post_id.present? | q = q.where(posts: { id: post_id }) if post_id.present? | ||||
| q = q.where('tag_names.name LIKE ?', "%#{ name }%") if name | |||||
| if name | |||||
| q = q.where('tag_names.name LIKE ?', "%#{ ActiveRecord::Base.sanitize_sql_like(name) }%") | |||||
| end | |||||
| q = q.where(category: category) if category | q = q.where(category: category) if category | ||||
| q = q.where('tags.post_count >= ?', post_count_between[0]) if post_count_between[0] | q = q.where('tags.post_count >= ?', post_count_between[0]) if post_count_between[0] | ||||
| q = q.where('tags.post_count <= ?', post_count_between[1]) if post_count_between[1] | q = q.where('tags.post_count <= ?', post_count_between[1]) if post_count_between[1] | ||||
| @@ -77,7 +79,7 @@ class TagsController < ApplicationController | |||||
| alias_rows = | alias_rows = | ||||
| TagName | TagName | ||||
| .where('name LIKE ?', "#{ q }%") | |||||
| .where('name LIKE ?', "#{ ActiveRecord::Base.sanitize_sql_like(q) }%") | |||||
| .where.not(canonical_id: nil) | .where.not(canonical_id: nil) | ||||
| .pluck(:canonical_id, :name) | .pluck(:canonical_id, :name) | ||||
| @@ -97,7 +99,8 @@ class TagsController < ApplicationController | |||||
| base | base | ||||
| .where(((with_nico ? '(tags.category = ? AND tag_names.name LIKE ?) OR ' : '') + | .where(((with_nico ? '(tags.category = ? AND tag_names.name LIKE ?) OR ' : '') + | ||||
| 'tag_names.name LIKE ?'), | 'tag_names.name LIKE ?'), | ||||
| *(with_nico ? ['nico', "nico:#{ q }%"] : []), "#{ q }%") | |||||
| *(with_nico ? ['nico', "nico:#{ ActiveRecord::Base.sanitise_sql_like(q) }%"] : []), | |||||
| "#{ ActiveRecord::Base.sanitise_sql_like(q) }%") | |||||
| tags = | tags = | ||||
| if canonical_ids.present? | if canonical_ids.present? | ||||