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

Since:

  • 0.8.0



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

Since:

  • 0.8.0



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

def project
  @project
end

#scopeObject

Returns the value of attribute scope

Since:

  • 0.8.0



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

def scope
  @scope
end

#userObject (readonly)

Returns the value of attribute user

Since:

  • 0.8.0



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

Since:

  • 0.8.0



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

Since:

  • 0.8.0



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

Since:

  • 0.8.0



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

Since:

  • 0.8.0



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

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