※ この話は、MT 2.661, mt-blacklist 1.6.5限定の話だ。
表示されながらも、エントリー自身のリビルドはうまく行っているようだが、indexがリビルドされない。
エラーの出所を探していくと、mt/extlib/jayallen/Blacklist.pm の_rebuildObjectPageと言う関数の中で、$object->entry_id を取る所に問題があるらしいことがわかった。
ここは、コメントの場合は MT::Comment のオブジェクトが、トラックバックの場合は MT::TBPingのオブジェクトが渡されてくるのだが、MT::TBPingはentry_idを持っていないことが原因らしい。
でも、トラックバックはどのエントリに打たれたかわかるよな~?と思って調べていったところ、トラックバックのエントリーIDは MT::Trackbackが持っているらしい。
MT::TBPing->tb_id が MT::Trackback->id(trackback_id)になっているようなので、その辺を見るようにBlacklist.pmを修正してみた。
# そもそも、今の実装だと、MT::TBPingは削除されるけど、MT::Trackbackはゴミが溜まっていくような気がするんだが、問題ないのかな?
mt-blacklistと言うプラグインを導入してみた。のだが、trackbackを削除するときに、同時にリビルドしようとすると、エラーが表示される。
表示されながらも、エントリー自身のリビルドはうまく行っているようだが、indexがリビルドされない。
エラーの出所を探していくと、mt/extlib/jayallen/Blacklist.pm の_rebuildObjectPageと言う関数の中で、$object->entry_id を取る所に問題があるらしいことがわかった。
ここは、コメントの場合は MT::Comment のオブジェクトが、トラックバックの場合は MT::TBPingのオブジェクトが渡されてくるのだが、MT::TBPingはentry_idを持っていないことが原因らしい。
でも、トラックバックはどのエントリに打たれたかわかるよな~?と思って調べていったところ、トラックバックのエントリーIDは MT::Trackbackが持っているらしい。
MT::TBPing->tb_id が MT::Trackback->id(trackback_id)になっているようなので、その辺を見るようにBlacklist.pmを修正してみた。
# そもそも、今の実装だと、MT::TBPingは削除されるけど、MT::Trackbackはゴミが溜まっていくような気がするんだが、問題ないのかな?
*** Blacklist.pm.ORIG Fri Jun 10 12:35:07 2005 --- Blacklist.pm Tue Oct 24 13:37:37 2006 *************** *** 1294,1300 **** # DELETE THE COMMENT/PING IF REQUESTED ! my ($object,$findMoreLink); if (my $action = $q->param('despamAction')) { # Load up the ping/comment --- 1294,1300 ---- # DELETE THE COMMENT/PING IF REQUESTED ! my ($object,$findMoreLink,$robject); if (my $action = $q->param('despamAction')) { # Load up the ping/comment *************** *** 1307,1312 **** --- 1307,1320 ---- $object = MT::TBPing->load($id); } return $app->error("Could not load $type for deletion (ID: $id):") unless $object ; + if ($type eq 'comment') { + $robject = $object; + } elsif ($type eq 'ping') { + use MT::Trackback; + $robject = MT::Trackback->load($object->tb_id); + return $app->error("Could not load trackback for deletion (ID: $object->tb_id):") unless $robject ; + } + $findMoreLink = $q->p('Find other '.$type.'s that match <a href="'. *************** *** 1318,1327 **** $results{'obj_removal'} = $q->strong({-class=>'msg_success'},'SUCCEEDED'); if ($action eq 'deleteRebuildEntry') { $results{'entry_rebuild'} = ! $app->_rebuildObjectEntry($object); } elsif ($action eq 'deleteRebuildEntryIndexes') { $results{'entry_rebuild'} = ! $app->_rebuildObjectAll($object); } if ($results{'entry_rebuild'}) { --- 1326,1335 ---- $results{'obj_removal'} = $q->strong({-class=>'msg_success'},'SUCCEEDED'); if ($action eq 'deleteRebuildEntry') { $results{'entry_rebuild'} = ! $app->_rebuildObjectEntry($robject); } elsif ($action eq 'deleteRebuildEntryIndexes') { $results{'entry_rebuild'} = ! $app->_rebuildObjectAll($robject); } if ($results{'entry_rebuild'}) {これで、エラーも出ないし、indexもリビルドされているように見える。
カテゴリ
MovableTypeトラックバック(0)
このブログ記事を参照しているブログ一覧: mt-blacklist修正
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1084
コメントのテスト