Module: Redmine::Acts::ActivityProvider::InstanceMethods::ClassMethods

Defined in:
vendor/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb

Instance Method Summary

Instance Method Details

- (Object) find_events(event_type, user, from, to, options)

Returns events of type event_type visible by user that occured between from and to



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'vendor/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb', line 54

def find_events(event_type, user, from, to, options)
  provider_options = activity_provider_options[event_type]
  raise "#{self.name} can not provide #{event_type} events." if provider_options.nil?
  
  scope_options = {}
  cond = ARCondition.new
  if from && to
    cond.add(["#{provider_options[:timestamp]} BETWEEN ? AND ?", from, to])
  end
  if options[:author]
    return [] if provider_options[:author_key].nil?
    cond.add(["#{provider_options[:author_key]} = ?", options[:author].id])
  end
  cond.add(Project.allowed_to_condition(user, provider_options[:permission], options)) if provider_options[:permission]
  scope_options[:conditions] = cond.conditions
  if options[:limit]
    # id and creation time should be in same order in most cases
    scope_options[:order] = "#{table_name}.id DESC"
    scope_options[:limit] = options[:limit]
  end
  
  with_scope(:find => scope_options) do
    find(:all, provider_options[:find_options].dup)
  end
end