From 75f6463c18c9d7a500c9bec40b166e9171e81fd0 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 12 Jan 2008 12:48:07 +0000 Subject: [PATCH] Fixed project visibility when memberships inheritance is enabled. git-svn-id: http://redmine.rubyforge.org/svn/branches/work@1057 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- project_inheritance/app/models/project.rb | 10 +++++++--- 1 file 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