Mercurial > hg > soundsoftware-site
diff app/models/issue_custom_field.rb @ 1517:dffacf8a6908 redmine-2.5
Update to Redmine SVN revision 13367 on 2.5-stable branch
author | Chris Cannam |
---|---|
date | Tue, 09 Sep 2014 09:29:00 +0100 |
parents | e248c7af89ec |
children |
line wrap: on
line diff
--- a/app/models/issue_custom_field.rb Tue Sep 09 09:28:31 2014 +0100 +++ b/app/models/issue_custom_field.rb Tue Sep 09 09:29:00 2014 +0100 @@ -28,13 +28,14 @@ super || (roles & user.roles_for_project(project)).present? end - def visibility_by_project_condition(*args) + def visibility_by_project_condition(project_key=nil, user=User.current, id_column=nil) sql = super - additional_sql = "#{Issue.table_name}.tracker_id IN (SELECT tracker_id FROM #{table_name_prefix}custom_fields_trackers#{table_name_suffix} WHERE custom_field_id = #{id})" - unless is_for_all? - additional_sql << " AND #{Issue.table_name}.project_id IN (SELECT project_id FROM #{table_name_prefix}custom_fields_projects#{table_name_suffix} WHERE custom_field_id = #{id})" - end - "((#{sql}) AND (#{additional_sql}))" + id_column ||= id + tracker_condition = "#{Issue.table_name}.tracker_id IN (SELECT tracker_id FROM #{table_name_prefix}custom_fields_trackers#{table_name_suffix} WHERE custom_field_id = #{id_column})" + project_condition = "EXISTS (SELECT 1 FROM #{CustomField.table_name} ifa WHERE ifa.is_for_all = #{connection.quoted_true} AND ifa.id = #{id_column})" + + " OR #{Issue.table_name}.project_id IN (SELECT project_id FROM #{table_name_prefix}custom_fields_projects#{table_name_suffix} WHERE custom_field_id = #{id_column})" + + "((#{sql}) AND (#{tracker_condition}) AND (#{project_condition}))" end def validate_custom_field