class SakaiInfo::Site
Attributes
dbrow[R]
title[R]
type[R]
Public Class Methods
all_serializations()
click to toggle source
# File lib/sakai-info/site.rb, line 448 def self.all_serializations [ :default, :users, :pages, :groups, :quizzes, :disk, :assignments, :announcements, :gradebook, :realm, :forums, :calendar_events, :mod, ] end
clear_cache()
click to toggle source
# File lib/sakai-info/site.rb, line 22 def self.clear_cache @@cache = {} end
count()
click to toggle source
finders/counters
# File lib/sakai-info/site.rb, line 220 def self.count DB.connect[:sakai_site].count end
count_by_property(name, value)
click to toggle source
# File lib/sakai-info/site.rb, line 228 def self.count_by_property(name, value) DB.connect[:sakai_site_property]. where(:name => name, Sequel.function(:to_char, :value) => value).count end
count_by_type(type)
click to toggle source
# File lib/sakai-info/site.rb, line 282 def self.count_by_type(type) Site.query_by_type(type).count end
count_by_user_id(user_id)
click to toggle source
# File lib/sakai-info/site.rb, line 224 def self.count_by_user_id(user_id) DB.connect[:sakai_site_user].where(:user_id => user_id).count end
find(id)
click to toggle source
# File lib/sakai-info/site.rb, line 27 def self.find(id) if @@cache[id].nil? row = DB.connect[:sakai_site].where(:site_id => id).first if row.nil? raise ObjectNotFoundException.new(Site, id) end @@cache[id] = Site.new(row) end @@cache[id] end
find!(id)
click to toggle source
# File lib/sakai-info/site.rb, line 39 def self.find!(id) begin site = Site.find(id) rescue ObjectNotFoundException => e if e.classname == Site.name site = MissingSite.find(id) end end site end
find_all()
click to toggle source
# File lib/sakai-info/site.rb, line 241 def self.find_all DB.connect[:sakai_site].select(:site_id).all.collect{|row| @@cache[row[:site_id]] = Site.new(row)} end
find_all_ids()
click to toggle source
# File lib/sakai-info/site.rb, line 245 def self.find_all_ids DB.connect[:sakai_site].select(:site_id).all.collect{|r| r[:site_id]} end
find_all_non_workspace_ids()
click to toggle source
# File lib/sakai-info/site.rb, line 254 def self.find_all_non_workspace_ids DB.connect[:sakai_site].select(:site_id). where(~Sequel.like(:site_id, "~%")).all.collect{|r| r[:site_id]} end
find_all_workspace_ids()
click to toggle source
# File lib/sakai-info/site.rb, line 249 def self.find_all_workspace_ids DB.connect[:sakai_site].select(:site_id). where(Sequel.like(:site_id, "~%")).all.collect{|r| r[:site_id]} end
find_by_title(title)
click to toggle source
# File lib/sakai-info/site.rb, line 269 def self.find_by_title(title) Site.query_by_title(title).all.collect{|row| @@cache[row[:site_id]] = Site.new(row)} end
find_by_type(type)
click to toggle source
# File lib/sakai-info/site.rb, line 286 def self.find_by_type(type) Site.query_by_type(type).all.collect{|row| @@cache[row[:site_id]] = Site.new(row)} end
find_ids_by_property(property_name, property_value)
click to toggle source
# File lib/sakai-info/site.rb, line 233 def self.find_ids_by_property(property_name, property_value) SiteProperty.find_site_ids_by_property(property_name, property_value) end
find_ids_by_semester(term_eid)
click to toggle source
# File lib/sakai-info/site.rb, line 237 def self.find_ids_by_semester(term_eid) Site.find_ids_by_property("term_eid", term_eid) end
find_ids_by_title(title)
click to toggle source
# File lib/sakai-info/site.rb, line 273 def self.find_ids_by_title(title) Site.query_by_title(title).select(:site_id).all.collect{|row|row[:site_id]} end
find_ids_by_type(type)
click to toggle source
# File lib/sakai-info/site.rb, line 259 def self.find_ids_by_type(type) DB.connect[:sakai_site].select(:site_id). where(:type => type).all.collect{|r| r[:site_id]} end
new(dbrow)
click to toggle source
# File lib/sakai-info/site.rb, line 50 def initialize(dbrow) @dbrow = dbrow @id = dbrow[:site_id] @title = dbrow[:title] @type = dbrow[:type] @is_joinable = (dbrow[:joinable].to_i == 1) @is_published = (dbrow[:published].to_i == 1) @join_role_string = dbrow[:join_role].to_s end
query_by_title(title)
click to toggle source
by_title: uses like
# File lib/sakai-info/site.rb, line 265 def self.query_by_title(title) DB.connect[:sakai_site].where("upper(title) like ?", "%#{title.upcase}%") end
query_by_type(type)
click to toggle source
by_type queries
# File lib/sakai-info/site.rb, line 278 def self.query_by_type(type) DB.connect[:sakai_site].where(:type => type) end
Public Instance Methods
announcement_channel()
click to toggle source
announcement properties
# File lib/sakai-info/site.rb, line 122 def announcement_channel if @announcement_channel.nil? begin @announcement_channel = AnnouncementChannel.find_by_site_id(self.id) rescue ObjectNotFoundException @announcement_channel = -1 return nil end elsif @announcement_channel == -1 return nil end @announcement_channel end
announcement_count()
click to toggle source
# File lib/sakai-info/site.rb, line 141 def announcement_count return 0 if self.announcement_channel.nil? @announcement_count ||= self.announcement_channel.announcement_count end
announcements()
click to toggle source
# File lib/sakai-info/site.rb, line 136 def announcements return nil if self.announcement_channel.nil? @announcements ||= self.announcement_channel.announcements end
announcements_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 406 def announcements_serialization if self.announcement_count > 0 { "announcements" => self.announcements.collect { |annc| annc.serialize(:summary) } } else {} end end
assignment_count()
click to toggle source
# File lib/sakai-info/site.rb, line 99 def assignment_count @assignment_count ||= Assignment.count_by_site_id(@id) end
assignments()
click to toggle source
# File lib/sakai-info/site.rb, line 85 def assignments @assignments ||= Assignment.find_by_site_id(@id) end
assignments_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 396 def assignments_serialization if self.assignment_count > 0 { "assignments" => self.assignments.collect { |asn| asn.serialize(:summary) } } else {} end end
attachment_storage()
click to toggle source
# File lib/sakai-info/site.rb, line 195 def attachment_storage attachment_collection_id = "/attachment/#{@id}/" @attachment_storage ||= ContentCollection.find!(attachment_collection_id) end
calendar()
click to toggle source
calendar
# File lib/sakai-info/site.rb, line 178 def calendar @calendar ||= Calendar.find!(@id) end
calendar_event_count()
click to toggle source
# File lib/sakai-info/site.rb, line 182 def calendar_event_count @calendar_event_count ||= self.calendar.event_count end
calendar_events_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 442 def calendar_events_serialization { "calendar_events" => self.calendar.events.collect { |e| e.serialize(:summary) } } end
default_serialization()
click to toggle source
serialization methods
# File lib/sakai-info/site.rb, line 292 def default_serialization result = { "id" => self.id, "title" => self.title, "type" => self.type, "is_published" => self.published?, "site_properties" => self.properties, "providers" => self.realm.providers, "is_joinable" => self.joinable?, "join_role" => (self.joinable? ? self.join_role.name : nil), "user_count" => self.user_count, "group_count" => self.group_count, "page_count" => self.page_count, "pending_quiz_count" => self.pending_quiz_count, "published_quiz_count" => self.published_quiz_count, "assignment_count" => self.assignment_count, "announcement_count" => self.announcement_count, "gradebook_item_count" => (self.gradebook.nil? ? 0 : self.gradebook.item_count), "forum_count" => self.forum_count, "calendar_event_count" => self.calendar_event_count, } if result["providers"].nil? or result["providers"] == "" or result["providers"] == [] result.delete("providers") end if result["is_joinable"] == false result.delete("join_role") end if result["site_properties"] == {} result.delete("site_properties") end if self.gradebook.nil? result.delete("gradebook_item_count") end result end
disk_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 386 def disk_serialization result = disk_unformatted_serialization["disk_usage"] result.keys.each do |key| result[key] = Util.format_filesize(result[key]) end { "disk_usage" => result } end
disk_unformatted_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 371 def disk_unformatted_serialization { "disk_usage" => { "resources" => self.resource_storage.size_on_disk, "attachments" => self.attachment_storage.size_on_disk, "melete" => self.melete_storage.size_on_disk, "dropbox" => self.dropbox_storage.size_on_disk, "total" => (self.resource_storage.size_on_disk + self.attachment_storage.size_on_disk + self.melete_storage.size_on_disk + self.dropbox_storage.size_on_disk) } } end
disk_usage_csv()
click to toggle source
generate a CSV line for disk usage reporting
# File lib/sakai-info/site.rb, line 215 def disk_usage_csv "#{@id},#{@type},#{resource_storage.size_on_disk},#{attachment_storage.size_on_disk},#{melete_storage.size_on_disk},#{dropbox_storage.size_on_disk},#{total_disk_usage}" end
dropbox_storage()
click to toggle source
# File lib/sakai-info/site.rb, line 205 def dropbox_storage dropbox_collection_id = "/group-user/#{@id}/" @dropbox_storage ||= ContentCollection.find!(dropbox_collection_id) end
forum_count()
click to toggle source
forum properties
# File lib/sakai-info/site.rb, line 169 def forum_count @forum_count ||= Forum.count_by_site_id(@id) end
forums()
click to toggle source
# File lib/sakai-info/site.rb, line 173 def forums @forums ||= Forum.find_by_site_id(@id) end
forums_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 432 def forums_serialization if self.forum_count > 0 { "forums" => self.forums.collect { |fr| fr.serialize(:summary) } } else {} end end
gradebook()
click to toggle source
gradebook properties
# File lib/sakai-info/site.rb, line 164 def gradebook @gradebook ||= Gradebook.find_by_site_id(@id).first end
gradebook_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 416 def gradebook_serialization if self.gradebook { "gradebook" => self.gradebook.serialize(:site_summary, :items) } else {} end end
group_count()
click to toggle source
group properties
# File lib/sakai-info/site.rb, line 113 def group_count @group_count ||= Group.count_by_site_id(@id) end
groups()
click to toggle source
# File lib/sakai-info/site.rb, line 117 def groups @groups ||= Group.find_by_site_id(@id) end
groups_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 349 def groups_serialization { "groups" => self.groups.collect { |grp| grp.serialize(:summary) } } end
join_role()
click to toggle source
# File lib/sakai-info/site.rb, line 69 def join_role @join_role_string end
joinable?()
click to toggle source
# File lib/sakai-info/site.rb, line 61 def joinable? @is_joinable end
melete_storage()
click to toggle source
# File lib/sakai-info/site.rb, line 200 def melete_storage melete_collection_id = "/private/meleteDocs/#{@id}/" @melete_storage ||= ContentCollection.find!(melete_collection_id) end
membership()
click to toggle source
# File lib/sakai-info/site.rb, line 77 def membership @membership ||= SiteMembership.find_by_site_id(@id) end
page_count()
click to toggle source
# File lib/sakai-info/site.rb, line 94 def page_count @page_count ||= DB.connect[:sakai_site_page].filter(:site_id => @id).count end
pages()
click to toggle source
# File lib/sakai-info/site.rb, line 81 def pages @pages ||= Page.find_by_site_id(@id) end
pages_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 343 def pages_serialization { "pages" => self.pages.collect { |pg| pg.serialize(:site_summary) } } end
pending_quiz_count()
click to toggle source
# File lib/sakai-info/site.rb, line 151 def pending_quiz_count @pending_quiz_count ||= PendingQuiz.count_by_site_id(@id) end
pending_quizzes()
click to toggle source
# File lib/sakai-info/site.rb, line 159 def pending_quizzes @pending_quizzes ||= PendingQuiz.find_by_site_id(@id) end
properties()
click to toggle source
# File lib/sakai-info/site.rb, line 73 def properties @properties ||= SiteProperty.find_by_site_id(@id) end
published?()
click to toggle source
# File lib/sakai-info/site.rb, line 65 def published? @is_published end
published_quiz_count()
click to toggle source
samigo quiz properties
# File lib/sakai-info/site.rb, line 147 def published_quiz_count @published_quiz_count ||= PublishedQuiz.count_by_site_id(@id) end
published_quizzes()
click to toggle source
# File lib/sakai-info/site.rb, line 155 def published_quizzes @published_quizzes ||= PublishedQuiz.find_by_site_id(@id) end
quizzes_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 355 def quizzes_serialization result = {} if self.pending_quiz_count > 0 or self.published_quiz_count > 0 result["quizzes"] = {} end if self.pending_quiz_count > 0 result["quizzes"]["pending"] = self.pending_quizzes.collect { |pq| pq.serialize(:site_summary) } end if self.published_quiz_count > 0 result["quizzes"]["published"] = self.published_quizzes.collect { |pq| pq.serialize(:site_summary) } end result end
realm()
click to toggle source
authz/realm properties
# File lib/sakai-info/site.rb, line 104 def realm @authz_realm ||= AuthzRealm.find_by_site_id(@id) end
realm_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 426 def realm_serialization { "realm_roles" => self.realm.realm_roles.collect { |rr| rr.serialize(:summary) } } end
resource_storage()
click to toggle source
content properties
# File lib/sakai-info/site.rb, line 187 def resource_storage resource_collection_id = "/group/#{@id}/" if @type == "myworkspace" or @type == "guestworkspace" resource_collection_id = "/user/#{@id.sub(/^~/,'')}" end @resource_storage ||= ContentCollection.find!(resource_collection_id) end
summary_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 328 def summary_serialization { "id" => self.id, "title" => self.title, "type" => self.type, "created_by" => self.created_by.eid } end
total_disk_usage()
click to toggle source
# File lib/sakai-info/site.rb, line 210 def total_disk_usage resource_storage.size_on_disk + attachment_storage.size_on_disk + melete_storage.size_on_disk + dropbox_storage.size_on_disk end
user_count()
click to toggle source
# File lib/sakai-info/site.rb, line 89 def user_count @user_count ||= DB.connect[:sakai_site_user].filter(:site_id => @id).count end
users_serialization()
click to toggle source
# File lib/sakai-info/site.rb, line 337 def users_serialization { "users" => self.membership.collect { |sm| sm.serialize(:site_summary) } } end