skybluesofa / laravel-followers
This package gives Eloquent models the ability to manage their followers.
Installs: 10 744
Dependents: 0
Suggesters: 0
Security: 0
Stars: 60
Watchers: 3
Forks: 10
Open Issues: 0
Requires
- php: >=7.1.0
Requires (Dev)
- codeclimate/php-test-reporter: ^0.3.2
- fzaninotto/faker: ~1.4
- orchestra/testbench: ^4.0
This package is auto-updated.
Last update: 2024-10-09 01:05:00 UTC
README
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.