Добавить к инвайту реферальную ссылку

Доработать реферальную систему компонента "Биллинг пользователей" для закрытой регистрации

#16 2 сентября 2016 в 23:26
Богатырь, про билинг ничего не могу вам сказать — не работал с ним. Но ID пользователя выдавшего приглашение хранится в таблице cms_users в колонке inviter_id. Т.е. можно получить все данные инвайтера и использовать их в билинге или любом другом компоненте. Под словом "использовать" я подразумеваю "применять в коде", а не "щелкать кнопочки в админке".
Если я не ошибаюсь реферальная ссылка делает ровно тоже — передает идентификатор пользователя которые привел нового пользователя на сайт.
#17 3 сентября 2016 в 05:50


Богатырь, про билинг ничего не могу вам сказать — не работал с ним. Но ID пользователя выдавшего приглашение хранится в таблице cms_users в колонке inviter_id. Т.е. можно получить все данные инвайтера и использовать их в билинге или любом другом компоненте. Под словом "использовать" я подразумеваю "применять в коде", а не "щелкать кнопочки в админке".
Если я не ошибаюсь реферальная ссылка делает ровно тоже — передает идентификатор пользователя которые привел нового пользователя на сайт.

Val
Все правильно понимаете VAL ID пользователей инвайтера хранятся в колоночках inviter_id,invites_count и тд. Может блеснете знаниями!, просветите чайника как правильно данные инвайтера использовать в любом другом компоненте включая биллинг чтоб можно было просто кнопочки в админке нажимать.
#18 3 сентября 2016 в 15:23
Вот пример: создайте файл ..\system\controllers\users\actions\invite.php и скопируйте в него следующий код
  1. <?php
  2.  
  3. class actionUsersInvite extends cmsAction {
  4.  
  5. public function run($user_id=false){
  6.  
  7. if (!cmsUser::isLogged()) { cmsCore::error404(); }
  8.  
  9. if (!$user_id) {
  10. $user_id = cmsUser::getInstance()->id;
  11. }
  12.  
  13. if (!is_numeric($user_id)){ cmsCore::error404(); }
  14.  
  15. $inviter = $this->model->getUser($user_id);
  16. if (empty($inviter)) { cmsCore::error404(); }
  17.  
  18. $users = $this->model->filterEqual('inviter_id', $user_id)->getUsers();
  19.  
  20. if (is_array($users)) {
  21.  
  22. $links = array_map(function($user){
  23. return '<a href="'.href_to('users', $user['id']).'" target="_blank">'.$user['nickname'].'</a>';
  24. }, $users);
  25.  
  26. }
  27.  
  28. if (!empty($links)) {
  29. cmsUser::addSessionMessage($inviter['nickname'] . ' пригласил следующих пользователей: ' . implode(', ', $links));
  30. } else {
  31. cmsUser::addSessionMessage('У ' . $inviter['nickname'] . ' нет последователей!');
  32. }
  33.  
  34. $this->redirectBack();
  35.  
  36. }
  37.  
  38. }
Сохраните.

Теперь перейдите по ссылке вида sitename/users/invite (для текущего пользователя) или sitename/users/invite/id_пользователя (для любого конкретного пользователя), покажется сообщение с перечнем приглашенных пользователей. Указанные ссылки можете добавить куда хотите хоть в админку хоть в профили пользователей =)

Приведенный код это пример, его нужно дорабатывать для решения конкретных задач.

Может блеснете знаниями!

Богатырь
Не слишком ярко получилось? laugh
#19 3 сентября 2016 в 18:29


Вот пример: создайте файл ..\system\controllers\users\actions\invite.php и скопируйте в него следующий код

  1.  
  2.  

Val
Ладно прибедняться блеснул так блеснул laughвсе же наработка очень полезная и мне пригодилась, теперь в профиле у пользователей есть заметка кто сколько пригласил по инвайтам laughплюсик в карму laugh
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.