ホーム > フォーラム > 開発 > コア開発 > XC2.1バグ

XC2.1バグ
投稿者: Marijuana | 投稿日時: 2007/4/14 2:35 | 閲覧: 7611回
Marijuana
非アクティブモジュールのブロックが表示されちゃいます。

diff -u -r1.1.2.3 ModuleListAction.class.php
--- ModuleListAction.class.php	28 Dec 2006 13:24:50 -0000	1.1.2.3
+++ ModuleListAction.class.php	13 Apr 2007 17:05:40 -0000
@@ -82,14 +82,23 @@
             $newdata['weight'] = $this->mActionForm->get('weight', $mid);
             $newdata['isactive'] = $this->mActionForm->get('isactive', $mid);
             if ( count(array_diff_assoc($olddata, $newdata)) > 0 ) {
+                $isactive = $this->mActionForm->get('isactive', $mid);
                 $module->set('name', $this->mActionForm->get('name', $mid));
                 $module->set('weight', $this->mActionForm->get('weight', $mid));
-                $module->set('isactive', $this->mActionForm->get('isactive', $mid));
+                $module->set('isactive', $isactive);
 
                 //
                 // Store.
                 //
                 $successFlag &= $moduleHandler->insert($module);
+                
+                $b_handler =& xoops_getmodulehandler('newblocks');
+                $mCriteria =& new CriteriaCompo(new Criteria('mid', $mid));
+                $block_array =& $b_handler->getObjects($mCriteria);
+                foreach ( $block_array as $block ) {
+                  $block->set('isactive', $isactive);
+                  $b_handler->insert($block);
+                }
             }
         }
こんな感じでどうでしょう?

ついでにこの件追って見つけたんですがkernel/block.phpの
$sql .= ' AND gperm_groupid IN ('.addslashes(implode(',', $groupid)).')';
これは強引すぎませんか?
$sql .= ' AND gperm_groupid IN ('.implode(',', array_map('intval', $groupid)).')';

せめてこんな感じとか・・・

ORDER BYのところもちょっと・・・って感じですけど

コメント(4)

Re: XC2.1バグ 
投稿者: minahito | 投稿日時: 2007/4/17 15:30
minahito
Bug#10297
Bug#10298

に代理登録しておきました〜
Re: XC2.1バグ 
投稿者: minahito | 投稿日時: 2007/4/17 17:05
minahito
引用:
Marijuanaさんは書きました:
非アクティブモジュールのブロックが表示されちゃいます。


# 登録した後で聞くことじゃないですが

ところでこれ
何をどうしたらどうなるという話なのでしょうか?
ちょっとよくわかりませんでした... orz

モジュールのアクティブを切っても
それに所属しているブロックをインストールしておいた場合、表示されてしまうということでしょうか?


わかった;;

ブロックをインストールした後所属するモジュールのアクティブを切ってもブロックが表示されてしまうので、だったらいっそ非アクティブ操作を行った時に連動してブロックのvisibleを切ってはどうか?と考えたのでModuleListActionをいじるパッチを投稿する...

ということですね?
Re: XC2.1バグ 
投稿者: Marijuana | 投稿日時: 2007/4/17 20:42
Marijuana
visibleじゃなくてisactiveです
引用:
と考えたので
じゃなくてX2がそーなってると思いますが・・・

#最初はブロック表示のSQLでと思ったのですがX2を追ってみたら違っていたので
Re: XC2.1バグ 
投稿者: minahito | 投稿日時: 2007/4/18 13:33
minahito
カンチガイしてました...

isactive は modules の isactive にアクセスしなくても済むようにするための一種のキャッシュなんですね...

修正します。
mid = 0 の件は夕べ気が付いていたのですがネットワークがぽしゃって CVS に接続できずに修正できませんでした。 orz

    投票(0)

    新しいものから | 古いものから | RSS feed
     
    To Top