zaghadon / laravel-social
A full and simple Toolkit Package for instantly adding Social Features to Laravel Project [Adapted From Miladimos]
Requires
- php: >=7.4|^8.0
This package is auto-updated.
Last update: 2024-10-27 22:25:30 UTC
README
A full and simple Toolkit Package for instantly adding Social Features to Laravel Project Adapted From Miladimos
Installation
-
Run the command below to add this package:
composer require zaghadon/laravel-social
-
Open your config/socials.php and add the following to the providers array:
Zaghadon\Social\Providers\SocialServiceProvider::class,
-
Run the command below to install package:
php artisan social:install
-
Run the command below to migrate database:
php artisan migrate
Uses
Depending on the Capabilities You want implemented, as the required traits to the right Models.
Likeable Trait
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Zaghadon\Social\Traits\Like\Likeable; class Post extends Model { use HasFactory, Likeable; }
In the User Model:
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Zaghadon\Social\Traits\Like\CanLike; class User extends Authenticatable { use HasFactory, CanLike; }
Commentable Trait
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Zaghadon\Social\Traits\Comment\Commentable; class Post extends Model { use HasFactory, Commentable; }
In the User Model:
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Zaghadon\Social\Traits\Comment\Commentor; class User extends Authenticatable { use HasFactory, Commentor; }
Bookmarkable Trait
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Zaghadon\Social\Traits\Bookmark\Bookmarkable; class Post extends Model { use HasFactory, Bookmarkable; }
In the User Model:
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Zaghadon\Social\Traits\Bookmark\CanBookmark; class User extends Authenticatable { use HasFactory, CanBookmark; }
Followable Trait
In the User Model:
namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Zaghadon\Social\Traits\Follow\Followable; class User extends Authenticatable { use HasFactory, Followable; }
Methods
In controllers you have these methods:
namespace App\Http\Controllers; use App\Models\Post; class PostController extends Controller { public function index() { $post = Post::find(1); $post->likes // return all likes } }
TODO
- Document Every Available Methods and their Usage.
- Create a test framework to test each unit feature.
Capabilities [* Proposed, ** In Active Developement]
Like
Favorite *
Tag **
Category **
Bookmark
Follow \ Unfollow
Subscribe **
Comment
Vote / Rate System *