blok / laravel-friendable
This package gives Eloquent models the ability to manage friendships concept forked from hootlex/laravel-friendships.
Requires
- php: >=5.4.0
Requires (Dev)
- codeclimate/php-test-reporter: ^0.3.2
- doctrine/dbal: ^2.5
- fzaninotto/faker: ~1.4
- laravel/laravel: 5.*
- mockery/mockery: ^0.9.5
- phpunit/phpunit: 5.*
This package is auto-updated.
Last update: 2024-12-21 21:20:17 UTC
README
This package gives Eloquent models the ability to manage their friendships.
You can easily design a Facebook like Friend System with this package.
This is a fork from : https://github.com/hootlex/laravel-friendships adapted for the Blok Ecosystem.
Models can:
- Send Friend Requests
- Accept Friend Requests
- Deny Friend Requests
- Block Another Model
- Group Friends
Installation
First, install the package through Composer.
composer require blok/laravel-friendable
Then include the service provider inside config/app.php
.
'providers' => [ ... Blok\Friendable\FriendshipsServiceProvider::class, ... ];
Publish config and migrations
php artisan vendor:publish --provider="Blok\Friendable\FriendshipsServiceProvider"
Configure the published config in
config\friendships.php
Finally, migrate the database
php artisan migrate
Setup a Model
use Blok\Friendable\Traits\Friendable; class User extends Model { use Friendable; ... }
How to use
Check the Test file to see the package in action
Send a Friend Request
$user->befriend($recipient);
Accept a Friend Request
$user->acceptFriendRequest($sender);
Deny a Friend Request
$user->denyFriendRequest($sender);
Remove Friend
$user->unfriend($friend);
Block a Model
$user->blockFriend($friend);
Unblock a Model
$user->unblockFriend($friend);
Check if Model is Friend with another Model
$user->isFriendWith($friend);
Check if Model has a pending friend request from another Model
$user->hasFriendRequestFrom($sender);
Check if Model has already sent a friend request to another Model
$user->hasSentFriendRequestTo($recipient);
Check if Model has blocked another Model
$user->hasBlocked($friend);
Check if Model is blocked by another Model
$user->isBlockedBy($friend);
Get a single friendship
$user->getFriendship($friend);
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();
Get the number of mutual Friends with another user
$user->getMutualFriendsCount($otherUser);
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);
Get Friends of Friends
$user->getFriendsOfFriends($perPage = 20);
Collection of Friends in specific group paginated:
$user->getFriends($perPage = 20, $group_name);
Get mutual Friends with another user
$user->getMutualFriends($otherUser, $perPage = 20);
Friend groups
The friend groups are defined in the config/friendships.php
file.
The package comes with a few default groups.
To modify them, or add your own, you need to specify a slug
and a key
.
// config/friendships.php ... 'groups' => [ 'acquaintances' => 0, 'close_friends' => 1, 'family' => 2 ]
Since you've configured friend groups, you can group/ungroup friends using the following methods.
Group a Friend
$user->groupFriend($friend, $group_name);
Remove a Friend from family group
$user->ungroupFriend($friend, 'family');
Remove a Friend from all groups
$user->ungroupFriend($friend);
Get the number of Friends in specific group
$user->getFriendsCount($group_name);
To filter friendships
by group you can pass a group slug.
$user->getAllFriendships($group_name); $user->getAcceptedFriendships($group_name); $user->getPendingFriendships($group_name); ...
Events
This is the list of the events fired by default for each action
Contributing
See the CONTRIBUTING guide.