#!/usr/bin/perl -w
# This script updates the stories and comments from the 0.4 database,
# which used Textile, to 0.5, that uses TinyMCE, i.e. HTML.
# It doesn't do articles.
# It works directly against the database, not using the data objects of TABOO.
my $dsn = 'dbi:Pg:dbname=taboodemo';
my $pguser = 'taboodemo';
my $pgpassword ='hk987JKBgui';
# Here begins the code.
use DBI;
use Formatter::HTML::Textile;
use Encode;
use HTML::Entities;
my $dbh = DBI->connect($dsn, $pguser, $pgpassword);
my $all = $dbh->selectall_hashref('SELECT storyname,minicontent,content FROM stories;', 'storyname');
foreach my $story (values(%{$all})) {
my $formatter1 = Formatter::HTML::Textile->format(encode_entities(decode_utf8(${$story}{content})));
$formatter1->charset('utf-8');
$formatter1->char_encoding(0);
my $content = $formatter1->fragment;
my $formatter2 = Formatter::HTML::Textile->format(encode_entities(decode_utf8(${$story}{minicontent})));
$formatter2->charset('utf-8');
$formatter2->char_encoding(0);
my $minicontent = $formatter2->fragment;
$dbh->do("UPDATE stories SET minicontent=?,content=? WHERE storyname=?", {}, ($minicontent,$content,${$story}{storyname}));
}
my $allc = $dbh->selectall_arrayref('SELECT content FROM comments;');
foreach my $comment (@{$allc}) {
my $formatter1 = Formatter::HTML::Textile->format(encode_entities(decode_utf8(${$comment}[0])));
$formatter1->charset('utf-8');
$formatter1->char_encoding(0);
my $content = $formatter1->fragment;
$dbh->do("UPDATE comments SET content=? WHERE content=?", {}, ($content,${$comment}[0]));
}