diff --git a/htdocs/core/customreports.php b/htdocs/core/customreports.php index e937a405918..c4017e99c58 100644 --- a/htdocs/core/customreports.php +++ b/htdocs/core/customreports.php @@ -260,19 +260,20 @@ if ($action == 'viewgraph') { // $arrayofvaluesforgroupby will be used to forge lael of each grouped series if (is_array($search_groupby) && count($search_groupby)) { foreach ($search_groupby as $gkey => $gval) { - $gvalwithoutprefix = preg_replace('/^[a-z]+\./', '', $gval); + $gvalwithoutprefix = preg_replace('/^[a-z]+\./i', '', $gval); + $gvalsanitized = preg_replace('/[^a-z0-9\._\-]+/i', '', $gval); - if (preg_match('/\-year$/', $search_groupby[$gkey])) { - $tmpval = preg_replace('/\-year$/', '', $search_groupby[$gkey]); + if (preg_match('/\-year$/', $gvalsanitized)) { + $tmpval = preg_replace('/\-year$/', '', $gvalsanitized); $fieldtocount .= 'DATE_FORMAT('.$tmpval.", '%Y')"; - } elseif (preg_match('/\-month$/', $search_groupby[$gkey])) { - $tmpval = preg_replace('/\-month$/', '', $search_groupby[$gkey]); + } elseif (preg_match('/\-month$/', $gvalsanitized)) { + $tmpval = preg_replace('/\-month$/', '', $gvalsanitized); $fieldtocount .= 'DATE_FORMAT('.$tmpval.", '%Y-%m')"; - } elseif (preg_match('/\-day$/', $search_groupby[$gkey])) { - $tmpval = preg_replace('/\-day$/', '', $search_groupby[$gkey]); + } elseif (preg_match('/\-day$/', $gvalsanitized)) { + $tmpval = preg_replace('/\-day$/', '', $gvalsanitized); $fieldtocount .= 'DATE_FORMAT('.$tmpval.", '%Y-%m-%d')"; } else { - $fieldtocount = $search_groupby[$gkey]; + $fieldtocount = $gvalsanitized; } $sql = "SELECT DISTINCT ".$fieldtocount." as val";