skybluesofa/laravel-followers

This package gives Eloquent models the ability to manage their followers.


Keywords
laravel, friends, Followers, eloqent, friend-requests, friendship, friendships, laravel-package
License
MIT

Documentation

Laravel 5 Followers

Build Status Code Climate Test Coverage Total Downloads Version Software License

Gives Eloquent models the ability to manage their followers.

Models can:

  • Send Follow Requests
  • Accept Follow Requests
  • Deny Follow Requests
  • Block Another Model

Installation

First, install the package through Composer.

composer require skybluesofa/laravel-followers

Then include the service provider inside config/app.php.

'providers' => [
    ...
    Skybluesofa\Followers\ServiceProvider::class,
    ...
];

Publish config and migrations

php artisan vendor:publish --provider="Skybluesofa\Followers\ServiceProvider"

Configure the published config in

config\followers.php

Finally, migrate the database

php artisan migrate

Setup a Model

use Skybluesofa\Followers\Traits\Followable;
class User extends Model
{
    use Followable;
    ...
}

How to use

Check the Test file to see the package in action

Methods

Send a Follow Request

Will trigger a Skybluesofa\LaravelFollowers\Events\FollowRequest event.

$user->follow($recipient);

Accept a Follow Request

Will trigger a Skybluesofa\LaravelFollowers\Events\FollowRequestAccepted event.

$recipient->acceptFollowRequestFrom($user);

Deny a Follow Request

Will trigger a Skybluesofa\LaravelFollowers\Events\FollowRequestDenied event.

$recipient->denyFollowRequestFrom($user);

Remove Follow

Will trigger a Skybluesofa\LaravelFollowers\Events\Unfollow event.

$user->unfollow($recipient);

Block a User

Will trigger a Skybluesofa\LaravelFollowers\Events\FollowingBlocked event.

$user->blockBeingFollowedBy($recipient);

Unblock a User

Will trigger a Skybluesofa\LaravelFollowers\Events\FollowingUnblocked event.

$user->unblockBeingFollowedBy($recipient);

Check if User is Following another User

$user->isFollowing($recipient);

Check if User is being Followed by another User

$recipient->isFollowedBy($user);

Check if User has a pending Follow request from another User

$recipient->hasFollowRequestFrom($user);

Check if User sent a pending Follow request to another User

$user->hasSentFollowRequestTo($recipient);

Check if User has blocked another User

$recipient->hasBlockedBeingFollowedBy($user);

Check if User is blocked by another User

$user->isBlockedFromFollowing($recipient);

Get a single friendship

$user->getFriendship($recipient);

Get a list of all Friendships

$user->getAllFriendships();

Get a list of pending Friendships

$user->getPendingFriendships();

Get a list of accepted Friendships

$user->getAcceptedFriendships();

Get a list of denied Friendships

$user->getDeniedFriendships();

Get a list of blocked Friendships

$user->getBlockedFriendships();

Get a list of pending Friend Requests

$user->getFriendRequests();

Get the number of Friends

$user->getFriendsCount();

Friends

To get a collection of friend models (ex. User) use the following methods:

Get Friends

$user->getFriends();

Get Friends Paginated

$user->getFriends($perPage = 20);

Events

These events are triggered during the lifecycle of following/unfollowing/accept/deny followers:

Skybluesofa\LaravelFollowers\Events\FollowingBlocked(Model $recipient, Model $sender);
Skybluesofa\LaravelFollowers\Events\FollowingUnblocked(Model $recipient, Model $sender);
Skybluesofa\LaravelFollowers\Events\FollowRequest(Model $recipient, Model $sender);
Skybluesofa\LaravelFollowers\Events\FollowRequestAccepted(Model $recipient, Model $sender);
Skybluesofa\LaravelFollowers\Events\FollowRequestDenied(Model $recipient, Model $sender);
Skybluesofa\LaravelFollowers\Events\Unfollow(Model $recipient, Model $sender);

To listen for and react to these events, follow the instructions available in the Laravel Documentation.

Thank you

The basis of this code was garnered from https://github.com/hootlex/laravel-friendships. Although it was a jumping off point, much of the code has been rewritten to allow for Following as opposed to Mutual Friendship.

Contributing

See the CONTRIBUTING guide.