| 589 |
589 |
end
|
| 590 |
590 |
groups ||= []
|
| 591 |
591 |
|
| 592 |
|
members_of_groups = groups.inject([]) do |user_ids, group|
|
| 593 |
|
user_ids + group.user_ids + [group.id]
|
| 594 |
|
end.uniq.compact.sort.collect(&:to_s)
|
|
592 |
members_of_groups = group_and_member_ids(groups)
|
| 595 |
593 |
|
| 596 |
594 |
'(' + sql_for_field("assigned_to_id", operator, members_of_groups, Issue.table_name, "assigned_to_id", false) + ')'
|
| 597 |
595 |
end
|
| ... | ... | |
| 627 |
625 |
def sql_for_author_group_field(field, operator, value)
|
| 628 |
626 |
groups = value.empty? ? Group.givable : Group.where(:id => value).to_a
|
| 629 |
627 |
|
| 630 |
|
author_groups = groups.inject([]) do |user_ids, group|
|
| 631 |
|
user_ids + group.user_ids + [group.id]
|
| 632 |
|
end.uniq.compact.sort.collect(&:to_s)
|
|
628 |
author_groups = group_and_member_ids(groups)
|
| 633 |
629 |
|
| 634 |
630 |
'(' + sql_for_field("author_id", operator, author_groups, Issue.table_name, "author_id", false) + ')'
|
| 635 |
631 |
end
|
| 636 |
632 |
|
|
633 |
# Returns the ids of the given groups and of their members as strings,
|
|
634 |
# fetching the members of all the groups with a single query
|
|
635 |
def group_and_member_ids(groups)
|
|
636 |
group_ids = groups.map(&:id)
|
|
637 |
return [] if group_ids.empty?
|
|
638 |
|
|
639 |
user_ids = User.where(
|
|
640 |
"#{User.table_name}.id IN (SELECT gu.user_id" \
|
|
641 |
" FROM #{User.table_name_prefix}groups_users#{User.table_name_suffix} gu" \
|
|
642 |
" WHERE gu.group_id IN (?))",
|
|
643 |
group_ids
|
|
644 |
).pluck(:id)
|
|
645 |
(group_ids + user_ids).uniq.compact.sort.collect(&:to_s)
|
|
646 |
end
|
|
647 |
private :group_and_member_ids
|
|
648 |
|
| 637 |
649 |
def sql_for_author_role_field(field, operator, value)
|
| 638 |
650 |
role_cond =
|
| 639 |
651 |
if value.any?
|