- return new UFC_And(new UFC_OR(new UFC_Birthday('=', time()),
- new UFC_And(new UFC_Birthday('<=', time() + self::WATCH_LIMIT),
- new UFC_Birthday('>', $date + self::WATCH_LIMIT))),
- new UFC_Or(new UFC_WatchPromo($user),
- new UFC_WatchContact($user)));
+ $not_dead = new PFC_Not(new UFC_Dead());
+ $select_date = new PFC_OR(new UFC_Birthday('=', time()),
+ new PFC_And(new UFC_Birthday('<=', time() + self::WATCH_LIMIT),
+ new UFC_Birthday('>', $watch->date() + self::WATCH_LIMIT)));
+ $profile = $watch->profile();
+ $cond = $watch->contactCondition();
+ if ($profile) {
+ $cond = new PFC_Or($cond,
+ new PFC_And($watch->promoCondition(),
+ new UFC_Promo('>=', $profile->mainGrade(), $profile->yearpromo() - 1),
+ new UFC_Promo('<=', $profile->mainGrade(), $profile->yearpromo() + 1)),
+ $watch->groupCondition());
+ }
+ return new PFC_And($not_dead, $select_date, $cond);