MT の permalink に entry_id 使ってたので entry_basename 使うよう変更した

permalink の指定を <$MTArchiveDate format=\"%Y/%m/%d\"$>/<$MTEntryID pad=\"1\"$>.html てやってたのを自分で basename 指定できるようにしたいなと思って yyyy/mm/dd/entry_basename.html に変更した。

んで、今までの permalink が変わっちゃまずいということで entry_id -> entry_basename になる script こさえてやった。

したら、0埋め忘れたので直した。(#vag*na で feed 表示されまくってしまった。すいません >_<)

use strict;
use warnings;

my $mt = MT::Schema->connect('dbi:mysql:dbname', 'username', 'p4ssw0rd');

my $entries = $mt->resultset('MtEntry')->search({}, {});

while ( my $entry = $entries->next ) {
    printf("%s -> %s\n", $entry->entry_basename, $entry->entry_id);

    $entry->update({ entry_basename => scalar sprintf("%06d", $entry->entry_id) });
}

package MT::Schema;

use strict;
use warnings;

use base 'DBIx::Class::Schema::Loader';

__PACKAGE__->loader_options(
    relationships => 0,
    options       => { AutoCommit => 1 },
    debug         => 1,
    components    => [],
);

1;

MT なんだから Data::ObjectDriver 使えばいいとか言われてもわからない。