Class: Aggregation

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/aggregation.rb

Overview

Schema Information

Table name: aggregations

id           :integer(4)      not null, primary key
terms         :string(255)
title        :string(255)
description  :text
top_tags     :text
created_at   :datetime
updated_at   :datetime
ownable_id   :integer(4)
ownable_type :string(255)

Instance Method Summary collapse

Instance Method Details

#add_feeds(user = nil, service_ids = nil, refresh_services = false) ⇒ Object

Builds and then adds feeds for a given terms user: User to be associated with each feed. Default is nil which makes each feed global. service_ids: An array of service ids. Nil will generate a feed for every available service. refresh_services: By default all tag services are cached. Setting this value to true

will result in the values being repopulated from the database


34
35
36
# File 'app/models/aggregation.rb', line 34

def add_feeds(user = nil, service_ids = nil, refresh_services = false)
  safe_add_feeds(Service.create_tag_feeds(self.terms, user, service_ids, refresh_services))
end

#add_feeds_by_uri(user = nil, uris = nil) ⇒ Object



38
39
40
# File 'app/models/aggregation.rb', line 38

def add_feeds_by_uri(user = nil, uris = nil)
  safe_add_feeds(Feed.create_tag_feeds(user, uris))
end

#all_feedsObject



79
80
81
# File 'app/models/aggregation.rb', line 79

def all_feeds
  @all_feeds ||= self.feeds.find(:all, :include => :service)
end

#bookmark_feeds(refresh_services = false) ⇒ Object

Get only bookmark feeds



65
66
67
# File 'app/models/aggregation.rb', line 65

def bookmark_feeds(refresh_services = false)
  all_feeds.find_all{ |feed| feed.service.bookmark?(refresh_services) rescue nil }
end

#can_edit?(user) ⇒ Boolean

Determines whether or not he given user can edit the aggregation

Returns:

  • (Boolean)


84
85
86
87
88
89
90
# File 'app/models/aggregation.rb', line 84

def can_edit?(user)
  if ownable == user || user.admin?
    true
  else
    false
  end
end

#general_feeds(refresh_services = false) ⇒ Object

Get only general feeds (exclude all specific feeds such as photos, videos, etc)



75
76
77
# File 'app/models/aggregation.rb', line 75

def general_feeds(refresh_services = false)
  all_feeds.find_all{ |feed| feed.service.general?(refresh_services) rescue nil }
end

#music_feeds(refresh_services = false) ⇒ Object

Get only music feeds



70
71
72
# File 'app/models/aggregation.rb', line 70

def music_feeds(refresh_services = false)
  all_feeds.find_all{ |feed| feed.service.music?(refresh_services) rescue nil}
end

#photo_feeds(refresh_services = false) ⇒ Object

Get only photo feeds



55
56
57
# File 'app/models/aggregation.rb', line 55

def photo_feeds(refresh_services = false)
  all_feeds.find_all{ |feed| feed.service.photo?(refresh_services) rescue nil }
end

#safe_add_feeds(new_feeds) ⇒ Object

Only add feeds that aren’t already part of the aggregation



43
44
45
46
47
48
49
50
51
52
# File 'app/models/aggregation.rb', line 43

def safe_add_feeds(new_feeds)
  new_feeds.each do |feed|
    begin
      self.feeds << feed
    rescue ActiveRecord::RecordInvalid => ex
      # Throw away exception.  Feed already exists so we don't need to do anything.
    end
  end
  new_feeds
end

#video_feeds(refresh_services = false) ⇒ Object

Get only video feeds



60
61
62
# File 'app/models/aggregation.rb', line 60

def video_feeds(refresh_services = false)
  all_feeds.find_all{ |feed| feed.service.video?(refresh_services) rescue nil }
end