class SakaiInfo::AnnouncementChannel

Attributes

dbrow[R]

Public Class Methods

all_serializations() click to toggle source
# File lib/sakai-info/announcement.rb, line 98
def self.all_serializations
  [
   :default,
   :xml,
   :announcements,
  ]
end
clear_cache() click to toggle source
# File lib/sakai-info/announcement.rb, line 16
def self.clear_cache
  @@cache = {}
  @@site_cache = {}
end
find(id) click to toggle source
# File lib/sakai-info/announcement.rb, line 27
def self.find(id)
  if @@cache[id].nil?
    xml = ""
    row = DB.connect[:announcement_channel].where(:channel_id => id).first
    if row.nil?
      raise ObjectNotFoundException.new(AnnouncementChannel, id)
    end
    @@cache[id] = AnnouncementChannel.new(row)
    @@site_cache[@@cache[id].site_id] = @@cache[id]
  end
  @@cache[id]
end
find_by_site_id(site_id) click to toggle source
# File lib/sakai-info/announcement.rb, line 40
def self.find_by_site_id(site_id)
  @@site_cache[site_id] ||=
    if site_id == "!site"
      self.find("/announcement/channel/#{site_id}/motd")
    else
      self.find("/announcement/channel/#{site_id}/main")
    end
end
new(dbrow) click to toggle source
# File lib/sakai-info/announcement.rb, line 22
def initialize(dbrow)
  @dbrow = dbrow
  @id = dbrow[:channel_id]
end

Public Instance Methods

announcement_count() click to toggle source
# File lib/sakai-info/announcement.rb, line 54
def announcement_count
  @announcement_count ||= Announcement.count_by_channel_id(@id)
end
announcements() click to toggle source

lazy properties

# File lib/sakai-info/announcement.rb, line 50
def announcements
  @announcements ||= Announcement.find_by_channel_id(@id)
end
announcements_serialization() click to toggle source
# File lib/sakai-info/announcement.rb, line 92
def announcements_serialization
  {
    "announcements" => self.announcements.collect { |ann| ann.serialize(:summary) }
  }
end
default_serialization() click to toggle source

serialization

# File lib/sakai-info/announcement.rb, line 71
def default_serialization
  {
    "id" => self.id,
    "site_id" => self.site_id,
    "announcement_count" => self.announcement_count
  }
end
site_id() click to toggle source
# File lib/sakai-info/announcement.rb, line 58
def site_id
  @site_id ||= @id.split("/")[3]
end
summary_serialization() click to toggle source
# File lib/sakai-info/announcement.rb, line 79
def summary_serialization
  {
    "id" => self.id,
    "announcement_count" => self.announcement_count
  }
end
xml() click to toggle source
# File lib/sakai-info/announcement.rb, line 62
def xml
  if @xml.nil?
    @xml = ""
    REXML::Document.new(@dbrow[:xml].read).write(@xml, 2)
  end
  @xml
end
xml_serialization() click to toggle source
# File lib/sakai-info/announcement.rb, line 86
def xml_serialization
  {
    "xml" => self.xml
  }
end