32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/jekyll-import/importers/joomla3.rb', line 32
def self.process(options)
dbname = options.fetch("dbname")
user = options.fetch("user")
pass = options.fetch("password", "")
host = options.fetch("host", "localhost")
port = options.fetch("port", 3306).to_i
cid = options.fetch("category", 0)
table_prefix = options.fetch("prefix", "jos_")
db = Sequel.mysql2(dbname, :user => user, :password => pass, :host => host, :port => port, :encoding => "utf8")
FileUtils.mkdir_p("_posts")
query = "SELECT `cn`.`title`, `cn`.`alias`, `cn`.`introtext`, CONCAT(`cn`.`introtext`,`cn`.`fulltext`) AS `content`, "
query << "`cn`.`created`, `cn`.`id`, `ct`.`title` AS `category`, `u`.`name` AS `author` "
query << "FROM `#{table_prefix}content` AS `cn` JOIN `#{table_prefix}categories` AS `ct` ON `cn`.`catid` = `ct`.`id` "
query << "JOIN `#{table_prefix}users` AS `u` ON `cn`.`created_by` = `u`.`id` "
query << "WHERE (`cn`.`state` = '1' OR `cn`.`state` = '2') "
query << if cid.positive?
" AND `cn`.`catid` = '#{cid}' "
else
" AND `cn`.`catid` != '2' " end
db[query].each do |post|
title = post[:title]
slug = post[:alias]
date = post[:created]
author = post[:author]
category = post[:category]
content = post[:content]
excerpt = post[:introtext]
name = format("%02d-%02d-%02d-%s.markdown", date.year, date.month, date.day, slug)
data = {
"layout" => "post",
"title" => title.to_s,
"joomla_id" => post[:id],
"joomla_url" => slug,
"date" => date,
"author" => author,
"excerpt" => excerpt.strip.to_s,
"category" => category,
}.delete_if { |_k, v| v.nil? || v == "" }.to_yaml
File.open("_posts/#{name}", "w") do |f|
f.puts data
f.puts "---"
f.puts content
end
end
end
|