class DayWordsToBitmap { const SINGLEWORDDECODER = [ "monday" => ViewBusStopTimetables::MONDAY, "tuesday" => ViewBusStopTimetables::TUESDAY, "wednesday" => ViewBusStopTimetables::WEDNESDAY, "thursday" => ViewBusStopTimetables::THURSDAY, "friday" => ViewBusStopTimetables::FRIDAY, "saturday" => ViewBusStopTimetables::SATURDAY, "sunday" => ViewBusStopTimetables::SUNDAY]; public static function dayWordsToBitmap(string $id): int { $intCalculated = self::dayWordsToBitmapUsingCommaSeperatedList($id); if ($intCalculated === 0) { $intCalculated = self::dayWordsToBitmapOriginal($id); } return $intCalculated; } public static function dayWordsToBitmapUsingCommaSeperatedList(string $id) { $intCalculated = 0; $arrWords = preg_split("/,/", $id); foreach ($arrWords as $word) { $word = trim(strtolower($word)); if (!isset(self::SINGLEWORDDECODER[$word])) { // echo "??$word??"; return 0; } else { $intCalculated = $intCalculated | pow(2, self::SINGLEWORDDECODER[$word]); } } // var_dump($intCalculated); return $intCalculated; } public static function dayWordsToBitmapOriginal(string $id) { switch ($id) { // 1 (for Monday) through 7 (for Sunday) case "Monday": case "Sunday Night/Monday Morning": case "Bank Holidays": return pow(2, ViewBusStopTimetables::MONDAY); case "Tuesday": return pow(2, ViewBusStopTimetables::TUESDAY); case "Wednesday": return pow(2, ViewBusStopTimetables::WEDNESDAY); case "Thursday": return pow(2, ViewBusStopTimetables::THURSDAY); case "Friday": case "School Friday": case "Non-School Friday": return pow(2, ViewBusStopTimetables::FRIDAY); case "Friday Night/Saturday Morning": case "Saturday": return pow(2, ViewBusStopTimetables::SATURDAY); case "Saturday Night/Sunday Morning": case "Sunday": return pow(2, ViewBusStopTimetables::SUNDAY); case "Monday to Friday": case "Mon-Fri Schooldays": case "Summer Monday to Friday Non-Schooldays": case "Mon-Fri Non-Schooldays": case "Mo-Fr Night/Tu-Sat Morning": case "Monday - Friday": case "MondayToFriday": case "Monday,Tuesday,Wednesday,Thursday,Friday": return pow(2, ViewBusStopTimetables::MONDAY) | pow(2, ViewBusStopTimetables::TUESDAY) | pow(2, ViewBusStopTimetables::WEDNESDAY) | pow(2, ViewBusStopTimetables::THURSDAY) | pow(2, ViewBusStopTimetables::FRIDAY); case "Monday to Thursday": case "Mo-Th Nights/Tu-Fr Morning": case "Mon-Th Schooldays": case "Mon-Th Non-Schooldays": case "Monday -Thursday Non-Schooldays": case "Monday,Tuesday,Wednesday,Thursday": return pow(2, ViewBusStopTimetables::MONDAY) | pow(2, ViewBusStopTimetables::TUESDAY) | pow(2, ViewBusStopTimetables::WEDNESDAY) | pow(2, ViewBusStopTimetables::THURSDAY); case "Monday,Tuesday,Wednesday,Friday": return pow(2, ViewBusStopTimetables::MONDAY) | pow(2, ViewBusStopTimetables::TUESDAY) | pow(2, ViewBusStopTimetables::WEDNESDAY) | pow(2, ViewBusStopTimetables::FRIDAY); case "Monday,Tuesday,Thursday,Friday": return pow(2, ViewBusStopTimetables::MONDAY) | pow(2, ViewBusStopTimetables::TUESDAY) | pow(2, ViewBusStopTimetables::THURSDAY) | pow(2, ViewBusStopTimetables::FRIDAY); case "Tuesday, Wednesday & Thursday": case "Tuesday,Wednesday,Thursday": return pow(2, ViewBusStopTimetables::TUESDAY) | pow(2, ViewBusStopTimetables::WEDNESDAY) | pow(2, ViewBusStopTimetables::THURSDAY); case "Tuesday,Wednesday,Thursday,Friday": return pow(2, ViewBusStopTimetables::TUESDAY) | pow(2, ViewBusStopTimetables::WEDNESDAY) | pow(2, ViewBusStopTimetables::THURSDAY) | pow(2, ViewBusStopTimetables::FRIDAY); case "Tuesday,Wednesday,Thursday,Friday,Saturday": return pow(2, ViewBusStopTimetables::TUESDAY) | pow(2, ViewBusStopTimetables::WEDNESDAY) | pow(2, ViewBusStopTimetables::THURSDAY) | pow(2, ViewBusStopTimetables::FRIDAY) | pow(2, ViewBusStopTimetables::SATURDAY); case "Monday,Tuesday,Wednesday,Thursday,Sunday": return pow(2, ViewBusStopTimetables::MONDAY) | pow(2, ViewBusStopTimetables::TUESDAY) | pow(2, ViewBusStopTimetables::WEDNESDAY) | pow(2, ViewBusStopTimetables::THURSDAY) | pow(2, ViewBusStopTimetables::SUNDAY); case "MondayToSunday": return pow(2, ViewBusStopTimetables::MONDAY) | pow(2, ViewBusStopTimetables::TUESDAY) | pow(2, ViewBusStopTimetables::WEDNESDAY) | pow(2, ViewBusStopTimetables::THURSDAY) | pow(2, ViewBusStopTimetables::FRIDAY) | pow(2, ViewBusStopTimetables::SATURDAY) | pow(2, ViewBusStopTimetables::SUNDAY); case "Monday,Tuesday,Wednesday,Thursday,Friday,Saturday": case "MondayToSaturday": return pow(2, ViewBusStopTimetables::MONDAY) | pow(2, ViewBusStopTimetables::TUESDAY) | pow(2, ViewBusStopTimetables::WEDNESDAY) | pow(2, ViewBusStopTimetables::THURSDAY) | pow(2, ViewBusStopTimetables::FRIDAY) | pow(2, ViewBusStopTimetables::SATURDAY); case "Wednesday,Thursday,Friday": return pow(2, ViewBusStopTimetables::WEDNESDAY) | pow(2, ViewBusStopTimetables::THURSDAY) | pow(2, ViewBusStopTimetables::FRIDAY); case "Wednesday,Friday": return pow(2, ViewBusStopTimetables::WEDNESDAY) | pow(2, ViewBusStopTimetables::FRIDAY); case "Saturday,Sunday": return pow(2, ViewBusStopTimetables::SATURDAY) | pow(2, ViewBusStopTimetables::SUNDAY); case "Monday,Tuesday,Wednesday,Thursday,Friday,Sunday": return pow(2, ViewBusStopTimetables::MONDAY) | pow(2, ViewBusStopTimetables::TUESDAY) | pow(2, ViewBusStopTimetables::WEDNESDAY) | pow(2, ViewBusStopTimetables::THURSDAY) | pow(2, ViewBusStopTimetables::FRIDAY) | pow(2, ViewBusStopTimetables::SUNDAY); case "Monday,Wednesday": return pow(2, ViewBusStopTimetables::MONDAY) | pow(2, ViewBusStopTimetables::WEDNESDAY); case "Tuesday,Thursday": return pow(2, ViewBusStopTimetables::TUESDAY) | pow(2, ViewBusStopTimetables::THURSDAY); case "Thursday,Friday": return pow(2, ViewBusStopTimetables::THURSDAY) | pow(2, ViewBusStopTimetables::FRIDAY); case "": return 0; default: ReportAllErrorsToCloudwatch::dieToCloudWatch(__FUNCTION__ . " " . $id, __CLASS__); } } }