use XML::Atom::Entry;
use XML::Generator::DBI;
use XML::SAX::Writer;
+use XML::TreePP;
#%DB::packages = ( 'main' => 1 );
goto end;
}
- if ( $mode_sub eq 'dump' ) {
+ if ( $params{ 'dump' } ) {
# id、epgXXを除外して出力
my $sth = $dbh->prepare(
"SELECT type, chtxt, title, btime, etime, deltatime, deltaday, opt, counter
);
$gen->execute($sth);
# $HTML .= join "\n", @{$yaw->{Strings}};
- print "Content-Type: text/xml\n\n";
+ utf8::encode($output);
+ my $len = length $output;
+ print "Content-Type: text/xml\n";
+ print "Content-Length: $len\n";
+ print "Content-Disposition: attachment; filename=\"rec10-reserve-dump.xml\"\n\n";
print $output;
exit;
}
+ if ( $params{ 'restore' } ) {
+ my $fh = $q->upload('upfile');
+ my $xml = read_file( $fh );
+ my $tpp = XML::TreePP->new;
+ my $tree = $tpp->parse( $xml );
+ my @rows = @{ $tree->{database}->{select}->{row} };
+
+ # 高速化のためVALUESを連結
+ # INSERT INTO timeline ( ... ) VALUES ( aa, bb, cc ), ( kk, ll, mm ), ( xx, yy, zz )
+ my @keys = qw/type chtxt title btime etime deltatime deltaday opt counter/;
+ my $keys = join ', ', @keys;
+ my @values;
+
+ foreach my $row ( @rows ) {
+ my $values = join ', ', map { "'".$row->{'-'.$_}."'" } @keys;
+ utf8::decode( $values );
+ push @values, "( $values )";
+ }
+ my $sql = "INSERT INTO timeline ( $keys ) VALUES " . join ', ', @values;
+ $dbh->do( "TRUNCATE TABLE timeline" );
+ $dbh->do( $sql );
+ goto end;
+ }
+
my @ary = $dbh->selectrow_array(
"SELECT auto_jbk, auto_bayes, auto_del_tmp, auto_opt
FROM in_settings " );
}
+ $HTML .= qq {<hr>\n予約の保存・復元<br>\n};
+ $HTML .= qq {<form action="rectool.pl" method="post" enctype="multipart/form-data">\n};
+ $HTML .= qq {<div>\n};
+ $HTML .= qq {<input type="hidden" name="mode" value="expert">\n};
+ $HTML .= qq {<input type="submit" name="dump" value="保存">\n};
+ $HTML .= qq {<input type="file" name="upfile">\n};
+ $HTML .= qq {<input type="submit" name="restore" value="復元">\n};
+ $HTML .= qq {</div>\n};
+ $HTML .= qq {</form>\n};
+
+
$ary_ref = $dbh->selectall_arrayref(
"SELECT chname, chtxt, bctype, ch, csch, tsid, updatetime, status, visible
FROM epg_ch