36 $this->
id = $filterId;
38 $this->useCommonPresets =
false;
43 $this->useCommonPresets =
true;
45 $this->options[
"filters"] = $this->commonPresets[
"filters"] ??
null;
46 $this->options[
"deleted_presets"] = $this->commonPresets[
"deleted_presets"] ??
null;
49 if (!isset($this->options[
"use_pin_preset"]))
51 $this->options[
"use_pin_preset"] =
true;
54 if (!isset($this->options[
"deleted_presets"]) || !is_array($this->options[
"deleted_presets"]))
56 $this->options[
"deleted_presets"] = [];
59 if (!empty($filterPresets) && is_array($filterPresets))
61 $this->options[
"default_presets"] = $filterPresets;
65 $this->options[
"default_presets"] = [];
68 if (!isset($this->options[
"default"]) || empty($this->options[
"default"]) ||
69 ($this->options[
"default"] === self::DEFAULT_FILTER && $this->options[
"use_pin_preset"]))
74 if (!isset($this->options[
"filter"]) || empty($this->options[
"filter"]) || !is_string($this->options[
"filter"]))
76 $this->options[
"filter"] = $this->options[
"default"];
79 if (!isset($this->options[
"filters"]) || !is_array($this->options[
"filters"]))
81 $this->options[
"filters"] = $this->options[
"default_presets"];
85 if (is_array($this->options[
"filters"]))
87 foreach ($this->options[
"filters"] as $presetId =>
$options)
92 unset($this->options[
"filters"][$presetId][
"additional"]);
97 if (!empty($this->options[
"update_default_presets"]) &&
98 !empty($filterPresets) &&
99 is_array($filterPresets))
101 $this->options[
"update_default_presets"] =
false;
104 foreach ($filterPresets as
$key => $defaultPreset)
106 $this->options[
"filters"][
$key] = $defaultPreset;
107 $this->options[
"filters"][
$key][
"sort"] = $sort;
111 foreach ($this->options[
"filters"] as
$key => $preset)
113 if (!array_key_exists(
$key, $filterPresets))
115 $this->options[
"filters"][
$key][
"sort"] = $sort;
1225 switch ($source[$fieldId .
"_datesel"])
1229 $dateTime = Filter\DateTimeFactory::createToday();
1232 $result[$fieldId .
"_month"] = $dateTime->month();
1233 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1234 $result[$fieldId .
"_year"] = $dateTime->year();
1235 $result[$fieldId .
"_from"] = $dateTime->offset(
"- 1 days");
1236 $result[$fieldId .
"_to"] = $dateTime->offset(
"- 1 second");
1242 $dateTime = Filter\DateTimeFactory::createToday();
1245 $result[$fieldId .
"_month"] = $dateTime->month();
1246 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1247 $result[$fieldId .
"_year"] = $dateTime->year();
1248 $result[$fieldId .
"_from"] = $dateTime->toString();
1249 $result[$fieldId .
"_to"] = $dateTime->offset(
"+ 1 days - 1 second");
1255 $dateTime = Filter\DateTimeFactory::createToday();
1258 $result[$fieldId .
"_month"] = $dateTime->month();
1259 $result[$fieldId .
"_year"] = $dateTime->year();
1260 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1261 $result[$fieldId .
"_from"] = $dateTime->offset(
"+ 1 days");
1262 $result[$fieldId .
"_to"] = $dateTime->offset(
"+ 2 days - 1 second");
1268 $dateTime = Filter\DateTimeFactory::createCurrentWeekMonday();
1271 $result[$fieldId .
"_month"] = $dateTime->month();
1272 $result[$fieldId .
"_year"] = $dateTime->year();
1273 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1274 $result[$fieldId .
"_from"] = $dateTime->toString();
1275 $result[$fieldId .
"_to"] = $dateTime->offset(
"7 days - 1 second");
1281 $dateTime = Filter\DateTimeFactory::createNextWeekMonday();
1284 $result[$fieldId .
"_month"] = $dateTime->month();
1285 $result[$fieldId .
"_year"] = $dateTime->year();
1286 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1287 $result[$fieldId .
"_from"] = $dateTime->toString();
1288 $result[$fieldId .
"_to"] = $dateTime->offset(
"7 days - 1 second");
1294 $dateTime = Filter\DateTimeFactory::createFirstDayOfCurrentMonth();
1297 $result[$fieldId .
"_month"] = $dateTime->month();
1298 $result[$fieldId .
"_year"] = $dateTime->year();
1299 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1300 $result[$fieldId .
"_from"] = $dateTime->toString();
1301 $result[$fieldId .
"_to"] = $dateTime->offset(
"1 month - 1 second");
1307 $dateTime = Filter\DateTimeFactory::createFirstDayOfNextMonth();
1310 $result[$fieldId .
"_month"] = $dateTime->month();
1311 $result[$fieldId .
"_year"] = $dateTime->year();
1312 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1313 $result[$fieldId .
"_from"] = $dateTime->toString();
1314 $result[$fieldId .
"_to"] = $dateTime->offset(
"1 month - 1 second");
1320 $dateTime = Filter\DateTimeFactory::createToday();
1323 $result[$fieldId .
"_month"] = $dateTime->month();
1324 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1325 $result[$fieldId .
"_year"] = $dateTime->year();
1326 $result[$fieldId .
"_from"] = $dateTime->quarterStart();
1327 $result[$fieldId .
"_to"] = $dateTime->quarterEnd();
1333 $dateTime = Filter\DateTimeFactory::createToday();
1336 $result[$fieldId .
"_month"] = $dateTime->month();
1337 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1338 $result[$fieldId .
"_year"] = $dateTime->year();
1339 $result[$fieldId .
"_from"] = $dateTime->offset(
"- 7 days");
1340 $result[$fieldId .
"_to"] = $dateTime->offset(
"1 days - 1 second");
1346 $dateTime = Filter\DateTimeFactory::createToday();
1349 $result[$fieldId .
"_month"] = $dateTime->month();
1350 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1351 $result[$fieldId .
"_year"] = $dateTime->year();
1352 $result[$fieldId .
"_from"] = $dateTime->offset(
"- 30 days");
1353 $result[$fieldId .
"_to"] = $dateTime->offset(
"1 days - 1 second");
1359 $dateTime = Filter\DateTimeFactory::createToday();
1362 $result[$fieldId .
"_month"] = $dateTime->month();
1363 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1364 $result[$fieldId .
"_year"] = $dateTime->year();
1365 $result[$fieldId .
"_from"] = $dateTime->offset(
"- 60 days");
1366 $result[$fieldId .
"_to"] = $dateTime->offset(
"1 days - 1 second");
1372 $dateTime = Filter\DateTimeFactory::createToday();
1375 $result[$fieldId .
"_month"] = $dateTime->month();
1376 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1377 $result[$fieldId .
"_year"] = $dateTime->year();
1378 $result[$fieldId .
"_from"] = $dateTime->offset(
"- 90 days");
1379 $result[$fieldId .
"_to"] = $dateTime->offset(
"1 days - 1 second");
1385 $month = $source[$fieldId .
"_month"];
1386 $year = $source[$fieldId .
"_year"];
1388 if (!empty($month) && !empty(
$year))
1390 $dateTime =
new Filter\DateTime(mktime(0, 0, 0, $month, 1,
$year));
1393 $result[$fieldId .
"_month"] = $dateTime->month();
1394 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1395 $result[$fieldId .
"_year"] = $dateTime->year();
1396 $result[$fieldId .
"_from"] = $dateTime->toString();
1397 $result[$fieldId .
"_to"] = $dateTime->offset(
"1 month - 1 second");
1405 if (is_numeric($source[$fieldId .
"_days"]))
1407 $dateTime = Filter\DateTimeFactory::createToday();
1408 $days = (int)$source[$fieldId .
"_days"];
1409 $days = $days > 0 ? ($days + 1) : $days;
1412 $result[$fieldId .
"_month"] = $dateTime->month();
1413 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1414 $result[$fieldId .
"_days"] = $source[$fieldId .
"_days"];
1415 $result[$fieldId .
"_year"] = $dateTime->year();
1416 $result[$fieldId .
"_from"] = $dateTime->offset(
"1 days");
1417 $result[$fieldId .
"_to"] = $dateTime->offset($days .
" days - 1 second");
1425 if (is_numeric($source[$fieldId .
"_days"]))
1427 $dateTime = Filter\DateTimeFactory::createToday();
1428 $days = (int)$source[$fieldId .
"_days"];
1429 $days = max($days, 0);
1432 $result[$fieldId .
"_month"] = $dateTime->month();
1433 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1434 $result[$fieldId .
"_days"] = $source[$fieldId .
"_days"];
1435 $result[$fieldId .
"_year"] = $dateTime->year();
1436 $result[$fieldId .
"_from"] = $dateTime->offset(
"- " . $days .
" days");
1437 $result[$fieldId .
"_to"] = $dateTime->offset(
"1 days -1 second");
1445 if (is_numeric($source[$fieldId .
"_days"]))
1447 $dateTime = Filter\DateTimeFactory::createToday();
1448 $days = (int)$source[$fieldId .
"_days"];
1450 $result[$fieldId .
"_days"] = $source[$fieldId .
"_days"];
1451 $result[$fieldId .
"_from"] = $dateTime->offset(-$days .
" days");
1452 $result[$fieldId .
"_to"] = $dateTime->offset(-($days - 1) .
" days -1 second");
1461 if (is_numeric($source[$fieldId .
"_days"]))
1463 $dateTime = Filter\DateTimeFactory::createToday();
1464 $days = (int)$source[$fieldId .
"_days"];
1466 $result[$fieldId .
"_days"] = $source[$fieldId .
"_days"];
1467 $result[$fieldId .
"_from"] = $dateTime->offset($days .
" days");
1468 $result[$fieldId .
"_to"] = $dateTime->offset(($days + 1) .
" days -1 second");
1476 if (is_numeric($source[$fieldId .
"_days"]))
1478 $dateTime = Filter\DateTimeFactory::createToday();
1479 $days = (int)$source[$fieldId .
"_days"];
1481 $result[$fieldId .
"_days"] = $source[$fieldId .
"_days"];
1482 $result[$fieldId .
"_from"] = $dateTime->offset(-($days + 1) .
" days");
1483 $result[$fieldId .
"_to"] = $dateTime->offset(-$days .
" days -1 second");
1491 $quarter = $source[$fieldId .
"_quarter"];
1492 $year = $source[$fieldId .
"_year"];
1494 if (!empty($quarter) && !empty(
$year))
1499 $result[$fieldId .
"_quarter"] = $dateTime->quarter();
1500 $result[$fieldId .
"_year"] = $dateTime->year();
1501 $result[$fieldId .
"_month"] = $dateTime->month();
1502 $result[$fieldId .
"_from"] = $dateTime->quarterStart();
1503 $result[$fieldId .
"_to"] = $dateTime->quarterEnd();
1511 $year = $source[$fieldId .
"_year"];
1515 $dateTime =
new Filter\DateTime(mktime(0, 0, 0, 1, 1,
$year));
1518 $result[$fieldId .
"_year"] = $dateTime->year();
1519 $result[$fieldId .
"_from"] = $dateTime->toString();
1520 $result[$fieldId .
"_to"] = $dateTime->offset(
"1 year - 1 second");
1528 $sourceDate = $source[$fieldId .
"_from"];
1530 if (!empty($sourceDate))
1532 $date =
new Date($sourceDate);
1533 $dateTime =
new Filter\DateTime(
MakeTimeStamp($sourceDate));
1537 if ($dateTime->getTimestamp() > $date->getTimestamp())
1539 $result[$fieldId .
"_from"] = $dateTime->toString();
1540 $result[$fieldId .
"_to"] = $dateTime->toString();
1544 $result[$fieldId .
"_from"] = $dateTime->toString();
1545 $result[$fieldId .
"_to"] = $dateTime->offset(
"1 days - 1 second");
1554 $dateTime = Filter\DateTimeFactory::createLastWeekMonday();
1557 $result[$fieldId .
"_from"] = $dateTime->toString();
1558 $result[$fieldId .
"_to"] = $dateTime->offset(
"7 days - 1 second");
1564 $dateTime = Filter\DateTimeFactory::createFirstDayOfLastMonth();
1567 $result[$fieldId .
"_year"] = $dateTime->year();
1568 $result[$fieldId .
"_month"] = $dateTime->month();
1569 $result[$fieldId .
"_from"] = $dateTime->toString();
1570 $result[$fieldId .
"_to"] = $dateTime->offset(
"1 month - 1 second");
1576 $startSourceDate = $source[$fieldId .
"_from"];
1577 $endSourceDate = $source[$fieldId .
"_to"];
1579 $result[$fieldId .
"_from"] =
"";
1580 $result[$fieldId .
"_to"] =
"";
1582 if (!empty($startSourceDate))
1584 $startDateTime =
new Filter\DateTime(
MakeTimeStamp($startSourceDate));
1587 $result[$fieldId .
"_from"] = $startDateTime->toString();
1590 if (!empty($endSourceDate))
1592 $endDate = Date::createFromTimestamp(
MakeTimeStamp($endSourceDate));
1593 $endDateTime =
new Filter\DateTime(
MakeTimeStamp($endSourceDate));
1597 if ($endDateTime->getTimestamp() > $endDate->getTimestamp())
1599 $result[$fieldId .
"_to"] = $endDateTime->toString();
1603 $result[$fieldId .
"_to"] = $endDateTime->offset(
"1 days - 1 second");