Class: Redmine::Activity::Fetcher

Inherits:
Object
  • Object
show all
Defined in:
lib/redmine/activity/fetcher.rb

Overview

Class used to retrieve activity events

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user, options = {}) ⇒ Fetcher

Returns a new instance of Fetcher



24
25
26
27
28
29
30
31
# File 'lib/redmine/activity/fetcher.rb', line 24

def initialize(user, options={})
  options.assert_valid_keys(:project, :with_subprojects, :author)
  @user = user
  @project = options[:project]
  @options = options

  @scope = event_types
end

Instance Attribute Details

#projectObject (readonly)

Returns the value of attribute project



22
23
24
# File 'lib/redmine/activity/fetcher.rb', line 22

def project
  @project
end

#scopeObject

Returns the value of attribute scope



22
23
24
# File 'lib/redmine/activity/fetcher.rb', line 22

def scope
  @scope
end

#userObject (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



79
80
81
# File 'lib/redmine/activity/fetcher.rb', line 79

def default_scope!
  @scope = Redmine::Activity.default_event_types
end

#event_typesObject

Returns an array of available event types



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/redmine/activity/fetcher.rb', line 34

def event_types
  return @event_types unless @event_types.nil?

  @event_types = Redmine::Activity.available_event_types
  if @project
    projects = @project.self_and_descendants
    @event_types = @event_types.select do |event_type|
      keep = false
      constantized_providers(event_type).each do |provider|
        options = provider.activity_provider_options[event_type]
        permission = options[:permission]
        unless options.key?(:permission)
          permission ||= "view_#{event_type}".to_sym
        end
        if permission
          keep |= projects.any? {|p| @user.allowed_to?(permission, p)}
        else
          keep = true
        end
      end
      keep
    end
  end
  @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



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/redmine/activity/fetcher.rb', line 85

def events(from = nil, to = nil, options={})
  e = []
  @options[:limit] = options[: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 options[:limit]
    e = e.slice(0, options[:limit])
  end
  e
end

#scope_select(&block) ⇒ Object

Yields to filter the activity scope



61
62
63
# File 'lib/redmine/activity/fetcher.rb', line 61

def scope_select(&block)
  @scope = @scope.select {|t| yield t }
end