Windows Live Writer で投稿すると9時間ずれる件について(ファイナル!)

| コメント(0) | トラックバック(4)

Windows Live Writer で Movable Type に投稿すると時刻がずれるらしい
Windows Live Writerで時間が9時間ずれる件について(続編)
Windows Live Writerで時間が9時間ずれる件について(続々編)
Windows Live Writerで投稿すると9時間ずれる件について(恥編)

とお送りしてきたMovable Typeと格闘シリーズ。紆余曲折ありましたが、とうとう原因を突き止めました。もうこうなったらプロの意地というか、原因突き止めるまでは諦めへんで!って感じで、ここんとこ、夜も朝もMovable Typeのスクリプトと格闘。結局、最初はWindows Live Writerをかなり疑ってたけど、Movable Typeが悪かったっつーことで。

で、原因はココ。addons/Commercial.pack/lib/CustomFields/XMLRPCServer.pmの中、15行目。

sub APIPostSave_entry {
    my $plugin = shift;
    my ($cb, $mt, $entry, $original) = @_;

ここをコメントアウトするだけ。こんな感じ。

sub APIPostSave_entry {
#    my $plugin = shift;
    my ($cb, $mt, $entry, $original) = @_;

結局、ここ、コールバック関数になってるようなんですが、引数をshiftしてしまってなんだかよくわからなくしてるんです。実体としては、その下の行に渡ってくるものだけなので、shiftが余計。$pluginも使ってないし、どこかからコピペしてきたのだろうか。。。これが原因で、下の方で$entryをsaveするんだけど、実体としては$originalをsaveしてしまって、そこにはblog_idがついてなくて、ブログの時差設定を読み込めずにmt-congif.cgiのTimeOffsetを使っていたというわけ。TimeOffsetを設定すればうまくいくってのも間違ってはなかったわけだが、根本原因はこちらでした。ちなみに、これはMT4.1のお話。他のバージョンではわかりません。

ちなみに、これ、Commercial.packってのに入ってるんですが、MTOSの4.2には入ってませんでした。なので起きなかった。あと、MySQLを使った場合は、今回のように投稿時にいきなりずれるのですが、SQLiteを使った場合には、投稿時はOKで、次を投稿すると前のが9時間ずれるなんてことになってました。これもよくわからないですが、上の修正で直りました。DBによって何か動作が違うんでしょうか。

再現条件をまとめるとこんな感じになるのかな。

  • MT4.1(or それに近いバージョンで)
  • Commercial.packのCustomFieldsが入っていて
  • XMLRPCのAPI、つまりWindows Live Writerなどを使っている

場合に、時間がずれることがある。対策は上の通り、1行コメントアウトするだけ。もしくはTimeOffsetを指定。

ちなみに、ダブル投稿で解決してた理由はよくわからないし、調べる気もないです。^^;

あー、今日はゆっくり眠れる。

と、この投稿がうまくいけばだけど。^^

(追記) やったぜ!成功!

トラックバック(4)

トラックバックURL: http://www.afropunx.jp/blog/mt-tb.cgi/514

あー、今朝はボーっとしてたみたい。 MovableTypeのバグみたいに書いた... 続きを読む

どうも昨日書いたTimeOffsetの件が気になって朝からまたいろいろ調べてみた... 続きを読む

以前、「Windows Live Writer で Movable Type に... 続きを読む

最近どうもブログの調子が悪い。Windows Live Writerからタイムア... 続きを読む

コメントする

このブログ記事について

このページは、tamtamがJuly 2, 2008 9:52 PMに書いたブログ記事です。

ひとつ前のブログ記事は「Windows Live Writerで投稿すると9時間ずれる件について(恥編)」です。

次のブログ記事は「ラシェットブランシュ湘南」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.261