diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-01-12 12:48:07 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-01-12 12:48:07 +0000 |
commit | 75f6463c18c9d7a500c9bec40b166e9171e81fd0 (patch) | |
tree | b0e4acfad40e8fdf3962585d0f64581046620da5 | |
parent | 6a36929a1d6c27c0ca6cde4ac3fd0d687353f78c (diff) | |
download | redmine-75f6463c18c9d7a500c9bec40b166e9171e81fd0.tar.gz redmine-75f6463c18c9d7a500c9bec40b166e9171e81fd0.zip |
Fixed project visibility when memberships inheritance is enabled.
git-svn-id: http://redmine.rubyforge.org/svn/branches/work@1057 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | project_inheritance/app/models/project.rb | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/project_inheritance/app/models/project.rb b/project_inheritance/app/models/project.rb index 16f81a08b..ea369c0bf 100644 --- a/project_inheritance/app/models/project.rb +++ b/project_inheritance/app/models/project.rb @@ -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 |