Patch #23196 ยป 0001-Eliminate-subselect-in-Project.allowed_to_condition-.patch
| app/models/project.rb | ||
|---|---|---|
| 181 | 181 |
base_statement = (perm && perm.read? ? "#{Project.table_name}.status <> #{Project::STATUS_ARCHIVED}" : "#{Project.table_name}.status = #{Project::STATUS_ACTIVE}")
|
| 182 | 182 |
if perm && perm.project_module |
| 183 | 183 |
# If the permission belongs to a project module, make sure the module is enabled |
| 184 |
base_statement << " AND #{Project.table_name}.id IN (SELECT em.project_id FROM #{EnabledModule.table_name} em WHERE em.name='#{perm.project_module}')"
|
|
| 184 |
project_ids_with_module_enabled = EnabledModule.where(name: perm.project_module).pluck(:project_id) |
|
| 185 |
if project_ids_with_module_enabled.present? |
|
| 186 |
base_statement << " AND #{Project.table_name}.id IN (#{project_ids_with_module_enabled.join ','})"
|
|
| 187 |
else |
|
| 188 |
base_statement << " AND 1=0" |
|
| 189 |
end |
|
| 185 | 190 |
end |
| 186 | 191 |
if project = options[:project] |
| 187 | 192 |
project_statement = project.project_condition(options[:with_subprojects]) |