public static function generateParams($paramName, $params, $template = '', $paramOptions = []) { $sql = []; $flatParams = []; $paramName = preg_replace('/[^\\da-z]/i', '_', $paramName); if (is_array($params) && count($params) > 0) { foreach ($params as $column => $filter) { $param = DataFilter::buildSingleParam($paramName, $column, $filter); $sql[] = $param['sql']; if (is_array($param['param'])) { foreach ($param['param'] as $key => $value) { $flatParams[$key] = $value; } } else { $column = preg_replace('/[^\\da-z]/i', '_', $column); $flatParams[$paramName . "_" . $column] = $param['param']; } } } $query = ''; if (count($sql) > 0) { $query = implode(" AND ", $sql); if (strpos("[{$paramName}]", $template) !== false) { $query = str_replace("[{$paramName}]", $query, $template); } if ($template == "[{$paramName}]" || $template == '') { $query = "where " . $query; } } $template = ['sql' => $query, 'params' => $flatParams]; return $template; }