This package offers to reward entities with points and to create a ranking based on these points.
It is possible to reward, penalize, multiply, redeem and reset points and entities can be blacklisted/whitelisted which makes it possible to prevent certain entities to receive points.
Each entity will receive a rank based on its points which could be used to display a listing of the users with the most points or something like that.
Require this package, with Composer, in the root directory of your project.
$ composer require artisanry/leaderboard
At last you need to publish the migration and run the migration:
php artisan vendor:publish --provider="Artisanry\Leaderboard\LeaderboardServiceProvider" && php artisan migrate
<?php
namespace App;
use Artisanry\Leaderboard\Traits\Boardable;
class User
{
use Boardable;
}
$user = App\User::find(1);
$events = [
'CompletedProfile' => 10,
'SocialLoginFacebook' => 5,
'SocialLoginTwitter' => 5,
'SocialLoginGoogleplus' => 5,
];
// User filled out address, phone, email, etc.
if($user->completedProfile()) {
$user->reward($events['CompletedProfile']);
}
// User added his Facebook profile
if($user->hasSocialProfile('facebook')) {
$user->reward($events['SocialLoginFacebook']);
}
// User removed his Facebook profile
if($user->removedSocialProfile('facebook')) {
$user->penalize($events['SocialLoginFacebook']);
}
// User purchased a premium package
$plan = App\Plan::findByTitle('Premium');
if($user->purchased($plan)) {
$user->reward($plan->points);
}
// User wants to purchase something
$product = App\Product::find(1);
try {
if($user->redeem($product->price)) {
event(new ProductWasPurchased($product, $user));
}
} catch(\Artisanry\Leaderboard\Exceptions\InsufficientFundsException $e) {
// Not enough points
dd($e);
}
$user->reward(10);
$user->penalize(5);
$user->multiply(2);
$user->redeem(15);
$user->reset();
$user->blacklist();
$user->whitelist();
$ phpunit
If you discover a security vulnerability within this package, please send an e-mail to [email protected]. All security vulnerabilities will be promptly addressed.
This project exists thanks to all the people who contribute.
Mozilla Public License Version 2.0 (MPL-2.0).