Shurikkan
Новичок
Всем привет.
Для посетителей сайта нужно отображать информацию о том работает заведение или нет.
Задача показалась очень простой, но потом столкнулся с факапом в плане дней недели...
ЗАТЫК:
В выходные заведение открывается утром одного дня, а закрывается ночью следующего.
Что сделал изначально:
Метод $data->get(...) пытается получить из настроек модуля CMS время на текущий день недели и, если он там не указан, подставляет 00:00 как значение по-умолчанию.
Проблема в том, что модуль при проверки режима работы берёт текущий день недели и проверяет расписание по нему. То есть, если 1 января заведение работает с 12:00 до 03:00, зайдя на сайт 2 января в 01:00 пользователь увидит сообщение о том, что заведение закрыто.
Вот, думаю как сделать... Видимо, при работе скрипта нужно сначала проверять прошлый день и смотреть закрылось ли заведение или нет?
Как-то так. Надеюсь, понятно изложил. Посодействуете в решении?
----
Хех, пока писал ещё один вариант пришёл: составлять сразу на базе данных из админки массив с расписанием на неделю (сейчас просто отдельные дни с расписанием) и работать уже с ним?
ПРИМЕР:
Прошлая смена с 00:00 до 03:00, сегодняшная смена - с 10:00 до 21:00.
P.S.: Тут при вставке кодов в сообщение их никакими тегами не нужно обрамлять? оО
Для посетителей сайта нужно отображать информацию о том работает заведение или нет.
Задача показалась очень простой, но потом столкнулся с факапом в плане дней недели...
ЗАТЫК:
В выходные заведение открывается утром одного дня, а закрывается ночью следующего.
Что сделал изначально:
PHP:
class ModWorkingtimeHelper {
public static function checkTime($data) {
date_default_timezone_set('Europe/Moscow');
$weekDay = date('N');
$curTime = date('H:i');
$fieldFromName = 'timeFrom'.$weekDay;
$fieldToName = 'timeTo'.$weekDay;
$workTime = Array(
'timeFrom' => $data->get($fieldFromName, '00:00'),
'timeTo' => $data->get($fieldToName, '00:00')
);
$toodayFrom = $workTime['timeFrom'];
$toodayTo = $workTime['timeTo'];
if($curTime > $toodayFrom && $curTime < $toodayTo) {
return 1;
} else {
return 2;
}
}
}
Проблема в том, что модуль при проверки режима работы берёт текущий день недели и проверяет расписание по нему. То есть, если 1 января заведение работает с 12:00 до 03:00, зайдя на сайт 2 января в 01:00 пользователь увидит сообщение о том, что заведение закрыто.
Вот, думаю как сделать... Видимо, при работе скрипта нужно сначала проверять прошлый день и смотреть закрылось ли заведение или нет?
Как-то так. Надеюсь, понятно изложил. Посодействуете в решении?
----
Хех, пока писал ещё один вариант пришёл: составлять сразу на базе данных из админки массив с расписанием на неделю (сейчас просто отдельные дни с расписанием) и работать уже с ним?
ПРИМЕР:
Прошлая смена с 00:00 до 03:00, сегодняшная смена - с 10:00 до 21:00.
P.S.: Тут при вставке кодов в сообщение их никакими тегами не нужно обрамлять? оО
Последнее редактирование: