Каждому пользователю предоставляется уникальная реферальная ссылка, и если кто-то регистрируется по этой ссылке, то начисляется карма. Настраивается в ReferralService.
Пример с форумом: +5 кармы за каждые 50 постов реферала. +5 бонусом за каждые 500. Можете разместить ссылку на реферальную страницу где угодно. Она будет доступна по адресу: site.ru/referrals. Там же “мои рефералы”. Карма добавляется от имени администратора.
Не будет работать если ip одинаковые.
Установка:
1. Распакуйте архив в корневой каталог вашего сайта.
2. В файле
\config\autoload\modules.local.php
добавьте 'referrals' в массив 'installed_modules'.Пример:
return [
'modules' => [
'installed_modules' => [
'referrals',
],
],
];
3. В файле \config\routes.local.php
добавьте следующую строку:$map->addRoute(['GET'], '/referrals[/]', [\Referrals\Controllers\ReferralsController::class, 'index']);
4. В файле
\modules\registration\index.php
, после создания пользователя (от строки 131-156):$new_user =(new User())->create(
…
);
добавьте следующую строчку:
(new \Referrals\Services\ReferralService)->registration($new_user->id);
5. В файле
\system\src\Users\UserRelations.php
добавьте следующий код:public function referrals(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
{
return $this->belongsToMany(User::class, 'user_referrals', 'user_id', 'referred_user_id');
}
6. Установите таблицы, перейдя по ссылке: site.ru/referrals?act=install
Для удаления таблиц используйте: site.ru/referrals?act=uninstall
7. В файле
\system\src\Users\UserFactory.php
, после строки 57:$this->ipHistory($user);// Фиксируем историю IP
добавьте следующий код:
(new \Referrals\Services\ReferralService)->calculateAndGrantKarma($user, $user->postforum, $user->postguest, $user->komm);
Хотел написать что-то простенькое, в итоге залез куда только можно. Критика и идеи приветствуются.