Увеличение рейтинга за приглашенного через инвайт пользователя

Добрый день,
искал через поиск ответ на этот вопрос, но так и не нашел, поэтому хочу спросить у уважаемого сообщества.
Версия движка 4.2. Скажите пожалуйста, как можно увеличивать рейтинг пользователя за то, что по отправленному им инвайту зарегистрировался другой пользователь?
Тем самым стимулировать выдачу приглашений на сайт

8 комментариев

avatar
ActionRegistration.class.php строка 158


/**
* Если юзер зарегистрировался по приглашению то обновляем инвайт
*/
if (Config::Get('general.reg.invite') and $oInvite=$this->User_GetInviteByCode($this->GetInviteRegister())) {
    $oInvite->setUserToId($oUser->getId());
    $oInvite->setDateUsed(date("Y-m-d H:i:s"));    
    $oInvite->setUsed(1);
    $this->User_UpdateInvite($oInvite);
}


$oInvite->getUserFromId(); — это айди пользователя который выдал инвайт
теперь нам нужно найти его по айди, добавить его сущности рейтинг и обновить пользователя.

$oUser=User_GetUserById($oInvite->getUserFromId());
$oUser->setRating($oUser->getRating()+0.5);
$this->User_Update($oUser);


в итоге получаем


/**
* Если юзер зарегистрировался по приглашению то обновляем инвайт
*/
if (Config::Get('general.reg.invite') and $oInvite=$this->User_GetInviteByCode($this->GetInviteRegister())) {
    $oInvite->setUserToId($oUser->getId());
    $oInvite->setDateUsed(date("Y-m-d H:i:s"));    
    $oInvite->setUsed(1);
    $this->User_UpdateInvite($oInvite);

    $oUser=User_GetUserById($oInvite->getUserFromId());
    $oUser->setRating($oUser->getRating()+0.5);
    $this->User_Update($oUser);
}
avatar
стоп стоп будут ошибки $oUser там уже используется и ранее и потом после этого кода происходит работа с этой переменной. маленько исправим:


/**
* Если юзер зарегистрировался по приглашению то обновляем инвайт
*/
if (Config::Get('general.reg.invite') and $oInvite=$this->User_GetInviteByCode($this->GetInviteRegister())) {
    $oInvite->setUserToId($oUser->getId());
    $oInvite->setDateUsed(date("Y-m-d H:i:s"));    
    $oInvite->setUsed(1);
    $this->User_UpdateInvite($oInvite);

    $oUserInvite=User_GetUserById($oInvite->getUserFromId());
    $oUserInvite->setRating($oUserInvite->getRating()+0.5);
    $this->User_Update($oUserInvite);
}
avatar
спасибо за ответ, но, к сожалению, после регистрации пользователя выходит ошибка Fatal error: Call to undefined function user_getuserbyid() in Z:\home\site\www\classes\actions\ActionRegistration.class.php on line 167
тестировал на пустой, свежеустановленной версии LS
можно как-то исправить?
avatar
замените
$oUserInvite=$this->User_GetUserById($oInvite->getUserFromId());


не тестировал просто
avatar
Теперь прошло без ошибок, но рейтинг пригласившего не изменился
avatar
Оказывается работает! У меня стоит плагин Extended registration с ним рейтинг не меняется, отключил его и сразу заработало.
beauty_free, спасибо Вам большое за помощь.
avatar
Extended registration делегирует данный класс видимо, в таком случае изменения нужно проводит в ActionRegistration.class.php только в экшенах плагина
avatar
Да, и это тоже помогло. Спасибо огромное.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.