Class: Redmine::Activity::Fetcher
- Inherits:
-
Object
- Object
- Redmine::Activity::Fetcher
- Defined in:
- lib/redmine/activity/fetcher.rb
Overview
Class used to retrieve activity events
Constant Summary collapse
- @@constantized_providers =
Needs to be unloaded in development mode
Hash.new {|h,k| h[k] = Redmine::Activity.providers[k].collect {|t| t.constantize } }
Instance Attribute Summary collapse
-
#project ⇒ Object
readonly
Returns the value of attribute project.
-
#scope ⇒ Object
Returns the value of attribute scope.
-
#user ⇒ Object
readonly
Returns the value of attribute user.
Instance Method Summary collapse
-
#default_scope! ⇒ Object
Resets the scope to the default scope.
-
#event_types ⇒ Object
Returns an array of available event types.
-
#events(from = nil, to = nil, options = {}) ⇒ Object
Returns an array of events for the given date range sorted in reverse chronological order.
-
#initialize(user, options = {}) ⇒ Fetcher
constructor
A new instance of Fetcher.
-
#scope_select(&block) ⇒ Object
Yields to filter the activity scope.
Constructor Details
#initialize(user, options = {}) ⇒ Fetcher
Returns a new instance of Fetcher.
27 28 29 30 31 32 33 34 |
# File 'lib/redmine/activity/fetcher.rb', line 27 def initialize(user, ={}) .assert_valid_keys(:project, :with_subprojects, :author) @user = user @project = [:project] @options = @scope = event_types end |
Instance Attribute Details
#project ⇒ Object (readonly)
Returns the value of attribute project.
22 23 24 |
# File 'lib/redmine/activity/fetcher.rb', line 22 def project @project end |
#scope ⇒ Object
Returns the value of attribute scope.
22 23 24 |
# File 'lib/redmine/activity/fetcher.rb', line 22 def scope @scope end |
#user ⇒ Object (readonly)
Returns the value of attribute user.
22 23 24 |
# File 'lib/redmine/activity/fetcher.rb', line 22 def user @user end |
Instance Method Details
#default_scope! ⇒ Object
Resets the scope to the default scope
64 65 66 |
# File 'lib/redmine/activity/fetcher.rb', line 64 def default_scope! @scope = Redmine::Activity.default_event_types end |
#event_types ⇒ Object
Returns an array of available event types
37 38 39 40 41 42 43 |
# File 'lib/redmine/activity/fetcher.rb', line 37 def event_types return @event_types unless @event_types.nil? @event_types = Redmine::Activity.available_event_types @event_types = @event_types.select {|o| @project.self_and_descendants.detect {|p| @user.allowed_to?("view_#{o}".to_sym, p)}} if @project @event_types end |
#events(from = nil, to = nil, options = {}) ⇒ Object
Returns an array of events for the given date range sorted in reverse chronological order
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/redmine/activity/fetcher.rb', line 70 def events(from = nil, to = nil, ={}) e = [] @options[:limit] = [:limit] @scope.each do |event_type| constantized_providers(event_type).each do |provider| e += provider.find_events(event_type, @user, from, to, @options) end end e.sort! {|a,b| b.event_datetime <=> a.event_datetime} if [:limit] e = e.slice(0, [:limit]) end e end |
#scope_select(&block) ⇒ Object
Yields to filter the activity scope
46 47 48 |
# File 'lib/redmine/activity/fetcher.rb', line 46 def scope_select(&block) @scope = @scope.select {|t| yield t } end |