skybluesofa/laravel-followers

This package gives Eloquent models the ability to manage their followers.
10,951 60
Install
composer require skybluesofa/laravel-followers
Latest Version:1.2.0
PHP:>=7.1.0
License:MIT
Last Updated:Mar 8, 2020
Links: GitHub  ·  Packagist
Maintainer: skybluesofa

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.

Related Packages

multicaret/laravel-acquaintances

This light package, with no dependencies, gives Eloquent models the ability to m...

314,373 854
rennokki/befriended

Eloquent Befriended brings social media-like features like following, blocking a...

94,363 761
obb12/laravel-friendships

This package gives Eloqent models the ability to manage their friendships.

32 0
merodiro/friendships

A simple package for friendships

9,716 45
fenos/rally

Followers system for laravel 4

227 37

Version History

Version Released PHP License
1.2.0 >=7.1.0 MIT
1.1.0 >=7.1.0 MIT
1.0.0 >=5.4.0 MIT