class SakaiInfo::QuizItem
Attributes
dbrow[R]
quiz[R]
section[R]
sequence[R]
typeid[R]
Public Class Methods
all_serializations()
click to toggle source
# File lib/sakai-info/quiz.rb, line 706 def self.all_serializations [ :default, :mod, :texts ] end
class_for_type(type)
click to toggle source
# File lib/sakai-info/quiz.rb, line 601 def self.class_for_type(type) if type == "pending" PendingQuizItem else PublishedQuizItem end end
clear_cache()
click to toggle source
# File lib/sakai-info/quiz.rb, line 562 def self.clear_cache @@cache = {} end
count_by_quiz_id(quiz_id)
click to toggle source
# File lib/sakai-info/quiz.rb, line 631 def self.count_by_quiz_id(quiz_id) QuizItem.query_by_quiz_id(quiz_id).count end
count_by_section_id(section_id)
click to toggle source
# File lib/sakai-info/quiz.rb, line 614 def self.count_by_section_id(section_id) QuizItem.query_by_section_id(section_id).count end
find(id)
click to toggle source
# File lib/sakai-info/quiz.rb, line 577 def self.find(id) id = id.to_s if @@cache[id].nil? begin @@cache[id] = PendingQuizItem.find(id) rescue ObjectNotFoundException begin @@cache[id] = PublishedQuizItem.find(id) rescue ObjectNotFoundException raise ObjectNotFoundException.new(QuizItem, id) end end end @@cache[id] end
find_by_quiz_id(quiz_id)
click to toggle source
# File lib/sakai-info/quiz.rb, line 635 def self.find_by_quiz_id(quiz_id) item_class = QuizItem.class_for_type(Quiz.find(quiz_id).quiz_type) QuizItem.query_by_quiz_id(quiz_id).order(:sequence).all.collect do |row| item_class.new(row) end.sort { |a,b| if a.section.sequence == b.section.sequence a.sequence <=> b.sequence else a.section.sequence <=> b.section.sequence end } end
find_by_section_id(section_id)
click to toggle source
# File lib/sakai-info/quiz.rb, line 618 def self.find_by_section_id(section_id) item_class = QuizItem.class_for_type(QuizSection.find(section_id).section_type) QuizItem.query_by_section_id(section_id).all.collect do |row| item_class.new(row) end end
new(dbrow)
click to toggle source
# File lib/sakai-info/quiz.rb, line 567 def initialize(dbrow) @dbrow = dbrow @id = dbrow[:itemid] @section = QuizSection.find(dbrow[:sectionid]) @quiz = @section.quiz @sequence = dbrow[:sequence] @typeid = dbrow[:typeid] end
query_by_quiz_id(quiz_id)
click to toggle source
# File lib/sakai-info/quiz.rb, line 625 def self.query_by_quiz_id(quiz_id) table = QuizItem.table_name_for_type(Quiz.find(quiz_id).quiz_type) DB.connect[table]. where(:sectionid => Quiz.find(quiz_id).sections.collect{|s|s.id}) end
query_by_section_id(section_id)
click to toggle source
# File lib/sakai-info/quiz.rb, line 609 def self.query_by_section_id(section_id) table = QuizItem.table_name_for_type(QuizSection.find(section_id).section_type) DB.connect[table].where(:sectionid => section_id).order(:sequence) end
table_name_for_type(type)
click to toggle source
# File lib/sakai-info/quiz.rb, line 593 def self.table_name_for_type(type) if type == "pending" :sam_item_t else :sam_publisheditem_t end end
Public Instance Methods
default_serialization()
click to toggle source
# File lib/sakai-info/quiz.rb, line 666 def default_serialization { "id" => self.id, "quiz" => self.quiz.serialize(:summary), "section" => self.section.serialize(:summary), "sequence" => self.sequence, "type" => self.item_type, "typeid" => self.typeid } end
item_type()
click to toggle source
# File lib/sakai-info/quiz.rb, line 646 def item_type nil end
itemtext_table()
click to toggle source
# File lib/sakai-info/quiz.rb, line 650 def itemtext_table nil end
quiz_summary_serialization()
click to toggle source
# File lib/sakai-info/quiz.rb, line 685 def quiz_summary_serialization { "id" => self.id, "section" => self.section.sequence, "sequence" => self.sequence, } end
section_summary_serialization()
click to toggle source
# File lib/sakai-info/quiz.rb, line 693 def section_summary_serialization { "id" => self.id, "sequence" => self.sequence, } end
summary_serialization()
click to toggle source
# File lib/sakai-info/quiz.rb, line 677 def summary_serialization { "id" => self.id, "quiz_id" => self.quiz.id, "section_id" => self.section.id } end
texts()
click to toggle source
# File lib/sakai-info/quiz.rb, line 654 def texts if self.itemtext_table.nil? return [] end DB.connect[self.itemtext_table]. select(:text). where(:itemid => self.id). order(:sequence).all. collect { |row| row[:text].read } end
texts_serialization()
click to toggle source
# File lib/sakai-info/quiz.rb, line 700 def texts_serialization { "texts" => self.texts } end