※ この話は、MT 2.661, mt-blacklist 1.6.5限定の話だ。
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もリビルドされているように見える。

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: mt-blacklist修正

このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1084

コメント(1)

false :

コメントのテスト

コメントする

このブログ記事について

このページは、falseが2006年10月24日 14:07に書いたブログ記事です。

ひとつ前のブログ記事は「暗号化について少し(その2)」です。

次のブログ記事は「Firefox 2.0」です。

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

広告

Powered by Movable Type 6.1.1