All Projects → tehwave → laravel-achievements

tehwave / laravel-achievements

Licence: MIT license
Simple, elegant Achievements the Laravel way

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to laravel-achievements

haitou
Private Torrent Forum/Tracker in Portuguese BR (On Development now)
Stars: ✭ 16 (-74.19%)
Mutual labels:  achievements
games services
A Flutter plugin to support game center and google play games services.
Stars: ✭ 67 (+8.06%)
Mutual labels:  achievements
github-profile-achievements
A collection listing all Achievements available on the GitHub profile 🏆
Stars: ✭ 1,060 (+1609.68%)
Mutual labels:  achievements
SteamAchievementNotifier
Steam Achievement Notifier is an Electron application that shows a customisable notification when you unlock any Steam Achievement! It uses the Steam Web API to track achievement stats in real time, and displays an achievement summary within the notification.
Stars: ✭ 77 (+24.19%)
Mutual labels:  achievements
laravel-gamify
Laravel Gamify: Gamification System with Points & Badges support
Stars: ✭ 35 (-43.55%)
Mutual labels:  achievements
BetterAchievements
An improvement to the Minecraft achievement screen
Stars: ✭ 20 (-67.74%)
Mutual labels:  achievements
exhale
A Pebble app for breathing, written in C.
Stars: ✭ 12 (-80.65%)
Mutual labels:  achievements
achievement maker
Generate your own achievements
Stars: ✭ 42 (-32.26%)
Mutual labels:  achievements
playnite-successstory-plugin
This plugin shows the game achievements in Playnite.
Stars: ✭ 83 (+33.87%)
Mutual labels:  achievements
7-billion-humans-solutions
Solutions for the game 7 Billion Humans
Stars: ✭ 147 (+137.1%)
Mutual labels:  achievements

Laravel Achievements

Simple, elegant Achievements the Laravel way.

Software License StyleCI Build Status

Requirements

The package has been developed and tested to work with the latest versions of PHP and Laravel as well as the following minimum requirements:

  • Laravel 5.8
  • PHP 7.1

Installation

Install the package via Composer.

composer require tehwave/laravel-achievements

Publish migrations.

php artisan vendor:publish --tag="achievements-migrations"

Migrate the migrations.

php artisan migrate

As an optional choice, you may publish config as well.

php artisan vendor:publish --tag="achievements-config"

Usage

Laravel Achievements work much like Laravel's notifications.

$user = \App\User::find(1);

$user->achieve(new \App\Achievements\UsersFirstPost());

Creating Achievements

php artisan make:achievement UsersFirstPost

This command will place a fresh Achievement class in your new app/Achievements directory.

Each Achievement class contains a toDatabase method, that you may use to store additional data with the achievement, and a few properties for basic meta information.

Unlocking Achievements

Use Achiever trait on models that can unlock achievements.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use tehwave\Achievements\Traits\Achiever;

class User extends Model
{
    use Achiever;

    // ...
}

Achieve an achievement via the achieve method.

$user = \App\User::find(1);

$user->achieve(new \App\Achievements\UsersFirstPost());

...or use Achievement class to unlock achievements.

$user = \App\User::find(1);

\tehwave\Achievements\Achievement::unlock($user, new \App\Achievements\UsersFirstPost());

Accessing Achievements

Retrieve all of the entity's unlocked achievements.

$user = \App\User::find(1);

$user->achievements()->get();

Checking if entity has Achievement

On models with the Achiever trait, you may pass an Achievement instance to hasAchievement method to check if the specified achievement exist on the model.

$achievement = new \App\Achievements\UsersFirstPost();

$user = \App\User::find(1);

$user->hasAchievement($achievement);
// false

$user->achieve($achievement);

$user->hasAchievement($achievement);
// true

Should you not want to pass an instance, you may also pass the class name.

$user->hasAchievement(\App\Achievements\UsersFirstPost::class);

Tests

composer test

Security

For any security related issues, send a mail to [email protected] instead of using the issue tracker.

Changelog

See CHANGELOG for details on what has changed.

Contributions

See CONTRIBUTING for details on how to contribute.

Credits

Inspired by https://github.com/gstt/laravel-achievements

About

I work as a Web Developer in Denmark on Laravel and WordPress websites.

Follow me @tehwave on Twitter!

License

MIT License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].