From 61fe9c4e58a00c74aa2e09fc2079b64f57c6b21b Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Mon, 7 Sep 2020 23:40:53 +0900 Subject: [PATCH] Clean up trigger list in spamfilter module --- modules/spamfilter/spamfilter.class.php | 134 ++++++++++++------------ 1 file changed, 65 insertions(+), 69 deletions(-) diff --git a/modules/spamfilter/spamfilter.class.php b/modules/spamfilter/spamfilter.class.php index 9d996720f..1d92209de 100644 --- a/modules/spamfilter/spamfilter.class.php +++ b/modules/spamfilter/spamfilter.class.php @@ -7,92 +7,92 @@ */ class spamfilter extends ModuleObject { + protected static $_insert_triggers = array( + array('document.insertDocument', 'before', 'controller', 'triggerInsertDocument'), + array('document.updateDocument', 'before', 'controller', 'triggerInsertDocument'), + array('document.manage', 'before', 'controller', 'triggerManageDocument'), + array('comment.insertComment', 'before', 'controller', 'triggerInsertComment'), + array('comment.updateComment', 'before', 'controller', 'triggerInsertComment'), + array('trackback.insertTrackback', 'before', 'controller', 'triggerInsertTrackback'), + array('communication.sendMessage', 'before', 'controller', 'triggerSendMessage'), + ); + + protected static $_delete_triggers = array(); + + /** + * Register all triggers. + * + * @return object + */ + public function registerTriggers() + { + $oModuleController = getController('module'); + foreach (self::$_insert_triggers as $trigger) + { + if (!ModuleModel::getTrigger($trigger[0], $this->module, $trigger[2], $trigger[3], $trigger[1])) + { + $oModuleController->insertTrigger($trigger[0], $this->module, $trigger[2], $trigger[3], $trigger[1]); + } + } + foreach (self::$_delete_triggers as $trigger) + { + if (ModuleModel::getTrigger($trigger[0], $this->module, $trigger[2], $trigger[3], $trigger[1])) + { + $oModuleController->deleteTrigger($trigger[0], $this->module, $trigger[2], $trigger[3], $trigger[1]); + } + } + return new BaseObject(0, 'success_updated'); + } + /** * @brief Additional tasks required to accomplish during the installation */ - function moduleInstall() + public function moduleInstall() { - // Register action forward (to use in administrator mode) - $oModuleController = getController('module'); - // 2007.12.7 The triggers which try to perform spam filtering when new posts/comments/trackbacks are registered - $oModuleController->insertTrigger('document.insertDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before'); - $oModuleController->insertTrigger('comment.insertComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before'); - $oModuleController->insertTrigger('trackback.insertTrackback', 'spamfilter', 'controller', 'triggerInsertTrackback', 'before'); - // 2008-12-17 Add a spamfilter for post modification actions - $oModuleController->insertTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before'); - $oModuleController->insertTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before'); - // 2013-11-14 The trigger which try to perform spam filtering when new message are registered - $oModuleController->insertTrigger('communication.sendMessage', 'spamfilter', 'controller', 'triggerSendMessage', 'before'); + return $this->registerTriggers(); } /** * @brief A method to check if the installation has been successful */ - function checkUpdate() + public function checkUpdate() { - $oDB = &DB::getInstance(); - $oModuleModel = getModel('module'); - // 2007.12.7 The triggers which try to perform spam filtering when new posts/comments/trackbacks are registered - if(!$oModuleModel->getTrigger('document.insertDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before')) return true; - if(!$oModuleModel->getTrigger('comment.insertComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before')) return true; - if(!$oModuleModel->getTrigger('trackback.insertTrackback', 'spamfilter', 'controller', 'triggerInsertTrackback', 'before')) return true; - // 2008-12-17 Add a spamfilter for post modification actions - if(!$oModuleModel->getTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before')) return true; - if(!$oModuleModel->getTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before')) return true; - // 2013-11-14 The trigger which try to perform spam filtering when new message are registered - if(!$oModuleModel->getTrigger('communication.sendMessage', 'spamfilter', 'controller', 'triggerSendMessage', 'before')) return true; - - /** - * Add the hit count field (hit) - */ + foreach (self::$_insert_triggers as $trigger) + { + if (!ModuleModel::getTrigger($trigger[0], $this->module, $trigger[2], $trigger[3], $trigger[1])) + { + return true; + } + } + foreach (self::$_delete_triggers as $trigger) + { + if (ModuleModel::getTrigger($trigger[0], $this->module, $trigger[2], $trigger[3], $trigger[1])) + { + return true; + } + } + + $oDB = DB::getInstance(); if(!$oDB->isColumnExists('spamfilter_denied_word', 'hit')) return true; if(!$oDB->isColumnExists('spamfilter_denied_word', 'latest_hit')) return true; if(!$oDB->isColumnExists('spamfilter_denied_ip', 'hit')) return true; if(!$oDB->isColumnExists('spamfilter_denied_ip', 'latest_hit')) return true; if(!$oDB->isColumnExists('spamfilter_denied_ip', 'description')) return true; - - if(!$oModuleModel->getTrigger('document.manage', 'spamfilter', 'controller', 'triggerManageDocument', 'before')) - { - return true; - } - return false; } /** * @brief Execute update */ - function moduleUpdate() + public function moduleUpdate() { + $output = $this->registerTriggers(); + if (!$output->toBool()) + { + return $output; + } + $oDB = &DB::getInstance(); - $oModuleModel = getModel('module'); - $oModuleController = getController('module'); - // 2007.12.7 The triggers which try to perform spam filtering when new posts/comments/trackbacks are registered - if(!$oModuleModel->getTrigger('document.insertDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before')) - $oModuleController->insertTrigger('document.insertDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before'); - if(!$oModuleModel->getTrigger('comment.insertComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before')) - $oModuleController->insertTrigger('comment.insertComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before'); - if(!$oModuleModel->getTrigger('trackback.insertTrackback', 'spamfilter', 'controller', 'triggerInsertTrackback', 'before')) - $oModuleController->insertTrigger('trackback.insertTrackback', 'spamfilter', 'controller', 'triggerInsertTrackback', 'before'); - // 2008-12-17 Add a spamfilter for post modification actions - if(!$oModuleModel->getTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before')) - { - $oModuleController->insertTrigger('comment.updateComment', 'spamfilter', 'controller', 'triggerInsertComment', 'before'); - } - // 2008-12-17 Add a spamfilter for post modification actions - if(!$oModuleModel->getTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before')) - { - $oModuleController->insertTrigger('document.updateDocument', 'spamfilter', 'controller', 'triggerInsertDocument', 'before'); - } - // 2013-11-14 The trigger which try to perform spam filtering when new message are registered - if(!$oModuleModel->getTrigger('communication.sendMessage', 'spamfilter', 'controller', 'triggerSendMessage', 'before')) - { - $oModuleController->insertTrigger('communication.sendMessage', 'spamfilter', 'controller', 'triggerSendMessage', 'before'); - } - - /** - * Add the hit count field (hit) - */ if(!$oDB->isColumnExists('spamfilter_denied_word', 'hit')) { $oDB->addColumn('spamfilter_denied_word','hit','number',12,0,true); @@ -117,18 +117,14 @@ class spamfilter extends ModuleObject { $oDB->addColumn('spamfilter_denied_ip','description','varchar', 250); } - - if(!$oModuleModel->getTrigger('document.manage', 'spamfilter', 'controller', 'triggerManageDocument', 'before')) - { - $oModuleController->insertTrigger('document.manage', 'spamfilter', 'controller', 'triggerManageDocument', 'before'); - } } /** * @brief Re-generate the cache file */ - function recompileCache() + public function recompileCache() { + } } /* End of file spamfilter.class.php */