Программа лояльности для пользователей. Рейтинг за приход

Кто поможет. Для того чтобы удержать пользователей и сделать им интересно прибывание на портале… ввел программу лояльности. в зависимости от рейтинга получают подарки. как сделать так… чтобы, например, при заходе на портал раз в сутки ему добавлялось определнное колличество баллов в рейтинг... ну или при не заходе раз в сутки снималось бы коллчиество баллов из рейтинга?

штука хорошая в каком плане: пользователь зарегился, но больше не посещат сайт… а так каждый день простоя минус рейтинг… а потом с помощью крона когда у него рейтинг -100 его грохает из базы… кто поможет? Спасибо!

UPD // заплачу 5 wmz, к сожалению, больше нет(( тому, кто выложит готовое решение с описаловкой к установке
суть:
1. раз в 24 часа делать проверку по юзерам. если юзер сегодня был — плюс n в рейтинг
не заходил — минус из рейтинга.

23 комментария

avatar
Ну хрохать с сайт можно и по другому алгоритму, есть время когда пользователь заходил последний раз так называемый Last_Active_Date вот по нему можно хрохать.

А вообще говоря, вам лучше это модулем организовать. Что бы после захода на сайт писался рейтинг.
  • vist
  • +1
avatar
Ну алгоритм вам рассказали, или нужна готовая реализация модуля? Если нужна, то какие условия?
avatar
Ой, совсем забыл про код, вот пожалуйста:

$user->setRating($user->getRating()+0.01);


После каждого захода будет добавляться одна сотая к рейтингу ;) мило ;)
  • vist
  • +1
avatar
Что то у меня сегодня…

Продолжение:

$user = $this->User_GetUserByLogin($login)


ну я думаю дальше уже сами, тут писать 3-5 минут
avatar
Выложите итог сюда, с описанием изменений?
avatar
Тогда уж так и в индексе,
$oUser=$oRouter->User_GetUserCurrent();

но вообще помоему человеку надо фиксировано добавлять по n единиц в день, это конечно бред, но зная алгоритм можно рейтинг себе и на «обновлять» )
avatar
ну добавить нужно если он сегодня заходил… если нет минус единичка)
avatar
Ну тут писать уже не 3-5 минут, хотя тоже достаточно тривиально, но новерное без минимальных изменений базы не обойтись, далее ввеси условия «кому не плюсануло, тому минусовать», проверять можно кроном в начале следующих суток, можно вполне и без него.
avatar
что-то я сегодня по буковкам не попадаю :(
avatar
Прочитал, что написал, бустро поправлюсь
зная алгоритм моржно получить неограниченый здоровый рейтинг за достаточно обозримый промежуток времени
avatar
заплачу 5 wmz, к сожалению, больше нет(( тому, кто выложит готовое решение с описаловкой к установке
суть:
1. раз в 24 часа делать проверку по юзерам. если юзер сегодня был — плюс n в рейтинг
не заходил — минус из рейтинга.

avatar
Алгоритм нужен чуть другой… Когда логинится юзер проверять когда был последний раз и если меньше чем сутки то +1… если больше чем 3е суток -1 за каждый день… и не надо каждый день проверять… Один косяк если профиль его смотрят… но тоже можно подумать… Структуры движка я не знаю)
Кстати лучше сделать разные бонусы за вход и за не посещение… где то один к трем…
avatar
Хорошее дополнение) осталось дело за малым. найти кто возьмется)
avatar
Так как это надо одному тебе, то есть два выхода:
1) Написать самому
2) Заплатить денег и тебе напишут.

для первого необходимо достаточно времени и терпения… для второго необходимы денежки… которые зарабатываются временем и терпением… Так что замкнутый круг могут помочь решить только силы из вне… Ах да… 3) вариант… забить на это…
avatar
Быть может не совсем профессионально, но оно работает:
/classes/modules/user/User.class.php
после:
protected function AutoUpdateUser() {
		if (!$this->oUserCurrent) {
			return;
		}
вставить:
$todaydate  = mktime(0, 0, 0, date("m")  , date("d"), date("Y")); 		
$datelast = strtotime($this->oUserCurrent->getDateLast());
if ($datelast<$todaydate){ 
$this->oUserCurrent->setRating($this->oUserCurrent->getRating()+1); //увеличение рейтинга
$count_bad_days = floor(($todaydate-$datelast )/86400) ; //число незалогененных дней
if ($count_bad_days>0)
$this->oUserCurrent->setRating($this->oUserCurrent->getRating()-(1*$count_bad_days)); 
    //уменьшение рейтинга
}


avatar
не работает ;(

рейтинг не прибавляется ни отнимается. менял в базе дату последнего захода на более старую. ничего не происходит
avatar
только что у себя попробовал изменить user_date_last на 14 число, карма опустилась на 2 (уменьшилась на 3 и увеличилась на 1)
avatar
$todaydate  = time();


if ($count_bad_days>0){
$this->oUserCurrent->setRating($this->oUserCurrent->getRating()-(1*$count_bad_days)); 
    //уменьшение рейтинга
}


В логику особо не вникал.
avatar
при регистрации НОВОГО пользователя у него рейтинг становится аж -14472.00))
avatar
имеено столько дней назад началась «эра unix» =)
заменить
if ($datelast<$todaydate)
на
if (($datelast<$todaydate) and ($datelast<>0))
avatar
По-моему, лучше сделать хук на init_action, не?
avatar
livestreet.ru/blog/2375.html вот тут добавил немного функционала и «приятностей», сделал модуль, потестите.
avatar
Вознаграждение за ежедневные заходы для ЛС1.0.1 здесь: livestreet.ru/blog/12441.html
  • NPC
  • +1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.