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