Role-based issue custom field visibility (#5037).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12012 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2013-07-13 09:20:11 +00:00
parent a74d55edd9
commit 628d05629b
41 changed files with 953 additions and 121 deletions
@@ -81,12 +81,13 @@ module Redmine
token_clauses = columns.collect {|column| "(LOWER(#{column}) LIKE ?)"}
if !options[:titles_only] && searchable_options[:search_custom_fields]
searchable_custom_field_ids = CustomField.where(:type => "#{self.name}CustomField", :searchable => true).pluck(:id)
if searchable_custom_field_ids.any?
custom_field_sql = "#{table_name}.id IN (SELECT customized_id FROM #{CustomValue.table_name}" +
searchable_custom_fields = CustomField.where(:type => "#{self.name}CustomField", :searchable => true)
searchable_custom_fields.each do |field|
sql = "#{table_name}.id IN (SELECT customized_id FROM #{CustomValue.table_name}" +
" WHERE customized_type='#{self.name}' AND customized_id=#{table_name}.id AND LOWER(value) LIKE ?" +
" AND #{CustomValue.table_name}.custom_field_id IN (#{searchable_custom_field_ids.join(',')}))"
token_clauses << custom_field_sql
" AND #{CustomValue.table_name}.custom_field_id = #{field.id})" +
" AND #{field.visibility_by_project_condition(searchable_options[:project_key], user)}"
token_clauses << sql
end
end