5: def collect_targets(requested_target_key, need_requested_targets=false)
6: foreign_base_key = primary_key
7: return [] if foreign_base_key.nil?
8:
9: requested_targets = @owner[@options[requested_target_key], true]
10:
11: requested_targets = requested_targets.reject(&:nil?)
12: if requested_targets.empty?
13: targets = []
14: elsif foreign_base_key == "dn"
15: requested_targets = requested_targets.collect do |target|
16: if target.is_a?(DN)
17: target.to_s
18: else
19: target
20: end
21: end
22: targets = foreign_class.find(requested_targets, find_options)
23: else
24: components = requested_targets.collect do |value|
25: [foreign_base_key, value]
26: end
27: options = find_options(:filter => [:or, *components])
28: targets = foreign_class.find(:all, options)
29: end
30:
31: if need_requested_targets
32: [targets, requested_targets]
33: else
34: targets
35: end
36: end