PHP code example of pdazcom / laravel-referrals
1. Go to this page and download the library: Download pdazcom/laravel-referrals library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
pdazcom / laravel-referrals example snippets
use Illuminate\Foundation\Configuration\Middleware;
->withMiddleware(function (Middleware $middleware): void {
$middleware->web(append: [
\Pdazcom\Referrals\Http\Middleware\StoreReferralCode::class,
]);
})
use Pdazcom\Referrals\Traits\ReferralsMember;
class User extends Authenticatable
{
use HasFactory, Notifiable, ReferralsMember;
}
return [
'programs' => [
'example' => \Pdazcom\Referrals\Programs\ExampleProgram::class,
],
'fixed_reward_amount' => 10,
'cookie_name' => 'ref',
'code_generator' => \Pdazcom\Referrals\Generators\RandomStringCodeGenerator::class,
'code_length' => 8,
'code_generation_max_attempts' => 10,
'prevent_duplicate_rewards' => false,
'prevent_self_referral' => false,
'hooks' => [
'signup' => false,
'first_purchase' => [
'enabled' => false,
'event' => null,
'programs' => [],
'user_accessor' => 'user',
'reward_accessor' => null,
],
],
];
'programs' => [
'welcome-bonus' => \App\ReferralPrograms\WelcomeBonusProgram::class,
],
'programs' => [
'welcome-bonus' => \App\ReferralPrograms\WelcomeBonusProgram::class,
'first-purchase' => \App\ReferralPrograms\FirstPurchaseProgram::class,
],
'code_generator' => \App\Referrals\NumericCodeGenerator::class,
'prevent_duplicate_rewards' => true,
'prevent_self_referral' => true,
use Illuminate\Foundation\Configuration\Middleware;
->withMiddleware(function (Middleware $middleware): void {
$middleware->web(append: [
\Pdazcom\Referrals\Http\Middleware\StoreReferralCode::class,
]);
})
use Pdazcom\Referrals\Traits\ReferralsMember;
class User extends Authenticatable
{
use HasFactory, Notifiable, ReferralsMember;
}
namespace App\ReferralPrograms;
use Illuminate\Support\Facades\Log;
use Pdazcom\Referrals\Programs\AbstractProgram;
class QuickstartProgram extends AbstractProgram
{
public function reward(mixed $rewardObject): void
{
Log::info('Quickstart reward triggered', [
'program' => $this->program->name,
'recruit_user_id' => $this->recruitUser->id,
'referral_user_id' => $this->referralUser->id,
'reward' => $rewardObject,
]);
}
}
'programs' => [
'quickstart' => \App\ReferralPrograms\QuickstartProgram::class,
],
$link = ReferralLink::create([
'user_id' => $user->id,
'referral_program_id' => $program->id,
]);
$shareUrl = $link->referral_link;
$shareCode = $link->referral_code;
use Illuminate\Http\Request;
public function store(Request $request)
{
$data = $request->validate([
'name' => ['e', 'string'],
]);
$user = User::create($data);
if (!empty($data['referral_code'])) {
$user->registerWithCode($data['referral_code']);
}
return redirect('/dashboard');
}
$legacyUrl = $link->link;
'hooks' => [
'signup' => true,
],
'hooks' => [
'first_purchase' => [
'enabled' => true,
'event' => \App\Events\OrderCreated::class,
'programs' => ['welcome-bonus', 'first-purchase'],
'user_accessor' => 'user',
'reward_accessor' => 'order',
],
],
namespace App\Events;
class OrderCreated
{
public function __construct(
public \App\Models\User $user,
public \App\Models\Order $order,
) {}
}
use Illuminate\Http\Request;
use Pdazcom\Referrals\Events\UserReferred;
use Pdazcom\Referrals\Http\Middleware\StoreReferralCode;
public function registered(Request $request, $user): void
{
UserReferred::dispatch(
$request->input(StoreReferralCode::REFERRALS, []),
$user,
);
}
$user->registerWithCode($request->string('referral_code')->toString());
Pdazcom\Referrals\Models\ReferralProgram::create([
'name' => 'example',
'title' => 'Example Program',
'description' => 'Example percentage-based reward program.',
'uri' => '/register',
'lifetime_minutes' => 60,
]);
'programs' => [
'example' => \App\ReferralPrograms\ExampleProgram::class,
],
namespace App\ReferralPrograms;
use Pdazcom\Referrals\Programs\AbstractProgram;
class ExampleProgram extends AbstractProgram
{
private const ROYALTY_PERCENT = 30;
public function reward(mixed $rewardObject): void
{
$this->recruitUser->balance += $rewardObject * (self::ROYALTY_PERCENT / 100);
$this->recruitUser->save();
}
}
Pdazcom\Referrals\Models\ReferralLink::create([
'user_id' => 1,
'referral_program_id' => 1,
]);
use Pdazcom\Referrals\Events\ReferralCase;
ReferralCase::dispatch('example', $referralUser, $rewardObject);
$referralLink->referredUsers()
bash
php artisan vendor:publish --tag=referrals-config
bash
php artisan referrals:install --config
bash
php artisan migrate
bash
php artisan vendor:publish --tag=referrals-migrations
bash
php artisan referrals:install --migrations
bash
composer vendor:publish --tag=referrals-config
php artisan migrate
bash
php artisan tinker