Реферальная программа для JohnCMS 9.6

223
.
Описание:
Каждому пользователю предоставляется уникальная реферальная ссылка, и если кто-то регистрируется по этой ссылке, то начисляется карма. Настраивается в 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);


Хотел написать что-то простенькое, в итоге залез куда только можно. Критика и идеи приветствуются. 
Прикрепленные файлы:
.
Ого, люди моды еще пишут, респект
.
NaN is number
Супер! Ещё возможность изменять параметры кол-ва постов (действий) в админке нужна, я думаю.
.
Версия 2.0.0
Добавлена админка с возможностью настройки вознаграждений.

Для обновления перейдите по адресу: 
site.ru/referrals?act=install

Старые таблицы останутся.
Найдите файл
 site.ru\config\routes.local.php

И замените строку:
$map->addRoute(['GET'],'/referrals[/]', [\Referrals\Controllers\ReferralsController::class, 'index']);

На:
$map->addRoute(['GET','POST'], '/referrals[/]', [\Referrals\Controllers\ReferralsController::class,
'index']);
Прикрепленные файлы:
.
Версия 2.0.1

Добавил смену языков и qrcode генератор (qrcode.min.js).

В остальном без изменений. Установка описана выше.
Прикрепленные файлы:
Всего: 5