1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-03-11 11:43:08 +00:00

Fixed project visibility when memberships inheritance is enabled.

git-svn-id: http://redmine.rubyforge.org/svn/branches/work@1057 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2008-01-12 12:48:07 +00:00
parent 6a36929a1d
commit 75f6463c18

View File

@ -102,12 +102,16 @@ class Project < ActiveRecord::Base
end
def self.visible_by(user=nil)
active_statement = "#{Project.table_name}.status = #{Project::STATUS_ACTIVE}"
public_statement = "#{Project.table_name}.is_public = #{connection.quoted_true}"
if user && user.admin?
return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"
active_statement
elsif user && user.memberships.any?
return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE} AND (#{Project.table_name}.is_public = #{connection.quoted_true} or #{Project.table_name}.id IN (#{user.memberships.collect{|m| m.project_id}.join(',')}))"
member_statement = "#{Project.table_name}.id IN (#{user.memberships.collect{|m| m.project_id}.join(',')})"
member_statement << " OR #{Project.table_name}.parent_id IN (#{user.memberships.collect{|m| m.project_id}.join(',')})" if Setting.subprojects_inherit_members?
"#{active_statement} AND (#{public_statement} OR #{member_statement})"
else
return "#{Project.table_name}.status=#{Project::STATUS_ACTIVE} AND #{Project.table_name}.is_public = #{connection.quoted_true}"
"#{active_statement} AND #{public_statement}"
end
end