skybluesofa/laravel-followers
| 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 |
Laravel 5 Followers
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
Eloquent Befriended brings social media-like features like following, blocking a...
This package gives Eloquent models the ability to manage friendships (with group...
This package gives Eloqent models the ability to manage their friendships.
This light package, with no dependencies, gives Eloquent models the ability to m...