diff --git a/modules/spamfilter/queries/updateDeniedIPHit.xml b/modules/spamfilter/queries/updateDeniedIPHit.xml
new file mode 100644
index 000000000..cd1771900
--- /dev/null
+++ b/modules/spamfilter/queries/updateDeniedIPHit.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/spamfilter/schemas/spamfilter_denied_ip.xml b/modules/spamfilter/schemas/spamfilter_denied_ip.xml
index 4911300fb..758053734 100644
--- a/modules/spamfilter/schemas/spamfilter_denied_ip.xml
+++ b/modules/spamfilter/schemas/spamfilter_denied_ip.xml
@@ -1,5 +1,7 @@
diff --git a/modules/spamfilter/spamfilter.admin.view.php b/modules/spamfilter/spamfilter.admin.view.php
index b6db51b52..b2dc62e3f 100644
--- a/modules/spamfilter/spamfilter.admin.view.php
+++ b/modules/spamfilter/spamfilter.admin.view.php
@@ -21,9 +21,16 @@ class spamfilterAdminView extends spamfilter
*/
function dispSpamfilterAdminDeniedIPList()
{
+ // Get sort index
+ $sort_index = Context::get('sort_index');
+ if (!in_array($sort_index, array('regdate', 'latest_hit', 'hit')))
+ {
+ $sort_index = 'regdate';
+ }
+
// Get the list of denied IP addresses and words
$oSpamFilterModel = getModel('spamfilter');
- $ip_list = $oSpamFilterModel->getDeniedIPList();
+ $ip_list = $oSpamFilterModel->getDeniedIPList($sort_index);
Context::set('ip_list', $ip_list);
$security = new Security();
diff --git a/modules/spamfilter/spamfilter.class.php b/modules/spamfilter/spamfilter.class.php
index d55425133..9d996720f 100644
--- a/modules/spamfilter/spamfilter.class.php
+++ b/modules/spamfilter/spamfilter.class.php
@@ -47,7 +47,8 @@ class spamfilter extends ModuleObject
*/
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'))
@@ -102,7 +103,16 @@ class spamfilter extends ModuleObject
$oDB->addColumn('spamfilter_denied_word','latest_hit','date');
$oDB->addIndex('spamfilter_denied_word','idx_latest_hit', 'latest_hit');
}
-
+ if(!$oDB->isColumnExists('spamfilter_denied_ip', 'hit'))
+ {
+ $oDB->addColumn('spamfilter_denied_ip','hit','number',12,0,true);
+ $oDB->addIndex('spamfilter_denied_ip','idx_hit', 'hit');
+ }
+ if(!$oDB->isColumnExists('spamfilter_denied_ip', 'latest_hit'))
+ {
+ $oDB->addColumn('spamfilter_denied_ip','latest_hit','date');
+ $oDB->addIndex('spamfilter_denied_ip','idx_latest_hit', 'latest_hit');
+ }
if(!$oDB->isColumnExists('spamfilter_denied_ip', 'description'))
{
$oDB->addColumn('spamfilter_denied_ip','description','varchar', 250);
diff --git a/modules/spamfilter/spamfilter.model.php b/modules/spamfilter/spamfilter.model.php
index 6ec830706..b5a407aee 100644
--- a/modules/spamfilter/spamfilter.model.php
+++ b/modules/spamfilter/spamfilter.model.php
@@ -27,10 +27,10 @@ class spamfilterModel extends spamfilter
/**
* @brief Return the list of registered IP addresses which were banned
*/
- function getDeniedIPList()
+ function getDeniedIPList($sort_index = 'regdate')
{
$args = new stdClass();
- $args->sort_index = "regdate";
+ $args->sort_index = $sort_index;
$args->page = Context::get('page')?Context::get('page'):1;
$output = executeQueryArray('spamfilter.getDeniedIPList', $args);
if(!$output->data) return array();
@@ -48,12 +48,14 @@ class spamfilterModel extends spamfilter
$ip_ranges = array();
foreach ($ip_list as $ip_range)
{
- $ip_ranges[] = $ip_range->ipaddress;
- }
-
- if (Rhymix\Framework\Filters\IpFilter::inRanges(\RX_CLIENT_IP, $ip_ranges))
- {
- return new BaseObject(-1, 'msg_alert_registered_denied_ip');
+ if (Rhymix\Framework\Filters\IpFilter::inRange(\RX_CLIENT_IP, $ip_range->ipaddress))
+ {
+ $args = new stdClass();
+ $args->ipaddress = $ip_range->ipaddress;
+ executeQuery('spamfilter.updateDeniedIPHit', $args);
+
+ return new BaseObject(-1, 'msg_alert_registered_denied_ip');
+ }
}
return new BaseObject();
diff --git a/modules/spamfilter/tpl/denied_ip_list.html b/modules/spamfilter/tpl/denied_ip_list.html
index 26d1c664e..b2150dacf 100644
--- a/modules/spamfilter/tpl/denied_ip_list.html
+++ b/modules/spamfilter/tpl/denied_ip_list.html
@@ -18,7 +18,9 @@
| IP |
{$lang->description} |
- {$lang->regdate} |
+ {$lang->latest_hit} ▼ |
+ {$lang->hit} ▼ |
+ {$lang->regdate} ▼ |
|
@@ -26,11 +28,13 @@
| {$ip_info->ipaddress} |
{$ip_info->description} |
+ {zdate($ip_info->latest_hit,'Y-m-d H:i')}- |
+ {$ip_info->hit} |
{zdate($ip_info->regdate,'Y-m-d')} |
|
- | {$lang->no_data} |
+ {$lang->no_data} |