The following ruby (jruby) and sql code will get the Announcements from RenWeb and create an RSS feed file from them. The scripts needs the JDBC ActiveRecord gem. If you have any questions on how to run this script, please write a comment below. Both files are released under the MIT license.
main.rb:
require 'rss/maker' require 'cgi' require 'rubygems' gem 'activerecord-jdbc-adapter' require 'jdbc_adapter' class AnnouncementsDistrict < ActiveRecord::Base AnnouncementsDistrict.establish_connection( :adapter => :jdbc, :username => "YOUR ODBC USERNAME", :password => "YOUR ODBC PASSWORD", :driver => "com.microsoft.sqlserver.jdbc.SQLServerDriver", :url => "jdbc:sqlserver://THE URL TO CONNECT;DatabaseName=YOUR DATABASE NAME") set_table_name("AnnouncementsDistrict") #Gets an sql query from a file def self.get_sql_query_from_file(filename, params_hash_for_sql_query = nil) fi = File.open(filename) sql_query = fi.read if params_hash_for_sql_query != nil params_hash_for_sql_query.each do |key, value| sql_query = sql_query.gsub("$P!{#{key.to_s}}", value.to_s) end end fi.close return sql_query end def self.get_announcements announcements = self.find_by_sql(get_sql_query_from_file("parents_web_announcements.sql")) end end version = "2.0" # ["0.9", "1.0", "2.0"] destination = "news.xml" # local file to write announcements = AnnouncementsDistrict.get_announcements() content = RSS::Maker.make(version) do |m| m.channel.title = "School News" m.channel.link = "http://www.yourlink.com" m.channel.description = "School News RSS" m.items.do_sort = true # sort items by date announcements.each do |item| i = m.items.new_item i.title = item.Title i.link = "http://www.yourlink.com" #replace new lines with html's
and then html escape the whole message i.description = item.Message.to_s.gsub("\n","<br/>") i.date = item.BeginDate end end File.open(destination,"w") do |f| f.write(content) end
parents_web_announcements.sql:
SELECT AnnouncementID, Title, SchoolCode, Message, BeginDate, EndDate FROM AnnouncementsDistrict where AnnouncementsDistrict."Public" = 1 and EndDate >= GetDate() order by BeginDate, AnnouncementIDPut both files in the same folder and run it as "jruby main.rb". Alternatively, you can use NetBeans to run it and/or edit it.
Comments