# encoding: utf-8 require "net/http" require "uri" require 'json' require 'yaml' class Admin::ImportController < OrbitAdminController layout "structure" before_filter :get_user @@import_stats = {} @@thread = nil def check_url params['url'] = params['url']+"/" if params['url'].last!="/" uri = URI.parse(params['url']) begin @host = uri.host http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) data = response.body data = JSON.parse(data) msg = data['status'] rescue msg = "Failed to connect to RSS2 (#{uri.to_s})" end render :json=>{"status"=>msg} end def module_categories module_app = ModuleApp.find_by(:key=>params['module']) uri = URI.parse(params['url']) http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) data = response.body categories = JSON.parse(data) I18n.locale = :zh_tw categories.each do |id, category| old_cate = module_app.categories.where(:title => category["zh_tw"]).first if old_cate.nil? cat = Category.new cat.title_translations = category cat.save! module_app.categories << cat categories[id]['id'] = cat.id.to_s else categories[id]['id'] = old_cate.id.to_s end end render :json=>categories end def module_data_list uri = URI.parse(params['url']) http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) data = response.body data = JSON.parse(data) render :json=>data end def module_data uri = URI.parse(params['url']) @host = uri.host http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) data = response.body data = JSON.parse(data) case params['module'] when 'archive' import_archive(data) when 'announcement' import_announcement(data) end render :json=>['status'=>'ok'] end def import_archive(file) archive_file = ArchiveFile.where(:rss2_sn=>file['Sn']).first if archive_file.nil? archive_file = ArchiveFile.new archive_file.rss2_sn = file['Sn'] else archive_file.archive_file_multiples.destroy_all end archive_file.title_translations = file['title'] archive_file.sort_number = file['sort_number'] archive_file.category = Category.find(params["category"]) archive_file.create_user_id = current_user.id archive_file.update_user_id = current_user.id archive_file.save if(file['url']) archive = ArchiveFileMultiple.new({ :file_title_translations=>file['title'], :choose_lang => @site_valid_locales, :remote_file_url => file['url'], :sort_number=>file['sort_number'] }) archive.save archive_file.archive_file_multiples << archive end if(file['url2']) archive = ArchiveFileMultiple.new({ :file_title_translations=>file['title'], :choose_lang => @site_valid_locales, :remote_file_url => file['url2'], :sort_number=>file['sort_number'] }) archive.save archive_file.archive_file_multiples << archive end end def import_announcement(news) bulletin = Bulletin.where(:rss2_sn=>news['Sn']).first if bulletin.nil? bulletin = Bulletin.new bulletin.rss2_sn = news['Sn'] else bulletin.bulletin_links.destroy_all bulletin.bulletin_files.destroy_all end bulletin.update_user = current_user bulletin.title_translations = news['Title'] bulletin.subtitle_translations = news['Summary'] @site_valid_locales.each do |locale| locale = locale.to_s if news['Content'][locale]=="" and news['Summary'][locale]!="" news['Content'][locale] = news['Summary'][locale] news['Summary'][locale] = " " end temp = news['Content'][locale] urls = Nokogiri::HTML(temp).css("img").map do |link| if URI.parse(link.attr("src")).host == @host link.attr("src") end end urls.each do |url| next if url.nil? a = Asset.new a.remote_data_url = url a.title_translations = {"en" => a.data.filename, "zh_tw" => a.data.filename} if(a.save! rescue false) temp.gsub!(CGI::escapeHTML(url), "#") else @user.assets << a temp.gsub!(CGI::escapeHTML(url), a.data.to_s) end end news['Content'][locale] = temp end bulletin.text_translations = news['Content'] bulletin.category = Category.find(params["category"]) bulletin.view_count = news["Visits"].blank? ? 0 : news["Visits"] bulletin.postdate = news["PostDate"] bulletin.deadline = news['Deadline'] bulletin.remote_image_url = news["Pic"] if news["Pic"] if news["URL"] && news['URL'] != "" bl = BulletinLink.new bl.url = news["URL"] bl.title_translations = {"en" => "Link", "zh_tw" => "Link"} if (bl.save! rescue false) bulletin.bulletin_links << bl end end news['files'].each do |f| bf = BulletinFile.new if f['url'].split('title=').size == 1 f['url'] = f['url']+"檔案下載" end f['title'] = "檔案下載" if f['title'].blank? bf.remote_file_url = f['url'] bf.title_translations = {"en" => f['title'], "zh_tw" => f['title']} bf.save! # Rename uploaded file file_ext = File.extname(f['url'].split('&')[0]) file = File.new("tmp/uploads/#{bf.title}#{file_ext}","w+b") file.write(bf.file.read) bf.file.cache!(file) if (bf.save! rescue false) bulletin.bulletin_files << bf end File.delete(file) end bulletin.save! end def rss2_pages delete_import_file uri = URI.parse(params['url']) # @@thread = Thread.new do http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) data = response.body data = JSON.parse(data) pages = data["pages"] @@import_stats["total_pages"] = data["total_pages"].to_i @@import_stats["current_status"] = 0 @@import_stats["success"] = true write_to_file pages.each do |page| @@import_stats["current_page"] = page["page_id"] @@import_stats["current_page_name"] = page["title"]["zh_tw"] write_to_file if Page.where(:rss2_id => page["page_id"]).count == 0 page_id = page["page_id"] number = 0 while page_present?page_id page_id = page_id + "_" + (number + 1).to_s end p = Page.new(:page_id => page_id, :parent_page_id => Page.root.id, :page_type => "page", :url => "/#{page_id}", :module => "page_content", :enabled_for => ["en", "zh_tw"], :menu_enabled_for => ["en", "zh_tw"], :enabled_for_sitemap => ["en","zh_tw"], :name_translations => {"en"=>page["title"]["en"], "zh_tw" => page["title"]["zh_tw"]},:rss2_id => page["page_id"]) p.save en = smart_downloader(page["content"]["en"],data["site_url"]) zh_tw = smart_downloader(page["content"]["zh_tw"],data["site_url"]) page_context = PageContext.new(:content_translations => {"en" => en,"zh_tw" => zh_tw}, :version => 1, :update_user_id => current_user.id, :page_id => p.id) page_context.save else p = Page.find_by(:rss2_id => page["page_id"]) page_id = p.page_id end @@import_stats["current_status"] = @@import_stats["current_status"] + 1 write_to_file if !page["childpages"].blank? childpages = page["childpages"] childpages.each_with_index do |childpage,i| @@import_stats["current_page"] = childpage["page_id"] @@import_stats["current_page_name"] = page["title"]["zh_tw"] write_to_file if Page.where(:rss2_id => childpage["page_id"]).count == 0 p_id = page_id + "_" + i.to_s case childpage["type"] when "page" cp = Page.new(:page_id => p_id, :parent_page_id => p.id, :page_type => "page", :url => "/#{p.page_id}/#{p_id}", :module => "page_content", "enabled_for" => ["en", "zh_tw"], :menu_enabled_for => ["en", "zh_tw"], :enabled_for_sitemap => ["en","zh_tw"], :name_translations => {"en"=>childpage["title"]["en"], "zh_tw" => childpage["title"]["zh_tw"]},:rss2_id => childpage["page_id"]) cp.save en = smart_downloader(childpage["content"]["en"],data["site_url"]) zh_tw = smart_downloader(childpage["content"]["zh_tw"],data["site_url"]) page_context = PageContext.new(:content_translations => {"en" => en,"zh_tw" => zh_tw}, :version => 1, :update_user_id => current_user.id, :page_id => cp.id) page_context.save when "exturl" cp = Page.new(:page_id => p_id, :parent_page_id => p.id, :page_type => "link", "url" => "/#{p.page_id}/#{p_id}", :enabled_for => ["en", "zh_tw"], :menu_enabled_for => ["en", "zh_tw"], :enabled_for_sitemap => ["en","zh_tw"], :name_translations => {"en"=>childpage["title"]["en"], "zh_tw" => childpage["title"]["zh_tw"]}, :external_url_translations => {"en" => childpage["url"], "zh_tw" => childpage["url"]},:rss2_id => childpage["page_id"]) cp.save when "file" asset = Asset.new asset.remote_data_url = childpage["filename"] asset.title_translations = {"en" => childpage["file_title"], "zh_tw" =>childpage["file_title"]} asset.save! @user.assets << asset @user.save external_url = asset.data.url cp = Page.new(:page_id => p_id, :parent_page_id => p.id, :page_type => "link", "url" => "/#{p.page_id}/#{p_id}", :enabled_for => ["en", "zh_tw"], :menu_enabled_for => ["en", "zh_tw"], :enabled_for_sitemap => ["en","zh_tw"], :name_translations => {"en"=>childpage["title"]["en"], "zh_tw" => childpage["title"]["zh_tw"]}, :external_url_translations => {"en" => external_url, "zh_tw" => external_url},:rss2_id => childpage["page_id"]) cp.save end end @@import_stats["current_status"] = @@import_stats["current_status"] + 1 write_to_file end end end # end # @@thread.join # @@thread.abort_on_exception = true render :json => {"success"=>true}.to_json end def get_import_status settings = get_settings_from_import_file render :json => settings.to_json end def rss2_members uri = URI.parse(params['url']) # @@thread = Thread.new do http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) data = response.body data = JSON.parse(data) @@import_stats["total_members"] = data["users"].count @@import_stats["current_status"] = 0 @@import_stats["success"] = true write_to_file members = data["users"] members.each do |member| @@import_stats["current_member"] = member["user_id"] @@import_stats["current_member_name"] = member["primary_email"] write_to_file check_member = MemberProfile.find_by(rss2_id: member["rss2_id"]) rescue nil if check_member.nil? new_member = MemberProfile.new(email: member["primary_email"], rss2_id: member["rss2_id"], sid: member["sid"], office_tel: member["phone_office"],) new_member.autobiography_translations = {"en"=>member["bio"]["en"],"zh_tw"=>member["bio"]["zh-tw"]} new_member.address_translations = {"en"=>member["address_office"]["en"],"zh_tw"=>member["address_office"]["zh-tw"]} new_member.first_name_translations = {"en"=>member["name"]["en"],"zh_tw"=>member["name"]["zh-tw"]} if member["gender"] == "M" new_member.sex = "male" elsif member["gender"] == "F" new_member.sex = "female" elsif member["gender"].nil? new_member.sex = "unknown" end if member["profile_pic"].present? image_url = member["profile_pic"] new_member.remote_avatar_url = image_url end info = MemberInfo.find_by(key: "basic_info") rescue nil if info.nil? info = MemberInfo.new(key: "basic_info", title_translations: {"en"=>"Basic Info","zh_tw"=>"Basic Info"}) info.save end if member.include?("website") member_profile_field = info.member_profile_fields.find_by(key: "website") rescue nil if member_profile_field.nil? field = info.member_profile_fields.build(key: "website",markup: "text_field",title_translations:{"en"=>"website","zh_tw"=>"網站"}) field.save value = field.member_profile_field_values.build value.member_profile_id = new_member.id value.value = {"en"=>member["website"],"zh_tw"=>member["website"]} value.save elsif (member_profile_field.present? && member_profile_field.member_profile_field_values.blank?) value = member_profile_field.member_profile_field_values.build value.member_profile_id = new_member.id value.value = {"en"=>member["website"],"zh_tw"=>member["website"]} value.save end end if member.include?("address_home") member_profile_field = info.member_profile_fields.find_by(key: "address_home") rescue nil if member_profile_field.nil? field = info.member_profile_fields.build(key: "address_home",markup: "text_area",title_translations:{"en"=>"Home Address","zh_tw"=>"家庭住址"}) field.save value = field.member_profile_field_values.build value.member_profile_id = new_member.id value.value = {"en"=>member["address_home"]["en"],"zh_tw"=>member["address_home"]["zh-tw"]} value.save elsif (member_profile_field.present? && member_profile_field.member_profile_field_values.blank?) value = member_profile_field.member_profile_field_values.build value.member_profile_id = new_member.id value.value = {"en"=>member["address_home"]["en"],"zh_tw"=>member["address_home"]["zh-tw"]} value.save end end if member.include?("fax") member_profile_field = info.member_profile_fields.find_by(key: "fax") rescue nil if member_profile_field.nil? field = info.member_profile_fields.build(key: "fax",markup: "text_field",title_translations:{"en"=>"Fax","zh_tw"=>"傳真"}) field.save value = field.member_profile_field_values.build value.member_profile_id = new_member.id value.value = {"en"=>member["fax"],"zh_tw"=>member["fax"]} value.save elsif (member_profile_field.present? && member_profile_field.member_profile_field_values.blank?) value = member_profile_field.member_profile_field_values.build value.member_profile_id = new_member.id value.value = {"en"=>member["fax"],"zh_tw"=>member["fax"]} value.save end end if member.include?("experience") member_profile_field = info.member_profile_fields.find_by(key: "experience") rescue nil if member_profile_field.nil? field = info.member_profile_fields.build(key: "experience",markup: "text_area",title_translations:{"en"=>"Experience","zh_tw"=>"經驗"}) field.save value = field.member_profile_field_values.build value.member_profile_id = new_member.id value.value = {"en"=>member["experience"]["en"],"zh_tw"=>member["experience"]["zh-tw"]} value.save elsif (member_profile_field.present? && member_profile_field.member_profile_field_values.blank?) value = member_profile_field.member_profile_field_values.build value.member_profile_id = new_member.id value.value = {"en"=>member["experience"]["en"],"zh_tw"=>member["experience"]["zh-tw"]} value.save end end if member.include?("mobile") member_profile_field = info.member_profile_fields.find_by(key: "mobile") rescue nil if member_profile_field.nil? field = info.member_profile_fields.build(key: "mobile",markup: "text_field",title_translations:{"en"=>"Mobile Phone Number","zh_tw"=>"手機號碼"}) field.save value = field.member_profile_field_values.build value.member_profile_id = new_member.id value.value = {"en"=>member["mobile"],"zh_tw"=>member["mobile"]} value.save elsif (member_profile_field.present? && member_profile_field.member_profile_field_values.blank?) value = member_profile_field.member_profile_field_values.build value.member_profile_id = new_member.id value.value = {"en"=>member["mobile"],"zh_tw"=>member["mobile"]} value.save end end role_attributes = member["attributes"] role_attributes.each do |ra| fields = ra["fields"] role = Role.find_by(key: ra["name"]) rescue nil if role.present? fields.each do |f| type = f["type"] key = f["name"]["en"].gsub("/"," ").split(' ').join('_').underscore rescue nil field = AttributeField.find_by(key: key) rescue nil if (field.nil? && key != "category" && key != "academic_status") if type == "text" attribute = role.attribute_fields.build(key: key, title_translations: {"en"=>f["name"]["en"],"zh_tw"=>f["name"]["zh-tw"]}) attribute["markup"] = "text_field" attribute.save if !f["value"].nil? if (f["value"].is_a?(Hash) && f["value"].has_key?("en")) field_value = {"en"=>f["value"]["en"],"zh_tw"=>["value"]["zh-tw"]} rescue nil value = new_member.attribute_values.build(key: attribute.key, attribute_field_id: attribute.id, value: field_value) value.save else value = new_member.attribute_values.build(key: attribute.key, attribute_field_id: attribute.id, value: {"en"=>f["value"],"zh_tw"=>f["value"]}) value.save end end elsif type == "select" attribute = role.attribute_fields.build(key: key, title_translations: {"en"=>f["name"]["en"],"zh_tw"=>f["name"]["zh-tw"]}) attribute["markup"] = type first_index = 0 attribute.typeB["option_list"] = {"#{first_index}" => {"en"=>f["value"]["en"],"zh_tw"=>f["value"]["zh-tw"]}} attribute.save value = new_member.attribute_values.build(key: key, attribute_field_id: attribute.id, value: first_index) value.save end new_member.roles << role elsif (field.nil? && (["category","academic_status"].include? key)) status_key = f["value"]["en"].split(' ').join('_').underscore rescue nil status = RoleStatus.find_by(key: status_key, role_id: role.id) rescue nil if status.nil? role_status = role.role_statuses.build(key: status_key, title_translations: {"en"=>f["value"]["en"],"zh_tw"=>f["value"]["zh-tw"]}) role_status.member_profiles = [new_member] role_status.save else status.member_profiles = [new_member] status.save end elsif field.present? if field.markup = "text_field" if !f["value"].nil? if (f["value"].is_a?(Hash) && f["value"].has_key?("en")) field_value = {"en"=>f["value"]["en"],"zh_tw"=>["value"]["zh-tw"]} rescue nil value = new_member.attribute_values.build(key: field.key, attribute_field_id: field.id, value: field_value) value.save else value = new_member.attribute_values.build(key: field.key, attribute_field_id: field.id, value: {"en"=>f["value"],"zh_tw"=>f["value"]}) value.save end end elsif field.markup = "select" field.typeB["option_list"].each_with_index do |v,i| if v.last["en"] != f["value"]["en"] option = field.typeB["option_list"] = {"#{i+1}" => {"en"=>f["value"]["en"],"zh_tw"=>f["value"]["zh-tw"]}} option.save end @index = (field.typeB["option_list"].count - 1) end value = new_member.attribute_values.build(key: key, attribute_field_id: field.id, value: @index) value.save end new_member.roles << role end end elsif role.nil? new_role = new_member.roles.build(key: ra["name"], title_translations: {"en"=>ra["name"].titleize,"zh_tw"=>ra["name"].titleize}) new_role.save fields.each do |f| type = f["type"] key = f["name"]["en"].gsub("/"," ").split(' ').join('_').underscore rescue nil field = AttributeField.find_by(key: key) rescue nil if (field.nil? && key != "category" && key != "academic_status") if type == "text" attribute = new_role.attribute_fields.build(key: key, title_translations: {"en"=>f["name"]["en"],"zh_tw"=>f["name"]["zh-tw"]}) attribute["markup"] = "text_field" attribute.save if !f["value"].nil? if (f["value"].is_a?(Hash) && f["value"].has_key?("en")) field_value = {"en"=>f["value"]["en"],"zh_tw"=>["value"]["zh-tw"]} rescue nil value = new_member.attribute_values.build(key: attribute.key, attribute_field_id: attribute.id, value: field_value) value.save else value = new_member.attribute_values.build(key: attribute.key, attribute_field_id: attribute.id, value: {"en"=>f["value"],"zh_tw"=>f["value"]}) value.save end end elsif type == "select" attribute = new_role.attribute_fields.build(key: key, title_translations: {"en"=>f["name"]["en"],"zh_tw"=>f["name"]["zh-tw"]}) attribute["markup"] = type first_index = 0 attribute.typeB["option_list"] = {"#{first_index}" => {"en"=>f["value"]["en"],"zh_tw"=>f["value"]["zh-tw"]}} attribute.save value = new_member.attribute_values.build(key: key, attribute_field_id: attribute.id, value: first_index) value.save end elsif (field.nil? && (["category","academic_status"].include? key)) status_key = f["value"]["en"].split(' ').join('_').underscore rescue nil status = RoleStatus.find_by(key: status_key, role_id: new_role.id) rescue nil if status.nil? role_status = new_role.role_statuses.build(key: status_key, title_translations: {"en"=>f["value"]["en"],"zh_tw"=>f["value"]["zh-tw"]}) role_status.member_profiles = [new_member] role_status.save else status.member_profiles = [new_member] status.save end elsif (!field.nil? && key != "category") if field.markup = "text_field" if !f["value"].nil? if (f["value"].is_a?(Hash) && f["value"].has_key?("en")) field_value = {"en"=>f["value"]["en"],"zh_tw"=>["value"]["zh-tw"]} rescue nil value = new_member.attribute_values.build(key: field.key, attribute_field_id: field.id, value: field_value) value.save else value = new_member.attribute_values.build(key: field.key, attribute_field_id: field.id, value: {"en"=>f["value"],"zh_tw"=>f["value"]}) value.save end end elsif field.markup = "select" field.typeB["option_list"].each_with_index do |v,i| if v.last["en"] == f["value"]["en"] else option = field.typeB["option_list"] = {"#{i+1}" => {"en"=>f["value"]["en"],"zh_tw"=>f["value"]["zh-tw"]}} option.save value = new_member.attribute_values.build(key: key, attribute_field_id: field.id, value: i+1) value.save end end end end end end end new_member.save @@import_stats["current_status"] = @@import_stats["current_status"] + 1 write_to_file if member["user_id"].present? user = User.new user.user_name = member["user_id"] user.password = "newpassword" user.password_confirmation = "newpassword" if member["group_id"] == 40 w = Workgroup.find_by(key: "admin") rescue nil user.workgroup = w end user.member_profile = new_member user.approved = true user.save end end end render :json => {"success" => true}.to_json end def rss2_galleries delete_import_file uri = URI.parse(params['url']) # @@thread = Thread.new do http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) data = response.body data = JSON.parse(data) @@import_stats["total_images"] = data["total_images"].to_i @@import_stats["current_status"] = 0 @@import_stats["success"] = true write_to_file albums = data["albums"] current_locale = I18n.locale I18n.locale = :en category = Category.where(:title => "RSS2 Gallery").first I18n.locale = current_locale if category.nil? module_app = ModuleApp.find_by_key("gallery") category = Category.new category.title_translations = {"en" => "RSS2 Gallery", "zh_tw" => "RSS2畫廊"} category.save module_app.categories << category end albums.each do |album| @@import_stats["current_album_id"] = album["albumid"] write_to_file if Album.where(:rss2_id => album["albumid"]).count == 0 @@import_stats["current_album_name"] = album["name"]["zh_tw"] write_to_file newalbum = Album.new(:name_translations => {"en" => album["name"]["en"], "zh_tw" => album["name"]["zh_tw"]}, :description_translations => {"en" => album["description"]["en"], "zh_tw" => album["description"]["zh_tw"]},"rss2_id" => album["albumid"]) newalbum.category_id = category.id newalbum.save images = album["images"] if !images.blank? images.each do |image| if AlbumImage.where(:rss2_id => image["photoid"]).count == 0 img = newalbum.album_images.new img.description_translations = {"en" => image["description"]["en"], "zh_tw" => image["description"]["zh_tw"]} img.remote_file_url = image["image"] img.save end @@import_stats["current_status"] = @@import_stats["current_status"] + 1 write_to_file end end end end # end # @@thread.join # @@thread.abort_on_exception = true render :json => {"success" => true}.to_json end def rss2_links delete_import_file uri = URI.parse(params['url']) # @@thread = Thread.new do http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) data = response.body data = JSON.parse(data) @@import_stats["total_links"] = data["total_links"].to_i @@import_stats["current_import"] = "categories" @@import_stats["current_status"] = 0 @@import_stats["success"] = true write_to_file categories = data["categories"] current_locale = I18n.locale I18n.locale = :zh_tw module_app = ModuleApp.find_by_key("web_resource") categories.each do |category| cat = Category.where(:title => category[1]["zh_tw"], :module_app_id => module_app.id).first if cat.nil? cat = Category.new cat.title_translations = {"en" => category[1]["en"], "zh_tw" => category[1]["zh_tw"]} cat.save module_app.categories << cat end end @@import_stats["current_import"] = "links" write_to_file links = data["links"] links.each do |link| l = WebLink.where(:rss2_id => link["link_id"]).first if l.nil? @@import_stats["current_link_id"] = link["link_id"] @@import_stats["current_link_name"] = link["title"]["zh_tw"] write_to_file weblink = WebLink.new(:title_translations => {"en" => link["title"]["en"], "zh_tw" => link["title"]["zh_tw"]}, :context_translations => {:en => link["description"]["en"], :zh_tw => link["description"]["zh_tw"]}, :url_translations => {"en" => link["url"], "zh_tw" => link["url"]}, :rss2_id => link["link_id"]) category = Category.where(:title => link["category_name"], :module_app_id => module_app).first weblink.category_id = category.id weblink.save end @@import_stats["current_status"] = @@import_stats["current_status"] + 1 write_to_file end I18n.locale = current_locale # end # @@thread.join # @@thread.abort_on_exception = true render :json => {"success" => true}.to_json end private def page_present?(page) Page.where(:page_id => page).count > 0 end def smart_downloader(data,url) @data = data excluded_extensions = ["php","/"] @links = URI.extract(@data) @links.each do |link| if link.include?url temp = link.gsub(url,"") extension = temp.split(".").last rescue nil if extension.nil? || excluded_extensions.include?(extension) @data = @data.sub(link,"#") else a = Asset.new a.remote_data_url = link a.title_translations = {"en" => a.data.filename, "zh_tw" => a.data.filename} a.save! @user.assets << a @user.save @data = @data.sub(link, a.data.url) end end end @data end def write_to_file File.open("#{Rails.root.to_s}/public/import_status.yml", "w") do |file| file.write @@import_stats.to_yaml end end def delete_import_file @@import_stats = {} f = File.join(Rails.root,"public","import_status") if File.exists?f File.delete(f) end end def get_settings_from_import_file YAML::load_file "#{Rails.root.to_s}/public/import_status.yml" end def get_user @user = User.find(current_user.id) end end