Починаючи з версії 0.9.0 додано абсолютно кабалістичну можливість обмеження кількості днів заморозки, доступних для користувача, з наступним кулдауном протягом певного часу, протягом якого користувач неодмінно повинен бути активним, тобто - працювати.
Описується це все наступними опціями конфігу alter.ini ось у такому вигляді (для прикладу):
FREEZE_DAYS_CHARGE_ENABLED=1 FREEZE_DAYS_INITIAL_AMOUNT=365 FREEZE_DAYS_WORK_TO_RESTORE=120
Виходячи з описаних вище значень опцій: кількість днів заморозки, що доступна користувачеві спочатку - 365 (може бути встановлена індивідуально для кожного користувача в профілі), а кількість днів кулдауну - 120 (так само може бути встановлена індивідуально). Це означає, що протягом необмеженого часу користувач може заморожувати/розморожувати свою послугу, але лічильник, тим не менш, тікає кожного дня, доки активна заморозка послуги - зменшується кількість доступних днів заморозки. Коли ці самі доступні дні будуть вичерпані - заморозку у користувача буде відключено і ввімкнути її буде неможливо до тих пір, поки користувач не “відпрацює” 120 днів. При чому він повинен саме бути активним протягом зазначеної кількості днів - просто внести грошей >= кількості днів кулдауну - не вийде. Відповідно, якщо користувач неактивний - дні кулдауну не рахуються. Як тільки користувач чесно відпрацював 120 днів - йому повертається можливість заморожувати послугу і 365 доступних для заморожування днів.
Ось якось так.
Вся обробка проводиться щоденним викликом відповідного action з Remote API - freezedayscharge. Бажано до нарахування абонплати.
Наприклад - ось так:
45 23 * * * /bin/ubapi "freezedayscharge"
Також не забуваємо додати аналогічні опції в userstats.ini
FREEZE_DAYS_CHARGE_ENABLED=1 FREEZE_DAYS_INITIAL_AMOUNT=365 FREEZE_DAYS_WORK_TO_RESTORE=120
щоб хитрі користувачі не могли встановлювати собі заморозку з особистого кабінету в обхід системних налаштувань.
Як ви вже, напевно, зрозуміли, якщо якомусь конкретному користувачеві потрібно відключити обмеження кількості днів призупинення, можна легко “обійти” систему і поставити овер9000 незліченну кількість днів призупинення, або просто поставити значення днів кулдауну рівним 0.