trabajo-afectivo/lib/i_cal.rb

65 lines
1.5 KiB
Ruby
Raw Normal View History

# Copyright (C) 2012-2013 Zammad Foundation, http://zammad-foundation.org/
class ICal
def initialize(user)
@user = user
@preferences = {}
if @user.preferences[:ical] && !@user.preferences[:ical].empty?
@preferences = @user.preferences[:ical]
end
end
def all
events_data = []
@preferences.each { |object_name, _sub_structure|
result = generic_call( object_name )
events_data = events_data + result
}
to_ical( events_data )
end
def generic(object_name, method_name = 'all')
events_data = generic_call( object_name, method_name )
to_ical( events_data )
end
def generic_call(object_name, method_name = 'all')
method_name ||= 'all'
events_data = []
if @preferences[ object_name ] && !@preferences[ object_name ].empty?
sub_class_name = object_name.to_s.capitalize
object = Object.const_get('ICal').const_get("ICal#{sub_class_name}")
instance = object.new( @user, @preferences[ object_name ] )
method = instance.method( method_name )
events_data += method.call
end
events_data
end
def to_ical(events_data)
cal = Icalendar::Calendar.new
events_data.each do |event_data|
cal.event do |e|
e.dtstart = event_data[:dtstart]
e.dtend = event_data[:dtend]
e.summary = event_data[:summary]
e.description = event_data[:description]
e.ip_class = 'PRIVATE'
end
end
cal.to_ical
end
end