mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-03 16:51:40 +09:00
174 lines
5.8 KiB
PHP
174 lines
5.8 KiB
PHP
<?php
|
|
/* Copyright (C) NAVER <http://www.navercorp.com> */
|
|
/**
|
|
* @class spamfilter
|
|
* @author NAVER (developers@xpressengine.com)
|
|
* @brief The parent class of the spamfilter module
|
|
*/
|
|
class Spamfilter extends ModuleObject
|
|
{
|
|
/**
|
|
* @brief Additional tasks required to accomplish during the installation
|
|
*/
|
|
public function moduleInstall()
|
|
{
|
|
|
|
}
|
|
|
|
/**
|
|
* @brief A method to check if the installation has been successful
|
|
*/
|
|
public function checkUpdate()
|
|
{
|
|
$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_word', 'except_member')) return true;
|
|
if(!$oDB->isColumnExists('spamfilter_denied_word', 'filter_html')) return true;
|
|
if(!$oDB->isColumnExists('spamfilter_denied_word', 'is_regexp')) return true;
|
|
if(!$oDB->isColumnExists('spamfilter_denied_word', 'description')) 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', 'except_member')) return true;
|
|
if(!$oDB->isColumnExists('spamfilter_denied_ip', 'description')) return true;
|
|
|
|
$config = ModuleModel::getModuleConfig('spamfilter') ?: new stdClass;
|
|
if (!isset($config->captcha))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @brief Execute update
|
|
*/
|
|
public function moduleUpdate()
|
|
{
|
|
$oDB = DB::getInstance();
|
|
if(!$oDB->isColumnExists('spamfilter_denied_word', 'hit'))
|
|
{
|
|
$oDB->addColumn('spamfilter_denied_word', 'hit', 'number', null, 0, true, 'word');
|
|
$oDB->addIndex('spamfilter_denied_word','idx_hit', 'hit');
|
|
}
|
|
if(!$oDB->isColumnExists('spamfilter_denied_word', 'latest_hit'))
|
|
{
|
|
$oDB->addColumn('spamfilter_denied_word', 'latest_hit', 'date', null, null, false, 'hit');
|
|
$oDB->addIndex('spamfilter_denied_word','idx_latest_hit', 'latest_hit');
|
|
}
|
|
if(!$oDB->isColumnExists('spamfilter_denied_word', 'except_member'))
|
|
{
|
|
$oDB->addColumn('spamfilter_denied_word', 'except_member', 'char', 1, 'N', true, 'latest_hit');
|
|
}
|
|
if(!$oDB->isColumnExists('spamfilter_denied_word', 'filter_html'))
|
|
{
|
|
$oDB->addColumn('spamfilter_denied_word', 'filter_html', 'char', 1, 'N', true, 'except_member');
|
|
}
|
|
if(!$oDB->isColumnExists('spamfilter_denied_word', 'is_regexp'))
|
|
{
|
|
$oDB->addColumn('spamfilter_denied_word', 'is_regexp', 'char', 1, 'N', true, 'filter_html');
|
|
$oDB->query('UPDATE spamfilter_denied_word SET is_regexp = ? WHERE word LIKE ?', ['Y', '/%/']);
|
|
}
|
|
if(!$oDB->isColumnExists('spamfilter_denied_word', 'description'))
|
|
{
|
|
$oDB->addColumn('spamfilter_denied_word', 'description', 'varchar', 191, null, false, 'is_regexp');
|
|
}
|
|
if(!$oDB->isColumnExists('spamfilter_denied_ip', 'hit'))
|
|
{
|
|
$oDB->addColumn('spamfilter_denied_ip', 'hit', 'number', null, 0, true, 'ipaddress');
|
|
$oDB->addIndex('spamfilter_denied_ip','idx_hit', 'hit');
|
|
}
|
|
if(!$oDB->isColumnExists('spamfilter_denied_ip', 'latest_hit'))
|
|
{
|
|
$oDB->addColumn('spamfilter_denied_ip', 'latest_hit', 'date', null, null, false, 'hit');
|
|
$oDB->addIndex('spamfilter_denied_ip','idx_latest_hit', 'latest_hit');
|
|
}
|
|
if(!$oDB->isColumnExists('spamfilter_denied_ip', 'except_member'))
|
|
{
|
|
$oDB->addColumn('spamfilter_denied_ip', 'except_member', 'char', 1, 'N', true, 'latest_hit');
|
|
}
|
|
if(!$oDB->isColumnExists('spamfilter_denied_ip', 'description'))
|
|
{
|
|
$oDB->addColumn('spamfilter_denied_ip', 'description', 'varchar', 191, null, false, 'except_member');
|
|
}
|
|
|
|
$config = ModuleModel::getModuleConfig('spamfilter') ?: new stdClass;
|
|
if (!isset($config->captcha))
|
|
{
|
|
$config = is_object($config) ? $config : new stdClass;
|
|
$recaptcha_config = AddonModel::getAddonConfig('recaptcha');
|
|
if ($recaptcha_config)
|
|
{
|
|
$config->captcha = $this->_importRecaptchaConfig($recaptcha_config);
|
|
}
|
|
else
|
|
{
|
|
$config->captcha = new stdClass;
|
|
$config->captcha->type = 'none';
|
|
}
|
|
|
|
$output = ModuleController::getInstance()->insertModuleConfig($this->module, $config);
|
|
if (!$output->toBool())
|
|
{
|
|
return $output;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Import configuration from reCAPTCHA addon.
|
|
*/
|
|
protected function _importRecaptchaConfig($config)
|
|
{
|
|
$output = new stdClass;
|
|
$output->type = 'none';
|
|
if (!isset($config->site_key) || !isset($config->secret_key))
|
|
{
|
|
return $output;
|
|
}
|
|
|
|
if ($config->use_pc === 'Y' || $config->use_mobile === 'Y')
|
|
{
|
|
$output->type = 'recaptcha';
|
|
}
|
|
$output->site_key = $config->site_key;
|
|
$output->secret_key = $config->secret_key;
|
|
$output->theme = $config->theme;
|
|
$output->size = $config->size;
|
|
$output->target_devices = [
|
|
'pc' => $config->use_pc === 'Y',
|
|
'mobile' => $config->use_mobile === 'Y',
|
|
];
|
|
$output->target_users = $config->target_users;
|
|
$output->target_frequency = $config->target_frequency;
|
|
$output->target_actions = [];
|
|
foreach (['signup', 'login', 'recovery', 'document', 'comment'] as $action)
|
|
{
|
|
$output->target_actions[$action] = ($config->{'use_' . $action} === 'Y') ? true : false;
|
|
}
|
|
$output->target_modules = [];
|
|
foreach ($config->mid_list as $mid)
|
|
{
|
|
$module_srl = ModuleModel::getModuleInfoByMid($mid)->module_srl;
|
|
$output->target_modules[$module_srl] = true;
|
|
}
|
|
$output->target_modules_type = ($config->xe_run_method === 'run_selected') ? '+' : '-';
|
|
|
|
$oAddonAdminController = AddonAdminController::getInstance();
|
|
if ($output->target_devices['pc'])
|
|
{
|
|
$oAddonAdminController->doDeactivate('recaptcha', 0, 'pc');
|
|
$oAddonAdminController->makeCacheFile(0, 'pc');
|
|
}
|
|
if ($output->target_devices['mobile'])
|
|
{
|
|
$oAddonAdminController->doDeactivate('recaptcha', 0, 'mobile');
|
|
$oAddonAdminController->makeCacheFile(0, 'mobile');
|
|
}
|
|
|
|
return $output;
|
|
}
|
|
}
|
|
/* End of file spamfilter.class.php */
|
|
/* Location: ./modules/spamfilter/spamfilter.class.controller.php */
|