summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-01-12 12:48:07 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-01-12 12:48:07 +0000
commit75f6463c18c9d7a500c9bec40b166e9171e81fd0 (patch)
treeb0e4acfad40e8fdf3962585d0f64581046620da5
parent6a36929a1d6c27c0ca6cde4ac3fd0d687353f78c (diff)
downloadredmine-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.rb10
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