Как в Zend Framework реализовать проверку наступления следующей недели?

Доброго времени суток!

Совсем недавно начал знакомиться с Zend Framework и столкнулся с такой проблемой. Не знаю, как сделать голосовалку, а точнее - ограничение на нее по частоте голосования.

Юзер имеет право голосовать за другого юзера раз в неделю, но нельзя поставить просто ограничение на 7 дней, т.к. он должен в начале недели снова иметь право проголосовать, неважно когда было предыдущее его голосование.

Все делается в CMS Social Engine.

Возможно, кто-то уже сталкивался с такой задачей и может направить меня на пусть истинный, буду премного благодарен!
  • Вопрос задан
  • 2460 просмотров
Решения вопроса 1
@Borgia Автор вопроса
Большое спасибо за ответы!
В итоге решил сделать так:
1. Выполняем запрос к БД, узнаем там, если у последней записи юзера дата старше даты начала недели.
// Получаем первый день текущей недели
$getFirstDay = date('Y-m-d 00:00:00', strtotime('this week', time()));

2. Если запрос возвращает запись, значит голосовать нельзя. Если ничего нет, то можно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
$timestampFromStorage = 123456789; // когда пользователь последний раз голосовал
$votedWeek = date('W', $timestampFromStorage); // номер недели, когда пользователь голосовал
$todayWeek = date('W'); // номер текущей недели
if ($votedWeek * date('Y', $timestampFromStorage) < $todayWeek * date('Y')) {
    // можно голосовать повторно
}
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ну так поставьте проверку, если у нас совпадает год и номер недели в году между текущей датой и датой последнего голосования - не разрешаем. Это все умеет стандартный \DateTime или date,
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы