[BUG反饋]OneThink1.1 禁用外掛之後鉤子狀態仍然有效,鉤子仍在發揮作用。禁用其實無效

發表於2020-04-04
禁用外掛之後,資料表addons中的該外掛status狀態雖然改為了0,但是hooks表中對應的鉤子狀態依然存在。
如果是該外掛自己建立的鉤子很好辦,就是直接把它對應的鉤子在hooks表中status改為0即可。但如果是掛靠在其它的鉤子上,這個時候,就需要把這個外掛從hooks資料表中的addons中刪除。最終解決方案是第2個。
解決方法如下:
找到檔案:Application\Admin\Controller\AddonsController.class.php
找到啟用和禁用函式(enable,disable),改為下面的

    /**
     * 啟用外掛
     */
    public function enable(){
        $id     =   I('id');
		$info = M('Addons')->find($id);//外掛資訊
        $msg    =   array('success'=>'啟用成功', 'error'=>'啟用失敗');
        S('hooks', null);
		//記錄行為
		action_log('enable_addons','addons',$info['name'],UID);
		//啟用時重新把外掛新增到對應的鉤子裡
		$hooks_update   =   D('Hooks')->updateHooks($info['name']);

		$this->resume('Addons', "id={$id}", $msg);
	
    }
    /**
     * 禁用外掛
     */
    public function disable(){
        $id     =   I('id');
		$info = M('Addons')->find($id);//外掛資訊
        $msg    =   array('success'=>'禁用成功', 'error'=>'禁用失敗');
        S('hooks', null);
		//記錄行為
		action_log('disable_addons','addons',$info['name'],UID);
		//禁用時把外掛從鉤子記錄裡刪除
		$hooks_update   =   D('Hooks')->removeHooks($info['name']);

        $this->forbid('Addons', "id={$id}", $msg);
    }
回覆
自CoreThink v1.1 新版本釋出以來,我們陸續收到很多使用者的反饋,說很多情況比如政府網站不太適合多標籤的方式,我們的產品團隊在分析使用者反饋後,覺得是時候推出大殺器了,於是今天,國內首創後臺支援兩種模式切換的新功能在CoreThink v1.2全新推出。
評論

相關文章