--- /dev/null
+<?php
+
+namespace Cubist\Matomo;
+
+class MatomoUtils {
+ public static function parseDate($date)
+ {
+ // Match possible date strings:
+ // - YYYY
+ // - YYYY-MM
+ // - YYYY-MM-DD
+ // - YYYY-MM-DD,YYYY-MM-DD
+ // https://regex101.com/r/BLrqm0/1
+ $regex = '/^(?<start_date>(?<start_year>2\d{3})-?(?<start_month>0[1-9]|1[012])?-?(?<start_day>0[1-9]|[12][0-9]|3[01])?),?(?<end_date>2\d{3}-(?>0[1-9]|1[012])-(?>0[1-9]|[12][0-9]|3[01]))?/';
+
+ preg_match($regex, $date, $date_matches);
+
+ extract($date_matches); // Just for easier access to match variables
+
+ // Bail out on nonsensical dates
+ if (isset($start_date) && isset($end_date) && ($start_date > $end_date)) {
+ return false;
+ }
+
+ return $date_matches;
+ }
+}