diff --git a/e107_admin/banlist.php b/e107_admin/banlist.php index 583280779..7228ae84f 100644 --- a/e107_admin/banlist.php +++ b/e107_admin/banlist.php @@ -141,6 +141,17 @@ class banlist_ui extends e_admin_ui $this->fields['banlist_ip']['title']= BANLAN_5; } + // + + /** + * Custom filter for banlist_ip filter search. + * @param string $srch + */ + function handleListBanlistIpFilter($srch) + { + return "banlist_ip = '".e107::getIPHandler()->ipEncode($srch)."' OR banlist_ip = '".$srch."'"; + } + // optional public function init() diff --git a/e107_handlers/admin_ui.php b/e107_handlers/admin_ui.php index 1a818de5e..dfda93336 100755 --- a/e107_handlers/admin_ui.php +++ b/e107_handlers/admin_ui.php @@ -4193,11 +4193,12 @@ class e_admin_controller_ui extends e_admin_controller $searchQry[] = $searchFilter; } - if(E107_DEBUG_LEVEL == E107_DBG_SQLQUERIES) + if(E107_DEBUG_LEVEL == E107_DBG_SQLQUERIES) { e107::getMessage()->addDebug(print_a($searchQry,true)); } - + + $className = get_class($this); // main table should select everything $tableSFieldsArr[] = $tablePath.'*'; @@ -4225,6 +4226,20 @@ class e_admin_controller_ui extends e_admin_controller if(trim($searchQuery) !== '' && in_array($var['type'], $searchable_types) && $var['__tableField']) { + // Search for customer filter handler. + $cutomerFilterMethod = 'handle'.$this->getRequest()->getActionName().$this->getRequest()->camelize($key).'Filter'; + $args = array($searchQuery); + e107::getMessage()->addDebug("Searching for custom filter method: ".$className.'::'.$cutomerFilterMethod."(".implode(', ', $args).")"); + + if(method_exists($this, $cutomerFilterMethod)) // callback handling + { + e107::getMessage()->addDebug('Executing filter callback '.$className.'::'.$cutomerFilterMethod.'('.implode(', ', $args).')'); + + $filter[] = call_user_func_array(array($this, $cutomerFilterMethod), $args); + continue; + } + + if($var['data'] === 'int' || $var['data'] === 'integer' || $var['type'] === 'int' || $var['type'] === 'integer') { if(is_numeric($searchQuery)) @@ -4279,6 +4294,7 @@ class e_admin_controller_ui extends e_admin_controller } } + if(strpos($filterOptions,'searchfield__') === 0) // search in specific field, so remove the above filters. { $filter = array(); // reset filter. @@ -5478,6 +5494,8 @@ class e_admin_ui extends e_admin_controller_ui { $string = $this->getQuery('searchquery'); + + if(empty($string)) { return null;